关于cartographer的地图
关于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