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

2023-05-16

摘要

ORB-SLAM3是第一个能够让单目、立体相机和RGB-D相机与针孔和鱼眼镜头模型解耦进行视觉、视觉+惯性和多地图SLAM的系统。

第一个主要的创新是一个基于特征的紧密集成视觉+惯性SLAM系统,它完全依赖于最大后验概率(MAP)估计,甚至在IMU初始化阶段也是如此。结果表明该系统可以实时地在小场景,大场景,室内环境,室外环境等多种场景下运行,并且准确度是以前方法的2到10倍。

第二个主要的创新是一个多地图系统,它依赖于一种新的位置识别方法并提高了回环的召回率。多亏了它,ORB-SLAM3能够在长时间的不良视觉信息下生存:当它丢失时,它会启动一个新的地图,当重新访问地图区域时,它将与以前的地图无缝地合并。与只使用最后几秒信息的视觉里程计系统相比,ORB-SLAM3也是第一个能够在所有算法阶段重用所有先前信息的系统。这允许在BA优化中使用历史的共视关键帧,即使这些关键帧来自很久以前的地图或者不同子图。

我们的实验表明,在所有传感器配置情况下,ORB-SLAM3和已有文献中最好的系统一样鲁棒,并拥有更加显著的准确性。尤其是我们的双目+惯导SLAM系统在EuRoC数据集上实现了平均3.5cm的准确度,以及在室内手持运动相机的TUM-VI数据集(AR/VR领域比较有代表性的数据集)达到了9mm以下的精度,为了对社区有所帮助我们将代码进行开源。

1 简介

在VSLAM和VO研究领域,相机与惯导传感器的结合所带来的鲁棒性和精度的提升的到了近20年最卓越的结果。现代SLAM系统依赖于最大后验概率估计,在视觉传感器的情况下它对应于BA实现系统的优化,在基于特征的方法中通过最小化特征重投影误差的几何BA,在基于直接法的方法中通过最小化一组像素光学误差的光学BA。

随着最近集成闭环检测技术的VO的出现,VO和SLAM系统之间的边界更加分散。视觉SLAM的目标是使用搭载在移动智能体上的传感器建立环境地图,并且实时得计算智能体在地图中的位姿信息。相比之下,VO系统聚焦于计算智能体的自我运动而不是建图。SLAM地图的最大优势在于它允许匹配和BA先前的观测执行以下三种数据关联。

  1. 短期数据关联:匹配最近几秒内获得的地图元素.这是大多数VO系统使用的唯一数据关联类型,一旦环境元素离开视野,它们就会被遗忘,即使系统在同一区域移动,也会导致持续的估计漂移。
  2. 中期数据关联:匹配距离累计漂移依然很小的相机附近的地图元素。这些数据可以像短期观测数据的处理方式一样被匹配和用于BA,当系统在已经完成建图的区域中运动时可以达到漂移。这些是我们的系统相比与具备回环检测的VO系统实现更好的准确性的关键。
  3. 长期数据关联:使用位置识别技术将观测结果与以前访问过的区域中的元素进行匹配,而不管累积漂移(闭环检测)或跟踪是否丢失(重定位)。长期匹配允许使用位姿图优化,或更准确地说使用BA来重置漂移和校正循环。这是中大型环型环境下保证SLAM精度的关键

本文的工作建立在ORB-SLAM、ORB-SLAM2、ORB-SLAM Visual-Interial的基础上,是第一个充分利用短期,中期和长期数据关联的视觉或视觉+惯导SLAM系统,在已经创建地图的区域能够达到0漂移。这里我们将进一步提供多地图数据关联,这使得我们可以使用先前所创建的地图中的元素进行匹配和BA优化,实现SLAM系统真正的目标:创建一个在后续(定位和建图过程中)也能使用的地图来提供准确的定位。

这本质上是一篇系统性的论文,其最大的贡献是ORB-SLAM3这个库本身,这是至今最完整和最准确的支持纯视觉、视觉+惯导和多地图机制的SLAM系统。ORB-SLAM3主要的贡献如下:

(1) 提出一个支持单目和双目的视觉-惯导SLAM系统
该系统包括在IMU初始化阶段完全依赖于最大后验概率估计。这种初始化方式是作者团队在文献[6]中所提出的方法,这里作者将该初始化方法与其团队在文献[4]中提出的ORB-SLAM-VI系统进行了结合并扩展到双目-IMU系统,该方法在公开数据集上进行了评估。结果表明,我们提出的基于单目或双目+惯导的SLAM系统十分鲁棒,并且比其他VI-SLAM方案的准确性的都要高,即使在没有回环的情况下也是如此。

(2) 提高了位置识别的召回率
目前许多VI-SLAM或者VO系统(ORB-SLAM,VINS-MONO)使用DBoW2c词袋库来解决位置识别问题。DBoW2在检查几何一致性之前,需要匹配三个连续的关键帧到同一区域来保证时间的一致性,这种方法以牺牲位置识别的召回率来提高其精准度(简单来说就是对检测回环的条件设置的比较严格,所以对于所检测到的回环准确性比较高,但是会漏掉一些没有被检测到的回环),结果导致SLAM系统在进行回环校正和重用(重用的本质也是一种位置识别,只有识别到之前创建的某个子地图是当前位置,才能进行相应的匹配和使用地图的信息)之间所创建的地图时比较慢。我们提出一个新的位置识别算法,候选回环关键帧会被首先检查几何一致性,然后使用三个共视关键帧检查局部一致性,这些关键帧在大多数情况下已经存在于地图中。这种策略提高了位置识别的召回率,增强了数据关联使得建图精度得以提高,但是计算资源占用有所提高。

(3) ORB-SLAM地图集
第一个完整的基于单目和双目配置的处理纯视觉和视觉+惯导的SLAM系统。该地图集可以由一系列不相关的地图组成,并可以将他们应用于所有和地图相关的操作:位置识别,相机重定位,回环检测和精确的无缝地图合并。这使得SLAM系统可以自主使用和合并在不同时间创建的地图,执行增量式的多阶段SLAM。基于多地图的SLAM方法最初由文献[10]提出,我们增加了新的位置识别系统,视觉+惯导的多地图系统和在公开数据集上的评测。

(4) 抽象相机模型
使得SLAM系统的代码与相机模型解耦,允许添加新的相机模型提供投影、反投影和雅格比函数,我们在代码中提供了针孔相机模型和鱼眼相机模型。

所有创新点加上一些代码上的改进,使得ORB-SLAM3成为新的、可供参考的视觉和视觉+惯导开源方案,与参考文献中最好的系统一样鲁棒且更加精确,相关实验在第7节进行了展示。我们还提供了单目、双目、单目惯性和双目惯性的SLAM结果之间的比较。

2 相关工作

表1展示了比较有代表性的纯视觉和视觉+惯导的SLAM方案,以及他们在估计和数据关联方面使用的主要技术。关于表中关于准确率和鲁棒性的定性分析基于第7节中的结果和在文献[2]中对于PTAM,LSD-SLAM,ORB-SLAM的评估。
在这里插入图片描述

A 视觉SLAM

单目SLAM(问题)最初在MonoSLAM中使用扩展卡尔曼滤波(EKF)和ShiTomas点来解决,这些点在后续的图像中通过相关性来引导搜索(理解为“特征匹配”),从而进行跟踪。通过使用特征匹配技术,中期数据管理得到显著改善,实现了手持设备的视觉SLAM。

相反,基于关键帧的方法只选用少数特定的帧来估计地图,忽略来自过程帧的信息。这使得在关键帧等级下,可以进行(计算)成本更高但更精确的BA优化。(基于关键帧的方法)最具代表性的系统是PTAM,它将相机跟踪和建图拆分为两个并行的线程。基于关键帧的技术在相同的计算成本下比滤波更精确,该技术成为视觉SLAM和VO的黄金标准。在文献[56]中使用滑动窗口BA实现了大规模单目SLAM,而文献[57]中使用双窗口优化和共视图(covisibility graph)实现了大规模单目SLAM。

