1-ORB-SLAM3论文重点导读及整体算法流程梳理-归纳

发布时间 2023-05-04 20:17:53作者: gary_123

摘要

ORB-SLAM3是第一个能够执行纯视觉、视觉-惯导以及多地图的SLAM系统,可以在单目,双目以及RGB-D相机上使用针孔以及鱼眼模型。

本文主要新颖之处在于基于特征的VIO紧耦合系统,该系统完全依赖于最大后验估计,即使在IMU初始化阶段也是如此。本系统在小型和大型、室内和室外环境中实时稳定运行,并且比以前的方法准确两到十倍。

第二个主要新颖之处是一个多地图系统,它依赖于一种新的具有改进召回率的地点识别方法。ORB-SLAM3能够在长时间的不好视觉信息中继续运行:当它丢失时,它会启动一个新的地图,在重新访问地图区域时,该地图将与以前的地图无缝合并。与只使用最后几秒信息的视觉里程计系统相比,ORB-SLAM3是第一个能够在所有算法阶段重用所有先前信息的系统。

我们的实验表明,在所有传感器配置中,ORB-SLAM3与文献中可用的最佳系统一样稳健,并且明显更准确。我们的立体惯性SLAM在EuRoC无人机中实现了3.5厘米的平均精度,在TUM-VI数据集的房间中实现了9毫米的快速手持运动,TUM-VI数据集是一种代表AR/VR场景的设置。

一、介绍

SLAM地图的最大优点是,它允许在BA中匹配和使用先前的观测结果,执行三种类型的数据关联:

短期数据关联:

在最近的几秒钟匹配获得的地图元素。这是大多数VO系统中唯一使用的数据关联类型,这些地图元素一旦离开视野就会被丢掉,就会导致有累积漂移。

中期数据关联:匹配相机累积误差小的地图,这可以用在BA中,在这样的地图中运行时,可以达到零漂移。

长期数据关联:利用场景识别技术来匹配当前的观测和先前的观测,不用管累积误差(回环检测可解决),不用管当前区域在先前建图中是非连续的(地图合并可以解决),或者跟踪丢失(重定位可以解决)。长期匹配允许重置漂移且利用位子图来纠正地图,为了更精确,也可以使用BA。这是SLAM在中大型环形环境中取得高精度的关键。

本文是第一个对短期、中期、长期数据关联的视觉、视觉惯性系统。可以在已知地图中实现零漂移。本文进一步提供了多地图数据关联,这使我们能够匹配和使用来自先前地图会话的地图元素在使用BA中,从而实现SLAM系统的真正目标:构建一个稍后可以使用的地图,以提供准确的定位。

ORB-SLAM3主要的新颖之处在于:

一个单目和双目视觉惯导SLAM系统:完全依赖于最大后验估计(MAP),即使在IMU初始化阶段也不例外。初始化方法,可参考下面文章,

C. Campos, J. M. M. Montiel, and J. D. Tardós, “Inertial-only optimization for visual-inertial initialization,” in IEEE International Conference on Robotics and Automation (ICRA), 2020, pp. 51–57.

改进的召回场景识别方法:大多数场景识别方法采用DBoW2方法,DBoW2需要时间一致性,在检查几何一致性之前,将三个连续的关键帧匹配到同一区域,以牺牲召回为代价提高精度。导致回环太慢了。我们提出了一种新的位置识别算法,其中首先检查候选关键帧的几何一致性,然后检查与三个共视关键帧的局部一致性,这些关键帧在大多数情况下已经在地图中。这种策略以略高的计算成本为代价,增加了召回率并增加了数据关联,提高了地图的准确性。

ORB-SLAM Atlas:第一个可以解决纯视觉或者视觉惯导的完整的多地图的SLAM系统;Atlas可以表示一组断开的地图,并将所有的地图操作平滑地应用于:位置识别、相机重新定位、环路闭合和精确的无缝地图合并。这允许自动使用和组合在不同时间构建的地图,执行增量多地图SLAM。

