ORB SLAM2论文

ORB SALM2

类型:V-SLAM
传感器:单目/双目/RGB-D相机

在ORB SLAM的基础上提出ORB SLAM2,贡献如下:

1.首个基于单目,双目和RGB-D相机的开源SLAM方案,这个方案包括:回环检测,地图重用和重定位。

2.RGB-D结果说明,BA比ICP或者最小化光度/深度误差的方法更加精确。

3.通过使用远处和近处的双目特征点和单目观测结果,我们的双目的结果比直接使用双目系统更加精确。

4.针对无法建图的情况,提出了一个轻量化的定位模式 ,能够更加有效的重用地图。

1. 系统

在这里插入图片描述
在这里插入图片描述
ORB-SLAM2由三个平行的线程组成,跟踪,局部建图和回环检测。在一次回环检测后,会执行第四个线程,去执行BA优化。跟踪的线程在双目或者RGB-D输入之前进行,因此剩下的系统模块能够跟传感器模块独立运行。单目ORB-SLAM2工作图也是这幅图。

1.1 单目,近双目和远双目特征点

处理单目或双目的特征点时,将其分成远处特征点和近处特征点两类。
双目特征点通过三个坐标定义xs=(uL,vL,uR),(uL,vL)是这个左边图像的坐标,uR是右图当中的水平坐标。之后会将左边图像产生的双目ORB特征点,及一条水平的线和右边的图像进行匹配,通过修补相关性来重新定义亚像素(??)。对于RGB-D相机,在图像通道上提取ORB特征点,将其深度值d转换为虚拟右坐标:
在这里插入图片描述
f_x表示水平焦距,b表示在结构光投影器和红外相机间的基线长度。深度传感器的不确定性被虚拟右坐标代替,通过这种方式,双目和RGB-D相机的输入被系统的其余部分做同等处理。

近双目特征点:匹配得到的深度值小于40倍双目或者RGB-D的基线,否则的话,是远特征点。
近特征点能够从一帧的深度值进行三角测量化,是精确的估计,并且能够提供尺度,平移和旋转的信息。
远特征点,能够提供精确的旋转信息,但是很少的尺度和平移信息。当多个视图支持它们时,我们才能三角化那些远的点。

单目特征点通过左边图像的两个坐标xm=(uL,vL)定义,单目特征点仅能够从多视图中三角测量化并且不能够提供尺度信息,但是可以提供旋转和平移的估计信息。

1.2 系统引导

使用立体声或RGB-D摄像机的主要好处之一是,通过仅获取一帧的深度信息,我们就不需要像单眼情况那样通过运动初始化获得特定的结构。在系统启动时,我们用第一帧创建关键帧,将其姿势设置为原点,并从所有立体关键点创建初始贴图。

1.3 单目/双目BA

tracking线程中使用纯运动BA(motion-only BA)优化相机位姿,
local mapping线程中使用局部BA(local BA )优化本地窗口的关键帧和局部地图的特征点;
loop closing线程中使用全局BA(full BA)优化所有关键帧和特征点.
根据Levenberg-Marquardt方法使用g2o库实现.

motion-only BA

优化相机旋转矩阵R和位置t,最小化世界坐标系下匹配3D点云和特征点的重投影误差:
在这里插入图片描述
ρ是具有鲁棒性的Huber的cost函数,Σ是协方差矩阵,关联对于特征点的尺度。π(.)是投影函数,单目的时候使用π_m,修正双目的时候用π_s.定义如下:
在这里插入图片描述
(fx,fy)—焦距,(cx,cy)—主点(象点),b—基线,通过标定获得。

local BA

采用一系列可见的关键帧K_L和所有在关键帧可观点P_L,所有的其他关键帧是K_F,而不是K_L,观察P_L当中所有的特征点用于cost函数,但是在优化中是固定的。
优化一组共视的关键帧KL这些关键帧中所有可见的特征点PL. 其余非共视的关键帧KF中的特征点也对优化做出贡献,但是不对其中的特征点做处理.
定义Xk为PL和关键帧k中的特征点和PL的一系列匹配的特征点,优化问题可以描述如下:
在这里插入图片描述

