關於cartographer的地圖
參考博文:
https://www.ncnynl.com/archives/201904/2915.html
一 建圖后的保存以及實現
1 完成軌跡,不接受下一步數據
$ rosservice call /finish_trajectory 0
2 序列化保存當前狀態(地圖保存為.pbstream形式)
$ rosservice call /write_state "{filename: '${HOME}/Downloads/mymap.pbstream'}"
3 將.pbstream形式地圖轉化成.pgm和.yaml(ROS標准形式地圖)
利用 cartographer_pbstream_to_ros_map 節點
$ rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=${HOME}/Downloads/mymap -pbstream_filename=${HOME}/Downloads/mymap.pbstream -resolution=0.05
二 基於已有地圖的定位問題
1 cartographer 目前只是支持基於.pbstream 格式地圖的 pure localization 。
而.pbstream格式只能向.pgm ,yaml 格式的地圖單向轉換。
解決思路:
可以自己寫一個轉換器,把ROS標准格式的地圖寫成只有一個子圖的.pbstream格式地圖。
不過這部分需要自己完成。
有人就cartographer基於已知地圖的定位,提出的問題:
https://github.com/googlecartographer/cartographer/issues/315