ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

摘要

本文介绍了ORB-SLAM3,这是第一个能够使用单目、双目和RGB-D相机,使用针孔和鱼眼镜头模型执行视觉、视觉-惯性和多地图SLAM的系统。

第一个主要创新点是基于特征的紧耦合的视觉-惯性SLAM系统,它完全依赖于最大后验概率(MAP)估计,即使在IMU初始化阶段也是如此。其结果是,该系统在小型和大型、室内和室外环境中实时鲁棒地运行,并且比以前的方法精确两到十倍。

第二个主要的创新点是多地图系统,它依赖于一种具有提高的的召回率的新的位置识别方法。多亏了它,ORB-SLAM3能够在长期视觉信息匮乏的情况下运行:当它丢失时,它会启动一个新的地图,在重新访问之前的地图区域时,该地图将与以前的地图无缝合并。与仅使用最后几秒钟信息的视觉里程计系统相比,ORB-SLAM3是第一个能够在所有算法阶段重用所有先前信息的系统。这允许在BA内包括提供高视差观测的共视关键帧来提高精度,即使它们在时间上相隔很远,或者来自上一次建图任务。

我们的实验表明,在所有传感器配置中,ORBSLAM3与已有文献中可用的最佳系统一样鲁棒,并且更精确。值得注意的是,我们的双目-惯性SLAM在EuRoC无人机上的平均精度为3.5厘米,在TUM-VI数据集房间中的快速手持运动下的平均精度为9毫米,这是一种代表AR/VR场景的设置。为了社区的利益,我们公开了源代码。

I. 引言

在过去二十年中,对视觉同时定位和建图系统(SLAM)和视觉里程计(VO)的深入研究,无论是单独使用相机还是与惯性传感器结合使用,都产生了具有更高精度和鲁棒性的优秀系统。现代系统依赖于最大后验概率(MAP)估计,在视觉传感器的情况下,最大后验概率(MAP)估计对应于束调整(BA),在基于特征的方法中,几何BA最小化特征重投影误差,或者在直接法中,光度BA最小化一组选定像素的光度误差。

随着最近出现的集成闭环矫正技术的VO系统,VO和SLAM之间的边界更加模糊。视觉SLAM的目标是使用传感器在移动设备上构建环境地图,并实时计算设备在该地图中的位姿。相比之下,VO系统将重点放在计算设备的自我运动而不是构建地图上。SLAM地图的最大优势在于,它允许在BA中匹配和使用以前的观测来执行三种类型的数据关联(扩展了[1]中使用的术语):

  • 短期数据关联,匹配在最后几秒钟内获得的地图元素。这是大多数VO系统使用的唯一数据关联类型,一旦环境元素离开视角,它们就会被忘记,即使系统在同一区域移动,也会导致连续的估计漂移。
  • 中期数据关联,匹配靠近相机的累积漂移仍然很小的地图元素。与短期观测相同,这些可以在BA中匹配和使用,并允许系统在地图区域移动时达到零漂移。与采用闭环检测的VO系统相比,它们是我们的系统获得更好精度的关键。
  • 长期数据关联,使用位置识别技术将观测值与先前访问区域中的元素进行匹配,而不考虑累积漂移(闭环检测)、当前区域之前已经在不连接的地图中被建图(地图合并)或跟踪丢失(重新定位)。长期匹配允许重置漂移并使用位姿图(PG)优化校正地图,或者更准确地说,使用BA校正地图。这是在中大型具有回环的环境中保证SLAM精度的关键。

在这项工作中,我们以ORB-SLAM[2]、[3]和ORBSLAM Visual-Inertial[4]为基础,这是第一个能够充分利用短期、中期和长期数据关联并在已建图区域达到零漂移的视觉和视觉惯性系统。在这里,我们进一步提供了多地图数据关联,这使我们能够在BA中匹配和使用来自先前建图任务的地图元素,从而实现SLAM系统的真正目标:构建一个可用于以后提供精确定位的地图。

这本质上是一篇系统论文,其最重要的贡献是ORB-SLAM3库本身[5],这是迄今为止最完整和准确的视觉、视觉-惯性和多地图SLAM系统(见表一)。

ORB-SLAM3的主要创新点包括:

  • 一个单目和双目视觉惯性SLAM系统,完全依赖最大后验概率(MAP)估计,即使在IMU(惯性测量单元)初始化期间。之前在[6]中介绍了提出的初始化方法。在这里,我们添加了它与ORB-SLAM Visual-Inertial[4]的集成,对双目惯性SLAM的扩展,以及对公共数据集的全面评估。我们的结果表明,单目和双目视觉-惯性系统比其他视觉-惯性方法具有更强的鲁棒性和更高的精度,即使在没有闭环的序列中也是如此。
  • 具有改进的召回率的位置识别。许多最新的视觉SLAM和VO系统[2]、[7]、[8]使用DBoW2词袋库[9]解决了位置识别问题。DBoW2需要时间一致性,在检查几何一致性之前将三个连续关键帧匹配到同一区域,以牺牲召回率为代价提高了精度。因此,系统在闭环矫正和重用以前建图的区域方面太慢。我们提出了一种新的位置识别算法,首先检查候选关键帧的几何一致性,然后检查三个共视关键帧的局部一致性,在大多数情况下,这些关键帧已经在地图中。该策略增加了召回率并加密了数据关联,从而提高了地图的准确性,但计算成本略高。
  • ORB-SLAM Atlas,第一个完整的多地图SLAM系统,能够处理单目和双目配置的视觉和视觉-惯性系统。Atlas可以表示一组断开连接的地图,并将所有建图操作平滑地应用于它们:位置识别、相机重新定位、闭环矫正和精确的无缝地图合并。这允许自动使用和组合在不同时间生成的地图来执行增量-多任务SLAM。参考文献[10]中介绍了用于视觉传感器的ORBSLAM Atlas的初步版本。在这里,我们添加了新的位置识别系统,视觉-惯性多地图系统及其对公共数据集的评估。
  • 一种抽象的相机表示方法,使SLAM代码与所使用的相机模型无关,并允许通过提供投影、反投影和雅可比函数来添加新模型。我们提供了针孔[11]和鱼眼[12]模型的实现。

所有这些创新之处,再加上一些代码改进,使ORB-SLAM3成为新的参考视觉和视觉-惯性开源SLAM库,与现有文献中可用的最佳系统一样鲁棒,并且更加准确,如第VI节中我们的实验结果所示。我们还提供了从业者感兴趣的单目、双目、单目-惯性和双目-惯性SLAM结果之间的比较。

B. 相关工作

表一概述了最具代表性的视觉和视觉-惯性系统,显示了用于估计和数据关联的主要技术。表中的定性准确度和鲁棒性评级基于第VI节中给出的结果,以及[2]中报告的PTAM、LSD-SLAM和ORB-SLAM之间的比较。

A.视觉SLAM

在MonoSLAM[13]、[14]、[52]中,首先使用扩展卡尔曼滤波器(EKF)和ShiTomasi点解决了单目SLAM问题,这些点在后续图像中通过相关引导搜索进行跟踪。中期数据关联得到了显著改善,使用的技术保证了所使用的特征匹配的一致性,实现了手持视觉SLAM[53],[54]。