基于这些想法,ORB-SLAM使用ORB特征,其描述子提供短期和中期的数据关联,构建共视图来限制跟踪和建图的复杂性,并使用词包库DBoW2执行回环和重定位,实现长期数据关联。(这是)迄今为止唯一融合了三种数据关联的SLAM系统,我们认为(融合三种数据关联类型)是其出色准确性的关键。在这项工作(ORB-SLAM3系统)中,我们利用新的Atlas(多地图)系统提高了它在纯VSLAM中的鲁棒性,该系统在跟踪丢失时开始(创建)一个新的地图,以及利用改进的召回率新位置识别方法提高了它在模糊(复杂)场景中的准确性。

直接法不提取特征,而是直接使用图像中的像素强度,并通过最小化光度误差来估计运动和结构。LSD-SLAM能够利用高梯度像素构建大尺度半稠密地图。然而,地图估计降低到位姿图 (PG)优化层面,获得的精度低于PTAM和ORB-SLAM。混合系统SVO提取FAST特征,采用直接法跟踪特征和任意帧之间非零强度梯度的像素,利用重投影误差优化相机轨迹和三维结构。SVO是一种非常高效的方法,但作为一种纯粹的VO方法,它只进行短期的数据关联,限制了其准确性。直接稀疏里程法 DSO能够在点检测器性能较差(纹理特征较差,提取不到特征点)的情况下计算精确的相机姿态,增强了在低纹理区域或对模糊图像的鲁棒性。它引入了局部光度BA,同时优化了7个近期关键帧的窗口和点的逆深度。这项工作的扩展包括双目、使用特征和DBoW2词袋技术的闭环,以及视觉惯性里程计。直接稀疏建图法DSM在直接法中引入了地图复用的思想,说明了中期数据关联的重要性。在所有情况下,由于缺乏短期、中期和长期数据关联的集成,导致准确性低于我们的建议(见第7节)。

B 视觉惯性SLAM

在较差的纹理、运动模糊和闭塞(的环境)中,视觉和惯性传感器的结合(为系统)提供了鲁棒性,并且在单目系统的情况下,使尺度可观测。
紧密耦合方法的研究可以追溯到MSCKF,其中通过特征边缘化避免了EKF在特征数量上的二次代价。初始系统在文献[34]中完善,在文献[35]、[36]中扩展到双目视觉。第一个基于关键帧和光束法平差(BA)的紧密耦合视觉里程车测量系统是OKVIS,它也能够使用单目和双目视觉。虽然这些系统依赖于特征,但ROVIO使用直接数据关联提供了带有光度误差的EFK。

ORB-SLAM-VI首次提出了一种能够复用具有短期、中期和长期数据关联地图的视觉惯性SLAM系统,将其用于基于IMU预积分的精确局部视觉惯性BA中。然而,其IMU初始化技术太慢,耗时15秒,影响了(系统的)鲁棒性和准确性。文献[62],[63]中提出了更快的IMU初始化技术,基于一个封闭的解来联合检索尺度、重力、加速度计偏差和初始速度和带有深度信息的视觉特征。至关重要的是,他们忽略了IMU的噪声特性,最小化了空间点的3D误差,而不是它们的重投影误差,(重投影误差)这是基于特征的计算机视觉的黄金标准。我们以前的工作表明,这将导致巨大的不可预测的错误。
VINS-Mono是一个非常精确和鲁棒的单目惯性里程计系统,闭环使用DBoW2和4自由度姿态图优化,以及地图合并。特征跟踪使用Lucas-Kanade跟踪器,比描述子匹配略稳定一些。在VINS-Fusion中,它已扩展到双目和双目惯性系统中。

