1. move_base核心架构解析
move_base是ROS导航栈的核心节点,负责整合全局规划器、局部规划器和代价地图,实现完整的自主导航功能。其核心架构采用多线程设计,主要包含以下几个关键组件:
- Action服务器:处理导航目标请求
- 全局规划线程:独立运行全局路径规划
- 控制循环:执行局部路径跟踪
- 恢复行为机制:处理导航失败情况
1.1 核心类结构分析
MoveBase类的主要成员变量包括:
cpp复制// 规划器相关
boost::thread* planner_thread_;
nav_core::BaseGlobalPlanner* planner_;
nav_core::BaseLocalPlanner* tc_;
// 代价地图
costmap_2d::Costmap2DROS* planner_costmap_ros_;
costmap_2d::Costmap2DROS* controller_costmap_ros_;
// 规划结果存储
std::vector<geometry_msgs::PoseStamped>* planner_plan_;
std::vector<geometry_msgs::PoseStamped>* latest_plan_;
std::vector<geometry_msgs::PoseStamped>* controller_plan_;
// 状态控制
MoveBaseState state_;
uint32_t recovery_trigger_;
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 初始化过程详解
2.1 构造函数关键操作
MoveBase构造函数主要完成以下初始化工作:
- Action服务器创建:
cpp复制as_ = new MoveBaseActionServer(ros::NodeHandle(), "move_base",
[this](auto& goal){ executeCb(goal); }, false);
- 规划器线程启动:
cpp复制planner_thread_ = new boost::thread(std::bind(&MoveBase::