与之相反,基于关键帧的方法仅使用几个选定帧来估计地图,而丢弃来自中间帧的信息。这允许以关键帧速率执行成本更高但更精确的BA优化。最具代表性的系统是PTAM[16],该系统将相机跟踪和建图分为两个并行的线程。在计算成本相同的情况下,基于关键帧的技术比滤波器更加精确[55],成为了视觉SLAM和VO的黄金标准。在[56]中使用滑动窗口BA实现了大规模单目SLAM,在[57]中使用双窗口优化和共视图实现了大规模单目SLAM。

基于这些思想,ORB-SLAM[2],[3]使用ORB特性,其描述子提供短期和中期数据关联,构建共视图以限制跟踪和建图的复杂性,并使用词袋库DBoW2[9]执行闭环矫正和重新定位,实现长期数据关联。到目前为止,它是唯一一个集成了三种类型数据关联的视觉SLAM系统,我们相信这是其卓越准确性的关键。在这项工作中,我们使用新的Atlas系统提高了其在纯视觉SLAM中的鲁棒性,该系统在跟踪丢失时启动新的地图,并使用具有改进召回率的新位置识别方法提高了其在闭环场景中的准确性。

直接方法不提取特征,而是直接使用图像中的像素强度,并通过最小化光度误差来估计运动和结构。LSD-SLAM[20]能够使用高梯度像素构建大尺度半稠密地图。然而,地图估计被简化为位姿图(PG)优化,其精度低于PTAM和ORB-SLAM[2]。混合系统SVO[23],[24]提取FAST特征,使用直接方法跟踪特征和帧与帧之间具有非零强度梯度的任何像素,并使用重投影误差优化相机轨迹和3D结构。SVO非常有效,但作为纯VO方法,它只执行短期数据关联,这限制了其准确性。直接稀疏里程计DSO[27]能够在点检测器性能不佳的情况下计算精确的相机位姿,增强低纹理区域或模糊图像的鲁棒性。它引入了局部光度BA,可同时优化包含七个最近关键帧的窗口和点的逆深度。这项工作的扩展包括双目[29],使用特征和DBoW2[58][59]的闭环矫正,以及视觉-惯性里程计[46]。直接稀疏建图DSM[31]在直接法中引入了地图重用的思想,显示了中期数据关联的重要性。在所有情况下,缺乏短期、中期和长期数据关联的集合导致精度低于我们的系统(见第VI节)。

B. 视觉-惯性SLAM

视觉传感器和惯性传感器的结合提供了对弱纹理、运动模糊和遮挡情况下的鲁棒性,并且在单目系统的情况下,使尺度可观。

紧耦合方法的研究可以追溯到MSCKF[33],其中通过特征边缘化避免了EKF中特征数量的平方的计算代价。最初的系统在[34]中得到完善,并在[35]、[36]中扩展到双目。第一个基于关键帧和BA的紧耦合的视觉里程计系统是OKVIS[38],[39],它也能够使用单目和双目视觉。虽然这些系统依赖于特征,但ROVIO[41],[42]使用直接数据关联向EFK提供光度误差。

ORB-SLAM-VI[4]首次提出了一种视觉-惯性SLAM系统,该系统能够重用具有短期、中期和长期数据关联的地图,并在基于IMU预积分的精确局部视觉-惯性BA中使用它们[60],[61]。然而,它的IMU初始化技术太慢,需要15秒,这损害了鲁棒性和准确性。[62],[63]中提出了更快的初始化技术,该技术基于一个闭式解,用于联合检索尺度、重力、加速度计零偏和初始速度以及视觉深度特征。关键的是,它们忽略了IMU噪声特性,并最小化了空间点的3D误差,而不是它们的重投影误差,这是基于特征的计算机视觉的黄金标准。我们之前的工作[64]表明,这会导致大量不可预测的错误。

VINS Mono[7]是一个非常准确和鲁棒的单目视觉里程计系统,具有使用DBoW2和4自由度位姿图优化的闭环矫正以及地图合并。特征跟踪是使用Lucas Kanade光流执行的,比描述子匹配稍微鲁棒一些。在VINS-Fusion[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. 多地图SLAM

在[65]中,在滤波方法中首次提出了通过地图创建和融合来增加探索过程中跟踪损失的鲁棒性的想法。第一个基于关键帧的多地图系统是[66],但地图初始化是手动的,系统无法合并或关联不同的子图。多地图能力已作为协同建图系统的一个组成部分进行了研究,包括多个建图设备和一个仅接收信息的中央服务器[67],或具有双向信息流,如C2TAM[68]。MOARSLAM[69]为协作式多设备SLAM提出了一种鲁棒的的无状态客户机-服务器体系结构,但主要关注的是软件体系结构,没有报告准确性结果。

最近,CCM-SLAM[70],[71]提出了一种分布式多地图系统,用于具有双向信息流的多无人机,基于ORB-SLAM的基础上。他们的重点是克服有限带宽和分布式处理的挑战,而我们的重点是准确性和鲁棒性,在EuRoC数据集上取得了显著更好的结果。SLAMM[72]还提出了ORB-SLAM2的多地图扩展,但将子地图保留为单独的实体,然而我们执行无缝地图合并,构建了更精确的全局地图。

VINS-Mono[7]是一种视觉里程计系统,具有依赖于位置识别库DBoW2[9]的闭环矫正和多地图功能。我们的实验表明,由于能够使用中期数据关联,ORB-SLAM3在EuRoc数据集上的单目-惯性单次任务操作的精度是VINS-Mono的2.6倍。我们的Atlas系统也基于DBoW2,但提出了一种新的具有更高召回率的位置识别技术,并使用局部BA执行更详细和准确的地图合并,在EuRoC上的多任务操作中,其优势是VINS-Mono的3.2倍的准确度。

III. 系统概述

ORB-SLAM3建立在ORB-SLAM2[3]和ORBSLAM-VI[4]的基础上。这是一个能够使用单目、双目和RGB-D相机,使用针孔和鱼眼镜头模型执行视觉、视觉-惯性和多地图SLAM的完整的多地图和多任务系统。

图1显示了主要系统的组件,这些组件与ORB-SLAM2的组件并行,并具有一些显著的新颖性,下面将对其进行总结:

  • Atlas是由一组断开连接的地图组成的多地图表示。有一个活动地图,跟踪线程在其中定位传入帧,并由局部建图线程使用新关键帧不断优化和增长。我们将地图集中的其他地图称为非活动地图。系统构建一个唯一的的关键帧的DBoW2数据库,用于重定位、闭环矫正和地图合并。
  • 跟踪线程处理传感器信息并实时计算当前帧相对于活动地图的位姿,从而最小化匹配的地图特征的重投影误差。它还决定当前帧是否成为关键帧。在视觉-惯性模式下,通过在优化中包含惯性残差来估计机体速度和IMU零偏。当跟踪丢失时,跟踪线程尝试在所有Atlas地图中重定位当前帧。如果重新定位成功,将恢复跟踪,并在需要时切换活动地图。否则,在一段时间后,活动地图将被存储为非活动,并从头开始初始化新的活动地图。
  • 局部建图线程向活动地图添加关键帧和地图点,删除多余的关键帧和地图点,并使用视觉或视觉惯性BA,在靠近当前帧的局部关键帧窗口中操作来精细化地图。此外,在惯性情况下,IMU参数由建图线程使用我们新的最大后验证概率估计技术进行初始化和精细化。
  • 闭环和地图合并线程以关键帧速率检测活动地图和整个地图集之间的公共区域。如果公共区域属于活动地图,则它执行闭环矫正;如果它属于不同的地图,则两个地图将无缝合并为一个地图,该地图将成为活动地图。闭环矫正后,将在独立线程中启动全局BA,以进一步精细化地图,而不会影响实时性能。

IV. 相机模型

ORB-SLAM在所有系统组件中均假设为针孔相机模型。我们的目标是通过将与相机模型相关的所有属性和函数(投影和反投影函数、雅可比矩阵等)提取到单独的模块中,从而从整个SLAM工作流中抽象相机模型。这允许我们的系统通过提供相应的相机模块来使用任何相机型号。在ORB-SLAM3库中,除了针孔模型外,我们还提供了Kannala-Brandt[12]鱼眼模型。

由于大多数流行的计算机视觉算法都采用针孔相机模型,因此许多SLAM系统要么校正整个图像,要么校正特征点坐标,以在理想的成像平面中工作。然而,这种方法对于鱼眼镜头是有问题的,鱼眼镜头可以达到或超过180度的视野(FOV)。图像校正不是一个好的选择,因为外围的对象被放大,而中心的对象分辨率变差,阻碍了特征匹配。校正特征点坐标需要使用小于180度的FOV,这给许多计算机视觉算法带来了麻烦,这些算法假设图像上存在均匀的重投影误差,而这在校正后的鱼眼图像中不被满足。这迫使我们裁剪掉图像的外部部分,从而失去了大视场的优势:更快地建图环境和对遮挡更好的鲁棒性。接下来,我们讨论如何克服这些困难。

A. 重定位

一个鲁棒的SLAM系统需要在跟踪失败时重定位相机的能力。ORB-SLAM通过设置基于ePnP算法[73]的Perspective-n-Points求解器来解决重定位问题,该算法假设在所有公式中都有一个标定过的针孔相机。为了跟进我们的方法,我们需要一个PnP算法,该算法独立于使用的相机模型。因此,我们采用了Maximum Likelihood Perspective-n-Point算法(MLPnP)[74],该算法与相机模型完全解耦,因为它使用投影线作为输入。相机模型只需要提供从像素到投影线的反投影函数,就可以使用重定位。

B. Non-rectified双目SLAM

大多数双目SLAM系统假设双目帧被校正,即两个图像使用相同的焦距转换为针孔投影,图像平面共面,并与水平极线对齐,这样一个图像中的特征可以通过查看另一个图像中的同一行轻松匹配。然而,校正双目图像的假设非常有限,在许多应用中既不合适也不可行。例如,校正发散的双目对或双目鱼眼相机需要严重的图像裁剪,从而失去大视场的优势。

因此,我们的系统不依赖于图像校正,将双目装置视为两个单目相机:

  1. 它们之间具有恒定的相对SE(3)变换
  2. (可选)观察场景相同部分的公共图像区域。

这些约束允许我们在三角化新地标和BA优化时通过引入这些信息来有效地估计地图的尺度。根据这一想法,我们的SLAM工作流估计6自由度刚体位姿,其参考坐标系可以位于其中一个相机或IMU传感器中,并表示相机相对于刚体位姿的位置。

如果双目观测的两台相机有一个重叠区域,我们可以在第一次看到真实尺度的地标时对其进行三角测化。这两幅图像的其余部分仍然有很多相关信息,在SLAM工作流中用作单目信息。在这些区域中首次看到的特征像单目情况下一样从多个视图进行三角化。

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] \in SE(3)Ti​=[Ri​,pi​]∈SE(3)和速度viv_ivi​,以及陀螺仪和加速计的零偏bigb_i^gbig​和biab_i^abia​,我们假设零偏按照布朗运动演化。这将导致状态向量表示为:

Si={Ti,vi,big,bia}(1)S_i=\{T_i,v_i,b_i^g,b_i^a\} \tag{1}Si​={Ti​,vi​,big​,bia​}(1)
对于视觉惯性SLAM,我们按照[60]中提出的理论,在连续的视觉帧iii和i+1i+1i+1之间预积分IMU测量值,并在[61]中的流形上进行公式化。我们获得了预积分的旋转、速度和位置测量值,表示为ΔRi,i+1\Delta R_{i,i+1}ΔRi,i+1​,Δvi,i+1\Delta v_{i,i+1}Δvi,i+1​和Δpi,i+1\Delta p_{i,i+1}Δpi,i+1​,以及整个测量向量的协方差矩阵ΣIi,i+1\Sigma_{\mathcal{I}_{i,i+1}}ΣIi,i+1​​。给定这些预积分项和状态SiS_iSi​和Si+1S_{i+1}Si+1​,我们采用[61]中惯性残差rIi,i+1r_{\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)r_{\mathcal{I}_{i,i+1}}=[r_{\Delta R_{i,i+1}},r_{\Delta v_{i,i+1}},r_{\Delta p_{i,i+1}}] \\ r_{\Delta R_{i,i+1}}=Log(\Delta R_{i,i+1}^T R_i^T R_{i+1}) \\ r_{\Delta v_{i,i+1}}=R_i^T(v_{i+1}-v_i-g\Delta t_{i,i+1})-\Delta v_{i,i+1}\\ r_{\Delta p_{i,i+1}}=R_i^T(p_j-p_i-v_i\Delta t_{i,i+1}-\frac{1}{2}g\Delta t^2)-\Delta p_{i,i+1} \tag{2}rIi,i+1​​=[rΔRi,i+1​​,rΔvi,i+1​​,rΔpi,i+1​​]rΔRi,i+1​​=Log(ΔRi,i+1T​RiT​Ri+1​)rΔvi,i+1​​=RiT​(vi+1​−vi​−gΔti,i+1​)−Δvi,i+1​rΔpi,i+1​​=RiT​(pj​−pi​−vi​Δti,i+1​−21​gΔt2)−Δpi,i+1​(2)

其中Log:SO(3)→R3Log:SO(3)\to \mathbb{R}^3Log:SO(3)→R3是从李群到向量空间的映射。与惯性残差一起,我们还使用帧iii和位置xjx_jxj​处3D点jjj之间的重投影误差xjx_jxj​:

rij=uij−Π(TCBTi−1⊕xj)(3)r_{ij}=u_{ij}-\Pi(T_{CB}T_i^{-1} \oplus x_j) \tag{3}rij​=uij​−Π(TCB​Ti−1​⊕xj​)(3)

式中Π:R3→Rn\Pi:\mathbb{R}^3\to \mathbb{R}^nΠ:R3→Rn是对应相机模型的投影函数,uiju_{ij}uij​是图像iii处点jjj的观测值,具有协方差矩阵Σij\Sigma_{ij}Σij​,TCB∈SE(3)T_{CB}\in SE(3)TCB​∈SE(3)表示从车身IMU到相机(左或右)的刚体变换,通过标定可以知道,以及⊕\oplus⊕是R3\mathbb{R}^3R3元素上SE(3)SE(3)SE(3)群的变换运算。

结合惯性项和视觉残差项,视觉-惯性SLAM可以被认为是基于关键帧的最小化问题[39]。给定一组k+1k+1k+1个关键帧及其状态Sˉk={S0,...,Sk}\bar{S}_k=\{S_0,...,S_k\}Sˉk​={S0​,...,Sk​},以及一组lll个3D点及其状态χ={x0,...,xl−1}\chi=\{x_0,...,x_{l-1}\}χ={x0​,...,xl−1​} ,视觉-惯性优化问题可以表述为:

min⁡Sˉk,χ(∑i=1k∣∣rIi−1,i∣∣ΣIi,i+1−12+∑j=0l−1∑i∈KjρHub(∣∣rij∣∣Σij−12))(4)\min_{\bar{S}_k,\chi}(\sum_{i=1}^k||r_{\mathcal{I}_{i-1,i}}||^2_{\Sigma_{\mathcal{I}_{i,i+1}}^{-1}} + \sum_{j=0}^{l-1}\sum_{i \in \mathcal{K}^j}\rho_{Hub}(||r_{ij}||^2_{\Sigma_{ij}^{-1}})) \tag{4}Sˉk​,χmin​(i=1∑k​∣∣rIi−1,i​​∣∣ΣIi,i+1​−1​2​+j=0∑l−1​i∈Kj∑​ρHub​(∣∣rij​∣∣Σij−1​2​))(4)

其中Kj\mathcal{K}^jKj是观测到3D点jjj的关键帧集合。该优化可概括为图2a所示的因子图。

请注意,对于重投影误差,我们使用鲁棒的Huber核ρHub\rho_{Hub}ρHub​来减少虚假匹配的影响,而对于惯性残差,则不需要它,因为不存在虚假关联。这种优化需要在跟踪和建图期间进行调整以提高效率,但更重要的是,它需要良好的初始解来收敛到精确解。

B. IMU初始化

该步骤的目标是获得惯性变量的良好初始值:机体速度、重力方向和IMU零偏。一些系统,如VI-DSO[46]试图从头开始解决视觉-惯性BA,避开特定的初始化过程,获得惯性参数的缓慢收敛(长达30秒)。

在这项工作中,我们提出了一种基于三个关键思想的快速准确的初始化方法:

  • 纯单目SLAM可以提供非常精确的初始地图[2],其主要问题是尺度未知。首先解决仅视觉问题将增强IMU初始化的效果。
  • 如[56]所示,当尺度显式表示为优化变量而不是在BA中隐式表示时,它的收敛速度要快得多。
  • 在IMU初始化过程中忽略传感器的不确定性会产生大量不可预测的错误[64]。

因此,在适当考虑传感器不确定性的情况下,我们将IMU初始化描述为最大后验估计问题,分为三个步骤:

  1. 纯视觉MAP估计:我们初始化纯单目SLAM[2],并在2秒内运行,以4Hz的速率插入关键帧。在这段时间之后,我们有了一个由k=10k=10k=10个相机位姿和数百个点组成的具有一定规模的地图,该地图使用纯视觉BA进行了优化(图2b)。这些位姿被转换到机体参考系中,获得轨迹̄了Tˉ0:k=[R,pˉ]0:k\bar{T}_{0:k}=[R,\bar{p}]_{0:k}Tˉ0:k​=[R,pˉ​]0:k​,其中−-−表示单目情况下的尺度不确定的变量。

  2. 纯惯性MAP估计:在这一步中,我们的目标是在MAP估计的意义上,仅使用̄Tˉ0:k\bar{T}_{0:k}Tˉ0:k​和这些关键帧之间的惯性测量来获得惯性变量的最佳估计。这些惯性变量可叠加在纯惯性状态向量中:

    Yk={s,Rwg,b,vˉ0:k}(5)\mathcal{Y}_k = \{s,R_{wg},b,\bar{v}_{0:k}\} \tag{5}Yk​={s,Rwg​,b,vˉ0:k​}(5)

    在哪里s∈R+s\in \mathbb{R}^{+}s∈R+是纯视觉解决方案的比例因子;Rwg∈SO(3)R_{wg}\in SO(3)Rwg​∈SO(3)是一个旋转矩阵,用于计算世界坐标系中的重力矢量ggg,g=RwggIg=R_{wg}g_Ig=Rwg​gI​,其中gI=(0,0,G)Tg_I=(0,0,G)^TgI​=(0,0,G)T,GGG是重力向量幅值;b=(ba,bg)∈R6b=(b^a,b^g)\in \mathbb{R}^6b=(ba,bg)∈R6是加速度计和陀螺仪零偏,在初始化期间被假设为常数;vˉ0:k\bar{v}_{0:k}vˉ0:k​是从第一个关键帧到最后一个关键帧的尺度不确定的机体速度,最初从̄Tˉ0:k\bar{T}_{0:k}Tˉ0:k​估计。在这一点上,我们只考虑惯性测量集合I0:k={I0,1,...,Ik−1,k}\mathcal{I}_{0:k}=\{\mathcal{I}_{0,1},...,\mathcal{I}_{k-1,k}\}I0:k​={I0,1​,...,Ik−1,k​}。因此,我们可以提出一个MAP估计问题,其中待最大化的后验分布为:

    p(Yk∣I0:k)∝p(I0:k∣Yk)p(Yk)(6)p(\mathcal{Y}_k|\mathcal{I}_{0:k})\propto p(\mathcal{I}_{0:k}|\mathcal{Y}_k)p(\mathcal{Y}_k)\tag{6}p(Yk​∣I0:k​)∝p(I0:k​∣Yk​)p(Yk​)(6)

    其中p(I0:k∣Yk)p(\mathcal{I}_{0:k}|\mathcal{Y}_k)p(I0:k​∣Yk​)表示似然,p(Yk)p(\mathcal{Y}_k)p(Yk​)表示先验。考虑到测量的独立性,纯惯性MAP估计问题可以写成:

    Yk∗=arg max⁡Yk(p(Yk)∏i=1kp(Ii−1,i∣s,Rwg,b,vˉi−1,vˉi))(7)\mathcal{Y}_k^{*}=\argmax_{\mathcal{Y}_k}(p(\mathcal{Y}_k)\prod_{i=1}^{k}p(\mathcal{I}_{i-1,i}|s,R_{wg},b,\bar{v}_{i-1},\bar{v}_i)) \tag{7}Yk∗​=Yk​argmax​(p(Yk​)i=1∏k​p(Ii−1,i​∣s,Rwg​,b,vˉi−1​,vˉi​))(7)

    取负对数并假设IMU预积分和先验分布的高斯误差,最终优化问题表示为:

    Yk∗=arg min⁡Yk(∣∣b∣∣Σb−12+∑i=1k∣∣rIi−1,i∣∣ΣIi−1,i−12)(8)\mathcal{Y}_k^{*}=\argmin_{\mathcal{Y}_k}(||b||^2_{\Sigma_b^{-1}}+\sum_{i=1}^{k}||r_{\mathcal{I}_{i-1,i}}||^2_{\Sigma^{-1}_{\mathcal{}I_{i-1,i}}}) \tag{8}Yk∗​=Yk​argmin​(∣∣b∣∣Σb−1​2​+i=1∑k​∣∣rIi−1,i​​∣∣ΣIi−1,i​−1​2​)(8)

    图2c所示的这种优化与方程4的不同之处在于不包括视觉残差,因为视觉SLAM估计的尺度不确定的轨迹被视为常数,并添加一个验证残差,迫使IMU零偏接近于零。协方差矩阵Σb\Sigma_bΣb​表示关于IMU零偏可能取值范围的先验知识。IMU协方差矩阵ΣIi−1,i\Sigma_{\mathcal{I}_{i-1,i}}ΣIi−1,i​​的预积分细节可以在[61]中找到。

    当我们在流形中进行优化时,我们需要定义一个retraction[61],以便在优化过程中更新RwgR_{wg}Rwg​。由于围绕重力方向旋转不会使重力发生变化,因此此更新使用两个角度(δαg,δβg)(\delta_{\alpha_g},\delta \beta_g)(δαg​​,δβg​)进行参数化:

    Rwgnew=RwgoldExp(δαg,δβg,0)(9)R_{wg}^{new}=R_{wg}^{old}Exp(\delta_{\alpha_g},\delta_{\beta_g},0)\tag{9}Rwgnew​=Rwgold​Exp(δαg​​,δβg​​,0)(9)

    Exp(⋅)Exp(\cdot)Exp(⋅)为从R3\mathbb{R}^3R3到SO(3)SO(3)SO(3)的指数映射。为保证优化期间尺度因子保持正值,我们将其更新定义为:

    snew=soldexp(δs)(10)s^{new}=s^{old}exp(\delta s) \tag{10}snew=soldexp(δs)(10)

    完成纯惯性优化后,将使用估计的尺度因子缩放帧位姿和速度以及3D地图点,并旋转以使z轴与估计的重力方向对齐。更新偏差并重复IMU预积分,以减少未来的线性化误差。

  3. 视觉惯性MAP估计:一旦我们对惯性和视觉参数有了良好的估计,我们就可以执行联合视觉-惯性优化,以进一步精细化解。该优化可表示为图2a,但所有关键帧都有共同的零偏,并且包括与纯惯性步骤中相同的零偏的先验信息。