VI-DSO将DSO扩展到视觉惯性里程计,提出了一种光束平差法,将惯性观测与选定的高梯度像素的光度误差相结合,从而实现非常高的精度。随着高梯度像素信息的成功利用,提高了纹理较差的场景区域的鲁棒性。他们的初始化方法依赖于视觉惯性BA,在20-30秒内收敛在1%的尺度误差内。

最新的BASALT是一个双目惯性里程计系统,从视觉惯性里程计中提取非线性因素,将它们用于BA,并闭合匹配的ORB特征,达到非常高的精确度。Kimera是一种新颖出色的可度量语义建图系统,但它的度量部分由带DBoW2位姿图优化的双目惯性里程计加回环和位姿图优化组成,实现了与VINS-Fusion相似的精度。

在本工作中,我们建立了ORB-SLAM-VI,并将其扩展到双目惯性SLAM。我们提出了一种基于最大后验概率(MAP)估计的快速初始化方法,该方法适当地考虑了视觉和惯性传感器的不确定性,在2秒内以5%的误差估计真实尺度,在15秒内收敛到1%的尺度误差。上面讨论的所有其他系统都是视觉-惯性里程计方法,其中一些扩展了闭环功能,且需要使用中期数据关联的能力。我们相信,这一点(应该是指:使用中期数据关联类型的能力),加上快速和精确的初始化,是我们的系统始终获得更高的精度的关键,即使在没有闭环序列的情况下。

C 多地图SLAM

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

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

VINS-Mono是一个视觉里程计系统,具有闭环和多地图功能,依赖于位置识别库DBoW2。我们的实验表明,由于能够使用中期数据关联,在EuRoc数据集上的单目惯性单地图操作中,ORB-SLAM3的精度是VINS-Mono的2.6倍。我们的Atlas系统也建立在DBoW2的基础上,但提出了一种新的高召回率的位置识别技术,并使用本地BA进行更详细和准确的地图合并,在EuRoC上的多段(地图)实验中,比VINS-Mono的准确率提高了3.2倍。

3 系统概述

ORB-SLAM3建立在ORB-SLAM2和ORB-SLAM-VI的基础上。这是一个完整的多地图和多段(multi-session)SLAM系统,支持纯视觉和视觉+惯导方案,适配基于单目,双目和RGB-D相机的针孔相机模型和鱼眼相机模型。图1展示了系统的组成,和ORB-SLAM2相比有几处创新,总结如下:
在这里插入图片描述

地图集

active-map和non-activate maps说白了就是正在使用的地图和过去的跟丢了的暂时不使用的地图
地图集是由一些列不相关连的子地图组成的多地图表示。其中在active-map中,跟踪线程对输入帧进行定位,地图会随着局部建图线程持续优化和使用关键帧进行更新。其他的跟踪失败了的暂时不参与匹配和优化的子地图被成为non-activate maps。SLAM系统为关键帧创建了一个单独的DBoW2数据库用于重定位,闭环检测和地图融合。

跟踪线程

跟踪线程处理传感器信息,并通过最小化与地图上匹配特征的重投影误差来实时计算当前帧相对于active-map的位姿。跟踪线程同样决定是否将当前帧创建为关键帧。在视觉+惯导模式,通过优化惯性残差估计车体速度和IMU的偏差。当跟踪失败时,跟踪线程尝试在所有子地图中对当前帧进行重定位。如果重定位成功则跟踪得到恢复,并且根据需要会转换active-map。否则,在一定时间后active-map会被以non-active-map储存,并重新初始化一个新的active-map

按理说,ORB-SLAM2计算的位姿也是想对于地图坐标系的,只不过之前只有一个地图,在初始化的时候将第一帧所在的位置定义为世界坐标系的原点,然后现在采用多地图模式,第一句话中实时计算当前帧相对于active-map的位姿,是指在每次跟踪丢失创建新的地图时都要将初始帧重新设置成世界坐标系原点,此后基于该子地图跟踪过程求得的位姿都是基于该原点的