抽象的相机表示:使得SLAM代码与所使用的相机模型无关,并允许通过提供它们的投影、非投影和雅可比函数来添加新模型。本文提供了针孔和鱼眼模型的实现。

二、相关工作

按时间顺序汇总最具代表性的视觉(顶部)和视觉惯性(底部)系统。

A、视觉SLAM

Monocular SLAM:第一个单目SLAM系统,使用EKF以及Shi-Tomasi特征点;

PTAM:采用跟踪和建图分开的并行线程,且基于关键帧技术。在相同的计算成本下,基于关键帧的技术比滤波更准确[55],成为视觉SLAM和VO的黄金标准。

ORB SLAM:采用ORB特征点,DBoW2词袋模型,特征描述子提供了短期、中期数据关联,长期数据关联使用DBoW2执行回环检测;

LSD-SLAM:直接法,构建大场景的半稠密地图,没有对地图进行优化,精度低;

混合系统SVO:采用FAST特征,使用直接法来跟踪,只是一个VO,执行短期的数据关联;

DSO(Direct Sparse Odometry):在特征点较差的情况下,也可以得到精确的相机位姿,利用7个关键帧的局部光度误差的BA来优化位姿,利用逆深度来存储点。

B、视觉-惯导SLAM

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

MSCKF:对紧密耦合方法的研究可以追溯到MSCKF,其中通过特征边缘化来避免特征数量中的EKF二次代价。

OKVIS:是第一个基于关键帧的紧耦合的BA优化的视觉惯性里程计系统;

ROVIO:使用直接数据关联提供具有光度误差的EFK。

ORB-SLAM-VI:首次提出了一种视觉惯性SLAM系统,该系统能够重用具有短期、中期和长期数据关联的地图,并在基于IMU预集成的精确局部视觉惯性BA中使用它们。然而,它的IMU初始化技术太慢,耗时15秒,这损害了鲁棒性和准确性。

IMU快速初始化方法:下面文章中提出了更快的初始化技术,基于闭合形式的解决方案,以联合检索尺度、重力、加速度计偏差和初始速度以及视觉特征深度。至关重要的是,它们忽略IMU的噪声财产,并将空间点的3D误差降到最低,而不是它们的重投影误差,这是基于特征的计算机视觉的黄金标准。我们之前的工作[64]表明,这会导致巨大的不可预测的错误。

A. Martinelli, “Closed-form solution of visual-inertial structure from motion,” International Journal of Computer Vision, vol. 106, no. 2, pp.138–152, 2014.
J. Kaiser, A. Martinelli, F. Fontana, and D. Scaramuzza, “Simultaneous state initialization and gyroscope bias calibration in visual inertial aided navigation,” IEEE Robotics and Automation Letters, vol. 2, no. 1, pp.18–25, 2017.

VINS-Mono:VINS Mono是一个非常精确和稳健的单目惯性里程计系统,具有使用DBoW2进行闭环和4DoF姿态图优化和地图合并功能。特征跟踪是用Lucas Kanade跟踪器执行的,比描述符匹配稍微稳健一些。

VINS-Fusion:将VINS-Mono扩展到了双目和双目惯性。

VI-DSO:将DSO扩展到视觉惯性里程计,提出了一种束调整,将惯性观测与选定高梯度像素的光度误差相结合,从而获得非常好的精度。

BASALT:它是一种立体惯性里程计系统,它从视觉惯性里程计中提取非线性因子,将其用于BA,并闭环匹配ORB特征,实现了非常好到极好的精度。

Kimera:是一个新的优秀度量语义建图系统,但其度量部分包括双目惯性里程计加上DBoW2闭环和姿态图优化,实现了与VINS Fusion类似的精度。

在这项工作中,我们建立在ORB-SLAM-VI的基础上,并将其扩展到双目惯性SLAM。我们提出了一种基于最大后验(MAP)估计的新的快速初始化方法,该方法适当考虑了视觉和惯性传感器的不确定性,并在2秒内以5%的误差估计真实尺度,在15秒内收敛到1%的尺度误差。

C、多地图SLAM

下面文章中首次在滤波方法中提出了通过地图创建和融合为探索过程中的跟踪损失增加鲁棒性的想法,