我们在EuRoC数据集[6]上进行的详尽初始化实验表明,该初始化非常有效,在2秒的轨迹上实现了5%的尺度误差。为了改进初始估计,在初始化后5秒和15秒执行视觉-惯性BA,收敛到1%的尺度误差,如第VII节所示。在这些BA之后,我们说地图已经成熟,这意味着尺度、IMU参数和重力方向已经得到了准确的估计。

我们的初始化方法比求解一组代数方程[62]–[64]的联合初始化方法要精确得多,并且比ORB-SLAM-VI[4]中使用的初始化方法要快得多,ORB-SLAMVI[4]中使用的初始化方法需要15秒才能获得第一次尺度估计,或VI-DSO中使用的初始化方法[46],它从一个巨大的尺度误差开始,需要20-30秒才能收敛到1%的误差。不同初始化方法之间的比较见[6]。

在某些特定情况下,当慢运动不能提供惯性参数的良好可观测性时,初始化可能无法在15秒内收敛到精确解。为了获得对这种情况的鲁棒性,我们提出了一种新的尺度精细化技术,基于改进的纯惯性优化,其中包括所有插入的关键帧,但尺度和重力方向是唯一要估计的参数(图2d)。请注意,在这种情况下,常数零偏的假设是不正确的。相反,我们使用从建图中估计的值,并固定它们。此优化在计算上非常高效,每10秒在局部建图线程中执行一次,直到地图具有100多个关键帧,或者自初始化以来已超过75秒。

最后,我们很容易地将单目-惯性初始化扩展到双目-惯性,方法是将尺度因子固定为1,并将其从纯惯性优化变量中取出,从而增强其收敛性。

C. 跟踪和建图

对于跟踪和建图,我们采用了[4]中提出的方案。跟踪解决了一个简化的视觉-惯性优化问题,其中仅优化最后两帧的状态,而地图点保持不变。

对于建图,尝试从方程4中求解整个优化问题对于大型建图来说是困难的。我们使用关键帧及其点的滑动窗口作为待优化变量,还包括来自共视关键帧的对这些点的观测,但保持这些关键帧位姿固定。

D. 跟踪丢失的鲁棒性

在纯视觉SLAM或VO系统中,临时的相机遮挡和快速运动会导致丢失对视觉元素的跟踪,导致系统丢失。ORB-SLAM率先使用了基于词袋位置识别的快速重定位技术,但事实证明它们不足以解决EuRoC数据集中的困难序列[3]。我们的视觉-惯性系统在跟踪到少于15个地图中的点时进入视觉丢失状态,并在两个阶段实现鲁棒性:

  • 短期丢失:根据IMU读数估计当前机体状态,并以估计的相机位姿投影地图点,并在大的图像窗口中搜索匹配关系。匹配结果包含在视觉-惯性优化中。在大多数情况下,这允许恢复视觉跟踪。否则,5秒后,我们进入下一阶段。
  • 长期丢失:如上所述初始化一个新的视觉惯性地图,它将成为活动地图。

如果系统在IMU初始化后15秒内丢失,则地图将被丢弃。这样可以防止累积不准确和无意义的地图。

VI. 地图融合和闭环矫正

跟踪和建图线程通过将地图点投影到被估计的相机位姿态并在仅有几个像素的图像窗口中搜索匹配,常规地寻找帧和活动地图之间的短期和中期数据关联。为了实现重定位和闭环检测的长期数据关联,ORB-SLAM使用DBoW2词袋位置识别系统[9],[75]。这种方法也被最新的实现了闭环矫正的VO和SLAM系统采用(表一)。

与跟踪不同,位置识别并不是从相机位姿的初始猜测开始的。相反,DBoW2使用关键帧的词袋向量构建了一个关键帧数据库,并且给定一个待查询图像能够根据它的词带向量有效地提供最相似的关键帧。仅使用第一个候选关键帧,原始DBoW2查询就可以实现50-80%的精度和召回率[9]。为了避免假阳性损坏地图,DBoW2实施了时间和几何一致性检查,将工作点移动到100%精度和30-40%召回率[9],[75]。关键的是,时间一致性检查至少在3个关键帧期间延迟了位置识别。当我们尝试在Atlas系统中使用它时,我们发现这种延迟和低召回率导致在相同或不同的地图中经常出现重复区域。

在这项工作中,我们提出了一种新的具有改进的召回率的位置识别算法,用于长期和多地图数据关联。每当建图线程创建新的关键帧时,就会启动位置识别,尝试检测与Atlas中已存在的任何关键帧的匹配。如果找到的匹配关键帧属于活动地图,则执行闭环矫正。否则,它是一个多地图数据关联,然后将活动地图和匹配到的地图进行合并。作为我们方法中的第二个新颖之处,一旦估计了新关键帧和匹配的地图之间的相对位姿,我们定义了一个局部窗口,其中包含匹配关键帧及其在共视图中的邻域。在这个窗口中,我们集中搜索中期数据关联,提高闭环矫正和地图合并的准确性。这两个新特性解释了在EuRoC实验中,ORB-SLAM3比ORB-SLAM2获得更好的精度。下面将解释不同操作的细节。

A. 位置识别