局部建图线程

局部建图线程为activa-map增加关键帧和地图点,并移除冗余的关键帧和地图点,同时使用视觉或视觉+惯导信息对地图进行BA优化,这个过程在包含与当前帧相邻的一系列关键帧的滑动窗口中进行。另外,IMU参数在建图现成使用我们所提出的MAP方法进行初始化和优化。

局部建图线程与ORB-SLAM2相比增加了IMU的初始化部分

回环检测和地图融合线程

回环检测和地图融合线程检测(当前关键帧)在acive-map和所有的地图集中检测是否存在同一区域。如果该统一区域属于active-map,则执行闭环校正;如果在不同的子地图中均存在同一区域,则将所有子地图融合成一个地图,并将该地图的状态设置为active-map。经过会换校正后,全局BA在不影响实时性能的前提下会在一个独立的线程对地图进一步进行优化。

4 相机模型

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

由于大多数流行的计算机视觉算法采用针孔摄像机模型,许多SLAM系统要么对整个图像进行校正,要么对特征坐标进行校正,以在理想的平面视网膜(可理解为:成像平面)上工作。然而,这种方法对于鱼眼镜头是有问题的,因为鱼眼镜头可以达到或超过180度的视场(FOV)。由于边缘物体放大,中心物体分辨率较低,影响特征匹配,不能进行图像校正。特征坐标的校正需要使用小于180°的视场,这给许多计算机视觉算法带来了麻烦,这些算法假设沿图像的均匀重投影误差,而在校正鱼眼图像中,这远远不是真实的(误差)。这迫使裁剪图像的外缘的部分,失去了大视场的优势:更快的环境建图和更好的遮挡鲁棒性。接下来,我们讨论如何克服这些困难。

A 重定位

一个健壮鲁棒的SLAM系统需要在跟踪失败时重新定位相机(位置)的能力。ORB-SLAM通过设置一个基于ePnP算法的Perspective-n-Points求解器来解决重定位问题,该算法假设在其所有公式中都有一个校准的针孔摄像机。为了接着我们的方法,我们需要一个独立于所使用的相机模型的PnP算法。为此,我们采用了最大似然Perspective-n-Points算法(MLPnP),该算法完全与相机模型解耦,因为它使用射影光线作为输入。相机模型只需要提供一个从像素到投影射线的非投影,就可以使用重新定位。

B 无矫正的双目SLAM

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

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

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

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

如果两台相机都有一个重叠区域,我们可以在第一次看到真实比例的地标时对其进行三角化。这两幅图像的其余部分仍然有很多相关信息,在SLAM系统中用作单目信息。首先在这些区域中看到的特征是从多个视图进行三角化的得到的,如同使用单目相机的情况(即对于两个相机不重叠的区域,将其按照单目的情况进行三角化深度恢复)。

5 视觉+惯导SLAM

ORB-SLAM-VI是第一个能够重用地图的真正视觉惯性SLAM系统。然而,它仅限于针孔单目相机,初始化速度太慢,在一些具有挑战性的场景中失败。在这项工作中,我们以ORB-SLAM-VI为基础,提供了一种快速、准确的IMU初始化技术 ,以及一个开源的SLAM库,能够使用针孔、鱼眼相机进行单目惯性和双目惯性SLAM。

A 基本原理

在这里插入图片描述
预积分:紧耦合的方式就是把imu和图像的信息共同来估计状态量,所以如何协调两者之间的关系了,预积分干了这么一件事,通过重新参数化,把关键帧之间的IMU测量值积分成相对运动的约束,避免了因为初始条件变化造成的重复积分,在下一个关键帧到来之前先对IMU数据积分,谓之预积分。先简单理解为为了能和视觉关键帧信息紧耦合,在耦合之前首先对IMU数据提前积分处理,得到旋转,速度和位置测量值(平移量),以及整个测量值向量的协方差矩阵。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

B IMU初始化

