src
prefer_forward.cpp
Go to the documentation of this file.
1
/*
2
* Software License Agreement (BSD License)
3
*
4
* Copyright (c) 2017, Locus Robotics
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
*
11
* * Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* * Redistributions in binary form must reproduce the above
14
* copyright notice, this list of conditions and the following
15
* disclaimer in the documentation and/or other materials provided
16
* with the distribution.
17
* * Neither the name of the copyright holder nor the names of its
18
* contributors may be used to endorse or promote products derived
19
* from this software without specific prior written permission.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
* POSSIBILITY OF SUCH DAMAGE.
33
*/
34
35
#include <
dwb_critics/prefer_forward.h
>
36
#include <math.h>
37
#include <
pluginlib/class_list_macros.h
>
38
39
PLUGINLIB_EXPORT_CLASS
(
dwb_critics::PreferForwardCritic
,
dwb_local_planner::TrajectoryCritic
)
40
41
namespace
dwb_critics
42
{
43
44
void
PreferForwardCritic::onInit
()
45
{
46
critic_nh_
.
param
(
"penalty"
,
penalty_
, 1.0);
47
critic_nh_
.
param
(
"strafe_x"
,
strafe_x_
, 0.1);
48
critic_nh_
.
param
(
"strafe_theta"
,
strafe_theta_
, 0.2);
49
critic_nh_
.
param
(
"theta_scale"
,
theta_scale_
, 10.0);
50
}
51
52
double
PreferForwardCritic::scoreTrajectory
(
const
dwb_msgs::Trajectory2D& traj)
53
{
54
// backward motions bad on a robot without backward sensors
55
if
(traj.velocity.x < 0.0)
56
{
57
return
penalty_
;
58
}
59
// strafing motions also bad on such a robot
60
if
(traj.velocity.x <
strafe_x_
&& fabs(traj.velocity.theta) <
strafe_theta_
)
61
{
62
return
penalty_
;
63
}
64
65
// the more we rotate, the less we progress forward
66
return
fabs(traj.velocity.theta) *
theta_scale_
;
67
}
68
69
}
/* namespace dwb_critics */
dwb_critics::PreferForwardCritic
Penalize trajectories with move backwards and/or turn too much.
Definition:
prefer_forward.h:53
dwb_critics::PreferForwardCritic::strafe_x_
double strafe_x_
Definition:
prefer_forward.h:61
dwb_critics::PreferForwardCritic::theta_scale_
double theta_scale_
Definition:
prefer_forward.h:61
class_list_macros.h
PLUGINLIB_EXPORT_CLASS
#define PLUGINLIB_EXPORT_CLASS(class_type, base_class_type)
prefer_forward.h
dwb_critics::PreferForwardCritic::onInit
void onInit() override
Definition:
prefer_forward.cpp:44
dwb_local_planner::TrajectoryCritic::critic_nh_
ros::NodeHandle critic_nh_
dwb_critics::PreferForwardCritic::scoreTrajectory
double scoreTrajectory(const dwb_msgs::Trajectory2D &traj) override
Definition:
prefer_forward.cpp:52
ros::NodeHandle::param
T param(const std::string ¶m_name, const T &default_val) const
dwb_critics
Definition:
alignment_util.h:40
dwb_local_planner::TrajectoryCritic
dwb_critics::PreferForwardCritic::strafe_theta_
double strafe_theta_
Definition:
prefer_forward.h:61
dwb_critics::PreferForwardCritic::penalty_
double penalty_
Definition:
prefer_forward.h:61
dwb_critics
Author(s): David V. Lu!!
autogenerated on Sun May 18 2025 02:47:34