神特么覆盖原有地图,神特么改源码,这CSDN和百度里面全都是抄来抄去。
Cartographer定位和建图都是用的一套代码。
只是在Rviz里面显示出来的效果是一直在覆盖原地图而已。
在Rviz中submap下的trajectory0就是原地图,trajectory1就是定位时建立的局部地图,Cartographer定位就是用实时的局部地图去匹配原地图。他俩本来就是独立的,trajectory1不会覆盖trajectory0,你把trajectory1不勾选,看到的效果就是实时点云匹配原地图了。
另外,使用Cartographer进行建图或定位,都需要针对场景进行调参!调参!调参!这个就不展开说了,官网写的挺详细的。
如何获得定位过程中的实时位姿?
这里只需要更改 cartographer_ros 下 node_options.h 的一个参数即可,即:carto_ws/src/cartographer_ros/cartographer_ros/cartographer_ros/node_options.h。
将bool publish_tracked_pose = false; 更改成 true。
重新编译以后在topic list中就会存在一个tracked_pose 话题,这就是实时位姿。