自主导航系列17-costmap
日期:2020-9-1
1,movebase总体框架
2,仿真环境下的结构关系
需要修改的部分
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pUTnjJBv-1599208020713)(/home/jianzhuozhu/.config/Typora/typora-user-images/image-20200901091640714.png)]
rostopic info /move_base_node/global_costmap/costmap
Type: nav_msgs/OccupancyGrid
Publishers:
* /move_base_node (http://jianzhuozhu-OptiPlex-9020:36349/)
Subscribers:
* /rviz_1598922383833240639 (http://jianzhuozhu-OptiPlex-9020:34877/)
3,costmap的创建过程
这个是/map的
rostopic info /map
Type: nav_msgs/OccupancyGrid
Publishers:
* /slam_gmapping (http://jianzhuozhu-OptiPlex-9020:36009/)
Subscribers:
* /move_base_node (http://jianzhuozhu-OptiPlex-9020:42111/)
* /rviz_1598945114230555719 (http://jianzhuozhu-OptiPlex-9020:37241/)
costmap不是单独一个栅格图,而是将一个栅格图分成了很多层,如最底下是静态地图,即墙壁,桌子等建地图时已经存在的障碍物;第二层是障碍物层;第三层是膨胀层,可以理解为把障碍物膨胀了一圈,最上面就是把前面各层的cost叠加起来形成最后的栅格图mast_grid。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nl43mMDp-1599208020715)(/home/jianzhuozhu/.config/Typora/typora-user-images/image-20200901214947050.png)]
因为global_costmap与local_costmap共同继承了common的命名空间,所以的在comman的文件中,添加了一个obstales,说明障碍物层的数据来源scan,"obstacles:"的作用是强调命名空间。
obstacles:
observation_sources: scan
scan: {data_type: LaserScan, topic: /scan, marking: true, clearing: true, expected_update_rate: 0}
在全局规划文件中加上layer插件
plugins:
- {name: static_map, type: "costmap_2d::StaticLayer"}
- {name: obstacles, type: "costmap_2d::VoxelLayer"}
- {name: simplelayer, type: "simple_layer_namespace::SimpleLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}