E. Eade and T. Drummond, “Unified loop closing and recovery for real time monocular SLAM,” in Proc. 19th British Machine Vision Conference (BMVC), Leeds, UK, September 2008. [66] R. Castle, G. Klein, and D. W. Murray, “Video-rate l

MOARSLAM:提出了一种用于协作多设备SLAM的健壮的无状态客户端-服务器体系结构,但主要关注的是软件体系结构,并且没有报告准确性结果;

CCM-SLAM:提出了一种用于多架无人机的分布式多地图系统,该系统基于ORB-SLAM,具有双向信息流。

SLAMM:还提出了ORB-SLAM2的多地图扩展,但将子地图保留为分离的实体,同时我们执行无缝映射合并,构建更准确的全局地图。

VINS Mono:是一个视觉里程计系统,具有闭环和多地图功能,依赖于位置识别库DBoW2。

实验表明,由于能够使用中期数据关联,ORB-SLAM3在EuRoc数据集上的单目惯性单会话操作的准确性是VINS Mono的2.6倍。
我们的Atlas系统也建立在DBoW2的基础上,但提出了一种新的更高召回率的位置识别技术,并使用本地BA执行更详细、更准确的地图合并,在EuRoC上的多会话操作中,将优势提高到比VINS Mono高3.2倍的准确度;

 

三、系统概述

ORB-SLAM3是基于ORB-SLAM2和ORB-SLAM-VI建立的。它是一个多地图,多会话的系统,能够工作在纯视觉或者视觉惯导模式,可使用单目,双目或者RGB-D相机,使用针孔和鱼眼相机模型。下图是系统主要的组成部分:

Atlas:是一个多地图表示,由一些不连续的地图组成的集合表示。有一个活动地图,跟踪线程在其中定位传入帧,并通过局部建图线程随着新的关键帧不断优化和增长。将Atlas中的其他地图称为非活跃地图。系统构建一个基于关键帧的唯一的DBoW2数据库,该数据库用于重定位,回环检测以及地图合并。

跟踪线程:处理传感器信息以及实时计算当前帧相对于活跃地图的位姿,通过使匹配的地图特征的重投影误差最小化。这也决定了当前帧是否成为了关键帧。在视觉惯性模式下,通过在优化中包括惯性残差来估计本体速度和IMU偏差。当跟踪丢失后,跟踪线程尝试在Atlas的地图中重定位当前帧。如果重新定位,将恢复跟踪,并在需要时切换活动地图。否则,在一段时间后,活动地图被存储为非活动地图,并且新的活动地图被从头开始初始化。

 局部建图线程:添加关键帧以及特征点到活跃地图中,移除冗余关键帧与地图点,使用视觉或者视觉惯导BA来优化地图,在靠近当前帧的关键帧的局部窗口中操作。除此之外,在惯性的情况下,IMU参数在建图线程中通过新颖的最大后验估计技术来初始化和优化。

回环和地图合并线程:以关键帧速率检测活动地图和整个Atlas之间的公共区域。如果公共区域属于活跃地图,那么就执行回环纠正;如果公共区域属于不同的地图,两个地图被无缝合并到一个地图,这个地图就变成了活跃地图。在回环纠正之后,一个完全的BA在独立的线程中启动来进一步优化地图在不影响实时性能情况下。

四、相机模型

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

在大多数有名的计算机视觉算法中都假定为一个针孔相机模型,许多SLAM系统对整个图像或特征坐标进行校正,以在理想的平面视网膜中进行处理。然而,这种方法对于鱼眼透镜来说是有问题的,因为鱼眼透镜可以达到或超过180度的视场(FOV)。校正特征坐标需要使用小于180度的FOV,这会给许多计算机视觉算法带来麻烦,这些算法假设沿着图像的重投影误差是均匀的,而在校正后的鱼眼图像中这一点远非如此。这迫使裁剪出图像的外部,失去了大视场的优势:更快地映射环境和更好的遮挡鲁棒性。接下来,我们将讨论如何克服这些困难。

