21TRO_ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM
文章目录
- 
论文信息
 - 
Abstract
 - 
1.INTRODUCTION
 - 
2.RELATED WORK
 - 
- A. Visual SLAM
 - B. Visual–Inertial SLAM
 - C.Multimap SLAM
 
 - 
3.SYSTEM OVERVIEW
 - 
4.CAMERA MODEL
 - 
- A.Relocalization
 - B.Non-rectified Stereo SLAM
 
 - 
5.VISUAL-INERTIAL SLAM
 - 
- A.Fundamentals
 - B.IMU Initialization
 - C. Tracking and Mapping
 - D. Robustness to tracking loss
 
 - 
6.MAP MERGING AND LOOP CLOSING 地图合并与闭环
 - 
- A. 位置识别 (Place Recognition)
 - B. 视觉地图合并 Visual Map Merging
 - C. 视觉-惯性地图合并 (Visual–Inertial Map Merging)
 
 - 
7.实验结果 (EXPERIMENTAL RESULTS)
 - 
- A. 在EuRoC数据集上的单次会话SLAM(Single-Session SLAM on EuRoC)
 - B.TUM-VI 基准上的视觉惯性 SLAM (Visual–Inertial SLAM on TUM-VI Benchmark)
 - C.多会话 SLAM (Multisession SLAM)
 - D. 计算时间 Computing Time
 
 - 
8.Conclusion
 - 
参考
 
论文信息
- 论文题目:ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual–Inertial, and Multimap SLAM
 - 中文题目:一个准确的开源视觉、视觉-惯性和多地图SLAM库
 - 论文地址:https://ieeexplore.ieee.org/document/9440682
 - 发表期刊:21TRO
 - 开源代码:https://github.com/UZ-SLAMLab/ORB_SLAM3
 
Abstract
本文介绍了ORB-SLAM3,这是第一个能够执行视觉、视觉-惯性及多地图SLAM的系统,支持单目、立体和RGB-D摄像头,并使用针孔及鱼眼镜头模型。首个主要创新是一个紧密集成的视觉-惯性SLAM系统,它完全依赖于最大后验估计(MAP),即使在IMU初始化期间也能保持实时的稳健操作,无论是在小型还是大型、室内还是室外环境中,其精确度比以往方法提高了两到十倍。第二个主要创新是一个多地图系统,依赖于一种具有改进召回率的新的位置识别方法,使ORB-SLAM3能够在视觉信息匮乏的长时间内生存:当系统迷失方向时,它会启动一个新地图,并在重新访问这些地区时与之前的地图无缝合并。与仅使用最近几秒信息的视觉测距系统相比,ORB-SLAM3是第一个能够在所有算法阶段重用所有之前的高视差共视关键帧信息的系统,即使这些关键帧在时间上相隔很远或来自之前的映射会话,也能提高精度。我们的实验显示,在所有传感器配置中,ORB-SLAM3的稳健性与文献中可用的最佳系统一样,而且显著更精确。值得注意的是,我们的立体-惯性SLAM在EuRoC无人机中实现了平均3.5厘米的精度,并在TUM-VI数据集的房间快速手持运动场景下实现了9毫米的精度,这代表了AR/VR场景。为了社区的利益,我们公开了源代码。
索引词 :计算机视觉,惯性导航,同时定位与映射。
1.INTRODUCTION
在过去二十年中,对视觉同时定位与地图构建(SLAM)系统和视觉里程计(VO)的深入研究,无论是单独使用摄像头还是将摄像头与惯性传感器结合使用,都已经产生了出色的系统,精度和稳健性越高越高。现代系统依赖于最大后验(MAP)估计,对于视觉传感器而言,这对应于束调整(BA),即在基于特征的方法中,可以最小化特征重投影误差的几何 BA,在直接方法中,可以最小化一组选定像素的光度误差的光度 BA。
随着最近集成了闭环技术的 VO 系统的出现,VO 和 SLAM 之间的界限变得更加模糊。视觉 SLAM 的目标是使用移动装置(mobile agent)上的传感器构建环境地图并实时计算代理在该地图中的姿势。相比之下,VO 系统将重点放在计算装置的自我运动,而不是构建地图上。SLAM 地图的一大优势是它允许匹配和使用 BA 中的先前观察结果来执行三种类型的数据关联(扩展了 [1] 中使用的术语)。
- 短期(Short-term)数据关联 :匹配过去数秒内获取的地图元素。大多数视觉里程计(VO)系统仅使用 Short-term 数据关联,一旦环境元素移出视野就会被系统遗忘,导致即使在同一区域内移动也会产生连续的估计漂移。
 - 中期(mid-term)数据关联 :匹配距离相机近且累积漂移较小的地图元素。这些元素可以像 短期(Short-term)观测一样在束调整(Bundle Adjustment, BA)中进行匹配和使用,从而允许系统在已映射区域中移动时实现零漂移。这是我们系统相较于具有回环检测(loop closure)功能的视觉里程计(VO)系统获得更高精度的关键。
 - 长期(long-term)数据关联 :使用位置识别技术(Place Recognition),将观测结果与先前访问过的区域中的元素进行匹配,不受累积漂移(回环检测 Loop Detection)、当前区域是否先前已在断开的地图中进行过建图(Map Merging)或跟踪丢失(重定位,Relocalization)的影响。长期匹配允许重置漂移,并通过使用位姿图(Pose Graph, PG)优化或更准确地说,使用束调整(Bundle Adjustment, BA)来校正地图。这是提高中型和大型环形环境中SLAM准确性的关键。
 
在这项工作中,我们在ORB-SLAM[2],[3]和ORBSLAM视觉惯性[4]的基础上,建立了第一个能够充分利用短期,中期和长期数据关联的视觉和视觉惯性系统,在地图区域达到零漂移。在这里,我们进一步提供了多地图数据关联,这使我们能够匹配和使用来自以前的地图会话的BA地图元素,从而实现SLAM系统的真正目标:构建可用于以后提供准确定位的地图。
在这项工作中,我们在ORB-SLAM [2], [3] 和ORB-SLAM视觉-惯性系统 [4] 的基础上进行了进一步的研究,这些系统是首批能够充分利用短期(short-term)、中期(mid-term)和长期数据(long-term)关联的视觉及视觉-惯性系统,能在已建图区域实现零漂移。在此基础上,ORB-SLAM3进一步提供了多地图(multi-map)数据关联,这使我们能够匹配并在束调整(BA)中使用来自之前建图会话的地图元素,实现了SLAM系统的真正目标:构建一个可以在未来用于提供精确定位的地图。

