MoveBase::MoveBase(tf::TransformListener& tf) :
tf_(tf),
as_(NULL),
planner_costmap_ros_(NULL), controller_costmap_ros_(NULL),
bgp_loader_("nav_core","nav_core::BaseGlobalPlanner"),
blp_loader_("nav_core","nav_core::BaseLocalPlanner"),
recovery_loader_("nav_core","nav_core::RecoveryBehavior"),
planner_plan_(NULL), latest_plan_(NULL),controller_plan_(NULL),
runPlanner_(false), setup_(false), p_freq_change_(false),c_freq_change_(false), new_global_plan_(false) {
//这个actionserver使用了actionlib中的逻辑,actionlib提供了一套框架,可以建立一个server,client可以发送可抢断的taskrequest, 可以将之前的taskrequest取消,覆盖。并且可以不断得到反馈的框架。,基于此框架,每当有新的targetgoal被设定时,会执行executeCb函数。
as_ = newMoveBaseActionServer(ros::NodeHandle(), "move_base",boost::bind(&MoveBase::executeCb, this, _1), false);
ros::NodeHandleprivate_nh("~"); 使用privatenamespace的handle,也就是使用move_base作为ns的handle.
ros::NodeHandle nh;
recovery_trigger_ = PLANNING_R;
//get some parameters that will be global to the move basenode
std::string global_planner, local_planner;
private_nh.param("base_global_planner",global_planner, std::string("navfn/NavfnROS"));
private_nh.param("base_local_planner",local_planner,std::string("base_local_planner/TrajectoryPlannerROS"));
//实际使用的global/localplanner

该博客详细介绍了ROS中的MoveBase节点如何初始化,包括其构造函数的各个参数和组件,如全局和局部规划器的选择、成本地图的配置、目标设定和反馈机制。通过解析配置参数,MoveBase能够结合全局和局部规划器为机器人规划并执行导航路径。
最低0.47元/天 解锁文章
1510

被折叠的 条评论
为什么被折叠?



