行为层: move_base 综合机器人状态与上层指令,给出机器人当前行为:正常导航,执行恢复动作,给上层节点返回失败,终止导航。其中恢复动作可以自己定义。如果你觉得ROS中move_base的旋转恢复行为不太好,可以用smach或者重写旋转恢复插件来自定义旋转恢复行为。
全局规划层:global_planner
局部规划层: local_planner
控制器层:(一般就是之前自己写的速度发送部分)
costmap_2d : 这一部分可看作为navigation的输入处理器。不同的传感器输入的数据差异很大(激光雷达 & RGBD-camera)通过costmap_2d , 不同的数据被处理成统一的格式:栅格地图,权值用经过概率方法处理过的,表示空间中障碍物,未知与安全区域。生成出来的costmap则是planner的输入。
global_planner : 为navigation的全局规划器,接受costmap生成的 global costmap 规划出从起始点到目标点的路径,为local_planner 作出参考。
local_planner : 为navigation 的局部规划器,接受costmap 生成的local costmap 规划出速度。
recovery_behavior : 规定move_base 行为集合中处理异常情况的行为