cartographer 第一篇(官网2D Pure localization)
OS: ubuntu 22.04
虚拟机: virtual box 7.0
ros: ros2 humble
〇、 概述
cartographer的文档看上去还是比较全面和完整的,使用的人也比较多,所以没有计划写本文。但因在自己实际上车上跑完功能后想跑一下pure localization功能,发现了不少坑所以在此记录以供大家参考,这些坑多半是原文档使用的是ros1环境,我们将在ros2(humble)上完成本实验。
主要参考了官方文档《Running Cartographer ROS on a demo bag》,涉及到的ros bag,如果读者外网下载比较慢的读者可以从以下链接获取。
| 文件 | 链接 | 提取码 | 说明 |
|---|---|---|---|
| b2-2016-04-05-14-44-52.bag | https://pan.baidu.com/s/16GtZ72Go5b3EBuWGfEBdSg?pwd=1024 | 1024 | cartographer demo原始数据包 |
| b2-2016-04-27-12-31-41.bag | https://pan.baidu.com/s/19as_8AsfXph7DekgRFF6ag?pwd=1024 | 1024 | cartographer demo原始数据包 |
| b2-ros2-2016-04-05-14-44-52.zip | https://pan.baidu.com/s/1Nr-uwPH8ww9aMZmP4oIx_g?pwd=1024 | 1024 | cartographer demo原始数据包转化后的ros2数据包 |
| b2-ros2-2016-04-27-12-31-41.zip | https://pan.baidu.com/s/1IVLFpEM5LCOjj_Vz6htftg?pwd=1024 | 1024 | cartographer demo原始数据包转化后的ros2数据包 |
一、 安装和下载
1.1 安装ros相关的库
sudoapt-getinstallros-humble-cartographer ros-humble-cartographer-ros-msgs\ros-humble-cartographer-ros ros-humble-cartographer-rviz# 下载数据集,以下部分如果使用即可忽略# 安装pip3installrosbags>=0.9.11# 下载原始数据wget-P~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/b2-2016-04-05-14-44-52.bagwget-P~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/b2-2016-04-27-12-31-41.bag# ros1的bag转为ros2rosbags-convert--src$HOME/Downloads/b2-2016-04-05-14-44-52.bag\--dst$HOME/Downloads/b2-ros2-2016-04-05-14-44-52 rosbags-convert--src$HOME/Downloads/b2-2016-04-27-12-31-41.bag\--dst$HOME/Downloads/b2-ros2-2016-04-27-12-31-41# 完成后,转化好的ros2 bag在$HOME/Downloads/b2-ros2-b2-2016-04-05-14-44-52和$HOME/Downloads/b2-ros2-2016-04-27-12-31-41中为了后续的命令保证一致,下载完后的目录结构如下:
~/Downloads/ - b2-ros2-2016-04-05-14-44-52 - b2-ros2-2016-04-05-14-44-52.db3 - metadata.yaml - b2-ros2-2016-04-27-12-31-41 - b2-ros2-2016-04-27-12-31-41.db3 - metadata.yaml二、 实验
2.1 建图
# 该命令执行建图,时间较长,运行完成后在$HOME/Downloads/b2-ros2-2016-04-05-14-44-52/生成# b2-ros2-2016-04-05-14-44-52.db3.pbstream文件# 建立的地图如图2-1ros2 launch cartographer_ros offline_backpack_2d.launch.py\bag_filenames:=$HOME/Downloads/b2-ros2-2016-04-05-14-44-52/b2-ros2-2016-04-05-14-44-52.db32.2 定位
# 该命令执行定位,时间较长ros2 launch cartographer_ros demo_backpack_2d_localization.launch.py\load_state_filename:=${HOME}/Downloads/b2-ros2-2016-04-05-14-44-52/b2-ros2-2016-04-05-14-44-52.db3.pbstream\bag_filename:=${HOME}/Downloads/b2-ros2-2016-04-27-12-31-41/b2-ros2-2016-04-27-12-31-41.db3定位过程还是出现不少问题,如图2-2中的1和2、如2-3中的3和4没有匹配上,具体原因待深入学习后补充。定位的视频放在B大了,参考[3]、[4],因为能力有限目前只做了复现,还没有深层次分析。
三、踩坑记录
3.1 bug1
# 如图 3-1[rosbag2 storage]:No storageidspecified, and no plugin found that couldopenURI原因:
原数据为ros1的数据包,需要转为ros2的数据包。
解决方案:
参考1.1
3.2 bug2
[rviz2: PluginlibFactory: The pluginforclass ‘cartographer viz/SubmapsDisplay' faied.to 1oad. Error: Acording to the Loaded plugin descriptions the class cartographer ryiz/SubmapsDisplay with base.原因:
未安装ros-humble-cartographer-rviz。
解决方案:
sudo apt-get install ros-humble-cartographer-rviz
参考:
[1]《原始论文》https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45466.pdf
[2]《Running Cartographer ROS on a demo bag》 https://google-cartographer-ros.readthedocs.io/en/latest/demos.html#
[3] 《建图过程》 https://www.bilibili.com/video/BV1rUcbzKEpM/?vd_source=a33091cb2e4b741ad90e89f2a1e8200a
[4] 《Pure localization过程》https://www.bilibili.com/video/BV1oLcbzZE6T/?vd_source=a33091cb2e4b741ad90e89f2a1e8200a