为了获得更高的召回率,对于每个新的活动关键帧,我们在DBoW2数据库中查询Atlas中的几个相似关键帧。为了达到100%的精度,每个候选关键帧都要经过几个几何验证步骤。所有几何验证步骤的基本操作包括检查图像窗口内是否存在ORB关键点,其描述子与地图点的ORB描述子匹配,使用它们之间的汉明距离阈值进行判断。如果搜索窗口中有多个候选项,为了放弃不明确的匹配项,我们将检查与第二个最接近匹配的距离比[76]。我们的位置识别算法的步骤是:

  1. DBoW2候选关键帧。我们使用活动关键帧KaK_{a}Ka​查询Atlas DBoW2数据库,以检索三个最相似的关键帧,不包括KaK_{a}Ka​的共视关键帧。我们将每个匹配的位置识别候选关键帧称为KmK_{m}Km​。
  2. 局部窗口。对于每个KmK_mKm​,我们定义一个局部窗口,其中包括KmK_mKm​、其最佳共视关键帧以及所有这些关键帧观察到的地图点。DBoW2直接索引提供了KaK_aKa​中特征点和本地窗口关键帧中特征点之间的一组假定匹配。对于这些2D-2D匹配中的每一个,我们还提供了其相应地图点之间的3D-3D匹配。
  3. 三维对齐变换。我们使用RANSAC计算转换TamT_{am}Tam​,使KmK_mKm​局部窗口中的地图点与KaK_aKa​的地图点更好地对齐。在纯单目条件下,或在单目-惯性条件下,当地图尚未成熟时,我们计算Tam∈Sim(3)T_{am}\in Sim(3)Tam​∈Sim(3),否则计算Tam∈SE(3)T_{am}\in SE(3)Tam​∈SE(3)。在这两种情况下,我们都使用Horn算法[77],使用三个3D-3D匹配的最小集合来找到TamT_{am}Tam​的每个假设。在通过TamT_{am}Tam​转换KaK_aKa​中的地图点后,KaK_aKa​中的重投影误差低于阈值,则对假设投赞成票。如果票数超过阈值,则选择票数更多的假设。
  4. 引导匹配精细化。使用TamT_{am}Tam​变换局部窗口中的所有地图点,以查找与KaK_aKa​中特征点的更多匹配。搜索也会反向进行,在局部窗口的所有关键帧中查找KaK_aKa​地图点的匹配项。利用找到的所有匹配,通过非线性优化对TamT_{am}Tam​进行细化,其中目标函数为双向重投影误差,使用Huber影响函数提供对错误匹配的鲁棒性。如果优化后的内点数量超过阈值,则使用较小的图像搜索窗口启动引导匹配和非线性优化的第二次迭代。
  5. 在三个共视关键帧中进行验证。为了避免假阳性,DBoW2在三个连续的关键帧中等待位置识别触发,延迟或丢失位置识别。我们的关键见解是,大多数时候,验证所需的信息已经在地图上。为了验证位置识别,我们在地图的活动部分搜索两个与KaK_aKa​共视的关键帧,它们与局部窗口中的点匹配的数量超过阈值。如果未找到这些关键帧,则将使用新传入的关键帧进一步尝试验证,而无需再次触发词袋向量匹配。验证将继续,直到三个关键帧验证了TamT_{am}Tam​,或者两个连续的新关键帧无法验证TamT_{am}Tam​。
  6. 六重力方向验证。在视觉-惯性的情况下,如果活动地图是成熟的,我们估计了Tam∈SE(3)T_{am}\in SE(3)Tam​∈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​和KmK_mKm​的相邻关键帧定义的welding窗口中执行合并,在第二阶段,通过位姿图优化将校正关系传播到合并后地图的其余部分。合并算法的详细步骤如下:

  1. Welding窗口装配。Welding窗口包括KaK_aKa​及其共视关键帧、KmK_mKm​及其共视关键帧以及它们观察到的所有地图点。在将其包含在Welding窗口中之前,TmaT_{ma}Tma​将变换属于MaM_aMa​的关键帧和地图点,以使其与MmM_mMm​对齐。
  2. 合并地图。地图MaM_aMa​和MmM_mMm​被融合到一起,成为新的活动地图。为了删除重复点,将在MmM_mMm​关键帧中主动搜索匹配项以查找MaM_aMa​中的点。对于每个匹配,从MaM_aMa​中删除点,MmM_mMm​中的点不断累积删除点的所有观测值。由于发现了新的中期点关联,通过添加连接MmM_mMm​和MaM_aMa​关键帧的边来更新共视图和本质图[2]。
  3. Welding BA。局部BA用于优化Welding窗口中MaM_aMa​和MmM_mMm​的所有关键帧以及它们观察到的地图点(图3a)。为了固定量测自由度,BA中包含不属于Welding窗口但观察到任何局部地图点的MmM_mMm​中的关键帧,其位姿被固定。优化完成后,Welding区域中包含的所有关键帧都可以用于相机跟踪,从而实现快速准确地重用地图MmM_mMm​。
  4. 本质图优化。使用整个合并后地图的本质图执行位姿图优化,保持Welding区域中的关键帧固定。此优化将校正从Welding窗口传播到地图的其余部分。

C. 视觉-惯性地图融合

视觉-惯性合并算法遵循与纯视觉情况类似的步骤。修改步骤1)和3)以更好地利用惯性信息:

  1. VI Welding窗口装配:如果活动地图成熟,我们将在将地图MaM_aMa​包含在Welding窗口之前对其应用可用的Tma∈SE(3)T_{ma} \in SE(3)Tma​∈SE(3)。如果活动地图尚未成熟,我们使用可用的Tma∈Sim(3)T_{ma} \in Sim(3)Tma​∈Sim(3)对齐MaM_aMa​。
  2. VI Welding BA:关键帧KaK_aKa​和KmK_mKm​的位姿、速度和零偏以及它们最后五个时间关键帧都是待优化。这些变量由IMU预积分项关联,如图3b所示。对于MmM_mMm​,包含临近局部窗口之前的关键帧,但该关键帧是被固定的,而对于MmM_mMm​,包含类似的关键帧,但其位姿是被优化的。上述关键帧看到的所有地图点以及KmK_mKm​和KaK_aKa​共视关键帧的位姿都进行了优化。所有关键帧和点都通过重投影误差进行关联。

D. 闭环矫正

闭环矫正校正算法类似于地图合并,但在位置识别匹配的两个关键帧都属于活动地图的情况下进行。从匹配的关键帧组装Welding窗口,检测并融合重复点,在共视图和本质图中创建新链接。下一步是位姿图优化,将闭环校正传播到地图的其余部分。最后一步是全局BA,在考虑闭环中期和长期匹配后,寻找MAP估计。在视觉-惯性情况下,全局BA仅在关键帧数低于阈值的情况下执行,以避免巨大的计算开销。

VII. 实验结果

整个系统的评估分为:

  • EuRoC中的单任务实验[79]:对11个序列中的每一个序列使用四种传感器配置(单目、单目-惯性、双目和双目-惯性)进行处理,并生成一张地图。
  • 在具有挑战性的TUM VI基准测试[80]中,使用鱼眼相机的单目和双目视觉-惯性SLAM的性能。
  • 两个数据集中的多任务实验。

与领域中通常使用的一样,我们使用RMS 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∣。所有的实验都是在Intel Core i7-7700 CPU上运行的,频率为3.6GHz,32 GB内存,仅使用CPU。

A. EuRoC数据集上的单任务SLAM

表II比较了ORB-SLAM3使用四种传感器配置与最先进的相关系统的性能。

我们提供的数值是10次执行后的中值。如表所示,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才能达到,因为它是一个本地双目-惯性系统,无法完成序列V203,其中一个相机的一些帧丢失。与我们的单目-惯性系统和双目-惯性系统相比,后者在大多数情况下性能更好。只有两个Machine Hall(MH)序列的精度较低。我们假设MH序列的景深越深,双目三角化的精度可能会越低,因此尺度的精度也会越低。

为了总结性能,我们给出了每个传感器配置的十次执行的中位数。对于一个鲁棒的系统,中值准确地表示系统的行为。但是,非鲁棒的系统的结果会显示出很大的方差。这可以使用图4进行分析,图4用颜色显示了在十次执行中每次获得的误差。

与[46]中公布的DSO、ROVIO和VI-DSO的结果进行比较,证实了我们方法的优越性。

