8 #ifndef LATCHED_STOP_ROTATE_CONTROLLER_H_ 9 #define LATCHED_STOP_ROTATE_CONTROLLER_H_ 49 geometry_msgs::Twist& cmd_vel,
50 Eigen::Vector3f acc_lim,
52 boost::function<
bool (Eigen::Vector3f pos,
54 Eigen::Vector3f vel_samples)> obstacle_check);
67 geometry_msgs::Twist& cmd_vel,
68 Eigen::Vector3f acc_lim,
71 boost::function<
bool (Eigen::Vector3f pos,
73 Eigen::Vector3f vel_samples)> obstacle_check);
76 Eigen::Vector3f acc_lim,
81 boost::function<
bool (Eigen::Vector3f pos,
83 Eigen::Vector3f vel_samples)> obstacle_check);
86 inline double sign(
double x){
87 return x < 0.0 ? -1.0 : 1.0;
bool isGoalReached(LocalPlannerUtil *planner_util, OdometryHelperRos &odom_helper, tf::Stamped< tf::Pose > global_pose)
bool latch_xy_goal_tolerance_
bool computeVelocityCommandsStopRotate(geometry_msgs::Twist &cmd_vel, Eigen::Vector3f acc_lim, double sim_period, LocalPlannerUtil *planner_util, OdometryHelperRos &odom_helper, tf::Stamped< tf::Pose > global_pose, boost::function< bool(Eigen::Vector3f pos, Eigen::Vector3f vel, Eigen::Vector3f vel_samples)> obstacle_check)
bool stopWithAccLimits(const tf::Stamped< tf::Pose > &global_pose, const tf::Stamped< tf::Pose > &robot_vel, geometry_msgs::Twist &cmd_vel, Eigen::Vector3f acc_lim, double sim_period, boost::function< bool(Eigen::Vector3f pos, Eigen::Vector3f vel, Eigen::Vector3f vel_samples)> obstacle_check)
Stop the robot taking into account acceleration limits.
void initialize(const std::string &name="")
LatchedStopRotateController()
bool rotateToGoal(const tf::Stamped< tf::Pose > &global_pose, const tf::Stamped< tf::Pose > &robot_vel, double goal_th, geometry_msgs::Twist &cmd_vel, Eigen::Vector3f acc_lim, double sim_period, base_local_planner::LocalPlannerLimits &limits, boost::function< bool(Eigen::Vector3f pos, Eigen::Vector3f vel, Eigen::Vector3f vel_samples)> obstacle_check)
Once a goal position is reached... rotate to the goal orientation.
Helper class implementing infrastructure code many local planner implementations may need...
virtual ~LatchedStopRotateController()
bool isPositionReached(LocalPlannerUtil *planner_util, tf::Stamped< tf::Pose > global_pose)