这本质上是一篇系统论文,其最重要的贡献是 ORB-SLAM3 库本身 [5],这是迄今为止最完整、最准确的视觉、视觉惯性和多地图 SLAM 系统(见表一)。ORB-SLAM3 的主要创新点如下:
- 单目立体视觉惯性 SLAM 系统 完全依赖于最大后验(MAP)估计,即使在惯性测量单元 (IMU) 初始化阶段也是如此。所提出的初始化方法之前已在“Inertial-only optimization for visual-inertial initialization” [6] 中提出。在这里,我们将其与 ORB-SLAM 视觉惯性 [4] 集成,扩展到立体惯性 SLAM,并在公共数据集中进行全面评估。我们的结果表明,即使在没有循环的序列中,单目立体视觉惯性系统也非常稳健,并且比其他视觉惯性方法准确得多。
 - 提高召回率的地点识别 。许多近期的视觉 SLAM 和 VO 系统 [2]、[7]、[8] 使用 DBoW2 词袋库 [9] 解决地点识别问题。DBoW2 需要先检查时间一致性,将三个连续的关键帧匹配到同一区域,然后再检查几何一致性,从而以牺牲召回率为代价来提高准确率。因此,系统在关闭循环和重用先前映射的区域时速度太慢。我们提出了一种新颖的地点识别算法,其中首先检查候选关键帧的几何一致性,然后检查与三个可共视关键帧的局部一致性,在大多数情况下,这三个关键帧已经在地图中。这种策略提高了召回率并增强了数据关联,从而提高了地图准确率,但计算成本略高。
 - ORB-SLAM Atlas 。第一个完整的多地图 SLAM 系统,能够处理单目和立体配置中的视觉和视觉惯性系统。Atlas 可以表示一组断开的地图,并顺利地对所有地图进行映射操作:位置识别、相机重定位、回环检测和精确的无缝地图合并。这允许自动使用和组合在不同时间构建的地图,执行增量多会话 SLAM。[10] 中介绍了用于视觉传感器的 ORB-SLAM Atlas 的初步版本。在这里,我们添加了新的位置识别系统、视觉惯性多地图系统及其在公共数据集上的评估。
 - 抽象的相机表示 使 SLAM 代码与所使用的相机模型无关,并允许通过提供投影、反投影和雅可比函数来添加新模型。我们提供了针孔 [11] 和鱼眼 [12] 模型的实现。
 
所有这些创新,加上一些代码改进,使 ORB-SLAM3 成为新的参考视觉和视觉惯性开源 SLAM 库,其稳健性与文献中最好的系统一样好,而且准确度更高,如第七节中的实验结果所示。我们还提供了单目、立体、单目惯性和立体惯性 SLAM 结果之间的比较,这可能引起从业者的兴趣。
2.RELATED WORK
表一总结了最具代表性的视觉和视觉惯性系统,展示了用于估计和数据关联的主要技术。表中的定性准确度和稳健性评级基于第 VII 节中给出的结果以及 [2] 中报告的并行跟踪和地图构建 (PTAM)、大规模直接单目 SLAM (LSD-SLAM) 和 ORB-SLAM 之间的比较。
A. Visual SLAM
单目SLAM最初在MonoSLAM [13], [14], [52]中得到解决,该方法使用扩展卡尔曼滤波器(EKF)和Shi-Tomasi特征点,这些特征点通过相关性引导搜索在后续图像中进行跟踪。使用保证特征匹配一致性的技术显著改进了中期数据关联,实现了手持视觉SLAM [53], [54]。
相比之下,基于关键帧的方法仅使用少数选定的帧来估计地图,舍弃了来自中间帧的信息。这使得系统能够在关键帧的频率上执行成本更高但更准确的BA优化。最具代表性的系统是PTAM [16],它将相机跟踪和地图构建分成两个并行线程。基于关键帧的技术比滤波技术在相同的计算成本下更准确 [55],成为视觉SLAM和视觉里程计(VO)的黄金标准。在 [56] 中使用滑动窗口BA和在 [57] 中使用双窗口优化及共视图实现了大规模单目SLAM。
基于这些理念,ORB-SLAM [2], [3] 使用(oriented fast and rotated brief ) ORB 特征,其描述符提供短期和中期数据关联,构建共视图以限制跟踪和建图的复杂性,并使用词袋库DBoW2 [9]执行闭环和重定位,实现长期数据关联。到目前为止,它是唯一一个整合了三种类型数据关联的视觉SLAM系统,我们认为这是其出色准确性的关键。在这项工作中,我们通过新的 Atlas 系统(当跟踪丢失时启动新地图)提高了其在纯视觉 SLAM 中的稳健性,并且利用新的地点识别方法提高了召回率,提高了闭环场景中的准确性。
直接方法不提取特征,而是直接使用图像中的像素强度,通过最小化光度误差来估计运动和结构。LSD-SLAM [20] 能够使用高梯度像素构建大规模的半稠密地图。然而,地图估计被简化为位姿图(PG)优化,其精度低于 PTAM 和 ORB-SLAM [2]。半直接视觉里程计(SVO)[23], [24] 混合系统提取 FAST 特征,使用直接方法跟踪特征以及帧与帧之间具有非零强度梯度的任何像素,并利用重投影误差优化相机轨迹和3-D结构。SVO 极其高效,但作为纯VO方法,它仅执行短期数据关联,这限制了其精度。直接稀疏里程计(DSO)[27] 能够在点检测器表现不佳的情况下计算精确的相机位姿,增强了在低纹理区域或对抗模糊图像的鲁棒性。它引入了局部光度BA,同时优化最近七个关键帧的窗口和点的逆深度。这项工作的扩展包括立体视觉 [29]、使用特征和DBoW2 [58], [59] 进行回环闭合以及视觉-惯性里程计 [46]。直接稀疏映射(DSM)[31] 在直接方法中引入了地图复用的概念,显示了中期数据关联的重要性。在所有情况下,缺乏短期、中期和长期数据关联的整合,导致其精度低于我们的提案(见第七节)。
B. Visual–Inertial SLAM
视觉和惯性传感器的结合提高了系统在纹理贫乏、运动模糊和遮挡条件下的鲁棒性,对于单目系统,还能使尺度可观测。
紧密耦合方法的研究可以追溯到多状态约束卡尔曼滤波(MSCKF)[33],该方法通过特征边缘化避免了在特征数量上EKF二次代价的问题。最初的系统在文献[34]中得到完善,并在[35]和[36]中扩展到立体视觉。首个基于关键帧和BA的紧密耦合视觉里程计(VO)系统是OKVIS[38],[39],该系统也能使用单目和立体视觉。虽然这些系统依赖于特征,但ROVIO[41],[42]使用直接数据关联为EKF提供光度误差。
ORB-SLAM-VI [4] 首次提出了一种视觉惯性 SLAM 系统,该系统能够重用具有短期、中期和长期数据关联的地图,并在此基础上使用基于IMU预积分[60],[61]的精确局部视觉-惯性BA。然而,其IMU初始化过慢,需要15秒 ,这影响了系统的鲁棒性和精度。[62]和[63]提出了基于闭式解的更快初始化技术,用以联合估计尺度、重力、加速度计偏差、初始速度以及视觉特征的深度。关键是,它们忽略了IMU噪声,并最小化空间中点的3D误差,而不是特征基视觉计算中的黄金标准——重投影误差。我们之前的工作[64]表明,这导致了较大的不可预测误差。
VINS-Mono [7] 是一个非常精确和鲁棒的单目惯性里程计系统,具有回环闭合功能,使用DBoW2和四自由度(DoF)位姿图优化及地图合并。特征跟踪使用Lucas-Kanade跟踪器,比描述符匹配略为鲁棒。在VINSFusion [44]中,它已扩展到立体视觉和立体惯性系统。
VI-DSO [46] 将DSO扩展到视觉-惯性里程计,提出了一个结合惯性观测与选定高梯度像素的光度误差的BA,从而实现了更好的精度。由于成功利用了高梯度像素的信息,因此在贫乏纹理场景区域的鲁棒性也得到了增强。它们的初始化方法依赖于视觉-惯性BA,需要20~30秒收敛到1%的尺度误差。
最近的BASALT [47] 是一个立体惯性里程计系统,从视觉-惯性里程计中提取非线性因子用于BA,并通过匹配ORB特征进行回环,取到了很好的精度。Kimera [8] 是一个新颖优秀的度量-语义建图系统,但其度量部分包括立体惯性里程计加上使用DBoW2和位姿图优化的回环,实现了与VINS-Fusion类似的精度。
在这项工作中,我们以 ORB-SLAM-VI 为基础,并将其扩展到立体惯性 SLAM。我们提出了一种基于最大后验(MAP)估计的快速初始化方法,该方法适当考虑了视觉和惯性传感器的不确定性,并在2秒内估计真实尺度误差为5%,15秒内收敛到1%的尺度误差。上述所有系统都是视觉-惯性里程计方法,其中一些带有回环功能,缺乏使用中期数据关联的能力。我们认为,这一点,加上我们快速而精确的初始化,是我们系统持续获得更好精度的关键,即使在没有回环的序列中也是如此。
C.Multimap SLAM
通过地图创建和融合增强探索过程中对跟踪丢失的鲁棒性的想法,最初在[65]的滤波方法中被提出。收割基于关键帧的多地图系统是[66],但该系统的地图初始化是手动的,并且无法合并或关联不同的子地图。多地图功能作为协作地图系统的组成部分已经得到研究,这些系统拥有多个地图代理和一个仅接收信息的中央服务器[67],或像C2TAM[68]那样具有双向信息流。MOARSLAM[69]提出了一种鲁棒的无状态客户端-服务器架构,用于协作多设备SLAM,但主要关注的是软件架构,并未报告精度结果。
最近,CCM-SLAM [70]、[71] 提出了一种基于 ORB-SLAM 的分布式多地图系统,适用于具有双向信息流的多无人机。他们的重点是克服有限带宽和分布式处理的挑战,而我们的重点是准确性和稳健性,在 EuRoC 数据集上取得了明显更好的结果。SLAM [72] 还提出了 ORB-SLAM2 的多地图扩展,但将子地图保留为单独的实体,同时我们执行无缝地图合并,从而构建更准确的全局地图。
VINS-Mono[7]是一个具有闭环和多地图功能的视觉里程计(VO)系统,依赖于位置识别库DBoW2[9]。我们的实验表明,由于能够使用中期数据关联,ORB-SLAM3 在 EuRoC 数据集的单目惯性单会话操作中的准确率比 VINS-Mono 高 2.6 倍。我们的 Atlas 系统也基于 DBoW2 构建,但提出了一种新颖的更高召回率位置识别技术,并使用局部 BA 执行更详细、更准确的地图合并,在 EuRoC 的多会话操作中,其准确率比 VINS-Mono 高 3.2 倍。
3.SYSTEM OVERVIEW

