ORB-SLAM3:单目+IMU初始化流程梳理

Brief

参考文献

ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM
Inertial-Only Optimization for Visual-Inertial Initialization
Visual-Inertial Monocular SLAM with Map Reuse

理论基础

  1. Pure monocular SLAM can provide very accurate initial maps, whose main problem is that scale is unknown. Solving first the vision-only problem will enhance IMU initialization.
    纯视觉SLAM可以提供很好的位姿初始化估计,只是缺失了尺度信息,此结果可以用来改善IMU的估计。
  2. Scale converges much faster when it is explicitly represented as an optimization variable, instead of using the implicit representation of BA.
    显式地将尺度表示为一个优化的变量, 而非隐含在BA的表达式中,尺度会更快地收敛。
  3. Ignoring sensor uncertainties during IMU initialization produces large unpredictable errors.
    在IMU初始化阶段,忽略传感器的不确定度将会产生更多不可预知错误。

初始化主要作用是估计IMU的bias(上述传感器不确定度), 恢复单目地图的尺度, 对齐到惯性系。
整个过程分为以下步骤:

  1. Vision-only MAP Estimation,纯视觉MAP估计;
  2. Inertial-only MAP Estimation,纯惯导MAP估计;
  3. Visual-Inertial MAP Estimation,视觉惯导联合MAP估计;
  4. To improve the initial estimation, visual-inertial BA is performed 5 and 15 seconds after initialization,在不同时间点重复多次以保证效果。

Steps

Vision-Only

采用ORB-SLAM经典框架纯视觉初始化流程,即进行单目SLAM。
按照关键帧速率4Hz持续运行2s,然后我们可以得到按比例缩放的地图,包括 10个关键帧以及上百个地图点,然后通过Visual-Only BA进行优化。
因子图如下图所示,实际上即为优化特征点重投影误差。
可以得到优化后的轨迹 ,其中上划线表示按比例缩放的变量(即尺度未定)。
在这里插入图片描述

Inertial-Only

这一步的目的是获得IMU参数最优估计。
利用前述单目视觉SLAM初始化后稳定运行的数据(包含10个关键帧的地图),以及这些关键帧之间的IMU测量,包括:尺度因子、重力方向、IMU传感器偏置参数(bias,2个传感器各3个轴,共6个参数)、关键帧的无尺度速度。这些IMU测量,放在一起构成状态向量,构建优化问题求解。
这个优化问题的因子图表示为下图,不包含视觉残差,而是多了一个先验残差项 用来约束IMU的bias需要接近于0。
在这里插入图片描述

Vision-Inertial BA

一旦视觉以及IMU有了较好的估计后,进行一个VI联合优化进一步对这些参数进行精化,优化因子图如下。
在这里插入图片描述

Implementation

纯视觉SLAM初始化实现参考文末单目初始化解读系列文章。
后续步骤流程梳理如下图:
在这里插入图片描述
IMU初始化流程主要为3次对InitializeIMU()函数的调用,见上图红色框。
纯视觉初始化后到累积10个关键帧之前,使用纯视觉BA,见上图绿色框。
当视觉-惯导初始化完成后,LocalMapping正常进行VI-SLAM功能时,调用LocalInertialBA()函数,见上图蓝色框。

相关解读文章

ORB-SLAM3论文阅读笔记
单目初始化解读(上)
单目初始化解读(下)
单目初始化总结
IMU初始化代码解读

  • 5
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要在ORB-SLAM3中运行RGBD IMU模式,您需要进行以下步骤: 1. 首先,您需要将ORB-SLAM3安装到您的系统上。您可以按照引用中提到的文章中的说明进行配置和安装。请确保您的系统已正确配置ORB-SLAM3的运行环境。 2. 在ORB-SLAM3中,RGBD IMU模式是通过添加RGBD-inertial模式和其对应的ROS接口实现的。引用中提到了这个新特性。您可以根据ORB-SLAM3的官方文档或示例代码来了解如何使用RGBD IMU模式。 3. 在ORB-SLAM3中,有两种ROS接口可供使用:Mono_inertial和Stereo_inertial。您可以根据您的实际需求选择其中之一。这些接口可以帮助您在ROS环境中使用ORB-SLAM3的RGBD IMU模式。 4. 在使用ORB-SLAM3的RGBD IMU模式之前,您可能需要确保您的系统有正确的IMU数据来源。这可能涉及到硬件设备的连接和配置,以及相关驱动程序的安装。 总之,要在ORB-SLAM3中运行RGBD IMU模式,您需要正确安装ORB-SLAM3、配置相关运行环境,并根据官方文档或示例代码了解如何使用RGBD-inertial模式和对应的ROS接口。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Ubuntu 18.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM2+SLAM相关库的安装](https://blog.csdn.net/zardforever123/article/details/127138151)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [RGBD惯性模式及其ROS接口已添加到ORB_SLAM3。-C/C++开发](https://download.csdn.net/download/weixin_42134143/19108628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值