參考鏈接: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。