40 #ifndef MBF_ABSTRACT_NAV__MOVE_BASE_ACTION_H_ 41 #define MBF_ABSTRACT_NAV__MOVE_BASE_ACTION_H_ 46 #include <mbf_msgs/MoveBaseAction.h> 47 #include <mbf_msgs/GetPathAction.h> 48 #include <mbf_msgs/ExePathAction.h> 49 #include <mbf_msgs/RecoveryAction.h> 53 #include "mbf_abstract_nav/MoveBaseFlexConfig.h" 72 const std::vector<std::string> &controllers);
76 void start(GoalHandle &goal_handle);
81 mbf_abstract_nav::MoveBaseFlexConfig &config, uint32_t level);
89 const mbf_msgs::GetPathResultConstPtr &result);
95 const mbf_msgs::ExePathResultConstPtr &result);
99 const mbf_msgs::RecoveryResultConstPtr &result);
113 template <
typename ResultType>
117 move_base_result.outcome = result.outcome;
118 move_base_result.message = result.message;
197 #endif //MBF_ABSTRACT_NAV__MOVE_BASE_ACTION_H_
actionlib::SimpleActionClient< mbf_msgs::ExePathAction > ActionClientExePath
double angle(const geometry_msgs::PoseStamped &pose1, const geometry_msgs::PoseStamped &pose2)
const mbf_utility::RobotInformation & robot_info_
current robot state
std::vector< std::string > recovery_behaviors_
mbf_msgs::GetPathGoal get_path_goal_
double dist_to_goal_
current distance to goal (we will stop replanning if very close to avoid destabilizing the controller...
ros::Duration oscillation_timeout_
timeout after a oscillation is detected
geometry_msgs::PoseStamped last_oscillation_pose_
void actionExePathDone(const actionlib::SimpleClientGoalState &state, const mbf_msgs::ExePathResultConstPtr &result)
boost::thread replanning_thread_
Replanning thread, running permanently.
ros::Time last_oscillation_reset_
MoveBaseAction(const std::string &name, const mbf_utility::RobotInformation &robot_info, const std::vector< std::string > &controllers)
ActionClientGetPath action_client_get_path_
Action client used by the move_base action.
bool replanningActive() const
void reconfigure(mbf_abstract_nav::MoveBaseFlexConfig &config, uint32_t level)
ros::NodeHandle private_nh_
const std::vector< std::string > & behaviors_
mbf_msgs::RecoveryGoal recovery_goal_
void actionRecoveryDone(const actionlib::SimpleClientGoalState &state, const mbf_msgs::RecoveryResultConstPtr &result)
actionlib::SimpleActionClient< mbf_msgs::RecoveryAction > ActionClientRecovery
void actionGetPathDone(const actionlib::SimpleClientGoalState &state, const mbf_msgs::GetPathResultConstPtr &result)
MoveBaseActionState action_state_
void fillMoveBaseResult(const ResultType &result, mbf_msgs::MoveBaseResult &move_base_result)
mbf_msgs::ExePathGoal exe_path_goal_
double distance(const geometry_msgs::PoseStamped &pose1, const geometry_msgs::PoseStamped &pose2)
MoveBaseActionState recovery_trigger_
actionlib::SimpleActionClient< mbf_msgs::GetPathAction > ActionClientGetPath
Action clients for the MoveBase action.
bool recovery_enabled_
true, if recovery behavior for the MoveBase action is enabled.
geometry_msgs::PoseStamped goal_pose_
current goal pose; used to compute remaining distance and angle
actionlib::ActionServer< mbf_msgs::MoveBaseAction >::GoalHandle GoalHandle
std::vector< std::string >::iterator current_recovery_behavior_
geometry_msgs::PoseStamped robot_pose_
current robot pose; updated with exe_path action feedback
ActionClientRecovery action_client_recovery_
Action client used by the move_base action.
void actionExePathFeedback(const mbf_msgs::ExePathFeedbackConstPtr &feedback)
ros::Duration replanning_period_
Replanning period dynamically reconfigurable.
void actionExePathActive()
ActionClientExePath action_client_exe_path_
Action client used by the move_base action.
void start(GoalHandle &goal_handle)
double oscillation_distance_
minimal move distance to not detect an oscillation