ORB-SLAM3是基于ORB-SLAM2 [3]和ORB-SLAMVI [4]构建的。它是一个全多地图和多会话系统,能够在单目、立体或RGB-D传感器的纯视觉或视觉-惯性模式下工作,使用针孔和鱼眼摄像机模型。图1展示了与ORB-SLAM2相似的主要系统组件,并引入了一些重要的新特性,下面进行总结:
- Atlas 是一个多地图表示,由不连接的地图集合组成。一个活跃地图用于追踪线程定位新帧,并通过局部建图线程持续优化和 加入新关键帧 。Atlas 中的其它地图称为非活跃地图。系统构建一个独特的 DBoW2 关键帧数据库,用于重定位、回环和地图合并。
 - Tracking thread 处理传感器信息,实时计算当前帧相对活跃地图的位姿,从而最小化匹配地图特征的最小重投影误差。 它还决定当前帧是否为关键帧。在视觉惯性模式,机体速度和IMU偏置通过在优化中引入惯性残差进行估计。当追踪丢失时,追踪线程尝试在所有 Atlas 地图中重定位当前帧。如果成功重定位,则恢复追踪,并在必要时切换活跃地图。否则,在一段时间后,活跃地图被存储为非活跃地图,并从头初始化一个新的活跃地图。
 - Local mapping thread 向活跃地图添加关键帧和点,移除多余的关键帧和点,并且在局部窗口中使用视觉或视觉惯性BA优化地图。此外,在惯性配置下,建图线程使用本文新提出的 MAP 估计进行 IMU 参数的初始化和优化。
 - Loop and map merging thread 以关键帧速率检测活跃地图和完整 Atlas 间的共同区域。如果共同区域属于活跃地图,则执行闭环矫正;如果属于不同地图,则将两个地图无缝合并为一个,合并后的地图称为活跃地图。在闭环矫正后,在独立线程中执行完整 BA 以进一步优化地图,同时不影响实时性。
 
4.CAMERA MODEL
ORB-SLAM 在所有系统组件中都假设了一个针孔相机模型。我们的目标是通过将与相机模型相关的所有属性和函数(投影和非投影函数、雅可比矩阵等)提取到单独的模块中,将相机模型从整个 SLAM 流程中抽象出来。这样,我们的系统就可以使用任何相机模型,只需提供相应的相机模块即可。在 ORB-SLAM3 库中,除了针孔模型外,我们还提供了 Kannala–Brandt [12] 鱼眼模型。
由于大多数流行的计算机视觉算法都假设采用针孔相机模型,因此许多 SLAM 系统会校正整个图像或像素坐标,以在理想的平面视网膜中工作。然而,这种方法对于可以达到或超过 180° 视场 (FOV) 的鱼眼镜头来说存在问题。图像校正不是一个就选择,因为外围的物体会放大,而中心的物体会降低分辨率,从而阻碍特征匹配。校正像素坐标需要使用小于 180° 的 FOV,这会给许多计算机视觉算法带来麻烦,这些算法假设沿图像的重新投影误差是均匀的,这在校正的鱼眼图像中远非如此。这会迫使裁剪掉图像的外部,从而失去大 FOV 的优势:更快地映射环境和更好地抵御遮挡。接下来,我们讨论如何克服这些困难。
A.Relocalization
鲁棒的 SLAM 系统需要在追踪失败时有重定位能力,ORB-SLAM 通过基于 ePnP 算法的 PnP 求解器(一个在计算机视觉领域广泛使用的术语,用于描述利用3D点与其在图像中的2D投影来估计摄像头的位姿的算法)解决重定位问题,算法中假设采用标定的针孔相机。为了跟进我们的方法,我们需要一个独立于所用摄像头模型的PnP算法。因此,我们采用了最大似然PnP算法(MLPnP),该算法完全与相机模型解耦,因为它使用投影射线作为输入。相机模型只需提供一个从像素到投影射线的非投影函数,即可使用重新定位。
B.Non-rectified Stereo SLAM
大多数立体SLAM系统假设立体帧已校正,即,两幅图像都转换为使用相同焦距的针孔投影,图像平面共面,并且与水平极线对齐,这样在一幅图像中的特征就可以通过查看另一幅图像的同一行来轻松匹配。然而,校正立体图像的假设非常严格,在许多应用中既不适用也不可行。例如,对一对发散的立体相机或鱼眼立体相机进行校正将需要严重裁剪图像,失去了大视场(FOV)的优势。
因此,ORB-SLAM3不依赖于图像校正,而是将立体装置视为两个单目相机,具有以下特性:
- 它们之间有一个恒定的SE(3)相对变换;
 - 可选地,一个公共图像区域观察场景的相同部分。
 