这一步的目的是为惯性变量获得良好的初始值:主体速度、重力方向和IMU偏差。像VI-DSO这样的系统尝试从零开始解决视觉惯性BA,避开特定的初始化过程,获得惯性参数的缓慢收敛(长达30秒)。
在这项工作中,我们基于以下三个关键的观点,提出了一个快速和准确的初始化方法:

  1. 纯粹的单目SLAM可以提供非常精确的初始地图,其主要问题是未知尺度。首先解决视觉问题将提升IMU的初始化。
  2. 从文献[56]所知,当尺度(scale)被显式地表达成一个优化变量时,而不是使用隐式的BA表述时,尺度会收敛得更快。
  3. 在IMU初始化过程中,忽略传感器的不确定性会产生庞大且不可预知的误差。

因此,正确地考虑到传感器的不确定性,我们将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秒内丢失,则地图将被丢弃。这样可以防止累积不准确和无意义的地图。

6 地图融合和闭环矫正

跟踪和建图线程通过将地图点投影到被估计的相机位姿态并在仅有几个像素的图像窗口中搜索匹配,常规地寻找帧和活动地图之间的短期和中期数据关联。为了实现重定位和闭环检测的长期数据关联,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]。我们的位置识别算法的步骤是:
在这里插入图片描述
在这里插入图片描述

B. 视觉地图融合

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

C. 视觉-惯性地图融合

在这里插入图片描述

D. 闭环矫正

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

7 实验结果

整个系统的评估分为:

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

与领域中通常使用的一样,我们使用RMS ATE[81]评估测量精度,在纯单目情况下使用Sim(3)变换,在其余传感器配置中使用SE(3)变换,将被估计轨迹与地面真值对齐。使用Sim(3)校准的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),因此它们不会干扰系统其余部分的实时性能。视觉-惯性系统仅执行两次地图合并以连接三个序列,而视觉系统执行一些附加合并以从跟踪丢失中恢复。由于其较低的漂移,与纯视觉系统相比,视觉-惯性系统也执行较少的闭环矫正操作。

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

8 结论

