ORB-SLAM3:一个高精度视觉、视觉惯性和多地图SLAM开源库
ORB-SLAM3:一个高精度视觉、视觉惯性和多地图SLAM开源库(论文翻译)
Carlos Campos, Richard Elvira∗, Juan J. G´omez Rodr´ıguez, Jos´e M.M. Montiel and Juan D. Tard´os
翻译: 马
原文地址: https://editor.csdn.net/md/?articleId=119458838
文章目录
- ORB-SLAM3:一个高精度视觉、视觉惯性和多地图SLAM开源库(论文翻译)
- 摘要
- I.介绍
- II. 相关工作
- A. 纯视觉SLAM
- B. 视觉惯性SLAM
- C. 多地图 SLAM
- III 综述
- IV 相机模型
- A. 重定位
- B. 非矫正双目SLAM
- V. 视觉惯性SLAM
- A. 基本原理
- B. IMU初始化
- C. 跟随和建图
- D.对跟踪丢失的鲁棒性
- VI 地图合并和闭环检测
- A. 位置识别
- B. 视觉地图合并
- C. 视觉惯性地图合并
- D. 回环检测
- VII. 实验结果
- A. EuRoC数据集单场景SLAM
- C. 多场景 SLAM
- D. 计算时间
- VIII 结论
- 参考文献
摘要
ORB-SLAM3是第一个视觉、视觉惯性和多地图SLAM系统。 适用于单目、双目和RGB-D相机,兼容针孔和鱼眼镜头模型。
创新点1: 实现了以最大后验估计(Maximum-aPosteriori :MAP)为目标,基于特征点紧耦合视觉惯性SLAM系统。该系统同时应用于IMU初始化过程。结果表明,该系统能在大小不同的室内外场景稳定运行,精度是之前方案的2-10倍。
创新点2: 改进位置识别方案,提出多地图方案。基于此,ORB-SLAM3可以在较差环境下长期运行。 当机器人位置丢失时,会建立新的地图,并能在机器人到达走过的地方时,实现新旧地图的无缝拼接。与仅仅只能用几秒的数据信息作为参考之前视觉里程计方案相比,ORB-SLAM3是第一个可以复用所有之前数据信息和计算结果的SLAM系统。这样在进行BA计算时,可以采用视差较大的关键帧,即使关键帧之间的时间间隔很大,这样能大大提高计算精度。
实验表明,无论采用哪一种传感器配置,ORB_SLAM3与相比文献中共提到的替它方案,在鲁棒性更强和精度上更高。比如双目惯性方案(stereo-inertial)SLAM在TUM-VI 数据集(AR/VR典型场景)的测试结果:在EuRoC 无人机上的测试精确度为3.5厘米,快速运动的手持设备上运动测试精度为9mm。
I.介绍
SLAM和VO技术,不管单纯视觉传感,还是视觉与IMU融合方案,在过去二十年里,鲁棒性和精度均有显著提高。主流的方案都是基于最大后验概率(MAP)估计算法,可以简单分为两种方案:
- 最小化特征点重投影误差法,称为特征点法
- 最小化选定像素的光度误差法,也称直接法
近来,由于很多VO系统中加入了回环技术,导致VO和SLAM的边界越来越模糊。视觉SLAM的目标是通过移动设备的传感器来构建环境地图并实时计算地图中移动设备的姿态,即建图和定位。相比之下,VO系统主要目的不是建图,而是定位。但很多时候,在VO的过程中,也要进行建图,主要是为了能够在定位过程中,利用到已知的建图信息进行数据关联,以便更好的优化当前位姿。关联方式主要分为三种:
短期数据关联,基于时间关键帧选取,优化在最后几秒钟得到的地图数据。大多数VO系统采用该数据关联方法 。就像狗熊掰棒子,一旦环境数据消失在视野之外,就忘记它们,这样会导致累计误差,并无法消除。
中期数据关联,基于相机位姿关键帧选取,优化当前摄像机附近累计误差还比较小的所有地图数据。该方法相对于短期数据关联,有可能在已经建立地图的部分完全消除累计误差。这是本VO系统提高计算精度的关键措施,也是有别于闭环方案提高精度的创新点。
长期数据关联,基于位姿识别技术,优化当前位姿地图信息和之前到达该位姿时的地图数据信息,此时,不考虑回环检测到的累计误差,机器人是否丢失,地图是否关联等信息。长期匹配可以通过pogh-graph(PG)优化或BA,优化累计误差和地图信息。这是在大中型场景下,提高SLAM精度的关键。
ORB-SLAM3基于ORB-SLAM之前的工作,同时采用了以上三种数据关联方案的优势,消除地图区域累计误差。此外,还提出了多地图数据融合方案,这样就可以在BA和匹配过程中,采用之前的地图数据。这样,就实现了SLAM系统的真正目标:建立一个后期定位可以使用的地图。
ORB-SLAM3主要创新点总结如下:
- 单、双目视觉惯性SLAM系统, 实现了以最大后验估计(Maximum-aPosteriori :MAP)为目标,基于特征点紧耦合视觉惯性SLAM系统。该系统同时应用于IMU初始化过程。该方法由论文【6】提出。此处,把它融合到ORB-SLAM视觉惯性系统中,使其适用于双目惯性SLAM,并基于公开数据集进行全面评估。结果表明,该方案在鲁棒性和精度均优于本文提出其它方案。
- 改进召回率位置识别方法,论文【2,7,8】通过DBoW2词包库进行识别地点。DBoW2要求时间一致性、匹配相同区域的三个连续关键帧,然后检查几何位姿一致性,通过召回代价提高精度。因此,该方法在闭环检测和复用之前地图的过程中计算会太慢。为此,提出一种创新的地点识别算法。该算法首先候选帧首先校验几何位姿一致性,然后再匹配相同区域的三个连续关键帧。该方案增加了召回率和数据关联,提高了计算准确性,但可能会增加计算负担。
- ORB-SLAM Atlas,是第一个视觉、视觉惯性和多地图SLAM系统。 适用于单目、双目和RGB-D相机,兼容针孔和鱼眼镜头模型。 Atlas代表一系列未连接的地图。这些地图可能再不同时间建立,可以用作多个场景:地点识别,相机重定位,回环检测以及高精度无缝地图拼接。 Atlas之前版本可以参考论文【10】。此处,加入新的地址检测方法,视觉惯性多地图系统,并基于公开数据集对以上内容评测。
- 抽象相机接口,通过该接口,SLAM代码对相机模型是无感的。这样,我们在采用其它相机模型时,仅需提供接口需要的投影函数和雅可比矩阵即可。本文提供针孔相机和鱼眼相机的具体实例。
II. 相关工作
表格I 最具代表性的视觉(上)和视觉惯性(下)系统摘要,按时间顺序排列
- 最新源码由不同的作者提供。原始代码见【50】
- 源码仅有第一个版本,SVO 2.0 还未开源。
- MSCKF 已经申请专利【51】,仅有一个另一个作者重新实现的源码。
表格I 展示了具有代表性的视觉和视觉惯性系统,并列举出用于预测和数据融合的主要技术。表格中精度和鲁棒性的等级测量方法见第VII节。关于PTAM, LSD-SLAM 和 ORB-SLAM 的比较见【2】.
A. 纯视觉SLAM
单目视觉SLAM第一次应用见 MonoSLAM【13】。该方案通过跟踪相邻图像shi-Tomasi关联角点,基于卡尔曼滤波【EKF】实现。该方案通过确保匹配过程中特征点的一致性,使中期数据关联结果显著提高,实现了手持设备纯视觉SLAM功能【53.54】。
关键帧方案:仅仅在预测过程中选取一部关键帧,同时丢弃帧间信息。这样就允许采用计算更复杂的算法,提高计算精度,如采用BA算法,算法频率与关键帧频率相同。最具代表性的是PTAM系统。把相机跟踪和建图过程分成两个线程并行。关键帧技术比滤波技术在消耗同样算力的前提下,能得到更高的精度,这已经是视觉SLAM和VO的黄金法则。更大场景的单目视觉系统可以通过滑动窗口BA【56】和基于无相有权图的双窗口优化算法实现【57】。
基于以上技术,ORB-SLAM基于采用ORB特征点,其描述子用来做短期数据关联和中期数据关联。为了点各地跟随和建图的复杂度,ORB建立无向图用作优化目标。该系统通过词袋库进行闭环检测和重定位,实现长期数据关联。迄今为止,这是唯一一个集成三种数据关联方式的SLAM,这是优越性能的关键。 这项工作中,我们利用新的Atlas系统提高了它在纯视觉SLAM中的鲁棒性,该系统在跟踪丢失时会开始新建一个新的地图,以及利用改进的召回率的新位置识别方法提高了它在模糊场景中的准确性。
直接法不会提取特征点,而是直接采用像素的灰度值,通过实现最小化光度误差预测系统运动。LSD-SLAM【20】可以通过利用大梯度像素灰度误差点建立一个大范围半稠密地图。但是,优化过程采用poge-graph(PG),精度低于PTAM和ORB-SLAM。混合系统SVO【23,24】提取fast特征点,通过直接法跟随特征和非零像素灰度梯度点,最终优化相机位姿实现最小投影误差。SVO非常高效,但作为纯VO方案,仅仅实现短期数据关联,所以精度不高。直接稀疏里程计(Direct Sparse Odometry DSO)可以在低纹理区域或模糊图像导致特征点很难提取的情况下,提高相机位姿计算的鲁棒性。它引入了局部光度BA,同时优化了7个最近关键帧的窗口和点的逆深度。 对以上工作的进一步拓展包括双目相机【29】,基于特征的闭环检测、词袋库DBoW2【58,59】,以及视觉惯性里程计【46】.直接稀疏建图系统(Direct Sparse Mapping DSM) 【31】提出直接法中复用地图的方案,表明中期数据关联的重要性。总之,以上方法由于缺少,短中长期数据关联的整合,精度均低于我们提出方案(参考VII)。
B. 视觉惯性SLAM
视觉和惯性传感器的融合提高了在视觉场景特征质量比较差时SLAM系统的鲁棒性。紧耦合方法的研究可以追述到【33】,该论文通过特征点边缘化的方法避免了EKF计算量因特征点的数量增大成倍数增长。初始化系统在论文【34】得到完善,在论文【35】中扩展到双目相机。第一基于关键帧BA的紧耦合视觉里程计是OKVIS【38,39】,该方案同时适用单目相机和双目相机。与以上方案采用特征点的思路不同,ROVIO【41,42】采用直接法,通过EFK实现最小光度误差。
ORB-SLAM-VI【4】第一次实现整合了短中长数据关联方案,并能复用地图的SLAM方案。该方案基于IMU预积分技术实现了局部视觉惯性BA【60,61】。但是,该方案IMU初始化过程需要长达15s的时间,降低了系统鲁棒性和精度。【62,63】提出了基于相机尺度,重力,加速度偏差,初始速度和特征点深度联合优化方案进行快速初始化。该方案忽略了IMU噪声影响,通过优化过程中不是以最小投影误差为目标,而是以最小3D位姿偏差为优化目标。我们之前的工作【64】表明该方案会导致大的不可预测误差。
VINS-MONO【7】是一个精度和鲁棒性都很好单目视觉惯性里程计,该方案包括DBoW2回环检测,4自由度DoF PG优化和地图融合。特征点跟踪是基于 Lucas-Kanade跟踪技术,比特征点描述子匹配会稳定一些。在VINS-FUSIN【44】中,该方案被应用到双目和双目惯性系统中。
VI-DSP【46】在DSO中加入惯性测量数据。该方案通过在BA求取最小光度误差时融入惯性测量数据,显著提高测量精度。在融合过程中,由于可以得出像素灰度梯度较大的像素点,因此,在纹理较小的场景下,也能提高系统鲁棒性。该方案的初始化通过视觉惯性BA完成,一般需要20-30s时间,误差为1%。
最新的BASALT【47】是个能够提取视觉惯性里程计的非线性特征双目里程计系统,该方案关闭了ORB特征闭环匹配,实现了高精度测量。Kimera【8】是一个创新的语义metric-semantic SLAM建图系统,主要包括双目系统,DBOW2闭环检测,和PG优化,精度与VINS-FUSION类似。参考:https://blog.csdn.net/phy12321/article/details/104995798
我们的工作基于ORB-SLAM-VI,并应用到双目惯性SLAM系统。本文提出了一种基于MAP的快速初始化方案,该方案同时考虑到视觉和惯性传感器测量的不确定性。在2s内精度达到5%,15s时,精度收敛到1%。我们相信,这种快速精确初始化技术,即使在没有闭环检测的情况下,也能使我们的SLAM系统得到更好的精度。
C. 多地图 SLAM
通过地图新建和融合来提高丢失时位置跟随的鲁棒性的方案最早在论文【65】中提出。第一个基于关键帧的多地图方案在论文【66】中提出,但是该方案中地图手动初始化,并且地图不能进行合并或关联。直到论文【67-69】地图合并,关联和复用技术得以实现,但仅仅是软件架构,没有具体精度数据。
知道近期CCM-SLAM【70-71】提出了一种非连结多地图方案,应用于多个无人机同时获取多个数据流的场景。其目标使客服有限带宽限制。相比,我们提出的方案,在EuRoC数据集测试中表现更好的结果。SLAMM【72】基于ORB-SLAM2也提出多地图方案,但子地图保持孤立状态,相比,我们的方案通过地图融合提高了全局地图的精度。
VINS-MONO是具有闭环检测和多地图能力的视觉里程计系统【9】。实验表明在EuRoC数据集测试中, ORB-SLAM3是该方案精度的2.6倍,这主要归公于本方案 中期数据关联的能力。我们的Atlas提供采用改进召回率的位置识别技术,以及多地图融合的BA,使得我们的方案在EuRoC.数据集多任务测试中,精度达到VINS-MONO的3.2倍。
III 综述
图1 ORB-SLAM3系统组成
ORB-SLAM3基于ORB-SLAM2和ORB-SLAM-VI【4】研发。是第一个视觉、视觉惯性和多地图SLAM系统。 适用于单目、双目和RGB-D相机,兼容针孔和鱼眼镜头模型。 图1 展示系统组成部分,基本于ORB-SLAM2相同,其中加入的重要创新点,总结如下:
- Atlas 是一个有多个非连结地图组成的多地图系统。其中一个地图处于激活状态,该地图用于跟随线程中定位关键帧,并在局部建图线程中插入关键帧的同时,不断优化。其它地图处于非激活状态。于此同时,系统建立一个DBOW2关键帧数据库用于重定位,闭环检测和地图关联。
- 跟随线程,处理传感器信息,实时确定当前帧相对于激活地图位置,最大限度地减少匹配的地图特征重投影误差。它还决定是否当前帧成为关键帧。 在视觉惯性模式下,估计了本体速度和IMU偏差优化过程中,融入惯性数据残差数据。 当跟踪丢失,跟踪线程尝试在所有Atlas地图的重新定位。如果重定位成功,继续跟随,并切换重定位地图为激活地图。经过一段时间后,激活地图变为非激活状态,开始新建一个地图,并设为激活状态。
- 局部建图线程,把关键帧和特征点添加到激活地图中,删除冗余特征点,在当前帧附近窗口内优化BA,从而实现地图优化。此外,IMU参数的初始化和优化也在在该线程中进行。
- 回环和地图合并线程,根据关键帧的频率检测激活地图和整个Atlas地图库的是否存在共同区域。如果该区域属于激活地图,则触发回环检测;如果该区域属于其它地图,把相关地图合并成一个地图,并把该地图设为激活地图。回环检测后,在一个单独的线程中进行整个空间的BA优化,进一步优化整个地图,但不影响其它线程的实时性。
IV 相机模型
ORB-SLAM假设所有系统组件都是针孔摄像机模型。我们的目标是通过将所有与相机模型相关的属性和函数(投影和非投影函数、雅可比矩阵等)提取到单独的模块中,把SLAM相关的的相机模型抽象成一个相机模型接口。这样,在使用我们的SLAM系统时,仅仅需要对应的相机模型即可。在ORB-SLAM3库中,除了针孔模型外,我们还提供了Kannala-Brandt【12】鱼眼模型。
由于大部分计算机视觉算法都会假设相机为针孔相机模型,许多SLAM系统在校正整个图像,或特征坐标,会驾驶投影平面是完全在一个面上。 然而,这种方法对于鱼眼镜头可能是有问题的,因为它可以达到或超过(FOV) 180度的视野。由于边缘物体放大,中心物体分辨率较低,影响特征匹配,不能进行图像校正。特征坐标的校正需要使用小于180°的视场,这些算法假设沿图像的均匀重投影误差,但鱼眼相机并不满足这种假色, 因此鱼眼相机特性给许多计算机视觉算法带来了麻烦。这就迫使图像的外部部分被剪掉,从而使鱼眼相机失去了l的优势(这些算法假设沿图像的均匀重投影误差)。下面我们讨论如何解决该问题。
A. 重定位
一个鲁棒的SLAM系统需要在跟踪失败时重新定位摄像机位姿的能力。ORB-SLAM通过Perspective-n-Points求解器来解决重定位问题【73】,该算法假设在其所有公式计算过程中都有一个校准的针孔摄像机。为了解耦,我们需要一个独立于所使用的相机模型的PnP算法。为此,我们采用了最大似然透视n点算法(Maximum Likelihood Perspective-n-Point algorithm MLPnP)【75】,该算法完全与相机模型解耦,因为它使用射影光线作为输入。 相机模型只需要提供一个从像素到投影射线的函数,就可以用于重新定位。
B. 非矫正双目SLAM
大多数SLAM假定双目相机使被矫正过的。然而,双目视觉校正的假设是非常限制性的,在许多应用中,既不合适也不可行。 比如,大视场双目相机或鱼眼相机,在矫正时,往往会裁剪掉大部分边缘图像,这样失去了视场优势。
由于这个原因,我们的系统不依赖于图像校正,把双目相机看作两个单目相机,并符合以下特征:
1)相机之间位姿恒定为 SE(3)
2)相机有共同视野
有了这些约束条件通过引入这些信息,为三角化路标点,BA,和地图尺度估计提供了必要条件。我们的SLAM估计了一个6自由度刚体姿态,其参考系统可以位于一个摄像机或IMU传感器中,并根据刚体姿态表示摄像机姿态。如果两台相机都有一个重叠的区域,我们可以在第一次看到重叠区路标点九对其三角化。
V. 视觉惯性SLAM
ORB-SLAM-VI【4】是第一个真正能够复用地图的视觉惯性SLAM系统。然而,它被限制在针孔单目摄像机,它的初始化太慢,在一些具有挑战性的情况下失败。本文,我们基于ORB-SLAM-VI,提供了一种快速准确的IMU初始化技术,以及一个开源的SLAM库,适用于单目惯性和双目惯性SLAM,配有针孔和鱼眼摄像机模型。
A. 基本原理
在纯视觉SLAM中,估计的状态仅包括摄像机当前的位姿,而在视觉-惯性SLAM中,还需要计算其他变量。世界坐标系中的相机位姿: Ti=[Ri,pi]∈SE(3)T_i = [R_i,p_i]∈SE(3)Ti=[Ri,pi]∈SE(3)和速度 viv_ivi , 重力和加速度偏差:big,biab_i^g,b_i^abig,bia,合并为一个状态量:
S≐{Ti,vi,big,bia}(1)S \doteq\left\{\mathbf{T}_{i}, \mathbf{v}_{i}, \mathbf{b}_{i}^{g}, \mathbf{b}_{i}^{a}\right\} \qquad \qquad (1)S≐{Ti,vi,big,bia}(1)
根据论文【60】提出的理论,在视觉惯性SLAM中,把IMU测量值插入视觉测量值之间,iii 和i+1i+1i+1。IMU预计分旋转量,速度,和位置信息表示为:ΔRi,i+1,Δvi,i+1,Δpi,i+1\Delta\mathbf{R}_{i, i+1},\Delta\mathbf{v}_{i, i+1},\Delta\mathbf{p}_{i, i+1}ΔRi,i+1,Δvi,i+1,Δpi,i+1。i到i+1i到i+1i到i+1之间的预计分方差表示为ΣTi,i+1\Sigma_{\mathcal{T}_{i, i+1}}ΣTi,i+1。已知预积分量,和状态量Si和Si+1\mathcal{S}_{i}和\mathcal{S}_{i+1}Si和Si+1,得到惯性残差为rIi,i+1\mathbf{r}_{\mathcal{I}_{i,i+1}}rIi,i+1:
rIi,i+1=[rΔRi,i+1,rΔvi,i+1,rΔpi,i+1]rΔRi,i+1=log(ΔRi,i+1TRiTRi+1)rΔvi,i+1=RiT(vi+1−vi−gΔti,i+1)−Δvi,i+1rΔpi,i+1=RiT(pj−pi−viΔti,i+1−12gΔt2)−Δpi,i+1(2)\begin{aligned} \mathbf{r}_{\mathcal{I}_{i, i+1}} &=\left[\mathbf{r}_{\Delta \mathbf{R}_{i, i+1}}, \mathbf{r}_{\Delta \mathbf{v}_{i, i+1}}, \mathbf{r}_{\Delta \mathbf{p}_{i, i+1}}\right]\\ \mathbf{r}_{\Delta \mathrm{R}_{i, i+1}} &=\log \left(\Delta \mathbf{R}_{i, i+1}^{\mathrm{T}} \mathbf{R}_{i}^{\mathrm{T}} \mathbf{R}_{i+1}\right) \\ \mathbf{r}_{\Delta \mathrm{v}_{i, i+1}} &=\mathbf{R}_{i}^{\mathrm{T}}\left(\mathbf{v}_{i+1}-\mathbf{v}_{i}-\mathbf{g} \Delta t_{i, i+1}\right)-\Delta \mathbf{v}_{i, i+1} \\ \mathbf{r}_{\Delta \mathrm{p}_{i, i+1}} &=\mathbf{R}_{i}^{\mathrm{T}}\left(\mathbf{p}_{j}-\mathbf{p}_{i}-\mathbf{v}_{i} \Delta t_{i, i+1}-\frac{1}{2} \mathbf{g} \Delta t^{2}\right)-\Delta \mathbf{p}_{i, i+1} \end{aligned} \qquad \qquad (2) rIi,i+1rΔRi,i+1rΔvi,i+1rΔpi,i+1=[rΔRi,i+1,rΔvi,i+1,rΔpi,i+1]=log(ΔRi,i+1TRiTRi+1)=RiT(vi+1−vi−gΔti,i+1)−Δvi,i+1=RiT(pj−pi−viΔti,i+1−21gΔt2)−Δpi,i+1(2)
其中Log: SO(3)→R3\mathrm{SO}(3) \rightarrow \mathbb{R}^{3}SO(3)→R3是从立群到向量空间的映射。位置 xj\mathbf{x}_{j}xj 的关键帧 iii 的 3D3 \mathrm{D}3D 点 jjj 投影误差 rij\mathbf{r}_{i j}rij :
rij=uij−Π(TCBTi−1⊕xj)(3)\mathbf{r}_{i j}=\mathbf{u}_{i j}-\Pi\left(\mathbf{T}_{\mathrm{CB}} \mathbf{T}_{i}^{-1} \oplus \mathbf{x}_{j}\right) \qquad \qquad (3) rij=uij−Π(TCBTi−1⊕xj)(3)
其中 Π:R3→Rn\Pi: \mathbb{R}^{3} \rightarrow \mathbb{R}^{n}Π:R3→Rn 对应相机的投影函数, uij\mathbf{u}_{i j}uij图像 iii观测到的像素坐标jjj , 方差为Σij,TCB∈SE(3)\Sigma_{i j}, \mathbf{T}_{\mathrm{CB}} \in \mathrm{SE}(3)Σij,TCB∈SE(3) 表示IMU到相机坐标刚性变换, ⊕\oplus⊕ 是 SE(3)\mathrm{SE}(3)SE(3) 在 R3\mathbb{R}^{3}R3 的变换。
结合视觉和惯性残差公式,视觉惯性SLAM可以看作基于关键帧的优化问题【39】。已知道k+1k+1k+1 个关键帧和它的状态 S‾k≐{S0…Sk}\overline{\mathcal{S}}_{k} \doteq\left\{\mathcal{S}_{0} \ldots \mathcal{S}_{k}\right\}Sk≐{S0…Sk},以及l3Dl \qquad 3\mathrm{D}l3D 点和它们的状态X≐{x0…xl−1}\mathcal{X} \doteq\left\{\mathbf{x}_{0} \ldots \mathbf{x}_{l-1}\right\}X≐{x0…xl−1}, 视觉惯性优化问题可以描述为:
minS‾k,X(∑i=1k∥rIi−1,i∥ΣIi,i+1−12+∑j=0l−1∑i∈KjρHub(∥rij∥Σij−1))\min _{\overline{\mathcal{S}}_{k}, \mathcal{X}}\left(\sum_{i=1}^{k}\left\|\mathbf{r}_{\mathcal{I}_{i-1, i}}\right\|_{\Sigma_{\mathcal{I}_{i, i+1}}^{-1}}^{2}+\sum_{j=0}^{l-1} \sum_{i \in \mathcal{K}^{j}} \rho_{\mathrm{Hub}}\left(\left\|\mathbf{r}_{i j}\right\|_{\Sigma_{i j}^{-1}}\right)\right) Sk,Xmin(i=1∑k∥∥rIi−1,i∥∥ΣIi,i+1−12+j=0∑l−1i∈Kj∑ρHub(∥rij∥Σij−1))
其中 Kj\mathcal{K}^{j}Kj是关键帧和3D3 \mathrm{D}3D 点 jjj 对应关系集合。该优化问题可以基本框架可以表示为图2.其中ρHub\rho_{\mathrm{Hub}}ρHub函数为鲁棒和函数,减小误匹配的影响。该函数对于惯性残差则不需要,因为不存在错误匹配的情况。这种优化需要在跟踪和建图过程中提高效率,但更重要的是,它需要良好的初始值以确保收敛到精确的解。
图2 不同优化的因素图表示
B. IMU初始化
这一步的目标是为惯性变量获得良好的初始值: 本体速度,重力方向和IMU零便。一些系统,如VI-DSO【46】试图从头开始解决视觉惯性BA,绕过特定的初始化过程,获得惯性参数的缓慢收敛(高达30秒)。
在这项工作中,我们提出了一种快速和准确的初始化方法:
纯单目SLAM可以提供非常精确的初始地图【2】,其主要问题是没有尺度信息。解决该问题有助于IMU初始化。
如【56】所示,当把尺度信息表示为优化变量时,比用BA的间接求解,收敛得更快。
在IMU初始化过程中忽略传感器的不确定性会产生很大的不可预测错误【64】。
因此,考虑到传感器的不确定性,我们将IMU初始化问题描述为MAP估计问题,分为三个步骤:
1)纯视觉MAP估计,我们初始化纯单目SLAM【2】,并在2秒内运行它,以4Hz插入关键帧。在这段时间之后,我们得到规模为k=10k = 10k=10个相机姿态和数百个点组成的有尺度的图,这里可以通过纯视觉BA来优化(图2 b)。这些位姿被转换为本体坐标系,获得轨迹 T‾0:k=[R,p‾]0:k\overline{\mathbf{T}}_{0: k}=[\mathbf{R}, \overline{\mathbf{p}}]_{0: k}T0:k=[R,p]0:k ,其中bar表示单目视觉有的尺度变量。
- 纯惯性MAP估计:在这一步中,我们的目标是获得惯性变量的最优估计。在MAP估计过程中,仅使用关键帧之间的 T‾0:k\overline{\mathbf{T}}_{0: k}T0:k 和惯性测量值。这些惯性测量值可以表示为向量:
Yk={s,Rwg,b,v‾0:k}\mathcal{Y}_{k}=\left\{s, \mathbf{R}_{\mathbf{w} g}, \mathbf{b}, \overline{\mathbf{v}}_{0: k}\right\} Yk={s,Rwg,b,v0:k}
其中 s∈R+s \in \mathbb{R}^{+}s∈R+纯视觉计算的尺度因子; Rwg∈SO(3)\mathbf{R}_{\mathrm{w} g} \in \operatorname{SO}(3)Rwg∈SO(3) 旋转矩阵, 表示世界坐标系的重力向量 g\mathrm{g}g g=RwggI\mathbf{g}=\mathbf{R}_{\mathrm{w} g} \mathbf{g}_{\mathrm{I}}g=RwggI, 其中 gI=(0,0,G)T\mathbf{g}_{\mathrm{I}}=(0,0, G)^{\mathrm{T}}gI=(0,0,G)T ,GGG 重力幅值; b=(ba,bg)∈R6\mathbf{b}=\left(\mathbf{b}^{a}, \mathbf{b}^{g}\right) \in \mathbb{R}^{6}b=(ba,bg)∈R6 加速度和重力的零偏; v‾0:k∈R3\overline{\mathbf{v}}_{0: k} \in \mathbb{R}^{3}v0:k∈R3带有尺度的关键帧的速度, 初始值是通过$\overline{\mathbf{T}}_{0: k} $ 预测得到。 现在,我们只考虑惯性测量 :I0:k≐{I0,1…Ik−1,k}\mathcal{I}_{0: k} \doteq\left\{\mathcal{I}_{0,1} \ldots \mathcal{I}_{k-1, k}\right\}I0:k≐{I0,1…Ik−1,k}。因此,我们可以提出一个MAP估计问题,其中后验分布要最大化为: :
p(Yk∣I0:k)∝p(I0:k∣Yk)p(Yk)p\left(\mathcal{Y}_{k} \mid \mathcal{I}_{0: k}\right) \propto p\left(\mathcal{I}_{0: k} \mid \mathcal{Y}_{k}\right) p\left(\mathcal{Y}_{k}\right) p(Yk∣I0:k)∝p(I0:k∣Yk)p(Yk)
其中 p(I0:k∣Yk)p\left(\mathcal{I}_{0: k} \mid \mathcal{Y}_{k}\right)p(I0:k∣Yk) 表示似然, p(Yk)p\left(\mathcal{Y}_{k}\right)p(Yk) 表示先验. 考虑到测量的独立性,纯惯性MAP估计问题可以写成 :
Yk∗=argmaxYk(p(Yk)∏i=1kp(Ii−1,i∣s,Rwg,b,v‾i−1,v‾i))\mathcal{Y}_{k}^{*}=\underset{\mathcal{Y}_{k}}{\arg \max }\left(p\left(\mathcal{Y}_{k}\right) \prod_{i=1}^{k} p\left(\mathcal{I}_{i-1, i} \mid s, \mathbf{R}_{\mathrm{w} g}, \mathbf{b}, \overline{\mathbf{v}}_{i-1}, \overline{\mathbf{v}}_{i}\right)\right) Yk∗=Ykargmax(p(Yk)i=1∏kp(Ii−1,i∣s,Rwg,b,vi−1,vi))
对IMU预积分和先验分布取负对数,并假设符合高斯误差,最终得到优化问题 :
Yk∗=argminYk(∥b∥Σb−12+∑i=1k∥rIi−1,i∥ΣIi−1,i−1)\mathcal{Y}_{k}^{*}=\underset{\mathcal{Y}_{k}}{\arg \min }\left(\|\mathbf{b}\|_{\Sigma_{b}^{-1}}^{2}+\sum_{i=1}^{k}\left\|\mathbf{r}_{\mathcal{I}_{i-1, i}}\right\|_{\Sigma_{\mathcal{I}_{i-1, i}}^{-1}}\right) Yk∗=Ykargmin(∥b∥Σb−12+i=1∑k∥∥rIi−1,i∥∥ΣIi−1,i−1)
这种优化问题(如图2c所示)与方程4的不同之处在于不包含视觉残差,因为将视觉SLAM估计的上尺度轨迹作为常量,并添加一个先验残差来强制使IMU偏差接近于零。协方差矩阵 Σb\Sigma_{b}Σb表示IMU零偏的取值范围的先验知识。IMU协方差ΣIi−1,i\Sigma_{\mathcal{I}_{i-1, i}}ΣIi−1,i的计算见【61】。
当我们在流形中进行优化时,我们需要定义一个变量【61】,以便在优化过程中更新Rwg\mathbf{R}_{\mathrm{w} g}Rwg。由于绕重力方向旋转不引起重力变化,这个更新可以通过两个角度参数化(δαg,δβg)(δα_g, δβ_g)(δαg,δβg):
Rwgnew=RwgoldExp(δαg,δβg,0)(9)\mathcal{R}_{wg}^{new}=\mathcal{R}_{wg}^{old}Exp (δα_g,δβ_g,0) \qquad \qquad (9) Rwgnew=RwgoldExp(δαg,δβg,0)(9)
其中, Exp(.)Exp(.)Exp(.)是 Π:R3\Pi: \mathbb{R}^{3}Π:R3 到SO(3)SO(3)SO(3)的映射。 为了保证尺度因子在优化过程中为正,我们将其更新定义为 :
snew=soldexp(δs)(10)s^{new} =s^{old}exp(δs) \qquad \qquad (10) snew=soldexp(δs)(10)
一旦完成惯性优化,框架的姿态和速度以及3D地图点将使用估计的尺度因子进行缩放,并旋转以使z轴与估计的重力方向对齐。修正偏差并重复IMU预积分,以减少未来的线性化误差。
3) 视觉-惯性MAP估计:一旦我们对惯性和视觉参数有了良好的估计,我们就可以执行视觉-惯性联合优化,以进一步细化解决方案。这种优化可以表示为(图2a),但对所有关键帧都有相同的偏差,并且包含了与纯惯性步骤相同的偏差先验信息。
我们在EuRoC数据集[6]上详尽的初始化实验表明,该初始化非常有效,在轨迹为2秒的情况下实现了5%的尺度误差。为了改进初始估计,在初始化后5秒和15秒进行视觉惯性BA,尺度误差收敛到1%,如第七节所示。经过这些BA后,我们认为地图参数已经足够精确,也就是说尺度、IMU参数和重力方向已经准确估计。
我们的初始化比求解一组代数方程的关节初始化方法准确得多【62-64】,也比ORB-SLAM-VI[4](需要15秒才能得第一个尺度估计)或VI-DSO【46】中使用的初始化快得多。一开始误差很大,需要20-30秒才能收敛到1%的误差。可以在【6】中找到不同初始化方法之间的比较。
在某些特定情况下,当运动教慢不能提供良好的惯性参数可观测性时,初始化可能无法在短短15秒内收敛到精确解。 为了在这种情况下获得鲁棒性,我们提出了一种基于惯性优化方法的比例细化技术,优化所有插入的关键帧,仅仅把尺度和重力方向作为唯一需要估计的参数(图2d)。 请注意,在这种情况下,恒定零差的假设就不正确了。此时,我们使用从建图中估计的值,并对它们进行修复。这种优化,计算效率非常高,在Local Mapping线程中每10秒执行一次,直到映射有超过100个关键帧,或者自初始化以来已经超过75秒。
最后,我们将尺度因子固定为1,并将其从惯性优化变量中去除,从而很容易地将单目惯性初始化扩展到双目惯性,增强了其收敛性。
C. 跟随和建图
对于跟踪和映射,我们采用【4】中提出的方案。跟踪解决了一个简化的视觉惯性优化,其中只有最后两帧的状态被优化,而地图点保持固定。对于建图过程,试图从方程【4】解出整体优化对于大的地图比较困难。我们使用关键帧及其点的滑动窗口作为可优化变量,包括从共可见关键帧中观察到的这些点,但保持它们的姿态固定。
D.对跟踪丢失的鲁棒性
在纯视觉SLAM或VO系统中,瞬时相机遮挡和快速运动导致视觉元素丢失,导致系统丢失。ORB-SLAM是基于词袋位置识别的快速重定位技术的先驱,但它们在解决EuRoC数据集【3】中的复杂场景时被证明是不够的。我们的视觉惯性系统在不到15点地图跟踪进入视觉丧失状态时提高鲁棒性,该过程分为两个阶段:
- 短期损失: 当前本体状态通过测量数据估计。测量数据包括 IMU数据 ,窗口中投影到当前相机姿态的中用于匹配的地图点。地图点匹配结果通过视觉-惯性优化算法优化。在大多数情况下,恢复视觉跟踪可以恢复。如果不能恢复,5秒后,我们进入下一个阶段。
- 长期丢失: 新建一个新的视觉惯性地图,并初始化,并设为激活地图。
如果在IMU初始化15秒内系统丢失,则该地图将被丢弃。这可以防止产生不准确的地图。
VI 地图合并和闭环检测
关键帧与激活地图间的短中期关联在跟随和建图线程中实现:把地图点映射到相机坐标系,并在由多个像素点组成的地图窗口中寻找匹配点。为了实现能够满足重定位和回环检测的长期关联,ORB-SLAM 通过DBoW2词袋库地址识别技术【9,25】。 这种方法也被最新的VO和SLAM系统所采用,用于实现了闭环检测(表I)。
通过跟踪和映射线程将映射点投影到估计的相机姿态中,并在只有几个像素的图像窗口中搜索匹配,通常可以发现帧和活动映射之间的短期和中期数据关联。为了实现重定位和环路检测的长期数据关联,ORB-SLAM使用了DBoW2词袋位置识别系统【9,75】。这种方法也被最新的VO和SLAM系统所采用,这些系统实现了闭环(表I)。
与跟踪不同,位置识别不是从对相机姿态的初始猜测开始。相反,DBoW2利用关键帧的词包向量构建了一个关键帧数据库,并给出了查询图像,它能够根据关键帧的词包高效地提供最相似的关键帧。原始DBoW2查询只使用第一个候选查询,就可以达到50-80%【9】的精度和召回率。为了避免会破坏地图的假阳性,DBoW2实现了时间和几何一致性检查,达到100%精度和30-40%召回率【9,75】。至关重要的是,时间一致性检查至少会导致3个关键帧中位置识别的延迟。当我们试图在我们Atlas图系统中使用它时,我们发现这种延迟和低召回率导致在相同或不同的地图中经常出现重叠的区域。
在这项工作中,我们提出了一种新的地方识别算法:改进长期召回率和多地图数据关联。每当建图线程创建一个新的关键帧时,位置识别就会启动,试图检测与Atlas中已经存在的任何关键帧的匹配。如果找到的匹配关键帧属于激活地图,则执行闭环检测。否则,进行多地图数据关联操作,激活地图和匹配的地图被合并。 我们方法的第二个创新之处,一旦估计了新的关键帧和匹配地图之间的相对姿态,就把带有匹配关键帧及其邻居组成一个局部窗口。在这个窗口中,我们进一步中期数据关联,提高了闭环和地图合并的准确性。这两个新特性解释了ORB-SLAM3在EuRoC实验中比ORB-SLAM2获得更好的精度的原因。下面将解释不同操作的细节。
A. 位置识别
为了获得更高的召回率,对于每个新的活动关键帧,我们在DBoW2数据库中查询Atlas中几个类似的关键帧。为了达到100%的精度,每一个候选帧都要经过几个几何验证步骤。几何验证步骤的基本操作包括检查图像窗口中是否有一个ORB关键点,根据汉明距离阈值判断该关键点的描述符与映射点的ORB描述符匹配。 如果在搜索窗口中有几个候选项,通过第二最近匹配的距离比【76】确定模糊匹配项,并丢弃。我们的位置识别算法步骤如下:
1)**DBoW2候选关键帧。**我们使用活动关键帧KaK_aKa查询Atlas DBoW2数据库,检索三个最相似的关键帧,不包括与KaK_aKa共可见的关键帧。我们将每个位置识别的匹配候选项称为KmK_mKm。
**局部窗口。**对于每一个KmK_mKm,我们定义一个本地窗口,其中包括KmK_mKm,它的最佳共可见关键帧,以及所有这些关键帧观察到的特征点。DBoW2提供了KaK_aKa中的关键点和本地窗口关键帧中的一组匹配的直接索引。对于这些2D-2D匹配,我们还提供了相应地图点之间的3D-3D匹配。
**三维对齐变换。**我们使用RANSAC计算变换TamT_{am}Tam,使局部窗口的地图点KmK_mKm与KaK_aKa的更好匹配。在纯单目或单目惯性图尚不成熟时,计算Tam∈Sim(3)T_{am}∈Sim(3)Tam∈Sim(3),否则计算Tam∈SE(3)T_{am}∈SE(3)Tam∈SE(3)。在这两种情况下,我们都使用Horn算法【77】,使用三个3D-3D匹配计算TamT_{am}Tam。通过TamT_{am}Tam变换地图点KaK_aKa中后,重投影误差小于一个阈值,给假设一个投票。当投票数量超过一个阈值,假设被选中。
引导匹配细化。 将局部窗口中的所有映射点进行TamT_{am}Tam变换,以找到更多与KaK_aKa中的关键点相匹配的点。搜索也是反向的,在本地窗口的所有关键帧中寻找KaK_aKa映射点。利用所找到的所有匹配,对TamT_{am}Tam进行非线性优化,其中目标函数是双向重投影误差,使用Huber影响函数提供对虚假匹配的鲁棒性。如果优化后的内点数超过一个阈值,则使用较小的图像搜索窗口,启动第二次迭代的引导匹配和非线性优化。
验证三个共可见的关键帧。 为了避免假阳性,DBoW2在三个连续的关键帧中等待位置识别触发,延迟或位置识别失败。需要注意的是,大多数时候,验证所需的信息已经在地图中。为了验证位置识别,我们在地图的活动部分搜索与KaK_aKa共可见的两个关键帧,其中与局部窗口中的点匹配的数量超过一个阈值。如果没有找到,就会用新的关键帧进一步尝试验证,而不需要再次启动单词包。验证将持续到三个关键帧验证TamT_{am}Tam,或者两个连续的新关键帧无法验证它。
VI重力方向验证。 在视觉惯性情况下,如果激活地图是成熟的,我们已经估计$T_{am}∈SE(3) $。我们进一步检查俯仰角和横摇角是否低于一个阈值,以确定接受位置识别假设。
B. 视觉地图合并
在位置识别过程中,当激活地图MaM_aMa中的关键帧KaK_aKa与Atlas MmM_mMm中存储的不同地图的匹配关键帧KmK_mKm之间产生多地图数据关联时,对齐变换TamT_{am}Tam,我们启动地图合并操作。在这个过程中,必须特别注意确保MmM_mMm中的信息可以被跟踪线程及时重用,避免地图重复。为此,我们建议将MaM_aMa地图纳入MmM_mMm参考。由于MaM_aMa可能包含很多元素,合并它们可能需要很长时间,所以合并分为两个步骤。首先,在共可见图中KaK_aKa和$ K_m$的邻居定义的连结窗口中执行合并;在第二阶段,通过图优化进一步矫正合并地图的其它部分位姿。合并算法的具体步骤如下:
图3 连结BA的因子图表示,包含重投影误差项(蓝色方块)、IMU预积分项(黄色方块)和偏差随机游走项(紫色方块)。
1)**连结窗口合并。**连结窗口包括KaK_aKa及其共可见关键帧,KmK_mKm及其共可见关键帧,以及它们观测到的所有地图点。在将关键帧和地图点纳入连结窗口之前,属于MaM_aMa的关键帧的地图点进行TmaT_{ma}Tma转换,以便与MmM_mMm对齐。
2)**地图合并。**地图MaM_aMa和MmM_mMm被融合在一起,成为新的激活地图。为了去除重复的点,在MmM_mMm关键帧中搜索MaM_aMa点的匹配。对于每个匹配,MaM_aMa中的点被移除,MmM_mMm中的点继续累积移除点的所有观测值。由于发现了新的中期点关联,通过添加连接MmM_mMm和MaM_aMa关键帧的边,共同可见性和本质图图【2】得到了更新。
**连结BA。**通过局部BA对连结窗口MaM_aMa和MmM_mMm的所有关键帧以及它们观察到的映射点进行优化(图3a)。为了固定测量自由度,MmM_mMm的关键帧不属于连结窗口,但观察到任何局部地图点都包含在BA中,其姿态是固定的。优化完成后,关联区域所包含的所有关键帧都可以用于相机跟踪,实现地图MmM_mMm的快速准确重用。
本质图优化。 在保持连结区域关键帧固定的前提下,利用合并图的基本图进行位姿优化。这种优化从连结窗口传播到地图的其余部分。
C. 视觉惯性地图合并
与纯视觉情况相比,视觉惯性合并算法遵循类似的步骤。对步骤1)和步骤3)进行了修改,以更好地利用惯性信息:
1)**VI 连结窗口合并。**如果激活地图成熟,我们使用可用的Tma∈SE(3)T_{ma}∈SE(3)Tma∈SE(3)在地图MaM_aMa转入连结窗口之前对其进行变换。 如果地图不成熟,我们利用Tma∈Sim(3)T_{ma}∈Sim(3)Tma∈Sim(3)对MaM_aMa对齐。
- VI 联结BA。 关键帧KaK_aKa和KmK_mKm的姿态、速度和偏差,以及它们的最后5个可优化的临时关键帧。这些变量通过IMU预积分项相互关联,如图3b所示。对于MmM_mMm来说,在局部窗口之前的关键帧是固定的,而对于MaM_aMa来说,类似的关键帧的姿态仍然是可优化的。上面提到的关键帧看到的所有地图点,以及KmK_mKm和KaK_aKa共可见关键帧的姿态一起被优化。所有的关键帧和点都是通过重投影误差来关联的。
D. 回环检测
除了两个关键帧在地址识别时都匹配到激活地图时,闭环检测优化算法类似于地图合并。连结窗口由匹配的关键帧组成,检测重复点,融合,并在共可见性和本质图中创建新的链接。下一步是posegraph优化,将闭环修正传播到地图的其余部分。最后一步是全局BA,在考虑闭环的中期和长期匹配后,找到MAP估价值。在视觉惯性情况下,全局BA是仅仅在关键帧的数量低于阈值进行,以避免巨大的计算成本。
图4:彩色方块表示在EuRoC数据集的每个场景中10个不同的RMS ATE执行结果。
VII. 实验结果
整个系统的评估分为:
- EuRoC数据集中的单场景实验【79】:对11个场景中的每一个场景进行处理,生成一张地图,使用四种传感器配置: 单目,单目惯性,双目,双目惯性。
- 单目和双目视觉惯性性能。在具有挑战性的TUM VI数据集【80】,用鱼眼摄像机进行SLAM。
- 在两个数据集中进行多场景实验。
和往常一样,我们使用均方根ATE来测量准确度【81】,在纯单目情况下,使用Sim(3)Sim(3)Sim(3)变换将估计的轨迹与实际值对齐。其余传感器配置中的转换用SE(3)SE(3)SE(3)。尺度误差使用来自Sim(3)Sim(3)Sim(3)校准的sss计算,如∣1−s∣|1−s|∣1−s∣。所有实验都是在英特尔酷睿i7-7700 CPU上进行的,CPU频率为3.6GHz,内存为32gb,仅使用CPU。
A. EuRoC数据集单场景SLAM
表II比较了ORB-SLAM3使用其四种传感器配置与最先进的最相关系统的性能。我们报告的值是10次执行的中位数。如表所示,ORB-SLAM3在所有传感器配置中都实现了比文献中可用的最佳系统更精确的结果,大部分情况,精度大很多。
表II: EuRoC数据集的性能比较(RMS ATE单位为m.,尺度误差单位%)。除了注明的地方,我们显示了每个系统的作者报告的结果,对于轨迹中的所有帧,与处理过的GT进行比较。 ![请添加图片描述](https://img-blog.csdnimg.cn/d74e8e9ae2ec4cc09f8edbe1f2a8b832.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5NTA2MTQ=,size_16,color_FFFFFF,t_70)
通过CLAHE均衡对数据集曝光不足和过曝光进行处理,我们在单目惯性环境下提取了1500个ORB点,在双目惯性环境下提取了1000个ORB点。对于户外场景,我们的系统很难处理来自多云天空的很远的点,这在鱼眼摄像机中是非常可见的。这些点可能运动非常慢,会在相机姿势中引入漂移。为了防止这种情况,户外我们丢弃了距离当前摄像机姿态20米以上的点。一个更复杂的解决方案是使用图像分割算法来检测和丢弃天空。
将得到的结果与表III中最相关的系统进行比较,清楚地显示了ORB-SLAM3在单目惯性和立体惯性方面的优势。最接近的系统是VINS-Mono和BASALT。
通过对系统性能的详细分析,该系统在中小型室内环境、房间和走廊场景中误差最小,大部分误差在10 cm以下。 在这些轨迹中,系统是不断的重新访问和重用以前的地图区域,这是ORB-SLAM3的主要优势之一。此外,跟踪点通常距离5米以内,这使得估计惯性参数更容易,防止它们发散。
在裁判室内场景中,最长可达900米,除了一个接近5米的场景外,大多数跟踪点相对较近,ORB-SLAM3获得的误差在1米左右。相比之下,在一些长时间的户外场景中,近距离视觉特征的缺乏可能会导致惯性参数的漂移,尤其是尺度和加速度计偏差,有时会导致10 - 70米的误差。即便如此,ORB-SLAM3是户外场景中表现最好的系统。
这个数据集还包含三个非常具有挑战性的片段场景,其中用户通过一个几乎完全缺乏视觉特征的黑色管状幻灯片下降。在这种情况下,一个纯粹的视觉系统将会丢失,但我们的视觉惯性系统即使没有闭环检测时能够处理整个场景。同时保持相对较小误差。 有趣的是,VINS-Mono和BASALT,使用Lukas-Kanade跟踪特征,在有些场景比匹配ORB描述子的ORB-SLAM3得到更好的精度。
最后,房间场景可以代表典型的AR/VR应用,用户在小环境中使用手持或头戴设备移动。对于这些场景,地面真实值适用于整个轨迹。表3显示了ORB-SLAM3比其他竞争方法更准确。表四为四个传感器配置对比结果。结果表明纯单目比双目准确性明显更高: 单眼的解决方案是带有尺度的,并与真值7自由度对齐;与双目提供真实尺度,并与真值的6自由度对齐。利用单目惯性,我们进一步将平均均方根误差(RMS ATE )降低到1 cm左右,也获得了真实的比例尺。最后,我们的双目惯性SLAM将误差控制在1厘米以下,使其成为AR/VR应用的绝佳选择。
C. 多场景 SLAM
EuRoC数据集包含三个环境的多个序列: 厂房5个,3个Vicon1,3个Vicon2 。为了测试ORB-SLAM3的多会话性能,我们依次处理每个环境对应的所有序列。同一环境中的每个轨迹都具有具有相同世界参考的地面真实值,这允许执行单个全局对齐来计算ATE。
每个房间的第一个序列提供了一个初始地图。处理以下序列首先要创建一个新的激活地图,该地图将快速与前几个回合的地图合并,此时,ORB-SLAM3将能够重用前一个地图中。
表V 展示全局多场景三个房间四个传感器配置的RMS ATE :比较仅有的两个发布EuRoC数据集测试结果的方案: CCM-SLAM【71】在MH01-MH03纯单目测试, VINS-Mono【7】的厂房环境单目惯性测量结果。在这两种情况下,ORB-SLAM3的准确性都是大于两倍。在VINS-Mono的情况下,ORB-SLAM3在单场景中获得了2.6倍的精度,在多场景中获得了3.2倍的精度,这体现了我们的地图合并操作的优越性。
将这些多场景性能与表II中报告的单场景结果进行比较,最显著的差异是多场景单目和双目SLAM可以稳健地处理难度较大的场景V103和V203,这得益于之前地图的开发。
我们还在TUM-VI数据集上进行了多场景实验。图5显示了在TUM building1内处理几个场景后的结果。在这种情况下,由于大场景中所缺少回环检测,将所有误差达到厘米级别。虽然在房间之外无法获得真实的数据,但将该数据与【82】中公布的数据进行比较,表明:ORB-SLAM3在现存的视觉惯性里程计中精度最高。图6进一步说明了这一点。虽然ORB-SLAM3在outdoors1的双目惯性单场景处理中排名较高,但仍然存在明显的漂移(≈60 m)。相比而言,如果在magistrale2之后处理outdoors1场景,漂移明显减小,最终的地图更加准确。
D. 计算时间
表VI总结了跟踪和建图线程中执行的主要操作的运行时间,表明我们的系统能够以30-40帧和每秒3-6关键帧的速度实时运行。惯性部分在跟踪过程中所花费的时间可以忽略不计,实际上可以使系统更高效,因为帧率可以安全地降低。在建图线程中,每个关键帧的变量数越高,惯性局部BA中的关键帧数就越少,从而在运行时间相近的情况下获得了更好的精度。由于跟踪和建图线程总是在活动映射中工作,所以多地图不会带来很大的开销。
表7总结了闭环和地图合并的主要步骤的运行时间。新的位置识别方法每关键帧只需10毫秒。只运行一个姿态图优化时,合并和循环关闭的时间仍然低于1秒。当循环关闭,执行完整的BA可能会增加几秒钟的时间,这取决于所涉及的地图的大小。在任何情况下,由于这两个操作都在单独的线程中执行(图1),它们不会影响系统其余部分的实时性能。视觉惯性系统只执行两个地图合并以加入三个序列,而视觉系统执行一些额外的合并以从跟踪丢失中恢复。由于其较低的漂移,视觉惯性系统也比纯视觉系统执行更少的闭环操作。
虽然这很有趣,但我们不会将运行时间与其他系统进行比较,因为这将需要超出本工作范围的大量工作。
VIII 结论
我们的实验结果表明,ORB-SLAM3是第一个能够有效利用短期、中期、长期和多地图数据关联的视觉和视觉惯性系统,达到现有系统无法达到的精度水平。我们的结果还表明,在准确性方面,使用所有这些类型的数据关联的能力超过了其他选择(如使用直接方法而不是特征,或对局部BA执行关键帧边缘化,而不是像我们那样假设静态关键帧的外部集)。
ORB-SLAM3 的主要失败案例是低纹理环境。直接方法对低纹理数据的鲁棒性更强,但仅限于短期【27】和中期【31】数据关联。另一方面,匹配特征描述符成功地解决了长期和多地图数据关联问题,但在跟踪方面似乎不如Lucas-Kanade那样稳健,后者使用光度信息。一个有趣的研究方向是发展足以解决这四个数据关联问题的光度测定技术。 我们目前正在探索从内窥镜图像构建人体内部地图的想法。
关于四种不同的传感器配置,毫无疑问,双目惯性SLAM提供了最稳健和准确的解决方案。此外,惯性传感器允许在IMU速率下估计姿态,这比帧速率高几个数量级,这是某些使用情况下的关键特性。对于那些由于体积、成本或处理要求较高而不需要双目相机的应用,您可以使用单目惯性相机,而不会在稳健性和准确性方面差别太多。只需要记住,在运动过程中纯粹的旋转是不能够估算深度的。
当运动较慢时,或者没有翻滚和俯仰旋转的应用中,比如在平坦区域的汽车,IMU传感器很难初始化。在这些情况下,如果可能,使用双目SLAM。另外,最近在利用CNN进行单目图像深度估计方面的进展很大,为可靠和真实尺度的单目SLAM提供了良好的前景【83】,至少在CNN训练的同一类型环境中是这样。
参考文献
见原文。
ORB-SLAM3:一个高精度视觉、视觉惯性和多地图SLAM开源库相关推荐
- 【ORB-SLAM3论文翻译】ORB-SLAM3:一个精确的视觉、视觉惯性和多地图SLAM的开源库(注:带着原文看,很多公式和变量不好输入)
文章目录 前言(非论文部分) 摘要 1. 简介 2. 相关工作 3. 系统概述 4. 相机模型 5. 视觉惯性SLAM(重点) 6. 地图合并与闭环 7. 实验结果 8. 结论 REFERENCES( ...
- Kimera:一个基于度量语义的SLAM开源库
标题:Kimera:an Open-Source Library for Real-Time Metric-Semantic Localization and Mapping 作者:Antoni Ro ...
- ORB SLAM3论文大致翻译,手动整理
ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM I. INTRODU ...
- 基于视觉和惯性传感器的移动机器人手遥操作系统
论文:A Mobile Robot Hand-Arm Teleoperation System by Vision and IMU 相关视频.代码.论文地址:在公众号「3D视觉工坊」,后台回复「视觉和 ...
- 15个产业级算法推出、35个高精度预训练模型上线!最强国产开源AI框架再进化,密集提升视觉产业实战能力...
乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI 2项全新能力,4大重磅升级,35个高精度预训练模型上线,15个产业实践中广泛应用的视觉算法加持-- 这就是最强国产开源深度学习框架--飞桨 ...
- 视觉SLAM开源算法ORB-SLAM3 原理与代码解析
来源:深蓝学院,文稿整理者:何常鑫,审核&修改:刘国庆 本文总结于上交感知与导航研究所科研助理--刘国庆关于[视觉SLAM开源算法ORB-SLAM3 原理与代码解析]的公开课. ORB-SLA ...
- 多源传感器GNSS INS 视觉 LiDAR 组合导航与SLAM开源项目总结
多源传感器GNSS INS 视觉 LiDAR 组合导航与SLAM开源项目总结 本文基于 吴桐wutong 微信公众号文章完善而来. 开源代码总览 名称 传感器类型 组合类型 滤波方法 备注 RTKLI ...
- ORB SLAM3——IMU优化部分精读-VertexPose(ImuCamPose)的更新量到底是什么?
ORB SLAM3--IMU优化部分精读-VertexPose(ImuCamPose)的更新量到底是什么? 先说答案 void ImuCamPose::Update(const double *pu) ...
- Part-1 ORB SLAM3初始化-1
初始化 ORB SLAM3的初始化主要是创建ORB词袋.关键帧数据库.多地图等对象,其步骤如下: 检测配置文件能否打开 加载ORB词袋(ORBVocabulary) 创建关键帧数据库(KeyFrame ...
最新文章
- 有关camshift的知识点
- linux下如何产生core,调试core
- Linux工作笔记-查看tcp与udp端口并对比Windows简单分析
- 修改已经创建的docker容器的端口映射
- STM8学习笔记---寄存器操作之位或和位与运算
- java序列化原理_Java序列化机制和原理
- impala查询数据与hive的查询数据比对(数据的校验)
- Python 操作 mongodb 数据库
- iptables的备份及脚本构成
- 【CITE】C#默认以管理员身份运行程序实现代码
- android开发完全退出activity
- 中岛美雪音乐合集-原曲流行极品音乐专辑
- 将图片转换为Base64编码字符串、解析Base64编码字符串后生成图片
- 武汉大学计算机2019转专业,武汉大学可以转专业吗,武汉大学新生转专业政策
- ”骇客“不可缺少的电脑软件
- 联盟链Quorum(基于raft共识)部署流程(三)- 部署基于Quorum链的区块链浏览器
- 2022半入耳式蓝牙耳机怎么选?半入耳式耳机排行榜
- 苹果怎么给app上锁_苹果APP日常使用时一直闪退怎么办?
- 绝地求生:你知道哪种枪的射速最快吗?它100发子弹只要8秒!
- 第十三周总结——认清自己