这些约束使我们能够通过在三角测量新地标和BA优化中引入该信息,有效地估计地图的尺度。基于此思路,ORB-SLAM3估计了一个6自由度(6 DoF)刚体位姿,其参考系统可以位于其中一个相机或IMU传感器中,并将相机相对于刚体位姿表示。
如果两个相机具有重叠区域并在该区域进行立体观测,我们可以在首次观测到这些地标时进行真实尺度的三角测量。图像的其余部分仍然包含大量相关信息,这些信息在SLAM流程中作为单目信息使用。与单目情况一样,首先在这些区域看到的特征是从多个视图进行三角化的。
5.VISUAL-INERTIAL SLAM
ORB-SLAM-VI [4] 是第一个支持地图复用的真正的视觉惯性 SLAM 系统。但是,它仅限于针孔单目相机,并且初始化速度太慢,在某些具有挑战性的场景中会失败。在这项工作中,我们以 ORB-SLAM-VI 为基础,提供快速准确的 IMU 初始化技术和一个开源 SLAM 库,能够使用针孔和鱼眼相机进行单目惯性和立体惯性 SLAM。
A.Fundamentals
在纯视觉 SLAM 中,估计状态仅包括当前相机位姿,而在视觉惯性 SLAM 中,需要计算其他变量。这些变量包括IMU body位姿 T_i = [R_i, p_i] \in SE(3) 和世界坐标系中的速度 v_i,以及假设遵循布朗运动的陀螺仪偏置和加速度计偏置b^g_i和b^a_i。帧的状态向量定义为:
S_i = \{T_i, v_i, b^g_i, b^a_i\}.
对于视觉-惯性SLAM,我们预积分了连续视觉帧间的IMU测量,包括角速度、速度和位置的增量,这一过程基于在文献[60]中发展的理论并在[61]中在流形上进行了公式化。我们获取了预积分的旋转、速度和位置测量值,表示为 \Delta R_{i,i+1}, \Delta v_{i,i+1}, 和 \Delta p_{i,i+1},以及整个测量的协方差矩阵 \Sigma_{I_{i, i+1}}。鉴于这些预积分项和状态 S_i 和 S_{i+1},我们采用了来自文献[61]的惯性残差 r_{I,i,i+1} 的定义
r_{I_{i, i+1}} = \begin{bmatrix} r_{\Delta R_{i,i+1}} ,r_{\Delta v_{i,i+1}} ,r_{\Delta P_{i,i+1}} \end{bmatrix}
r_{\Delta R_{i, i+1}} = \log \left( \Delta R_{i, i+1}^T R_i^T R_{i+1} \right)
r_{\Delta v_{i, i+1}} = R_i^T \left( v_{i+1} - v_i - g \Delta t_{i, i+1} \right) - \Delta v_{i, i+1}
r_{\Delta p_{i, i+1}} = R_i^T \left( p_j - p_i - v_i \Delta t_{i, i+1} - \frac{1}{2} g \Delta t^2 \right) - \Delta p_{i, i+1}
其中 Log:SO(3) \rightarrow \mathbb{R}^3 从李群映射到向量空间。结合惯性残差,我们也使用了帧 i 和位于位置 x_j 的三维点 j 之间的重投影误差 r_{ij}:
r_{ij} = u_{ij} - \Pi (T_{CB} T_i^{-1} \otimes x_j)
其中,\Pi : \mathbb{R}^3 \rightarrow \mathbb{R}^n 是对应相机模型的投影函数,u_{ij} 是在图像 i 中对点 j 的观测值,具有协方差矩阵 \Sigma_{ij}。T_{CB} \in SE(3) 表示从body-IMU到相机(左或右)的刚体变换,该变换通过标定已知。\oplus 是 SE(3) 群对 \mathbb{R}^3 元素的变换操作。
结合惯性和视觉残差项,视觉-惯性 SLAM 可以表示为一个基于关键帧的最小化问题 [39]。给定 k+1个关键帧的集合及其状态 \{\mathcal{S}_0 \ldots \mathcal{S}_k\} 和一组 l 个三维点及其状态 \mathcal{X} \doteq \{ \mathbf{x}_0 \ldots \mathbf{x}_{l-1} \},视觉-惯性优化问题可以表述如下:
\min_{\overline{\mathcal{S}}_k, \mathcal{X}} \left( \sum_{i=1}^{k} \left\| r_{I_{i-1,i}} \right\|^2_{\Sigma_{I_{i,i+1}}^{-1}} + \sum_{j=0}^{l-1} \sum_{i \in \mathcal{K}^j} \rho_{\text{Hub}} \left( \left\| r_{ij} \right\|_{\Sigma_{ij}^{-1}} \right) \right)
其中 \mathcal{K}^j 是观测到三维点 j 的关键帧集合。该优化可以概述为图 2(a) 中所示的因子图。请注意,对于重投影误差,我们使用了鲁棒的 Huber 核 \rho_{\text{Hub}} 来减少错误匹配的影响,而对于惯性残差,则不需要这样做,因为不存在误关联。这种优化需要适应追踪和建图过程中的效率需求,但更重要的是,它需要良好的初始值以收敛到准确的解。

B.IMU Initialization
此步骤的目标是为惯性变量提供良好的初始值:包括机体速度、重力方向和IMU 偏差。一些系统(如VI-DSO [46])尝试从头开始解决视觉-惯性捆绑调整(BA)问题,跳过特定的初始化过程,但导致惯性参数收敛较慢(最多需要30秒)。
在本研究中,我们提出了一种快速且精确的初始化方法,基于以下三个关键观点:
- 纯单目SLAM能够提供非常精确的初始地图[2],其主要问题在于尺度未知。首先解决仅基于视觉的问题可以提升IMU的初始化效果。
 - 如文献[56]所示,当尺度被显式表示为优化变量时,收敛速度会比采用BA的隐式表示更快。
 - 在IMU初始化过程中忽略传感器的不确定性会产生较大的不可预测误差[64]。
 
因此,适当考虑传感器的不确定性,我们将IMU初始化表述为一个最大后验(MAP)估计问题,并分为以下三个步骤来进行。
- 仅视觉的MAP估计 :我们初始化纯单目SLAM [2] 并2秒,以4 Hz的频率插入关键帧。在此期间,我们获得了一个由 k = 10 个相机位姿和数百个点组成的比例不确定地图,并使用仅视觉的BA进行优化 [图 2(b)]。这些位姿被转换到机体参考系,得到轨迹 \overline{\mathbf{T}}_{0:k} = [\mathbf{R}, \overline{\mathbf{p}}]_{0:k},其中带横线的变量表示单目情况下的比例不确定变量。
 - 仅惯性的MAP估计 :在此步骤中,我们的目标是通过仅使用 \overline{\mathbf{T}}_{0:k} 和这些关键帧之间的惯性测量,获得惯性变量的最佳估计,即MAP估计。这些惯性变量可以堆叠在仅惯性状态向量中:
 