A、重定位

一个鲁邦的SLAM系统在跟踪失败的时候需要重定位相机的能力。ORB-SLAM是基于ePnP算法通过设置一个Perspective-n-Points求解器来解决重定位问题的,这假设了一个经过校准的针孔相机及它相应的方程。为了跟进我们的方法,我们需要一个PnP算法,它独立于所使用的相机模型工作。出于这个原因,我们采用了最大似然Perspective-n-Point算法(MLPnP)[74],该算法与相机模型完全解耦,因为它使用投影射线作为输入。相机模型只需要提供一个从像素传递到投影光线的非投影函数,就可以使用重定位。

B、未矫正的立体SLAM

大多数立体SLAM系统假设立体帧被校正,即,使用相同的焦距将两个图像转换为针孔投影,图像平面共面,并与水平极线对齐,使得一个图像中的特征可以通过观察另一图像中的同一行来容易地匹配。然而,校正后的立体图像的假设是非常有限的,并且在许多应用中,既不合适也不可行。例如,校正发散立体相机对或立体鱼眼相机将需要严重的图像裁剪,从而失去大视场的优势。因此,我们的系统不依赖于图像校正,将双目安装视为两个单眼相机,具有:

1) 它们之间的恒定相对SE(3)变换,和

2)可选地,观察场景的相同部分的公共图像区域。

这些约束使我们能够通过在对新路标进行三角测量和束调整优化时引入该信息来有效地估计地图的尺度。根据这一想法,我们的SLAM估计了一个6自由度的刚体姿态,其参考系统可以位于其中一个相机或IMU传感器中,并代表相机的刚体姿态。

如果两台相机都有一个重叠的区域,我们可以在该区域进行立体观测,那么我们可以在第一次看到真实比例的地标时对其进行三角测量。

这两幅图像的其余部分仍然有许多相关信息,这些信息在SLAM的流程中用作单目信息。首先在这些区域中看到的特征是从多个视图进行三角测量的,就像在单目的情况下一样。

五、视觉-惯导SLAM

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

A、基本知识

在纯视觉SLAM中,只估计当前相机的位姿,在视觉-惯导SLAM中还有其他变量需要估计,包括本体位姿Ti=[Ri,pi],速度vi均在世界坐标系下,陀螺仪和加速度计偏置big以及bia,状态变量表示为:

对于视觉-惯性SLAM,在连续两帧i和i+1之间进行IMU预积分,根据理论

T. Lupton and S. Sukkarieh, “Visual-inertial-aided navigation for high-dynamic motion in built environments without initial conditions,” IEEE Transactions on Robotics, vol. 28, no. 1, pp. 61–76, 2012.

以及在流性上构建方程:

C. Forster, L. Carlone, F. Dellaert, and D. Scaramuzza, “On-manifold preintegration for real-time visual–inertial odometry,” IEEE Transactions on Robotics, vol. 33, no. 1, pp. 1–21, 2017.

获得的预积分旋转,速度以及位置测量,表示为∆ R i,i+1,∆ Vi,i+1,∆ P i,i+1,以及一个整个测量向量的协方差矩阵Σ I i,i+1。给出这些预积分项以及状态Si和Si+1,我们采用惯导残差r I i,i+1的定义:

C. Forster, L. Carlone, F. Dellaert, and D. Scaramuzza, “On-manifold preintegration for real-time visual–inertial odometry,” IEEE Transactions on Robotics, vol. 33, no. 1, pp. 1–21, 2017.

Log:SO(3)->R3,从一个李群空间到向量空间。连同惯性残差,我们也使用重投影误差rij在第i帧和在位姿xj的3D点j之间:

结合惯性和视觉残差项,视觉-惯导SLAM可以被称为一个基于关键帧的最小化问题。给定K+1个关键帧的集合以及其状态̄ k = {S 0 . . . S k },以及一个包含l个3D点的集合和对应的状态X = {x 0 . . . x l−1 },视觉-惯导优化问题表示为:

Kj是观测到3D点j的关键帧的集合。这种优化可以概括为图2a中所示的因子图。

