路径规划,导航,机器人运动的调整等
Navigation Stack工作原理:
中间的部分是一个节点,move_base ,负责整体的导航规划,里面有插件不是node,只是node的一部分,灰色的是可选的,可以用给定的地图,也可以边走边建,蓝色的是必须要给出的信息,而且是要依赖自己的平台的,(传感器,里程计)
输入:
/tf 机器人关节的关系 base frame 、机器人和odom之间的关系,odom和map之间的关系。
odom 里程计的信息
还有map,可以由map service来给,也可以由slam Gmapping之类的来给
传感器的数据:激光雷达,点云…
输出就一个:cmd_vel发给机器人底盘base controller 速度 角速度等信息
Move_base
三个功能:
全局规划: rviz中输入一个点,机器人就会从当前位置到目标点执行一个可行的路线(只考虑静态的障碍物,所以需要局部的规划来进行动态的避障)
局部规划: 进行动态的避障
处理异常行为: 处理各种场景偶尔也会出现问题,复原一些异常行为
Move_base有三个接口部分,每一部分都需要制定算法或者规则,ros提供了很多插件,这三个功能都是继承于nav_core这个package
base local planner: base_local_planner dwa_local_planner(常用)
base global planner:
recovert behavior:
costmap
之前的map是全局的,原来的map是静态二维的一张地图
costmap主要用来导航,costmap是两张(global_costmap和local_costmap),2维的,是为全局和局部路径规划做准备的,而且具有多层的结构.
一般有三层
obstacle layer 可以把3d的障碍无投影到2d实现避障
inflation layer 把障碍物膨胀一圈,划定安全范围,避免机器人外壳触碰到
MapServer
MapServer提供地图, 加上定位 AMCL,配合使用
使用mapservice要用到2个信息
一个是.pgm的图片,另一个是my_map.yaml参数文件.判断障碍物,要计算occ概率.
AMCL
对比
只通过odom里程计信息计算
acml修正
roslaunch robot_sim_demo robot_spawn.launch
roslaunch navigation_sim_demo amcl_demo.launch
roslaunch navigation_sim_demo view_navigation.launch
rqt_graph可以看到
move_base路径规划 amcl定位 map提供地图