\mathcal{Y}_k = \{s, \mathbf{R}_{wg}, \mathbf{b}, \overline{\mathbf{v}}_{0:k} \}\tag{5}
其中,s \in \mathbb{R}^+ 是仅视觉解的尺度因子;\mathbf{R}_{wg} \in SO(3) 是一个旋转矩阵,用于在世界参考系中计算重力向量 \mathbf{g},其表示为 \mathbf{g} = \mathbf{R}_{wg} \mathbf{g}_I,其中 \mathbf{g}_I = (0, 0, G)^\top 且 G 是重力大小;\mathbf{b} = (\mathbf{b}^a, \mathbf{b}^g) \in \mathbb{R}^6 是加速度计和陀螺仪的偏差,假设在初始化期间保持不变;\overline{\mathbf{v}}_{0:k} \in \mathbb{R}^3 是从第一个到最后一个关键帧的比例不确定的机体速度,最初从 \overline{\mathbf{T}}_{0:k} 估计得到。此时,我们仅考虑惯性测量集\mathcal{I}_{0:k} \doteq \{\mathcal{I}_{0,1}, \ldots, \mathcal{I}_{k-1,k}\}。因此,我们可以提出一个MAP估计问题,其中要最大化的后验分布为
p(\mathcal{Y}_k | \mathcal{I}_{0:k}) \propto p(\mathcal{I}_{0:k} | \mathcal{Y}_k) p(\mathcal{Y}_k) \tag{6}
其中 p(\mathcal{I}_{0:k} | \mathcal{Y}_k) 表示似然,p(\mathcal{Y}_k) 表示先验。考虑到测量的独立性,仅惯性的MAP估计问题可以写为:
\mathcal{Y}_k^* = \arg \max_{\mathcal{Y}_k} \left( p(\mathcal{Y}_k) \prod_{i=1}^{k} p(\mathcal{I}_{i-1,i} | s, \mathbf{R}_{wg}, \mathbf{b}, \overline{\mathbf{v}}_{i-1}, \overline{\mathbf{v}}_i) \right) 。 \tag{7}
对 IMU 预积分和先验分布取负对数,并假设误差服从高斯分布,最终得到优化问题
\mathcal{Y}_k^* = \arg \min_{\mathcal{Y}_k} \left( \|\mathbf{b}\|^2_{\Sigma_b^{-1}} + \sum_{i=1}^{k} \|\mathbf{r}_{\mathcal{I}_{i-1,i}}\|^2_{\Sigma_{\mathcal{I}_{i-1,i}}^{-1}} \right)。 \tag{8}
这种优化如图 2© 所示,协方差矩阵 Σb 表示关于 IMU 偏差可能取值范围的先验知识。
有关 IMU 协方差 ΣIi−1,i 预积分的详细信息,请参阅 [61]
此优化问题在图 2© 中表示,与 (4) 不同之处在于,它不包括视觉残差,因为视觉 SLAM 估计的尺度轨迹被视为常数,并添加了先验残差,迫使 IMU 偏差接近于零。协方差矩阵 \Sigma_b 表示关于IMU偏差可能取值范围的先验知识。关于IMU协方差 \Sigma_{\mathcal{I}_{i-1,i}} 的预积分细节,请参阅[61]。
由于我们在流形上进行优化,需要定义一个收缩(retraction) [61],以便在优化过程中更新 \mathbf{R}_{wg}。因为绕重力方向的旋转不会改变重力的方向,因此此更新由两个角度 (\delta \alpha_g, \delta \beta_g) 参数化:
\mathbf{R}_{wg}^{\text{new}} = \mathbf{R}_{wg}^{\text{old}} \exp(\delta \alpha_g, \delta \beta_g, 0) \tag{9}
其中 \exp(\cdot) 是从 \mathbb{R}^3 到 SO(3) 的指数映射。为了确保在优化过程中尺度因子保持为正,我们定义其更新方式为:
s^{\text{new}} = s^{\text{old}} \exp(\delta s)。 \tag{10}
一旦仅惯性的优化完成,帧的位姿和速度以及3D地图点将按估计的尺度因子进行缩放,并旋转以使 z-轴与估计的重力方向对齐。偏差会被更新,并重新计算IMU预积分,以减少未来的线性化误差。
- 视觉惯性 MAP 估计 :一旦我们对惯性和视觉参数有了良好的估计,就可以进行联合视觉惯性优化,以进一步优化解。这种优化可以表示为图 2(a),但对所有关键帧有相同先验,同时包含与纯惯性优化中相同的偏置。
 
在 EuRoC 数据集[6] 上的详尽初始化实验表明,此初始化过程非常高效,在 2s 内使轨迹尺度误差达到 5% 。为改进初始估计,初始化完成 5s 和 15s 时执行视觉惯性 BA,使尺度误差进一步收敛到 1%,如第 VII 节所示。经过这些 BA,我们认为地图已经 mature ,这意味着尺度、IMU 参数和重力方向已经得到准确估计。
我们的初始化方法比通过求解一组代数方程的联合初始化方法[62]–[64]精度更高,同时比ORB-SLAM-VI [4]中使用的初始化方法快得多。ORB-SLAM-VI的初始化需要15秒才能获得首次尺度估计,而VI-DSO [46]的初始化则从一个巨大的尺度误差开始,并需要20–30秒才能收敛到1%的误差。关于不同初始化方法的比较,可参见文献[6]。
在某些特定情况下,当缓慢运动无法提供良好的惯性参数可观测性时,初始化可能无法在仅15秒内收敛到精确的解。为提高系统在这种情况下的鲁棒性,我们提出了一种基于改进的仅惯性优化的全新尺度优化技术,其中所有插入的关键帧都会被包括在内,但仅估计尺度和重力方向参数[见图 2(d)]。需要注意的是,在这种情况下,假设偏置恒定是不正确的。相反,我们使用从建图过程中估计的偏置值并将其固定。该优化具有极高的计算效率,每隔10秒在局部建图(Local Mapping)线程中执行一次,直到地图包含超过100个关键帧,或自初始化开始已过去75秒以上。
最后,通过将尺度因子固定为1,并将其从纯惯性的优化变量中移除,我们很容易将单目惯性初始化扩展到了立体惯性,从而提高了其收敛性。
C. Tracking and Mapping
在跟踪和建图过程中,我们采用了(Visual-Inertial Monocular SLAM with Map Reuse)[4]中提出的方案。跟踪通过简化的视觉-惯性优化来解决,其中仅优化最后两个帧的状态,而地图点保持固定。
在建图过程中,尝试解决公式(4)中的整体优化对于大规模地图而言是不可行的。我们将一个滑动窗口内的关键帧及其对应的点作为可优化变量,同时包括来自共视关键帧对这些点的观测,但保持共视关键帧的位姿固定。
D. Robustness to tracking loss
在纯视觉 SLAM 或 VO 系统中,相机短暂遮挡和快速运动会导致系统失去对视觉元素的跟踪,从而使系统迷失方向。ORB-SLAM开创了基于词袋模型的地点识别快速重定位技术,但该方法在EuRoC数据集中仍不足以解决较困难的序列问题[3]。我们的视觉-惯性系统在跟踪点数少于15个时进入视觉丢失状态,并通过以下两个阶段实现鲁棒性:
- 短期丢失(Short-term lost):当前机体状态从IMU读数中估计,并将地图点投影到估计的相机位姿中,然后在较大的图像窗口内搜索匹配点。得到的匹配点将被纳入视觉-惯性优化中。在大多数情况下,这能够恢复视觉跟踪;否则,在5秒后,我们进入下一个阶段。
 - 长时间丢失(Long-term lost):如上所述,初始化一个新的视觉-惯性地图,并将其设为活动地图。
 