Full BA

local BA 的特殊情况.除了初始帧以外所有的关键帧和点在地图当中都会被优化。初始帧是固定的,用来消除随机化。

1.4 loop closing & full BA

回环检测包含两步: 一个回环信息被确定检测到,然后利用它回环纠正和优化位姿图。

在ORB-SLAM2的位姿优化后,我们包含一个全局的BA优化,为了实现一个优化方案,我们必须采用一个独立的线程,允许系统能够持续的建图,并且检测到回环信息。但是这将会再次触发全局BA优化与当前地图的合成。如果在优化运行时检测到新的循环,我们将中止优化并继续关闭循环,这将再次启动完整的BA优化。当完整的BA结束时,我们需要将更新的关键帧子集和由完整BA优化的点与未更新的关键帧和在优化运行时插入的点合并。最后通过更新更新关键帧校正(例如,这个变换从未优化到已优化)到一个未更新关键帧通过生成树当中。根据校正参考帧来变换那些未更新的特征点。

1.5 插入关键帧

ORB-SLAM2遵循在单目ORB-SLAM中提的法则,即经常插入关键帧并且剔除上一帧的冗余。在远近特征点的差异为我们插入一个新的关键帧提供了条件.

1.6 定位模式

ORB-SLAM2包括一个定位模式,该模式适用于轻量级以及在地图已知情况下长期运行,只要那个环境没有发生剧烈变化。在该模式中,局部建图和回环检测的线程中是停用的,并且这个相机始终都是在通过追踪进行重定位。在这个模式下,追踪模块使用视觉里程计进行匹配图像的点云。视觉里程计匹配在当前帧的ORB算子和由双目或者深度相机收集的3D点云。这些匹配使得在没有地图的区域也能够精确的重新定位,但是漂移将会累加。地图点云匹配要确保在一个已经存在的地图当中零漂移定位.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你想学习 ORB-SLAM2,是一个基于特征点的稀疏直接法视觉 SLAM 系统。这个系统能够通过摄像头捕捉到的图像来构建三维地图并同时估计相机的运动轨迹。要学习 ORB-SLAM2,你可以按照以下步骤进行: 1. 了解 SLAM:首先,你需要了解什么是视觉 SLAM,包括它在机器人、增强现实和自动驾驶等领域中的应用。你可以阅读相关的论文或教材来掌握 SLAM 的基本概念。 2. 学习 ORB 特征点描述符:ORB-SLAM2 使用 ORB 特征点描述符来提取和匹配图像特征。你可以学习 ORB 特征点描述符的原理和实现方法,并了解特征点在 SLAM 中的作用。 3. 下载并阅读源代码:ORB-SLAM2 是开源的,你可以在其 GitHub 上找到代码和文档。下载代码后,阅读文档以了解系统的结构和使用方法。 4. 安装依赖库:ORB-SLAM2 使用了一些第三方库,如 OpenCV 和 Eigen。确保你已经正确安装和配置了这些库,并按照文档中的指导完成编译和配置。 5. 运行示例程序:ORB-SLAM2 附带了一些示例程序,你可以用它们来运行系统并观察其行为。首先,你可以尝试使用它们提供的演示数据集,以便更好地理解系统的工作原理。 6. 实践与调试:一旦你对系统有了基本的了解,你可以尝试将 ORB-SLAM2 应用到自己的数据集或实际场景中。在此过程中,你可能会遇到一些问题或 bug,需要进行调试和优化。 7. 学习进阶内容:一旦你熟悉了 ORB-SLAM2 的基本用法,你可以进一步学习其内部原理和算法细节。这将有助于你更好地理解系统,并能够针对特定需求进行定制和优化。 记住,学习 ORB-SLAM2 需要一定的数学和计算机视觉基础。如果你是初学者,建议先学习相关的数学和计算机视觉知识,然后再深入研究 ORB-SLAM2。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值