直到我整理完move_base后才发现costmap也十分重要,这才有了这篇文章。
costmap是一个package,用在move_base的global_map和local_map当中。用于将laser扫面数据或者点云数据转化成一个2d的网格地图
1.总览
简单来说,地图中分成几部分
灰色部分:安全区域,robot运动在该区域不会发生碰撞
红色部分:危险区域,robot的footprint覆盖到该色网格就肯定会发生碰撞
蓝色部分:风险区域,robot在该区域有可能发生碰撞
红色几何型:robot在地图中所占的区域
2.两个操作
costmap订阅传感器发布的主题数据并更新自身地图,其中有两个操作
marking:标识该区域为障碍信息
clearing:清除该区域的障碍信息
3.网格的三种状态
每个网格会被赋予一个0~254之间的值,代表三种不同的状态
occupied:占有,unknow:未知,free:空闲。
4.地图更新和tf
costmap根据update frequency参数定期来更新地图。每个周期内,根据传感器信息mark/clear地图中的网格。
costmap更新构造地图,默认情况是,global_frame(/map)和 robot_base_frame(/base_link)和他们之间的frame都是连接的,并且定期更新的。如果tf没有按照定期的频率来更新,那navigation stack将会停止robot的运动。
5.网格的赋