ORB-SLAM辅助Cartographer重定位建图效果改进

任务动机:开发程序实现ORB-SLAM辅助Cartographer在无结构环境下进行全局重定位,Cartographer通过调参删除相似地图帧后,一方面降低了建图的数据量,但另一方面造成了ORB-SLAM匹配特征点的不足,本文项目用于解决这个问题。

任务描述:相关开发步骤和效果整理到文档。

1. 室外轨迹

1.1 建图与重定位视频链接

链接:https://pan.baidu.com/s/1TaJZWyNK4RwcRW6cbYthkg  

提取码:rbo7

1.2 建图

        绿线部分是原ORB-SLAM2建图结果,无绿线部分采用偏航角间隔2度或位移0.2m插入一帧关键帧。


1.3 原轨迹重定位效果

        使用Cartographer优化后的轨迹作为Ground Truth,将原轨迹所有帧在2)中地图进行重定位得到的结果与Ground Truth比较,在最后一步尝试以下两种方式匹配当前帧和关键帧,得到轨迹、位移和姿态的比较结果如图,发现第一种方式表现好

### Cartographer SLAM 融合实现方法 Cartographer 是一种用于机器人同步定位与地SLAM)的开源库,支持激光雷达和惯性测量单元(IMU)数据融合。以下是关于如何通过 Cartographer 进行融合的具体实现方法: #### 1. 数据源准备 为了完成融合 map 的任务,通常需要以下两种主要传感器的数据输入: - **激光雷达 (LiDAR)**:提供精确的距离测量数据。 - **惯性测量单元 (IMU)**:补充 LiDAR 数据中的高频噪声并增强系统的鲁棒性。 这些数据可以通过 ROS 主题发布到 Cartographer 中处理[^1]。 --- #### 2. 安装与配置 Cartographer 在 Ubuntu 系统上安装 Cartographer 及其依赖项是一个必要的前提条件。具体步骤可以参考官方文档或者相关教程[^4]。确保所有依赖包已正确安装,并编译成功后才能继续后续操作。 --- #### 3. 启动 Cartographer 并加载参数文件 启动 Cartographer 需要指定一个适合当前硬件平台的 `.lua` 参数文件。此文件定义了传感器模型、频率以及其他重要设置。例如,在 TurtleBot 上运行时可能使用的 `turtlebot.lua` 文件会包含如下内容片段: ```lua include "map_builder.lua" include "trajectory_builder.lua" options = { map_builder = MAP_BUILDER, trajectory_builder = TRAJECTORY_BUILDER, map_frame = STRING_ARG("map"), tracking_frame = STRING_ARG("base_link"), published_frame = STRING_ARG("odom"), odom_tframe = STRING_ARG("odom"), provide_odom_frame = false, publish_frame_projected_to_2d = true, use_pose_extrapolator = true, } ``` 上述代码展示了如何配置不同坐标系之间的关系以及是否启用某些功能模块。 --- #### 4. 地保存流程 当完成实时之后,如果希望将生成的地持久化存储下来,则需按照特定命令序列执行保存动作。这不同于传统方式直接调用 `map_server` 提供的服务接口;相反,Cartographer 使用了自己的机制来导出 PBStream 格式的二进制文件表示整个拓扑结构及其关联信息[^3]。 具体的保存过程涉及以下几个关键指令: 1. 终止轨迹记录服务请求; 2. 将内部状态写入磁盘上的目标路径下; 3. 利用转换工具进一步提取二维栅格形式的地像以便于可视化展示或其他用途。 --- #### 5. ORB-SLAM 辅助重定位优化 除了单纯依靠 Cartographer 自身的能力之外,还可以引入视觉里程计技术比如 ORB-SLAM 来提升整体性能表现。这种方法特别适用于动态场景变化较大而仅靠几何特征难以维持一致性的情况之下。实验表明经过如此改进之后能够显著降低累计误差率并且提高全局精度水平[^5]。 --- ```bash rosservice call /finish_trajectory 0 rosservice call /write_state "{filename: '~/Downloads/mymap.pbstream'}" rosrun cartographer_ros cartographer_pbstream_to_ros_map \ -map_filestem='~/Downloads/mymap' \ -pbstream_filename='~/Downloads/mymap.pbstream' \ -resolution=0.05 ``` 以上脚本演示了标准的操作手法以最终获得可读取的地成果物。 --- ### 总结 综上所述,利用 Google Cartographer 实现高效的 SLAM 不仅限于理论层面探讨还需要实际动手实践不断摸索调整直至达到理想效果为止。同时结合其他先进算法如 ORB-SLAM 更能发挥各自优势从而取得更优解方案。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值