摘要-本文提出了ORB-SLAM3,第一个系统能够执行视觉,视觉惯导以及多地图的SLAM系统,且该系统具有单目,双目,RGB-D相机模型,用针孔相机和鱼眼镜头模型。
第一个主要的创新是基于特征的紧耦合视觉惯性SLAM系统,即使在IMU初始化阶段,它也完全依赖于最大后验概率(MAP)估计。其结果是,该系统在小型、大型、室内和室外环境中实时稳定运行,其精度比以前的方法高两到十倍。
第二个主要的新颖之处是一个多地图系统,它依赖于一种新的地点识别方法,并改进了召回。得益于它,ORB-SLAM3能够在长时间的不良视觉信息中生存:当它丢失时,它会启动一个新的地图,在重新访问地图区域时,它将与以前的地图无缝合并。与只使用最后几秒信息的视觉里程计系统相比,ORB-SLAM3是第一个能够在所有算法阶段重用所有先前信息的系统。这允许包括束内调整共可见关键帧,这些关键帧提供了提高精度的高视差观测,即使它们在时间上被广泛分离,或者它们来自先前的建图会话。
我们的实验表明,在所有传感器配置中,ORB SLAM3都与文献中可用的最佳系统一样稳健,并且明显更准确。值得注意的是,我们的立体惯性SLAM在EuRoC无人机中实现了3.5厘米的平均精度,在TUM-VI数据集(代表AR/VR场景的设置)的房间中实现了9毫米的快速手持运动。为了社区的利益,我们公开了源代码。
1、介绍
在过去二十年中,对视觉同时定位和测绘系统(SLAM)和视觉里程计(VO)的深入研究,无论是单独使用相机还是与惯性传感器结合使用,都产生了精度和鲁棒性不断提高的优秀系统。现代系统依赖于最大后验(MAP)估计,在视觉传感器的情况下,最大后验估计对应于束调整(BA),即在基于特征的方法中最小化特征重投影误差的几何BA,或在直接方法中最小化一组选定像素的光度误差的光度BA。
随着最近出现了回环检测的VO系统,VO和SLAM之间的边界更加不确定。Visual SLAM的目标是使用移动代理上的传感器构建环境地图,并实时计算该地图中代理的姿态。相比之下,VO系统将重点放在计算代理的自我运动上,而不是构建地图。SLAM图的最大优点是,它允许在BA中匹配和使用先前的观察结果,执行三种类型的数据关联(扩展[1]中使用的术语):
短期数据关联,匹配在最后几秒内获得的地图元素。这是大多数VO系统使用的唯一数据关联类型,一旦环境元素离开视图,就会忘记它们,导致即使系统在同一区域移动,也会导致持续的估计漂移。
中期数据关联,匹配接近累积漂移仍然小的相机的地图元素。这些可以以与短期观测相同的方式在BA中进行匹配和使用,并允许系统在地图区域内移动时达到零漂移,与具有环路检测的VO系统相比,它们是我们的系统获得更好精度的关键。
长期数据关联,使用位置识别技术将观察结果与先前访问的区域中的元素进行匹配,而不管累积的漂移(环路检测)、当前区域先前被映射在断开的地图中(地图合并)或跟踪丢失(重新定位)。长期匹配允许使用姿势图(PG)优化或更准确地使用BA来重置漂移并校正地图。这是SLAM在中大型环形环境中精度的关键。
在这项工作中,我们建立在ORB-SLAM[2]、[3]和ORB-SLAM视觉惯性[4]的基础上,这是第一个能够充分利用短期、中期和长期数据关联的视觉和视觉惯性系统,在地图区域达到零漂移。在这里,我们进一步提供多地图数据关联,这使我们能够匹配和使用来自先前建图会话的BA地图元素,从而实现SLAM系统的真正目标:构建一个稍后可用于提供准确定位的地图。
这本质上是一篇系统论文,其最重要的贡献是ORB-SLAM3库本身[5],这是迄今为止最完整、最准确的视觉、视觉惯性和多地图SLAM系统(见表I)。ORB-SLAM3的主要特点是:
单目和立体视觉惯性SLAM系统,即使在IMU(惯性测量单元)初始化阶段,也完全依赖于最大后验(MAP)估计。提出的初始化方法先前在[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结果之间的比较,这些结果可能会引起从业者的兴趣。
II、相关工作
、、、
III、系统概述
ORB-SLAM3基于ORB-SLAM2[3]和ORB-SLAM-VI[4]构建。它是一个完整的多地图和多会话系统,能够使用针孔和鱼眼相机模型,在单目、立体或RGB-D传感器的纯视觉或视觉惯性模式下工作。图1显示了主要系统组件,这些组件与ORB-SLAM2的组件平行,具有一些重要的新颖性,下面将对其进行总结:
Atlas是由一组不连通的地图组成的多地图表示。有一个活动地图,跟踪线程在其中定位传入帧,并通过本地建图线程使用新的关键帧不断优化和增长。我们将Atlas中的其他地图称为非活动地图。该系统构建了一个独特的关键帧DBoW2数据库,用于重新定位、循环闭合和地图合并。
跟踪线程处理传感器信息并实时计算当前帧相对于活动地图的姿态,从而最小化匹配地图特征的重投影误差。 它还决定当前帧是否成为关键帧。在视觉惯性模式下,通过在优化中包括惯性残差来估计本体速度和IMU偏差。当跟踪丢失时,跟踪线程会尝试重新定位所有Atlas地图中的当前帧。如果重新定位,则恢复跟踪,如果需要,切换活动地图。否则,在一定时间后,活动地图将存储为非活动地图,并从头开始初始化新的活动地图。
局部建图线程将关键帧和点添加到活动地图中,删除多余的关键帧,并使用视觉或视觉惯性束调整来优化地图,在接近当前帧的关键帧的局部窗口中操作。此外,在惯性情况下,IMU参数由映射线程使用我们的新MAP估计技术初始化和细化。
循环和地图合并线程以关键帧速率检测活动地图和整个Atlas之间的公共区域。如果公共区域属于活动映射,则执行循环校正;如果它属于不同的地图,则两个地图会无缝地合并为一个映射,即活动地图。在回环校正之后,在独立线程中启动完整的BA,以在不影响实时性能的情况下进一步细化映射。
IV、相机模型
ORB-SLAM在所有系统组件中都采用针孔模型。我们的目标是通过将与相机模型相关的所有属性和函数(投影和非投影函数、雅可比函数等)提取到单独的模块中,从整个SLAM管道中提取相机模型。这允许我们的系统通过提供相应的相机模块来使用任何相机模型。在ORB-SLAM3库中,除了针孔模型之外,我们还提供了Kannala-Brandt[12]鱼眼模型。
由于大多数流行的计算机视觉算法采用针孔相机模型,许多SLAM系统要么校正整个图像,要么校正特征坐标,以在理想的平面视网膜中工作。然而,这种方法对于鱼眼镜头是有问题的,它可以达到或超过180度的视野(FOV)。图像校正不是一个选项,因为外围的对象被放大,而中心的对象分辨率降低,阻碍了特征匹配。校正特征坐标需要使用小于180度的FOV,并且会给许多计算机视觉算法带来麻烦,这些算法假设沿着图像的均匀重投影误差,而这在校正的鱼眼图像中远非如此。这迫使裁剪出图像的外部部分,失去了大FOV的优势:更快的环境建图和更好的遮挡鲁棒性。接下来,我们讨论如何克服这些困难。
A、重定位
一个强大的SLAM系统需要在跟踪失败时重新定位摄像机的能力。ORB-SLAM通过基于ePnP算法[73]设置透视n点解算器来解决重新定位问题,该算法假设所有公式中都有一个经过校准的针孔相机。为了跟进我们的方法,我们需要一个PnP算法,该算法独立于所使用的相机模型。因此,我们采用了最大似然透视n点算法(MLPnP)[74],该算法使用投影光线作为输入,与相机模型完全解耦。相机模型只需要提供从像素到投影光线的非投影函数,就可以使用重定位。
B、非矫正的双目SLAM
大多数立体SLAM系统假设立体帧被校正,即两个图像都被转换为使用相同焦距的针孔投影,图像平面共面,并且与水平对极线对齐,从而可以通过查看另一图像中的同一行来容易地匹配一个图像中的特征。然而,校正立体图像的假设是非常限制的,并且在许多应用中既不适合也不可行。例如,校正发散立体对或立体鱼眼相机将需要严重的图像裁剪,从而失去了大视场的优势。因此,我们的系统不依赖于图像校正,将立体设备视为两个单眼相机,具有:
1)它们之间的恒定相对SE(3)变换,
和
2)可选地是观察场景的相同部分的公共图像区域。
这些约束允许我们通过在三角测量新地标和束内调整优化时引入该信息来有效地估计地图的比例。根据这一想法,我们的SLAM管道估计了一个6 DoF刚体姿态,其参考系统可以位于其中一个相机或IMU传感器中,并表示相机相对于刚体姿态的位置。如果两台相机都有一个重叠区域,我们可以在其中进行立体观察,那么我们可以在第一次看到它们时对其进行三角测量。这两幅图像的其余部分仍有大量相关信息,这些信息在SLAM管道中用作单目信息。首先在这些区域中看到的特征是从多个视图进行三角测量的,就像单目的情况一样。
V、视觉-惯导SLAM
ORB-SLAM-VI[4]是第一个能够重复使用地图的真正的视觉惯性SLAM系统。然而,它仅限于针孔单眼相机,其初始化太慢,在一些具有挑战性的场景中失败。在这项工作中,我们建立在ORB-SLAM-VI的基础上,提供了一种快速准确的IMU初始化技术,以及一个开源的SLAM库,该库能够使用针孔和鱼眼相机实现单眼惯性和立体惯性SLAM。
A、基础
而在纯视觉SLAM中,估计的状态仅包括当前相机姿态,在视觉惯性SLAM中需要计算额外的变量。
对于视觉惯性SLAM,我们根据[60]中发展的理论,在[61]中在流形上公式化,在连续视觉帧i和i+1之间预积分IMU测量。我们获得了预先整合的旋转、速度和位置测量,表示为
B、IMU初始化
这一步的目标是获得惯性变量的良好初始值:本体速度、重力方向和IMU偏差。一些系统如VI-DSO[46]试图从头开始解决视觉惯性BA,绕过特定的初始化过程,获得惯性参数的缓慢收敛(最多30秒)。
在这项工作中,我们基于三个关键见解提出了一种快速准确的初始化方法:
1)纯单目SLAM可以提供非常精确的初始地图[2],其主要问题是规模未知。首先解决视觉问题将增强IMU初始化。
2)如[56]所示,当尺度被显式表示为优化变量时,而不是使用BA的隐式表示时,尺度收敛得更快。
3)在IMU初始化期间忽略传感器不确定性会产生较大的不可预测的错误[64]。
因此,考虑到传感器的不确定性,我们将IMU初始化描述为MAP估计问题,分为三个步骤:
1)只有视觉的最大后验估计:我们初始化纯单目SLAM[2]并在2秒内运行,以4Hz插入关键帧。在这段时间之后,我们得到了一个由k=10个相机姿势和数百个点组成的高比例地图,该地图使用纯视觉BA进行了优化(图2b)。这些位姿转换到本体参考系下,获得轨迹T̄0:k=[R,p̄]0:k,其中条形表示单眼情况下的最大比例变量。
2)只有惯性的最大后验估计:在这一步中,我们的目标是获得惯性变量的最佳估计,在MAP估计的意义上,仅使用T̄0:k和这些关键帧之间的惯性测量。这些惯性变量可以堆叠在仅惯性状态向量中:
3)视觉惯导最大后验估计:一旦我们对惯性和视觉参数有了很好的估计,我们就可以执行联合视觉惯性优化,以进一步细化解决方案。该优化可以表示为图2a,但对于所有关键帧具有共同的偏差,并且包括与仅惯性步骤中相同的偏差先验信息。
我们在EuRoC数据集上的详尽初始化实验[6]表明,这种初始化非常有效,在2秒的轨迹下实现了5%的比例误差。为了改进初始估计,在初始化后5秒和15秒执行视觉惯性BA,收敛到1%的标度误差,如第VII节所示。在这些BA之后,我们认为地图已经成熟,这意味着规模、IMU参数和重力方向已经得到了准确的估计。
我们的初始化比求解一组代数方程[62]–[64]的联合初始化方法准确得多,也比ORB-SLAM-VI[4]中使用的初始化快得多,前者需要15秒才能获得第一个尺度估计,后者需要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系统所采用(表I)。
与跟踪不同,位置识别不是从对相机姿势的初始猜测开始的。相反,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 candidate keyframes。我们使用活动关键帧Ka查询Atlas DBoW2数据库,以检索三个最相似的关键帧,不包括与Ka可见的关键帧。我们将每个匹配的候选位置识别为Km。
2)Local window。对于每个Km,我们定义一个局部窗口,其中包括Km、其最佳共视关键帧以及所有这些关键帧观察到的地图点。DBoW2直接索引提供Ka和局部窗口关键帧中关键点之间的一组假定匹配。对于这些2D-2D匹配中的每一个,我们也可以在它们对应的地图点之间进行3D-3D匹配。
3)3D aligning transformation.我们使用RANSAC计算变换Tam,该变换更好地将Km局部窗口中的地图点与Ka的地图点对齐。在纯单目中,或者在单目惯性中,当地图还不成熟时,我们计算T am∈Sim(3),否则T am∈SE(3)。在这两种情况下,我们使用Horn算法[77],使用三个3D-3D匹配的最小集合来找到Tam的每个假设。假设的匹配,在通过Tam变换Ka中的映射点后,实现Ka中低于阈值的重投影误差,为该假设提供了肯定的投票。如果投票数超过阈值,则选择具有更多投票的假设。
4)Guided matching refinement.使用Tam变换本地窗口中的所有地图点,以找到与Ka中关键点的更多匹配。搜索也会反转,在本地窗口的所有关键帧中查找Ka地图点的匹配。使用找到的所有匹配,通过非线性优化来细化Tam,其中目标函数是双向重投影误差,使用Huber影响函数来提供对伪匹配的鲁棒性。如果优化后的内层数超过阈值,则使用较小的图像搜索窗口启动引导匹配和非线性细化的第二次迭代。
5) Verification in three covisible keyframes.为了避免误报,DBoW2在三个连续的关键帧中等待位置识别,从而延迟或丢失位置识别。我们的关键见解是,大多数时候,验证所需的信息已经在地图中。为了验证位置识别,我们在地图的活动部分搜索与K a共视的两个关键帧,其中与局部窗口中的点的匹配数超过阈值。如果找不到这些关键帧,将使用新的传入关键帧进一步尝试验证,而不需要再次启动单词词典。验证将继续,直到三个关键帧验证T am,或者两个连续的新关键帧验证失败。
6) VI Gravity direction verification.在视觉惯性情况下,如果活动地图是成熟的,我们已经估计了T am∈SE(3)。我们进一步检查俯仰角和横滚角是否低于阈值,以最终接受位置识别假设。
B、视觉地图合并
当成功的地点识别在活动地图Ma中的关键帧Ka和Atlas Mm中存储的不同地图中的匹配关键帧Km之间产生多地图数据关联时,使用对齐变换Tam,我们启动地图合并操作。在这个过程中,必须特别注意确保Mm中的信息能够被跟踪线程及时重用,以避免地图重复。为此,我们建议将Ma地图纳入Mm参考。由于Ma可能包含许多元素,合并它们可能需要很长时间,因此合并分为两个步骤。首先,在由共视图中Ka和Km的邻居定义的焊接窗口中执行合并,并且在第二阶段,通过姿势图优化将校正传播到合并地图的其余部分。合并算法的详细步骤如下:
1) Welding window assembly.焊接窗口包括Ka及其可见关键帧、Km及其可见关键关键帧,以及它们观察到的所有地图点。在将它们包含在焊接窗口中之前,属于Ma的关键帧和贴图点由Tm进行变换,以使它们相对于Mm对齐。
2) Merging maps.地图Ma和Mm融合在一起,成为新的活动地图。要删除重复的点,将在Mm关键帧中主动搜索匹配的Ma点。对于每一次匹配,来自Ma的点被移除,而Mm中的点被保持累积移除点的所有观察值。由于发现了新的中期点关联,通过添加连接Mm和Ma关键帧的边,更新了共视性和基本图[2]。
3) Welding bundle adjustment.执行局部BA,优化焊接窗口中Ma和Mm的所有关键帧以及它们观察到的映射点(图3a)。为了固定轨距自由度,不属于焊接窗口但观察任何局部贴图点的Mm关键帧都包含在BA中,其姿势固定。一旦优化完成,包含在焊接区域中的所有关键帧都可以用于相机跟踪,从而实现地图Mm的快速和准确重用。
4) Essential-graph optimization.使用整个合并地图的基本图执行位姿图优化,保持焊接区域中的关键帧不变。该优化将校正从焊接窗口传播到地图的其余部分。
C、视觉-惯导地图合并
视觉惯性合并算法遵循与纯视觉情况类似的步骤。修改步骤1)和3)以更好地利用惯性信息:
1)VI welding window assembly:如果活动地图是成熟的,我们将可用的Tm∈SE(3)应用于地图Ma,然后将其包含在焊接窗口中。如果活动地图不成熟,我们使用可用的Tm∈Sim(3)对齐Ma。
2) VI welding bundle adjustment:关键帧Ka和Km及其最后五个时间关键帧的姿势、速度和偏差都是可优化的。这些变量与IMU预积分项相关,如图3b所示。对于Mm,在本地窗口之前的关键帧被包括但已固定,而对于Ma,类似的关键帧也被包括但其姿势仍可优化。上面提到的关键帧所看到的所有地图点,以及Km和Ka共视关键帧的姿势都将被优化。所有关键帧和点都通过重投影错误进行关联。
D、回环检测
循环闭合校正算法类似于地图合并,但在位置识别匹配的两个关键帧都属于活动地图的情况下。从匹配的关键帧组装焊接窗口,并检测和融合点副本,在共视性和基本图形中创建新链接。下一步是姿势图优化,以将循环校正传播到地图的其余部分。最后一步是全局BA,在考虑环路关闭中期和长期匹配后,找到MAP估计值。在视觉惯性情况下,只有在关键帧的数量低于阈值时才执行全局BA,以避免巨大的计算成本。
VII、实验
、、、
VIII、结论
在[2]–[4]的基础上,我们提出了ORB-SLAM3,这是用于视觉、视觉惯性和多会话SLAM的最完整的开源库,具有单眼、立体声、RGB-D、针孔和鱼眼相机。除了集成库本身之外,我们的主要贡献是快速准确的IMU初始化技术和多会话地图合并功能,这些功能依赖于一种新的地点识别技术和改进的召回。
我们的实验结果表明,ORB-SLAM3是第一个能够有效利用短期、中期、长期和多地图数据关联的视觉和视觉惯性系统,达到了现有系统无法达到的精度水平。我们的结果还表明,就准确性而言,使用所有这些类型的数据关联的能力胜过其他选择,例如使用直接方法而不是特征,或对局部BA执行关键帧边缘化,而不是像我们一样假设一组外部静态关键帧。
ORB-SLAM3的主要故障案例是低纹理环境。直接方法对低纹理更稳健,但仅限于短期[27]和中期[31]数据关联。另一方面,匹配特征描述符成功地解决了长期和多地图数据关联问题,但在跟踪方面似乎不如使用光度信息的Lucas Kanade稳健。一个有趣的研究方向可能是开发适用于四个数据关联问题的光度技术。我们目前正在探索从人体内的内窥镜图像16构建地图的想法。
关于四种不同的传感器配置,毫无疑问,立体惯性SLAM提供了最稳健和准确的解决方案。此外,惯性传感器允许以IMU速率估计姿态,IMU速率比帧速率高几个数量级,这是某些用例的关键特征。对于立体相机由于体积、成本或处理要求较高而不受欢迎的应用,您可以使用单眼惯性,而不会在鲁棒性和准确性方面损失太多。只需记住,探索过程中的纯旋转不允许估计深度
在缓慢运动或没有侧倾和俯仰旋转的应用中,例如在平坦区域的汽车,IMU传感器很难初始化。在这些情况下,如果可能,请使用立体声SLAM。否则,最近在使用CNN从单个图像进行深度估计方面取得的进展为可靠和真实规模的单眼SLAM[83]提供了良好的前景,至少在训练CNN的相同类型的环境中。