在纯视觉配置中,多地图系统通过在跟踪丢失时创建新地图(稍后与全局地图合并),为快速运动的情况下增加了一些鲁棒性。这可以在序列V103单目和V203双目中看到,ORB-SLAM2无法解决这一问题,我们的系统在大多数执行中都成功地解决了这一问题。正如预期的那样,由于其更快的特征初始化,双目比单目更鲁棒,并且具有估计真实尺度的额外优势。

然而,我们的新型视觉-惯性SLAM系统在单目和双目配置下都实现了鲁棒性的飞跃。双目-惯性系统与单目-惯性系统相比具有非常微小的优势,尤其是在最具挑战性的V203序列中。

我们可以得出这样的结论:与纯视觉解决方案相比,惯性积分不仅提高了精度,降低了平均ATE误差,而且还赋予了系统极好的鲁棒性,具有更稳定的性能。

B. TUM-VI基准上的视觉-惯性SLAM

TUM-VI数据集[80]由6种不同环境中的28个序列组成,使用手持式鱼眼双目-惯性装置记录。轨迹的地面真值仅在序列的开始和结尾可用,对于大多数序列来说,这代表了整个轨迹的一小部分。数据集中的许多序列不包含闭环。即使起点和终点在同一房间内,视角方向也是相反的,位置识别也无法检测到任何公共区域。使用该地面真实值进行评估相当于测量沿整个轨迹的累积漂移。

在应用CLAHE均衡来解决数据集中发现的曝光不足和曝光过度问题后,我们在单目-惯性设置中提取了1500个ORB点,在双目-惯性设置中提取了1000个ORB点。对于户外序列,我们的系统与来自多云天空的非常远的点进行斗争,这在鱼眼相机中非常明显。这些点可能具有缓慢的运动,这可能会在相机位姿中引入漂移。为了防止出现这种情况,对于户外序列我们将丢弃距离当前相机位姿20米以外的点。一个更复杂的解决方案是使用图像分割算法来检测和丢弃天空。

所得结果与表III中文献中最相关的系统进行了比较,这清楚地显示了ORB-SLAM3在单目-惯性和双目-惯性方面的优势。

最接近的系统是VINS-Mono和BASALT,它们本质上是带闭环矫正的视觉-惯性里程计系统,并且缺少中期数据关联。

更详细地分析了我们的系统的性能,它在中小型室内环境、房间和走廊序列中获得了最低的误差,大多数误差小于10cm。在这些轨迹中,系统不断地重新访问和重用先前已建图的区域,这是ORB-SLAM3的主要优势之一。此外,被跟踪的点通常距离小于5m,这使得惯性参数更容易估计,从而防止它们发散。

在长达900米的magistrale室内序列中,大多数跟踪点相对较近,ORB-SLAM3获得的误差约为1米,只有一个序列接近5米。相反,在一些较长的户外序列中,缺少近距离视觉特征可能会导致惯性参数漂移,尤其是尺度和加速计零偏,从而导致10到70米的误差。尽管如此,ORB-SLAM3是室外序列中性能最好的系统。

该数据集还包含三个非常具有挑战性的sides序列,其中用户通过一个几乎完全没有视觉特征的黑色管状side下降。在这种情况下,一个纯视觉系统将丢失,但我们的视觉-惯性系统能够处理整个序列并具有相比起来较低的误差,即使无法检测到闭环。有趣的是,使用Lukas Kanade追踪特征的VINS-Mono和BASALT在某些序列中获得了比使用ORB描述子的ORB-SLAM3更好的准确性。

最后,房间序列可以代表典型的AR/VR应用,其中用户在小型环境中使用手持或头戴设备移动。对于这些序列,整个轨迹都有地面真值。表三显示,ORB-SLAM3比其他方法准确得多。使用我们的四个传感器配置获得的结果在表IV中进行了比较。

与双目相比,纯单目视觉的精度更高,这一点很明显:单目视觉解决方案的尺度不确定,并以7个自由度与地面真值对齐,而双目视觉提供了真实尺度,并以6个自由度对齐。通过使用单目-惯性,我们进一步将平均RMS ATE误差减小到接近1cm,也获得了真实的尺度。最后,我们的双目-惯性SLAM导致的误差低于1cm,使其成为AR/VR应用的最佳选择。

C. 多任务 SLAM

EuRoC数据集包含三种环境中每种环境的几个任务:5个在Machine Hall,3个在Vicon1,3个在Vicon2。为了测试ORB-SLAM3的多任务性能,我们按顺序处理每个环境对应的所有任务。同一环境中的每条轨迹都具有具有相同世界参考的地面真值,这允许执行单个全局对齐以计算ATE。

每个房间中的第一个序列提供了一个初始地图。处理之后的序列首先创建一个新的活动地图,该地图将与以前任务的地图快速合并,从那时起,ORB-SLAM3将从重用以前的地图中获益。

表V报告了三个房间中四个传感器配置的全局多任务RMS ATE,与EuRoC数据集中仅公布的两个多任务结果进行了比较:CCM-SLAM[71]报告了MH01-MH03中的纯单目结果,VINS-Mono[7]报告了五个Machine Hall序列中的单目-惯性结果。在这两种情况下,ORBSLAM3获得了比竞争方法一倍以上的准确度。在VINS-Mono的情况下,ORB-SLAM3在单次任务中获得了2.6倍的精度,在多任务中的优势提高了3.2倍,显示了我们的地图合并操作的优势。

将这些多任务性能与表II中报告的单任务结果进行比较,最显著的区别在于,由于利用了先前的地图,任务单目和双目SLAM可以鲁棒地处理困难序列V103和V203。

我们还在TUM-VI数据集上进行了一些多任务实验。图5显示了在TUM building中处理多个序列后的结果。

在本例中,小房间序列提供了较长序列中缺少的闭环,将所有误差都降低到厘米级。尽管在房间外无法获得地面真值,但将该数字与[82]中公布的数字进行比较清楚地表明了我们的观点:我们的多任务SLAM系统获得了比现有的视觉-惯性里程计系统更好的精度。图6进一步举例说明了这一点。

尽管ORB-SLAM3在outdoors1的双目-惯性单任务处理中排名较高,但仍然存在显著的漂移(≈ 60米)。相比之下,如果在magistrale2之后以多任务方式处理outdoors1,则此漂移会显著减少,最终的地图会更加精确。

D. 计算时间


表VI总结了跟踪和建图线程中执行的主要操作的运行时间,表明我们的系统能够以每秒30-40帧和3-6个关键帧没秒的速度实时运行。惯性部分在跟踪过程中花费的时间可以忽略不计,事实上,由于可以安全地降低帧速率,因此可以提高系统的效率。在建图线程中,每个关键帧的变量数越高,惯性局部BA中的关键帧数就越少,从而在运行时间相似的情况下实现了更好的精度。由于跟踪和建图线程始终在活动地图中工作,因此多重建图不会引入显著的开销。

表VII总结了闭环矫正和地图合并的主要步骤的运行时间。新的位置识别方法每个关键帧只需要10ms。仅运行位姿图优化的情况下地图合并和闭环矫正的时间保持在1秒以下。对于闭环矫正,根据相关地图的大小,执行全束BA可能会增加最多几秒钟的时间。在任何情况下,由于两个操作都在单独的线程中执行(图1),因此它们不会干扰系统其余部分的实时性能。视觉-惯性系统仅执行两次地图合并以连接三个序列,而视觉系统执行一些附加合并以从跟踪丢失中恢复。由于其较低的漂移,与纯视觉系统相比,视觉-惯性系统也执行较少的闭环矫正操作。

