关于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

posted @ 2020-03-10 21:27  longlongban  阅读(3354)  评论(0编辑  收藏  举报