ROS导航navigation功能包
如上图所示,首先要知道导航中的目标点(Goal), 然后 AMCL 会获取当前坐标点,Path Planner即为路径规划,Move_base 主要解决的是本地优化(Path Planner相当于全局规划,move_base相当于本地规划),在ROS中可以采用Move_base功能包,该功能包包含有全局规划与本地规划。然后Move_base会发布一个速度指令给底层驱动器,完成导航功能。
上图显示了,在move_base中的关系。其中蓝色为重点关注的,白色为提供的结点(已经不需要我们来进行修改了)。其中map_server为提前建好的地图,为可选环节。amcl为定位功能包,也可以用里程计得到定位功能。右边的sensor sources为传感器信息,提供深度信息。sensor transforms为模型中相对关系,一般urdf可以自动生成。odometry source为里程计信息。输出信息为base controller,为速度信息。
在Move_base功能包中,提供的全局路径规划算法为 Dijkstar和A*算法中,选择一个。默认为 Dijkstra算法,该算法搜索速度慢,但是得到的为全局最优解。具体内容可以参看路径优化算法–Dijkstra和A*算法及其Matlab实现。本地规划算法为 Trajectory Rollout 和 Dynamic Window Approaches算法,目标为搜索躲避行进过程中的障碍物,并选取最优路径。
amcl功能包中采用的为蒙特卡洛定位方法。蓝色的粒子云为用来定位的,其中最为密集的地方为估计的位置。
几个坐标系的说明:/odom里程计坐标系,为编码器积分所得。/base_frame 为里程计信息进行航迹推测得到的坐标系。/map坐标系为amcl得到,即雷达信息与地图之间的匹配,得到当前机器人的坐标位置。