在[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的同一类型环境中是如此。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM 的相关文章

随机推荐

  • Mujoco-小球建模与控制

    视频教程 xff1a https www bilibili com video BV1e44y1H7Mn 资源请到tiny cc mujoco下载 涉及内容 本次课程制作了一个简单的小球模型 然后对小球进行简单的模拟 xff0c 并演示了一
  • Mujoco-欠驱动的二阶单摆的LQR控制

    MuJoCo Lec7 span class token keyword void span span class token function f span span class token punctuation span span c
  • 四元数姿态计算

    本文基本上就是 1 的注解 一基本概念 1 1 四元数的定义 Quaternion A quaternion is a four dimensional complex number 四元数是一个四维的复数 写成行向量形式的话 q 61 q
  • Mujoco的关节与外力和驱动器

    核心公式 xff1a M qacc 43 qfrc bias 61 qfrc applied 43 ctrl M xff1a 惯性矩阵 qacc 加速度 qfrc bias 科里奥利矩阵和重力矩阵之和 xff1a qfrc bias 61
  • F28069的cpu定时器

    工程搭建参考 xff1a https blog csdn net feisy article details 126380289 F28069有三个32位的CPU定时器 xff1a 0 1 2 0 xff0c 1可用 xff0c 如果程序未
  • TI DSP的中断

    F28069的中断数是96个 xff0c 分为12组 The PIE block can support 96 individual interrupts that are grouped into blocks of eight Each
  • DSP的PWM

    PRD 周期寄存器 xff0c 决定了PWM的周期 频率 CMP 比较寄存器 xff0c 决定了PWM的占空比 CRT 计数寄存器 PWM原理图 为什么需要PWM
  • 出色的html滑动效果库 swiper -例子4 超长单栏横向滑动

    可以用于div滑动 xff0c 图片滑动等切换 例子代码以及所需资源 xff1a http download csdn net detail feisy 6638105 官网例子 xff1a 使用iframe来在同一个页面里面加入了很多各种
  • 【华人学者风采】张祥雨 旷视研究院

    华人学者风采 张祥雨 xff0c 旷视研究院基础模型负责人 研究领域主要为计算机视觉 曾与旷视首席科学家孙剑博士共同发明深度残差网络 ResNet 2020年发表论文 xff1a 22 发表论文 xff1a 58 论文引用数 xff1a 6
  • 出色的html滑动效果库 swiper -例子5 横向自由滑动 可以滑动部分

    可以用于div滑动 xff0c 图片滑动等切换 例子代码以及所需资源 xff1a http download csdn net detail feisy 6638105 官网例子 xff1a 使用iframe来在同一个页面里面加入了很多各种
  • 不要将两个指针变量指向同一块动态内存

    不要将两个指针变量指向同一块动态内存 这个容易引起很严重的问题 如果将两个指针变量指向同一块动态内存 xff0c 而其中一个生命期结束释放了该动态内存 xff0c 这个时候就会出现问题 xff0c 另一个指针所指向的地址虽然被释放了但该指针
  • CMAKE的一些编译选项

    set CMAKE BUILD TYPE 34 Release 34 if CMAKE BUILD TYPE STREQUAL 34 Debug 34 set CMAKE CXX FLAGS 34 CMAKE CXX FLAGS std 6
  • 查看当前系统的glibc版本

    from http my oschina net acmfly blog 77211 有时我们经常需要查看当前系统的glibc版本 xff0c 可以这样查看 xff1a lib libc so 6 有时 xff1a lib x86 64 l
  • 禁忌搜索算法简介

    忌搜索 xff08 Tabu Search或Taboo Search xff0c 简称TS xff09 的思想最早由Glover 1986 提出 xff0c 它是对局部领域搜索的一种扩展 xff0c 是一种全局逐步寻优算法 xff0c 是对
  • 自定义文件格式注册和图标设置

    我们很多时候可能会有这样的一种需求 xff0c 即要生成自己的文件格式 xff0c 然后将这种文件格式注册到操作系统中 xff0c 双击就会使用特定的程序来打开 xff0c 并且我们还想为这种文件格式设置一个图标和缩略 本文章解决的是注册文
  • apache源码分析v2.0

    一 概要 1 平台功能层 xff0c 可移植运行库层 xff0c 核心功能层 xff0c 可选功能层 xff0c 第三方支持库 2 核心功能层 xff1a mod core 处理配置文件中的大部分配置指令 mod so 动态加载其余模块 m
  • Intel英特尔历代经典 CPU 产品回顾

    悉数历史 英特尔历代经典 CPU 产品回顾 从英特尔于 1971 年推出首款 4004 微处理器到现在 xff0c 英特尔处理器已经走过 了 40 个年头 在告别 13 年传奇品牌奔腾之后 xff0c 我们又迎来新一代酷睿 i 双核处 理器
  • vTaskStartScheduler()分析笔记

    FreeRTOS是通过vTaskStartScheduler 函数来启动运行的 xff0c 通常被封装在osKernelStart 中 xff0c 它的工作内容如下 xff1a xTaskCreate 创建空闲任务 xff0c 其优先级为最
  • 在MES中遇到生产异常是怎么处理的

    MES系统在生产过程中 xff0c 难免会遇到各种异常情况 xff0c 如机器故障 材料不足 工人缺席等 xff0c 这些异常情况会影响生产进度和产品质量 那么 xff0c 在MES中遇到生产异常通常是怎么处理的呢 xff1f 1 实时监控
  • ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

    摘要 ORB SLAM3是第一个能够让单目 立体相机和RGB D相机与针孔和鱼眼镜头模型解耦进行视觉 视觉 43 惯性和多地图SLAM的系统 第一个主要的创新是一个基于特征的紧密集成视觉 43 惯性SLAM系统 xff0c 它完全依赖于最大