虽然这会很有趣,但我们不会将运行时间与其他系统进行比较,因为这将需要大量的工作,超出了本工作的范围。

VIII. 结论

在[2]–[4]的基础上,我们提出了ORB-SLAM3,这是针对视觉、视觉-惯性和多任务SLAM的最完整的开源库,可以使用单目、双目、RGB-D、针孔和鱼眼相机。我们的主要贡献除了集成库本身,还有快速准确的IMU初始化技术和多任务地图合并功能,它们依赖于一种新的具有改进召回率的位置识别技术。

我们的实验结果表明,ORB-SLAM3是第一个能够有效利用短期、中期、长期和多地图数据关联的视觉和视觉-惯性系统,达到了其他现有系统无法达到的精度水平。我们的结果还表明,关于准确性,使用所有这些类型的数据关联的能力胜过其他选择,例如使用直接法而不是基于特征的方法,或者对局部BA执行关键帧边缘化,而不是像我们这样假设一个外部静态关键帧集合。

ORB-SLAM3的主要失效情况是低纹理环境。直接方法对低纹理更为鲁棒,但仅限于短期[27]和中期[31]数据关联。另一方面,匹配特征描述子成功地解决了长期和多地图数据关联问题,但与使用光度信息的Lucas Kanade相比,其跟踪鲁棒性似乎较差。一个有趣的研究方向可能是开发适合四个数据关联问题的光度技术。我们目前正在探索从人体内内窥镜图像构建地图的想法。

关于四种不同的传感器配置,毫无疑问,双目-惯性SLAM提供了最鲁棒和准确的解决方案。此外,惯性传感器允许以IMU速率估计位姿,IMU速率比帧速率高几个数量级,这是某些应用场景的关键特性。对于因体积、成本或处理要求较高而不需要双目相机的应用,您可以使用单目-惯性相机,而不会在鲁棒性和准确性方面损失太多。请记住,探索期间的纯旋转不允许估计深度。

在缓慢运动或没有侧倾和俯仰旋转的应用中,例如在平坦区域的汽车,IMU传感器可能难以初始化。在这些情况下,如果可能的话,使用双目SLAM。除此之外,利用CNN从单个图像进行深度估计的最新进展为可靠和尺度真实的单目SLAM提供了良好的前景[83],至少在训练CNN的同一类型环境中是如此。

ORBSLAM3论文翻译相关推荐

  1. 【ORB-SLAM3论文翻译】ORB-SLAM3:一个精确的视觉、视觉惯性和多地图SLAM的开源库(注:带着原文看,很多公式和变量不好输入)

    文章目录 前言(非论文部分) 摘要 1. 简介 2. 相关工作 3. 系统概述 4. 相机模型 5. 视觉惯性SLAM(重点) 6. 地图合并与闭环 7. 实验结果 8. 结论 REFERENCES( ...

  2. 比较全面的ORB-SLAM3论文翻译(基本全文不带相关研究与精度验证部分)

    看了网上一些解读论文的都是不是很全面啊,呃呃呃...不会整一些段子跟斗图可能有些枯燥,废话不多说直接开整吧!整个论文重点放在了地图融合跟优化上面可以一边看原论文一边看这个,里面参杂了一些个人理解,哪里 ...

  3. DM-VIO论文翻译

    简介 DM-VIO: Delayed Marginalization Visual-Inertial Odometry DM-VIO: 延迟边缘化惯性视觉里程计 花了两天时间捏着鼻子把这篇论文翻译完了 ...

  4. ORB-SLAM3 论文笔记

    ORB-SLAM3 论文笔记 这篇博客 ORB-SLAM3系统 相机模型的抽象(Camera Model) 重定位的问题 图片矫正的问题 视觉惯性SLAM的工作原理 相关公式 IMU初始化 跟踪和建图 ...

  5. Spatial As Deep: Spatial CNN for Traffic Scene Understanding论文翻译

    Spatial As Deep: Spatial CNN for Traffic Scene Understanding论文翻译 Abstract摘要 Convolutional neural net ...

  6. 论文翻译_论文翻译的注意事项有什么?

    针对不同题材的文稿有不同的翻译标准,论文翻译是比较严谨的一种翻译类型,下面小编给大家分享论文翻译的注意事项有什么? 注意"从一而终" 所有的论文,在权威平台上发布的时候都必须译为英 ...

  7. 转:经典论文翻译导读之《Google File System》

    首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 Java小组 工具资源 - 导航条 -首页所有文章资讯Web架构基础技术书籍教程Java小组工具资源 经典论文翻译导读之<Google ...

  8. 论文翻译_做论文翻译需要知道哪些翻译技巧?知行翻译:这3个技巧

    论文,在古代是指交谈辞章或交流思想.而现代常用来指进行各个学术领域的研究和描述学术研究成果的文章.论文不仅是探讨问题进行学术研究的一种手段,也是描述学术研究成果进行学术交流的一种工具.常见的种类包括学 ...

  9. php 谷歌翻译api_科研福音,论文翻译神器系列!

    参考文献很大程度上反映了一篇论文的水平.对于研究生来说,自己动手写论文前的第一步工作就是阅读大量高水平.前沿的文献,而这些论文大多是英文写就. 人工翻译一般比较耗时且需要扎实的语言功底,对于初学者来说 ...

最新文章

  1. 【转】[退役]纪念我的ACM——headacher@XDU
  2. 是时候对XSLT说“Goodbye”了吗?
  3. OK6410裸机开发之LED灯
  4. 谈谈8年C++面向对象设计的经验体会
  5. 线性代数二之矩阵加速DP——数学作业,Arc of Dream
  6. 磊科路由虚拟服务器设置,磊科路由器虚拟转发服务设置的方法
  7. Linux下部署Hadoop伪分布模式
  8. 多示例学习 MIL(multiple instance learning) 理解
  9. 帝都搬砖四年,我决定回老家考公务员
  10. 定向寻宝亲子活动设计思路和实操(附2019最新教程)
  11. 计算机基础进制转换(二进制、八进制、十进制、十六进制)
  12. 德保罗大学计算机科学专业,德保罗大学专业排名介绍
  13. 英文句子比较大小c语言,怎么用C语言写个程序找出两个英文句子中相同的英文单词...
  14. Java代码 打印等腰三角形、菱形和平行四边形
  15. 【Android 源码学习】SharedPreferences 源码学习
  16. 根据行数要求实现展开与隐藏TextView
  17. warpAffine函数解析
  18. 射频基础——射频同轴线缆介绍
  19. 腾讯AI Lab:AI辅助诊疗系统面临的三大技术挑战
  20. LeanStore论文分析

热门文章

  1. 游戏出海,全球化运营
  2. HTML小游戏设计(2)-扑克翻牌游戏
  3. 基于二维码的移动互联应用
  4. 2017-2018 ACM-ICPC Asia East Continent League Final J. Straight Master(差分+思维)
  5. 优达学城_数据清洗_项目三wrangle_act
  6. 智安网络丨等级保护2.0标准最全解读,三分钟读懂!
  7. pyhanlp用户自定义词典添加
  8. 理论联系实践:机械臂视觉抓取之eye to hand
  9. 美国计算机语言互动软件,美华裔研发文字语音转换软件 便利盲人操作电脑
  10. Ubuntu 17.10 “Artful Aardvark” 发布首个 Beta