当前位置: 首页 > news >正文

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.baghttps://pan.baidu.com/s/16GtZ72Go5b3EBuWGfEBdSg?pwd=10241024cartographer demo原始数据包
b2-2016-04-27-12-31-41.baghttps://pan.baidu.com/s/19as_8AsfXph7DekgRFF6ag?pwd=10241024cartographer demo原始数据包
b2-ros2-2016-04-05-14-44-52.ziphttps://pan.baidu.com/s/1Nr-uwPH8ww9aMZmP4oIx_g?pwd=10241024cartographer demo原始数据包转化后的ros2数据包
b2-ros2-2016-04-27-12-31-41.ziphttps://pan.baidu.com/s/1IVLFpEM5LCOjj_Vz6htftg?pwd=10241024cartographer 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.db3

图2-1 建立的地图

2.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],因为能力有限目前只做了复现,还没有深层次分析。

图2-2 定位过程1

图2-3 定位过程2

图2-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

图3-1 错误报警

参考:

[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

http://www.jsqmd.com/news/476735/

相关文章:

  • 瑞芯微开发板固件烧写:从变砖边缘到成功启动的实战指南
  • QGIS实战:5分钟搞定天地图道路数据下载与裁剪(附详细步骤)
  • JavaEE进阶10——SpringMVC小练习
  • 优惠券、满减、折扣同时生效,价格到底怎么算?
  • TI DSP 6678缓存优化全解析:如何用MAR寄存器提升实时性
  • “是我!”庆祝马里奥40年来始终坚持的匠心精神
  • 端口敲门技术深度对比:knockd vs SPA vs SDP,谁更适合你的服务器防护?
  • GIS数据处理必备:ArcMap中北京54与WGS84坐标系的区别与转换技巧
  • 计算机网络的定义和分类
  • EPLAN端子排自定义:从零搭建到高效维护
  • Electron 实战:将用户输入保存到本地文件 —— 基于 `fs.writeFileSync` 与 IPC 的安全写入方案
  • SenseVoice-small-ONNX效果展示:中日韩三国语言混合演讲识别连贯性测试
  • ThinkPad 满分维修评级:进步、妥协与公正性质疑
  • MacBook Air M5:性价比提升与开源支持困境
  • 2024年企业级网络架构实战:跨地域OSPF与BGP混合组网解析
  • 游戏开发必知:透视投影与正交投影的7个核心差异及适用场景
  • pure-ftpd安全配置全指南:从防火墙规则到虚拟用户权限管理
  • 通用文件读写封装:告别重复造轮子,让 C 语言文件操作更高效
  • 个人GPU福音!Kook Zimage真实幻想Turbo在独立游戏美术中的落地实践
  • FFC实战:如何用Fast Fourier Convolution提升图像修复效果(附代码示例)
  • Lattice Radiant 2024.2 从零到一:免费FPGA开发环境搭建与许可激活全攻略
  • 全栈可视化开发新选择 网易 CodeWave 开发效率拉满
  • nanobot效果展示:Qwen3-4B在QQ中执行netstat -tuln并解释监听端口含义
  • 实战指南:如何在鲲鹏云上快速搭建PostgreSQL数据库(含性能调优技巧)
  • 量化交易实战:从零搭建你的首个自动化交易系统(2025版)
  • Niushop开源商城文件上传漏洞实战:从零复现到蚁剑连接完整流程
  • 【ZERO-PAD】基于微雪RP2040-ZERO与QMK的模块化桌面宏键盘DIY全攻略
  • Kook Zimage 真实幻想 Turbo 与AI技术结合:打造高效图像生成方案
  • MusePublic Art Studio艺术治疗应用:心理疗愈图像生成实践案例
  • SDXL-Turbo 保姆级教程:零基础搭建你的实时AI画板