注意,对于重投影误差,我们使用鲁棒的Huber核ρHub来减少虚假匹配的影响,而对于惯性残差,由于不存在错误关联,因此不需要它。

这种优化需要有效地适应跟踪和映射过程,但更重要的是,它需要良好的初始种子才能收敛到准确的解。

B、IMU 初始化

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

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

纯单目SLAM可以提供非常精确的初始地图[2],其主要问题是尺度未知。首先解决仅视觉问题将增强IMU的初始化。

如下参考论文所示,当尺度被明确表示为优化变量,而不是使用BA的隐式表示时,它的收敛速度要快得多。

“Scale drift-aware large scale monocular SLAM,” Robotics: Science and Systems VI, vol. 2, 2010.

在IMU初始化过程中忽略传感器的不确定性会产生巨大的不可预测错误。参考如下论文

C. Campos, J. M. M. Montiel, and J. D. Tardós, “Fast and robust initialization for visual-inertial SLAM,” in Proc. IEEE Int. Conf. Robotics and Automation (ICRA), 2019, pp. 1288–1294.

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

1)只有视觉的 MAP估计:

我们初始化纯单目SLAM[2]并在2秒内运行它,以4Hz插入关键帧。在这段时间之后,我们有了一个由k=10个相机位姿和数百个点组成的一定规模的地图,该地图使用仅视觉BA进行了优化(图2b)。这些位姿被转换到body参考系下,获得轨迹T̄0:k=[R,p̄]0:k,其中变量上一横表示单目情况下的一定尺度的变量。

2)只有惯性的MAP估计:

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

s是只有视觉的尺度因子,R是一个旋转矩阵,用于计算在世界参考系中的重力向量g = R wg g I,gI = (0, 0, G) T,G是重力的大小;b = (b a , b g ) ∈ R 6是加速度计和陀螺仪的偏置,在初始化阶段被认为是常量。v̄0:k∈R3是从第一个关键帧到最后一个关键帧的本体速度,最初的估计来自于T0:k。在这一点上,我们只考虑惯性测量集合I 0:k = {I 0,1 . . . I k−1,k }。因此,我们可以陈述MAP估计问题,其中要最大化的后验分布是

p(I 0:k |Y k )表示似然估计,p(Y k )表示先验值。考虑到测量的独立性,仅惯性MAP估计问题可以写成

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

如图2c所示,这种优化与方程4的不同之处在于,不包括视觉残差,因为视觉SLAM估计的最新轨迹被视为常数,并添加了迫使IMU偏置接近零的先验残差。协方差矩阵∑b表示关于IMU偏置可能取值范围的先验知识。IMU协方差∑I I−1,I的预积分细节可以在下面文章中找到。

C. Forster, L. Carlone, F. Dellaert, and D. Scaramuzza, “On-manifold preintegration for real-time visual–inertial odometry,” IEEE Transactions on Robotics, vol. 33, no. 1, pp. 1–21, 2017.

当我们在流形中进行优化时,我们需要定义一个收缩,以在优化过程中更新R wg。由于围绕重力方向的旋转不假设重力发生变化,因此此更新使用两个角度(δαg,δβg)进行参数化:

为了保证尺度因子在优化过程中保持正,我们将其更新定义为:

一旦仅惯性优化完成,帧姿态和速度以及3D地图点就用估计的比例因子进行缩放,并旋转以使z轴与估计的重力方向对齐。更新偏置并重复IMU预积分,旨在减少未来的线性化误差。

3)视觉-惯导MAP估计:

一旦我们对惯性和视觉参数有了很好的估计,我们就可以进行联合视觉惯性优化,以进一步完善结果。这种优化可以表示为图2a,但对于所有关键帧具有共同的偏差,并且包括与仅惯性步骤中相同的偏差的先验信息。

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

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

[6] C. Campos, J. M. M. Montiel, and J. D. Tardós, “Inertial-only optimization for visual-inertial initialization,” in IEEE International Conference on Robotics and Automation (ICRA), 2020, pp. 51–57.

