参考链接:https://www.ncnynl.com/archives/201904/2915.html
cartographer创建的地图格式与gmapping、hector_slam等生成的地图格式不同,不能使用map_saver节点保存地图。需要使用以下命令保存地图:
- 请求/finish_trajectory服务,完成轨迹,不再接收数据:
rosservice call /finish_trajectory 0
- 请求/write_state服务,保存当前状态,其中路径可以根据需要自行更改:
rosservice call /write_state "{filename: '${HOME}/Downloads/mymap.pbstream'}"
- 运行cartographer_pbstream_to_ros_map节点,将保存的.pbstream文件转为.pgm和.yaml文件:
rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=${HOME}/Downloads/mymap -pbstream_filename=${HOME}/Downloads/mymap.pbstream -resolution=0.05
特别要注意的是节点后面的两个参数一个是-map_filestem,另一个是-pbstream_filename。