1. 系统介绍
move_base
是 ROS 导航栈(navigation stack)的核心组件,负责将机器人的导航目标(如目标位置或路径)转化为具体的运动指令。它通过整合全局路径规划器(Global Planner)、局部路径规划器(Local Planner)和代价地图(Costmap)等功能模块,实现从起点到目标点的自主导航。
功能:
接收导航目标(通过
move_base_simple/goal
话题或 Action 接口)。使用全局路径规划器计算从当前位置到目标位置的路径。
使用局部路径规划器根据传感器数据实时调整路径。
发布运动指令(通过
cmd_vel
话题)。提供恢复行为(Recovery Behaviors),以应对路径受阻等情况。
工作流程:
加载地图(通过
map_server
)。启动
move_base
节点,加载相关插件(如代价地图、路径规划器等)。接收导航目标,全局路径规划器计算路径。
局部路径规划器根据传感器数据实时调整路径。
发布运动指令,驱动机器人移动。
2. 模块之间的关系
move_base
的架构基于插件机制,各个模块通过 ROS 的话题、服务和 Action 接口进行通信。以下是主要模块及其关系:
全局路径规划器(Global Planner):
负责计算从起点到目标点的全局路径。
常见实现包括
navfn
(基于 Dijkstra 算法)和global_planner
(支持多种算法)。将计算好的路径发送给局部路径规划器。
局部路径规划器(Local Planner):
根据全局路径和传感器数据(如激光雷达数据)实时调整路径。
常见实现包括
dwa_local_planner
(动态窗口方法)和teb_local_planner
(时间弹性带方法)。发布运动指令(如速度和方向)。
代价地图(Costmap):
用于表示环境中障碍物的分布。
包括全局代价地图(描述全局环境)和局部代价地图(描述机器人周围的局部环境)。
为路径规划器提供环境信息。
恢复行为(Recovery Behaviors):
当机器人遇到障碍物导致路径受阻时,执行恢复行为。
常见行为包括清除代价地图中的障碍物信息(
clear_costmap_recovery
)和旋转以寻找新的路径(rotate_recovery
)。
TF(Transform):
提供坐标变换信息,用于将传感器数据和机器人的位置信息转换到统一的坐标系。
AMCL(Adaptive Monte Carlo Localization):
提供机器人的全局定位信息(如
map->odom
的变换),帮助机器人确定自身在地图中的位置。
map_server:
提供地图数据,供全局路径规划器使用。
这些模块通过 ROS 的通信机制(如话题发布/订阅、服务调用和 Action 接口)紧密协作,共同完成机器人的导航任务。