如果系统在 IMU 初始化完成后 15s 内丢失,则丢弃当前地图,以防止累积不准确和无意义的地图。
6.MAP MERGING AND LOOP CLOSING 地图合并与闭环
在帧与活动地图之间的短期和中期数据关联,通常由跟踪和建图线程通过将地图点投影到估计的相机位姿中并在仅有几个像素的图像窗口中搜索匹配点来完成。为了实现重新定位和回环检测的长期数据关联,ORB-SLAM使用了DBoW2词袋位置识别系统[9],[75]。该方法也被大多数最新的包含回环闭合功能的视觉里程计(VO)和SLAM系统所采用(见表I)。
与跟踪不同,位置识别不从相机位姿的初始估计开始。相反,DBoW2通过关键帧的词袋向量构建了一个数据库,给定一个查询图像时,能够高效地提供与其词袋最相似的关键帧。仅使用第一个候选项时,原始的DBoW2查询可以实现约50%-80%的精度和召回率[9]。为避免误匹配对地图造成破坏,DBoW2引入了时间和几何一致性检查,将精度提升至100%,召回率在30%-40%之间[9],[75]。关键在于,时间一致性检查会延迟位置识别至少三个关键帧的时间。当我们尝试在Atlas系统中使用DBoW2时,我们发现这种延迟和低召回率往往导致在相同或不同地图中出现重复区域。
在这项工作中,我们提出了一种新的位置识别算法,以提高长期和多地图数据关联的召回率。每当建图线程创建一个新的关键帧时,就会启动位置识别,尝试检测与Atlas中已存在的任何关键帧的匹配。如果找到的匹配关键帧属于当前活动地图,则执行回环闭合。否则,这是一个多地图数据关联,之后将合并活动地图和匹配地图。作为我们方法的第二个创新点,一旦估计出新关键帧与匹配地图之间的相对位姿,我们就会定义一个局部窗口,其中包含匹配关键帧及其在共视性图中的邻居。在这个窗口中,我们会深入搜索中期数据关联,从而提高闭环和地图合并的准确性。这两个创新点解释了 ORB-SLAM3 在 EuRoC 实验中获得的准确性优于 ORB-SLAM2。接下来将解释不同操作的细节。
A. 位置识别 (Place Recognition)
为了实现更高的召回率,对于每个新的活动关键帧,我们在Atlas中的DBoW2数据库中查询多个相似的关键帧。为了达到100%的准确率,每个候选关键帧都需要通过多个几何验证步骤。所有几何验证步骤的基本操作是检查在图像窗口内是否存在一个ORB关键点,其描述子与某个地图点的ORB描述子匹配,并对两者之间的Hamming距离设置阈值。如果搜索窗口中存在多个候选,为了排除误匹配,我们检查与第二接近匹配的距离比[76]。我们的位置识别算法的步骤如下所示。
DBoW2候选关键帧 :我们使用活动关键帧 K_a 查询Atlas的DBoW2数据库,以检索出与其最相似的三个关键帧,排除与 K_a 具有共视关系的关键帧。我们将每个用于位置识别的匹配候选关键帧称为 K_m。
局部窗口 。对于每个关键帧 K_m,我们定义一个局部窗口,其中包括 K_m、K_m的最佳共视关键帧以及所有这些关键帧观测到的地图点。DBoW2的直接索引提供了关键帧 K_a 与局部窗口关键帧之间的一组潜在关键点匹配。对每对2D-2D匹配,我们还可以获得它们对应的地图点之间的3D-3D匹配。
3D 对齐变换 。我们使用 RANSAC 计算变换 T_{am},以更好地将 K_m 局部窗口中的地图点与 K_a 中的地图点对齐。在纯单目模式,或者在单目-惯性模式且地图尚未稳定时,我们计算 T_{am} \in \text{Sim}(3);否则,T_{am} \in \text{SE}(3)。在这两种情况下,我们使用 Horn 算法 [77],利用一组最少的三个3D-3D匹配来为每个 T_{am} 假设求解。将 K_a 中的地图点通过 T_{am} 变换后,如果其在 K_a 中的重投影误差低于阈值,则视为对该假设的投赞成票。投票数最多的假设将被选中,前提是投票数超过设定的阈值。
引导匹配优化 。局部窗口中的所有地图点都通过变换 T_{am} ,以查找与 K_a 中关键点的更多匹配。同时也进行反向搜索,即查找K_a地图点与局部窗口中所有关键帧上的匹配。使用找到的所有匹配,对 T_{am}执行非线性优化,其中目标函数是双向重投影误差,使用 Huber 核函数来增强对误匹配的鲁棒性。如果优化后的内点数量超过阈值,则使用更小的图像搜索窗口,再次进行一次引导匹配和非线性优化。
**在三个共视关键帧中进行验证.**为了避免误匹配,DBoW2等待在连续的三个关键帧中触发位置识别,从而导致位置识别延迟或遗漏。我们认为在多数情况下,验证所需的信息已存在于地图中。为验证位置识别,我们在活动地图部分中搜索与关键帧K_a共视的两个关键帧,这两个关键帧与局部窗口中的点的匹配数超过设定阈值。如果未找到符合条件的关键帧,则使用新传入关键帧中进一步尝试验证,而无需再次触发词袋。验证过程将持续进行,直到三个关键帧验证T_{am},或者连续两个新的关键帧验证失败。
    验证过程将持续进行,直到三个关键帧验证$T_{am}$,或者连续两个新的关键帧验证失败。
    
    意思是,验证过程会持续进行,直到满足以下两种条件之一:
    
    1. 有**三个关键帧成功验证了**目标匹配(T_am),即位置识别被认为是正确的。
    2. 或者**连续两个新的关键帧验证失败**,即未能确认位置识别的正确性。
    
    换句话说,系统会不断进行验证,如果达到三个关键帧都能验证匹配的准确性,验证过程就结束;
    
    如果连续两个新加入的关键帧都无法通过验证,系统则认为位置识别可能是误匹配,验证过程也会终止。
    
    这样可以有效减少误识别的影响,提高系统的准确性。
    
    
    bash

        - 视觉-惯性重力方向验证 :在视觉-惯性情况下,如果当前活动地图已足够稳定,我们已经估计了T_{am} \in SE(3)。我们进一步检查俯仰角和横滚角是否低于设定的阈值,以最终确认位置识别假设的正确性。
 
B. 视觉地图合并 Visual Map Merging

当一次成功的位置识别在活动地图 M_a 中的关键帧 K_a 与存储在Atlas中的另一地图 M_m 中的匹配关键帧 K_m 之间产生多地图数据关联,以及一个对齐变换 T_{am} 时,我们启动地图合并操作。在此过程中,需要特别注意确保 M_m 中的信息可以被跟踪线程及时复用,以避免地图重复。为此,我们建议将地图 M_a 转换到 M_m 的参考框架下。由于 M_a 可能包含许多元素,合并过程可能会耗时,因此将其分为两个步骤。首先,在共视图图中由 K_a 和 K_m 的邻居定义的welding 窗口(welding window)内进行合并,然后在第二阶段,通过位姿图(PG)优化算法将矫正传播到合并地图的其他部分。
合并算法的详细步骤如下:
- welding 窗口构建(Welding window assembly) :welding 窗口包括关键帧K_a及其共视关键帧、关键帧K_m及其共视关键帧,以及所有被这些关键帧观测到的地图点。在它们被包含到welding 窗口之前,属于地图M_a的关键帧和地图点会通过变换T_{ma}来对齐,以便与地图M_m对齐。
 - 地图合并(Merging maps) :地图 M_a 和 M_m 被合并在一起,成为新的活动地图。为了去除重复的点,对 M_a 中的点在 M_m 的关键帧中主动搜索匹配点。对于每个匹配点,从 M_a 中移除该点,同时保留 M_m 中的点,并累加移除点的所有观测。由于找到了新的中期点关联,通过添加连接来自 M_m 和 M_a 的关键帧的边来更新共视图和基本图 [2]。
 - Welding BA(Welding bundle adjustment) :在Welding 窗口内,对来自 M_a 和 M_m 的所有关键帧以及它们观测到的地图点执行局部BA优化[图 3(a)]。为了解决规矩自由度的问题 ( note: 指的是在优化过程中消除尺度和位姿的不确定性 ),不属于Welding 窗口但观测到局部地图点的 M_m 中的关键帧将参与BA优化,但固定其位姿。当优化完成后,Welding 区域内的所有关键帧都可以用于相机跟踪,从而实现对地图 M_m 的快速且精确的复用。
 - 本质图优化(Essential-graph optimization) 。在整个合并后的地图上,利用其本质图(Essential Graph)执行位姿图(PG)优化,同时固定Welding 区域中的关键帧。此优化将Welding 窗口的校正传播到地图的其余部分。
 