在某些特定情况下,当慢动作不能提供惯性参数的良好可观察性时,初始化可能无法在15秒内收敛到精确的解。为了获得针对这种情况的鲁棒性,我们提出了一种新的尺度细化技术,该技术基于修改的仅惯性优化,其中包括所有插入的关键帧,但尺度和重力方向是唯一需要估计的参数(图2d)。请注意,在这种情况下,恒定偏置的假设是不正确的。

相反,我们使用从建图中估计的值,并对其进行修复。这种计算效率非常高的优化每10秒在局部建图线程中执行一次,直到映射具有100多个关键帧,或者自初始化以来已经过去了75秒以上。

最后,我们通过将比例因子固定为1,并将其从仅有惯性的优化变量中取出,从而很容易地将单目惯性初始化扩展到立体惯性,从而增强了其收敛性。

C、跟踪和建图

对于跟踪和映射,我们采用[4]中提出的方案。跟踪解决了简化的视觉惯性优化,其中只有最后两帧的状态得到优化,而地图点保持固定。

[4]“Visual-inertial monocular SLAM with map reuse,” IEEE Robotics and Automation Letters, vol. 2, no. 2, pp. 796–803, 2017.
 对于建图,试图从方程4中求解整个优化对于大型地图来说是困难的。我们使用关键帧及其点的滑动窗口作为可优化变量,还包括从共视关键帧对这些点的观察,但保持它们的位姿固定。

D、跟踪丢失的鲁棒性

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

短期丢失:根据IMU读数估计当前本体状态,并以估计的相机姿势投影地图点,并在大图像窗口内搜索匹配。得到的匹配包含在视觉惯性优化中。在大多数情况下,这允许恢复视觉跟踪。否则,5秒钟后,我们进入下一阶段。

长期丢失:如上所述,一个新的视觉惯性地图被初始化,并且它成为活动地图。如果系统在IMU初始化后15秒内丢失,则会丢弃地图。这样可以防止积累不准确和无意义的地图。

六、地图合并和回环检测

跟踪和建图线程通过将地图点投影到估计的相机姿态中并在仅有几个像素的图像窗口中搜索匹配来常规地找到帧和活动地图之间的短期和中期数据关联。

 为了实现用于重新定位和回环检测的长期数据关联,ORB-SLAM使用DBoW2单词袋位置识别系统[9],[75]。这种方法也被最近实现回环检测的VO和SLAM系统所采用(表I)。

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

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

A、位置识别

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

1)DBoW2 候选帧。

我们查询具有活动关键帧K a的Atlas DBoW2数据库,以检索三个最相似的关键帧,不包括与Ka共视的关键帧。我们将用于位置识别的每个匹配候选者称为Km。

2)局部窗口。

 对于每个Km,我们定义一个局部窗口,该窗口包括Km、其最佳共视关键帧以及所有这些关键帧观察到的地图点。DBoW2直接索引提供了在Ka中关键点与局部窗口关键帧之间的匹配集。对于每一个这些2D-2D的匹配,都有对应的3D-3D的地图点匹配。

3)3D 对齐变换。我们使用RANSAC计算变换Tam,该变换使Km局部窗口中的地图点与Ka的地图点更好地对齐。在单目视觉或者单目惯导中,地图还不成熟时,我们计算的时Sim(3),否则计算的是SE(3)。在这两种情况下,我们都使用Horn算法,使用三个3D-3D匹配的最小集合来找到T am的每个假设。

假定的匹配是,在Tam转换Ka中的地图点后,在Ka中实现了低于阈值的重投影误差,对该假设投了赞成票。如果票数超过阈值,则会选择具有更多票数的假设。

4)引导匹配优化:

使用Tam对局部窗口中的所有地图点进行变换,以找到与Ka中的关键点的更多匹配。执行相反的搜索,在本地窗口的所有关键帧中为Ka搜索匹配的地图点。使用找到的所有匹配,通过非线性优化来细化Tam,其中目标函数是双向重投影误差,使用Huber影响函数来提供对虚假匹配的鲁棒性。如果优化后的内点数量超过阈值,则使用较小的图像搜索窗口启动引导匹配和非线性细化的第二次迭代。

