Navigation系统和人在使用地图app进行导航的过程类似,接下来让我们看下面的两幅框图:
global_planner(全局规划器)从map _server地图服务器获取global_costmap(全局地图数据),然后根
据输入的导航目的地(move_base_simple/goal)生成全局导航路线(internal nav_msgs/Path)发送给
local_planner(局部规划器),由脑子来驱动机器人的底盘通讯节点(local_planner),控制机器人
沿着全局导航路线进行移动,在这过程中需要激光雷达(也就是机器人的眼睛)结合定位器amcl节
点来实时给出机器人的自身位置(tf),同时还需要里程计(odom)来提升定位的可靠性,在移动过程
中经常会出现一些临时障碍物,所以机器人还会使用雷达、相机等传感器实时生成机器人周围的障
碍物地图,又称local_costmap(局部地图)。当遇到临时障碍物挡住导航路线时,会动用局部规划
器的避障算法绕开障碍物,若实在绕不过去会激活应急机制,机器人会采用一系列措施尝试突破这
种困境。尝试所有措施依旧无法突破,会将障碍物更新至全局地图中,请求全局规划器再规划一条
新的路线直至最终完成导航任务。
move_base:move_base的软件包包含了很多用于导航的功能,并且其中也包含了一个同名的
move_base节点,将全局规划器和局部规划器连到了一起,同时还维护着两个地图分别给两个规
划器使用,也就是上图中的大方框所示。
下图所示的四个红色方框表示给move_base节点输送数据原料的四条线路,当四个线路都正常工
作且给定导航目标点,move_base才会输出指令给底盘节点驱动机器人行驶去往目标点。
1、map_server:地图服务节点,将地图运行起来并将导航需要的地图文件加载进去,move_base
就会自动来获取地图数据。
2、sensor sources:多个叠加在一起多个传感器节点,仿真机器人加载到仿真环境之中会自动输
出这些数据到对应的话题。
3、odometry sources:仿真机器人自己提供。
4、tf:仿真机器人自带。
5、amcl:定位节点,需要自己运行,软件包和节点名均为amcl。
总结:将下列三个节点运行起来,再指定一下导航目标点就能让move_base控制机器人进行自主
导航了