C. 视觉-惯性地图合并 (Visual–Inertial Map Merging)
视觉惯性合并算法遵循与纯视觉情况类似的步骤。修改了步骤 1) 和 3) 以更好地利用惯性信息。
- 视觉-惯性Welding 窗口构建 :如果当前活跃地图已稳定,我们将可用的 T_{ma} \in SE(3) 应用于地图 M_a ,然后将其包含在Welding 窗口中。如果当前活动地图尚未稳定,我们使用可用的 T_{ma} \in Sim(3) 对地图 M_a 进行对齐。
 - 视觉-惯性Welding BA :关键帧 K_a 和 K_m 的位姿、速度和偏置以及它们最近的五个时间关键帧被包括为可优化变量。这些变量通过IMU预积分项关联,如图 3(b) 所示。对于 M_m,包含了局部窗口前的关键帧,但保持固定,而对于 M_a,包含了类似的关键帧,但其位姿仍然可优化。所有由上述关键帧可见的地图点都将被优化,同时还会优化来自 K_m 和 K_a 的共视关键帧的位姿。所有关键帧和点通过重投影误差关联。
 
D. Loop Closing
回环校正算法 类似于地图合并,但在这种情况下,通过位置识别匹配的两个关键帧都属于活动地图(Active Map)。首先,从匹配的关键帧生成一个Welding 窗口(Welding Window),并在共视图(Covisibility Graph)和本质图(Essential Graph)中检测并合并重复的地图点,创建新的链接。接下来,进行姿态图(Pose-Graph, PG)优化,以将回环校正(Loop Correction)传播到地图的其余部分。最后一步是执行全局捆绑调整(Bundle Adjustment, BA),在考虑回环的中期和长期匹配后,找到最大后验估计(MAP)。在视觉-惯性(Visual-Inertial)情况下,只有当关键帧数量低于某个阈值时才执行全局BA,以避免巨大的计算成本。
7.实验结果 (EXPERIMENTAL RESULTS)

整个系统的评估分为以下几部分:
在EuRoC数据集上的单次会话实验[79]:处理11个序列中的每一个,以生成地图,并采用四种传感器配置:单目、单目-惯性、立体和立体-惯性。
在具有挑战性的TUM-VI基准测试集上,评估鱼眼相机的单目和立体视觉-惯性SLAM性能[80]。
在这两个数据集上的多次会话实验 。
在该领域中,通常使用均方根绝对轨迹误差(rms ATE)[81]来衡量精度。在纯单目情况下,使用Sim(3)变换将估计轨迹与真实轨迹对齐,而在其他传感器配置中,则使用SE(3)变换。尺度误差通过Sim(3)对齐得到的 s 值计算,即 |1 - s|。所有实验均在一台配备Intel Core i7-7700处理器、3.6 GHz主频和32 GB内存的计算机上,仅使用CPU。
A. 在EuRoC数据集上的单次会话SLAM(Single-Session SLAM on EuRoC)
表 II 将 ORB-SLAM3 使用其四种传感器配置与最先进系统的性能进行了比较。我们报告的值是 10 次执行后的中值(中位数)。如表所示,ORB-SLAM3 在所有传感器配置中均比文献中最好的系统实现了更准确的结果,大多数情况下甚至领先优势很大。
在单目和立体配置下,由于我们系统采用了更好的位置识别算法,可以更早地闭环并提供更多的中期匹配,使得ORB-SLAM3比ORB-SLAM2更为精确。有趣的是,排名第二的 DSM 也使用了中期匹配,尽管它并没有进行回环闭合。
在单目-惯性配置下,ORB-SLAM3的精度是MCSKF、OKVIS和ROVIO的五到十倍,比VI-DSO和VINS-Mono的精度高出一倍以上,再次展示了中期和长期数据关联的优势。与ORB-SLAM VI相比,我们创新的快速IMU初始化方法使ORB-SLAM3能够在几秒钟内完成惯性传感器的校准,并从一开始就利用它,从而能够完成所有EuRoC序列,且获得更高的精度。
在立体-惯性配置下,ORB-SLAM3的精度是Kimera和VINS-Fusion的三到四倍。只有最近的 BASALT 能够接近它的精度,BASALT 系统作为一个原生的立体-惯性系统,未能完成序列V203,因为其中一个相机的某些帧丢失。对比我们的单目-惯性和立体-惯性系统,后者在大多数情况下表现更好。只有在两个Machine Hall(MH)序列中,精度稍低。我们推测,MH序列中的更大深度场景可能导致立体三角测量精度降低,从而导致尺度精度较低。

为总结性能表现,我们给出了每种传感器配置下十次的中位数。对于一个稳健的系统,中位数能够准确地代表系统的行为,而非稳健系统的结果则会显示出较高的方差*(note:因为它指的是系统结果的不稳定性或波动性,通常用方差来表示统计上的离散程度)*。可以通过图 4进行分析,图中使用颜色表示十次执行中获得的误差。与文献[46]中发布的DSO、ROVIO和VI-DSO的结果相比,证实了我们方法的优越性。
在纯视觉配置中,多地图系统通过在跟踪丢失时创建新地图(稍后与全局地图合并)来增加快速运动的鲁棒性。这可以在 V103 单目序列和 V203 立体序列中看到,这些序列无法通过 ORB-SLAM2 解决,但我们的系统在大多数执行中都成功解决了。正如预期的那样,由于立体特征初始化速度更快,因此立体比单目更具鲁棒性,并且还有一个额外的优势,即可以估算真实尺度。
然而,我们的新型视觉-惯性SLAM系统在单目和立体配置下都实现了稳健性的大幅提升。立体-惯性系统比单目-惯性系统略具优势,尤其是在最具挑战性的V203序列中。
我们可以得出结论,惯性集成不仅提高了精度,使得中位ATE误差相比纯视觉解决方案有所降低,还赋予了系统出色的鲁棒性,使其表现更加稳定。
B.TUM-VI 基准上的视觉惯性 SLAM (Visual–Inertial SLAM on TUM-VI Benchmark)
TUM-VI数据集[80]包含6个不同环境下的28个序列,使用手持式鱼眼立体-惯性装置录制。该数据集的轨迹真值仅在序列的开始和结束处可用,对于大多数序列,这仅占整个轨迹的一小部分。数据集中的许多序列不包含回环。即使起点和终点在同一个房间,视角方向也是相反的,位置识别无法检测到任何共同区域。使用该真值进行评估相当于测量整个轨迹上的累积漂移。
在单目-惯性配置中,我们从每张图像中提取1500个ORB特征点,在立体-惯性配置中则为1000个特征点,并在提取前应用CLAHE均衡化,以应对数据集中出现的曝光不足和过曝问题。对于户外序列,我们的系统难以处理来自多云天空的远距离特征点,这在鱼眼相机中尤其明显。这些特征点的运动较慢,可能会导致相机位姿出现漂移。为防止这种情况,仅在户外序列中,我们会丢弃距离当前相机位姿超过20米的特征点。一个更复杂的解决方案是使用图像分割算法来检测并丢弃天空部分。