5)在三个可视关键帧中进行验证。为了避免误报,DBoW2在三个连续的关键帧中等待位置识别,从而延迟或错过位置识别。我们的关键见解是,大多数时候,验证所需的信息已经在地图上了。为了验证位置识别,我们在活跃地图中搜索与Ka共视的两个关键帧,其中与局部窗口中的点的匹配数量超过阈值。如果没有找到它们,则会对新的传入关键帧进一步尝试验证,而不需要再次触发词袋。验证将继续进行,直到三个关键帧验证Tam,或者两个连续的新关键帧无法验证Tam。

6)VI重力方向验证。在视觉惯导的情况下,如果活跃地图是成熟的,已经估计了Tam ∈SE(3)。我们进一步检查俯仰角和滚转角是否低于阈值,以最终接受位置识别假设。

B、视觉地图合并

当成功的位置识别在活动地图Ma中的关键帧Ka和Atlas Mm中存储的不同地图中的匹配关键帧Km之间产生多地图数据关联时,通过对齐变换Tam,我们启动地图合并操作。在这个过程中,必须特别注意确保Mm中的信息可以被跟踪线程迅速重用,以避免地图重复。为此,我们建议将Ma图纳入Mm参考。

由于Ma可能包含许多元素,并且合并它们可能需要很长时间,因此合并分为两个步骤。

1)连接窗口集合。连接的窗口包括Ka以及它的共视关键帧,Km以及它的共视关键帧,以及由他们所看到的所有地图点。在将属于Ma的关键帧和地图点包含在连接窗口中之前,它们将通过Tma进行变换,以使它们相对于Mm对齐。

2)合并地图。Ma和Mm被融合称为新的活跃地图。要删除重复的点,将在Mm关键帧中主动搜索与Ma匹配的点。对于每个匹配,Ma中的点被移除,并且Mm中的点保持累积移除点的所有观测值。由于发现了新的中期点关联,通过添加连接Mm和Ma关键帧的边来更新共视性和本质图[2]。

3)连接BA。执行局部BA,优化连接窗口中Ma和Mm的所有关键帧以及它们观察到的地图点(图-3a)。为了固定测量自由度,不属于连接窗口但观测到任何局部地图点的关键帧Mm在BA中被包含,其姿态固定。一旦优化完成,连接区域中的所有关键帧可以被用于相机跟踪,从而实现地图Mm的快速准确重用。

4)本质图优化。使用整个合并地图的本质图进行位姿图优化,保持连接区域中关键帧不变。这种优化将矫正从连接窗口传播到地图的其余部分。

C、视觉-惯导地图合并

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

1)VI的连接窗口:如果活跃地图是成熟的,我们在将Ma包含在连接窗口中之前,应用Tma到地图Ma上。如果活跃地图不成熟,则使用可用的Tma∈Sim(3)来对齐Ma。

2)VI连接BA:关键帧Ka和Km及其最后五个时间关键帧的位姿、速度和偏移被包括为可优化的。如图3b所示,这些变量与IMU预积分项相关。对于Mm,本地窗口之前的关键帧被包括但固定,而对于Ma,类似的关键帧也被包括但其姿势保持可优化。上述关键帧看到的所有地图点以及Km和Ka共视关键帧的位姿都得到了优化。所有关键帧和点都通过重投影误差进行关联。

 

D、回环检测

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

 

一、跟踪线程

1、相机抽象模型

a、针孔相机模型;

b、KB相机模型;

2、特征点提取

a、构建图像金字塔

b、特征点提取及四叉树均匀化

c、高斯去噪以及描述子计算

d、特征点去畸变处理以及图像边界处理

e、远点及近点处理

f、地图初始化

i)单目初始化ReconstructWithTwoViews

ii)双目初始化

g、IMU预积分PreintegrateIMU

h、参考帧跟踪

i、恒速模型跟踪

j、重定位跟踪

k、局部地图跟踪

l、在imu初始化成功后,imu预测跟踪PredictStateIMU

m、