ROS包查询
点击此处
ROS包介绍
- move_base
- map_server
- costmap_2d
- multi_robot_collision_avoidance
move_base
点击此处
move_base是ROS下关于机器人路径规划的中心枢纽。
功能:通过订阅激光雷达、map地图、amcl的定位等数据,然后规划出全局和局部路径,再将路径转化为机器人的速度信息
move_base核心的部分是框框内的部分,主要包括global planner和local planner以及一些修复机制,包括rotate_recovery和clear_cost_map_recovery。
在move_base.launch 文件中,param中有很多参数可以设置,这些参数的好坏直接决定了运动规划的性能
有人可能会问,global planner是怎么和local planner联通的呢,这里不同的算法可能使用了不同的方法,但核心都是大致相同了,都是将global planner作为local planner的一个初始参考或者优化方向。
这些在深入看两个源码时就会有更加深入的理解了。
目前ROS中可以使用的global planner主要包括:A*和Dijkstra。local planner主要有:dwa、trajectory、teb和eband等
ROS中的主流slam算法:
1.gmapping:需要激光雷达scan数据和里程计odom数据,采用的是PF(粒子滤波)。
2.hector :基于优化的算法(解最小二乘问题),优缺点:不需要里程计,但对于雷达帧率要求很高40Hz,估计6自由度位姿,可以适应空中或者地面不平坦的情况。初值的选择对结果影响很大,所以要求雷达帧率较高。
3.Cartographer:累计误差较前两种算法低,能天然的输出协方差矩阵,后端优化的输入项。成本较低的雷达也能跑出不错的效果。
map_server
功能:通过解析slam建好的地图并发布出去
costmap_2d
功能:提供了一个2D成本图的实现,该图可以从世界中获取传感器数据,构建数据的2D或3D占用网格(取决于是否使用基于体素的实现)
代价地图主要有以下几个层:
注:1.全局路径规划一般需要静态层和膨胀层,因为全局规划应该只考虑到地图信息,所以一般都是静态的。
2.局部路径规划则需要考虑到实时的障碍物信息,所以需要障碍物层和膨胀层,由于定位可能存在误差,这里不把静态层放到局部路径规。
multi_robot_collision_avoidance