表III将获得的结果与文献中最相关的系统进行了比较,清楚地显示了ORB-SLAM3在单目-惯性和立体-惯性配置中的优越性。最接近的系统是VINS-Mono和BASALT,它们本质上是带有回环闭合功能的视觉-惯性里程计系统,但缺少中期数据关联。
更详细地分析我们系统的性能,可以发现它在小型和中型室内环境(房间和走廊序列)中获得了最低的误差,大多数情况下误差低于10厘米。在这些轨迹中,系统持续地重访并重用先前建图的区域,这是ORB-SLAM3的主要优势之一。此外,跟踪的点通常距离小于5米,这使得惯性参数的估计更加容易,从而避免它们发散。
在最长达900米的室内“magistrale”序列中,大多数被跟踪的点相对较近,ORB-SLAM3的误差大约为1米,除了一个误差接近5米的序列。相比之下,在一些较长的室外序列中,由于近距离视觉特征的稀缺,可能会导致惯性参数(尤其是尺度和加速度计偏差)产生漂移,从而产生10到70米的误差。然而,ORB-SLAM3在这些室外序列中仍表现为最优系统。
该数据集还包含三个非常具有挑战性的滑梯序列,在这些序列中,用户通过一个几乎完全缺乏视觉特征的黑暗管状滑梯下滑。在这种情况下,纯视觉系统将会丢失跟踪,但我们的视觉-惯性系统能够处理整个序列,并且误差具有竞争力,即使无法检测到回环闭合。有趣的是,VINS-Mono和BASALT在某些这些序列中获得了比ORB-SLAM3更好的精度,因为它们使用 Lucas-Kanade方法 进行特征跟踪,而ORB-SLAM3匹配的是ORB描述子。

最后,房间序列可以代表典型的AR/VR应用场景,在这些场景中,用户在小环境中使用手持或头戴设备移动。在这些序列中,整个轨迹的真实位姿数据是可用的。表III显示,ORB-SLAM3的精度显著高于其他方法。表IV比较了我们四种传感器配置下获得的结果。单目与立体的精度差异仅是表面上的:单目方案的结果是比例可观的,并通过7自由度与真实位姿对齐,而立体则提供了真实的尺度,并通过6自由度对齐。使用单目-惯性配置,我们将平均rms ATE误差进一步降低至接近1厘米,同时也获得了真实的尺度。最后,我们的立体-惯性SLAM将误差降低到1厘米以下,使其成为AR/VR应用的极佳选择。
C.多会话 SLAM (Multisession SLAM)
EuRoC数据集为其三个环境中的每一个提供了多个会话:Machine Hall(MH)有5个会话,Vicon1有3个会话,Vicon2有3个会话。为了测试ORB-SLAM3的多会话性能,我们顺序处理每个环境中的所有会话。同一环境中的每条轨迹都具有相同世界参考的真实值(ground-truth),这允许我们进行一次全局对齐来计算绝对轨迹误差(ATE)。
每个房间的第一个序列提供了初始地图。处理后续序列时,会创建一个新的活动地图,并迅速与之前会话的地图合并,从那时起,ORB-SLAM3通过重用先前的地图来提升性能。

表V报告了三个房间中四种传感器配置的全局多次会话均方根绝对轨迹误差(rms ATE),并与EuRoC数据集中仅有的两个已发布的多次会话结果进行比较:CCMSLAM [71],在MH01-MH03中报告了纯单目结果,以及VINS-Mono [7],在五个MH序列中使用单目-惯性。在这两种情况下,ORB-SLAM3的精度都超过竞争方法的两倍。对于VINS-Mono,ORB-SLAM3在单次会话中获得了2.6倍的精度提升,而在多次会话中这一优势增加到3.2倍,展示了我们地图合并操作的优越性。
将这些多次会话的性能与表II中报告的单次会话结果进行比较,最显著的差异在于,多次会话的单目和立体SLAM能够稳健地处理困难的V103和V203序列,这得益于先前地图的利用。


我们还在TUM-VI数据集上进行了多次会话实验。图5显示了处理TUM大楼内多个序列后的结果。在这种情况下,较小房间的序列提供了较长序列中缺失的回环闭合,使得所有误差降至厘米级。尽管在房间外没有可用的真实值,但将该图与文献[82]中发布的图进行比较可以明显看出我们的观点:我们的多次会话SLAM系统在精度上远优于现有的视觉-惯性里程计系统。图6进一步展示了这一点。尽管ORB-SLAM3在户外单次会话的立体-惯性处理中的表现更佳(≈ 60米漂移),但是在以多次会话方式在magistrale2之后处理outdoors1时,这一漂移被显著减小,最终地图精度大幅提升。
D. 计算时间 Computing Time

表VI总结了跟踪和建图线程中执行的主要操作的时间,显示出我们的系统能够以每秒30–40帧和3–6个关键帧的速率实时。在跟踪过程中,惯性部分所需时间可以忽略不计,事实上,惯性模块可以使系统更高效,因为帧率可以安全地降低。在建图线程中,每个关键帧的变量数量增加已通过惯性局部BA中的关键帧数量减少得以补偿,从而在相似的时间内实现更高的精度。由于跟踪和建图线程始终在活动地图上工作,多地图操作并不会引入显著的开销。

表VII总结了回环闭合和地图合并主要步骤的时间。新颖的位置识别方法每个关键帧仅需10毫秒。合并和回环闭合的时间保持在1秒以内,仅执行位姿图(PG)优化。对于闭环,执行完整的BA可能会将时间增加到几秒钟,具体取决于所涉及地图的大小。无论如何,由于这两项操作都在一个单独的线程中执行(见图1),因此不会干扰系统其余部分的实时性能。视觉-惯性系统仅执行两次地图合并即可连接三个序列,而纯视觉系统则会执行一些额外的合并以从跟踪丢失中恢复。得益于更低的漂移,视觉-惯性系统相比纯视觉系统也执行了更少的回环闭合操作。
虽然这很有趣,但我们不会将时间与其他系统进行比较,因为这需要付出巨大的努力,而这超出了本文的范围。
8.Conclusion
基于[2]–[4]的工作,我们提出了ORB-SLAM3,这是目前最完整的开源视觉、视觉-惯性及多次会话SLAM库,支持单目、立体、RGB-D、针孔和鱼眼相机。除了集成的库本身外,我们的主要贡献还包括快速且精确的IMU初始化技术和基于新的改进召回率的位置识别技术的多次会话地图合并功能。
我们的实验结果表明,ORB-SLAM3是第一个能够有效利用短期、中期、长期和多地图数据关联的视觉和视觉-惯性系统,达到了现有系统无法企及的精度水平。我们的结果还表明,就精度而言,使用所有这些类型的数据关联的能力优于其他选择,例如使用直接方法替代特征,或在局部BA中执行关键帧边缘化,而不是像我们这样假设一个外部的静态关键帧集合。
ORB-SLAM3的主要失败情况出现在低纹理环境中。直接法在低纹理情况下更加鲁棒,但其数据关联仅限于短期[27]和中期[31]。另一方面,特征描述符匹配成功地解决了长期和多地图数据关联问题,但在跟踪方面似乎不如使用光度信息的Lucas-Kanade方法鲁棒。一个有趣的研究方向可能是开发适用于四种数据关联问题的光度技术。我们目前正在探索这一思路,以用于从人体内部的内窥镜图像构建地图。
关于四种不同的传感器配置,无疑是立体-惯性SLAM提供了最稳健且最精确的解决方案。此外,惯性传感器允许以IMU速率估计位姿,这比帧率高出几个数量级,是某些应用场景中的关键特性。对于由于体积大、成本高或处理需求较高而不适合使用立体相机的应用,可以使用单目-惯性配置,而不会在稳健性和精度方面有太大损失。需要注意的是,在探索过程中,如果存在纯旋转运动,将无法估计深度。
在运动缓慢或没有横滚和俯仰旋转的应用中,例如平坦区域内的车辆,IMU传感器可能难以初始化。在这种情况下,如果可能,建议使用立体SLAM。否则,最近基于卷积神经网络(CNN)从单张图像估计深度的进展,为实现可靠且具有真实尺度的单目SLAM提供了良好前景,至少在与CNN训练环境相同类型的场景中是如此【83】。
参考
ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM
