1-ORB-SLAM3论文重点导读及整体算法流程梳理-归纳
摘要
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中以短期观测相同的方式进行匹配和使用,当系统进入到已构建地图的区域可以实现零漂移;与具有回环检测的VO相比,这是本系统取得更高精度的关键。
长期数据关联:利用场景识别技术来匹配当前的观测和先前的观测,不用管累积误差(回环检测可解决),不用管当前区域在先前建图中是非连续的(地图合并可以解决),或者跟踪丢失(重定位可以解决)。长期匹配允许重置漂移且利用位姿图来纠正地图,为了更精确,也可以使用BA。这是SLAM在中大型环形环境中取得高精度的关键。
本文是第一个对短期、中期、长期数据关联的视觉、视觉惯性系统。可以在已知地图中实现零漂移。本文进一步提供了多地图数据关联,这使我们能够匹配和使用来自先前建图阶段的地图元素在使用BA中,从而实现SLAM系统的真正目标:构建一个稍后可以使用的地图,以提供准确的定位。
ORB-SLAM3主要的新颖之处在于:
1)一个单目和双目视觉惯导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.
2)改进的召回场景识别方法:大多数场景识别方法采用DBoW2方法,DBoW2需要时间一致性,在检查几何一致性之前,将三个连续的关键帧匹配到同一区域,以牺牲召回为代价提高精度。导致回环太慢了。本文提出了一种新的位置识别算法,其中首先检查候选关键帧的几何一致性,然后检查与三个共视关键帧的局部一致性,这些关键帧在大多数情况下已经在地图中。这种策略以略高的计算成本为代价,增加了召回率并增加了数据关联,提高了地图的准确性。
3)ORB-SLAM Atlas:第一个可以解决纯视觉或者视觉惯导的完整的多地图的SLAM系统;Atlas可以表示一组断开的地图集,并将所有的地图平滑地应用于:位置识别、相机重新定位、回环检测和精确的无缝地图合并。这允许自动使用和组合在不同时间构建的地图,执行递增的多阶段SLAM。
4)抽象的相机表示:使得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:使用直接数据关联提供具有光度误差的EKF。
ORB-SLAM-VI:首次提出一种能够重用具有短期、中期和长期数据关联的地图,并在基于IMU预积分的精确局部视觉惯性BA中使用它们的视觉惯性SLAM系统。然而,其IMU初始化太慢,耗时15秒,这损害了鲁棒性和准确性。
IMU快速初始化方法:下面文章中提出了更快的初始化技术,基于闭合形式的解决方案,以联合检索尺度、重力、加速度计偏置和初始速度以及视觉特征深度。
VINS-Mono:VINS Mono是一个非常精确和稳健的单目惯性里程计系统,具有使用DBoW2进行闭环和4DoF姿态图优化和地图合并功能。特征跟踪是用Lucas Kanade跟踪器执行的,比描述符匹配稍微稳健一些。
VINS-Fusion:将VINS-Mono扩展到了双目和双目惯性。
VI-DSO:将DSO扩展到视觉惯性里程计,提出了一种BA,将惯性观测与选定高梯度像素的光度误差相结合,从而获得非常好的精度。
BASALT:它是一种立体惯性里程计系统,它从视觉惯性里程计中提取非线性因子,将其用于BA,并闭环匹配ORB特征,实现了非常好到极好的精度。
Kimera:是一个新的优秀度量语义建图系统,但其度量部分包括双目惯性里程计加上DBoW2闭环和姿态图优化,实现了与VINS Fusion类似的精度。
在本工作中,我们建立在ORB-SLAM-VI的基础上,并将其扩展到双目惯性SLAM。我们提出了一种基于最大后验(MAP)估计的新的快速初始化方法,该方法适当考虑了视觉和惯性传感器的不确定性,并在2秒内以5%的误差估计真实尺度,在15秒内收敛到1%的尺度误差。
C、多地图SLAM
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]鱼眼模型。
A、重定位
一个鲁邦的SLAM系统在跟踪失败的时候需要重定位相机的能力。ORB-SLAM是基于ePnP算法通过设置一个Perspective-n-Points求解器来解决重定位问题的,这假设了一个经过校准的针孔相机及它相应的方程。本文采用了最大似然Perspective-n-Point算法(MLPnP)[74],该算法与相机模型完全解耦,因为它使用投影射线作为输入。相机模型只需要提供一个从像素传递到投影光线的非投影函数,就可以使用重定位。
B、未矫正的立体SLAM
大多数立体SLAM系统假设立体帧被校正,即使用相同的焦距将两个图像转换为针孔投影,图像平面共面,并与水平极线对齐,使得一个图像中的特征可以通过观察另一图像中的同一行来容易地匹配。然而,校正后的立体图像的假设是非常有限的,并且在许多应用中,既不合适也不可行。例如,校正发散立体相机对或立体鱼眼相机将需要严重的图像裁剪,从而失去大视场的优势。因此,我们的系统不依赖于图像校正,将双目安装视为两个单眼相机,具有:
1) 它们之间的恒定相对SE(3)变换,和 2)可选地,观察场景的相同部分的公共图像区域。
这些约束使我们能够通过在对新路标进行三角测量和BA优化时引入该信息来有效地估计地图的尺度。根据这一想法,本文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.
获得的预积分旋转,速度以及位置测量,表示为∆ Ri,i+1,∆ Vi,i+1,∆ Pi,i+1,以及一个整个测量向量的协方差矩阵ΣIi,i+1。给出这些预积分项以及状态Si和Si+1,我们采用惯导残差rIi,i+1的定义:
Log:SO(3)->R3,从一个李群空间到向量空间。
重投影误差rij在第i帧和在位姿xj的3D点j之间:
结合惯性和视觉残差项,视觉-惯导SLAM可以被称为一个基于关键帧的最小化问题。给定K+1个关键帧的集合以及其状态̄ k = {S0 . . . Sk },以及一个包含l个3D点的集合和对应的状态X = {x0 . . . xl−1 },视觉-惯导优化问题表示为:
Kj是观测到3D点j的关键帧的集合。这种优化可以概括为图2a中所示的因子图。
注意,对于重投影误差,我们使用鲁棒的Huber核来减少虚假匹配的影响,而对于惯性残差,由于不存在错误关联,因此不需要它。
这种优化需要有效地适应跟踪和映射过程,但更重要的是,它需要良好的初始值才能收敛到准确的解。
B、IMU 初始化
本步骤的目标是获得惯性变量的良好初始值:本体速度,重力方向,以及IMU偏置。
本文中,我们提出了一种基于三个关键见解的快速准确的初始化方法:
在适当考虑传感器不确定性的情况下,我们将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 = Rwg gI,gI = (0, 0, G) T,G是重力的大小;b = (ba , bg ) ∈ R6是加速度计和陀螺仪的偏置,在初始化阶段被认为是常量。v̄0:k∈R3是从第一个关键帧到最后一个关键帧的本体速度,最初的估计来自于T0:k。在这一点上,我们只考虑惯性测量集合I0:k = {I0,1 . . . Ik−1,k }。因此,我们可以陈述MAP估计问题,其中要最大化的后验分布是
p(I0:k |Yk )表示似然估计,p(Yk )表示先验值。考虑到测量的独立性,仅惯性MAP估计问题可以写成
取负对数,并假设IMU预积分和先验分布的高斯误差,这最终导致优化问题:
如图2c所示,这种优化与方程4的不同之处在于,不包括视觉残差,因为视觉SLAM估计的最新轨迹被视为常数,并添加了迫使IMU偏置接近零的先验残差。协方差矩阵∑b表示关于IMU偏置可能取值范围的先验知识。IMU协方差∑II−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.
当我们在流形中进行优化时,我们需要定义一个收缩,以在优化过程中更新Rwg。由于围绕重力方向的旋转不假设重力发生变化,因此此更新使用两个角度(δαg,δβg)进行参数化:
为了保证尺度因子在优化过程中保持正,我们将其更新定义为:
一旦仅惯性优化完成,帧姿态和速度以及3D地图点就用估计的比例因子进行缩放,并旋转以使z轴与估计的重力方向对齐。更新偏置并重复IMU预积分,旨在减少未来的线性化误差。
3)视觉-惯导MAP估计:
一旦我们对惯性和视觉参数有了很好的估计,我们就可以进行联合视觉惯性优化,以进一步完善结果。这种优化可以表示为图2a,但对于所有关键帧具有共同的偏置,并且包括与仅惯性步骤中相同的偏置的先验信息。
我们在EuRoC数据集[6]上进行的详尽初始化实验表明,这种初始化非常有效,在2秒的轨迹下实现了5%的尺度误差。为了改进初始估计,在初始化后5秒和15秒进行视觉惯性BA,收敛到1%的标度误差,如第VII节所示。在这些BA之后,我们说地图已经成熟,这意味着尺度、IMU参数和重力方向已经得到了准确的估计。
在某些特定情况下,当慢动作不能提供惯性参数的良好可观察性时,初始化可能无法在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.
D、跟踪丢失的鲁棒性
在纯视觉SLAM或VO系统中,临时的相机遮挡和快速运动会导致视觉元素的跟踪丢失,从而使系统丢失。ORB-SLAM率先使用了基于单词袋位置识别的快速重定位技术,但事实证明,这些技术不足以解决EuRoC数据集中的困难序列[3]。当跟踪到少于15个点的地图时,我们的视觉惯性系统进入视觉丢失状态,并在两个阶段实现鲁棒性:
短期丢失:根据IMU读数估计当前本体状态,并以估计的相机姿势投影地图点,并在大图像窗口内搜索匹配。得到的匹配包含在视觉惯性优化中。在大多数情况下,这允许恢复视觉跟踪。否则,5秒钟后,我们进入下一阶段。
长期丢失:如上所述,一个新的视觉惯性地图被初始化,并且它成为活动地图。如果系统在IMU初始化后15秒内丢失,则会丢弃地图。这样可以防止积累不准确和无意义的地图。
六、地图合并和回环检测
跟踪和建图线程通过将地图点投影到估计的相机姿态中并在仅有几个像素的图像窗口中搜索匹配来常规地找到帧和活动地图之间的短期和中期数据关联。
为了实现用于重新定位和回环检测的长期数据关联,ORB-SLAM使用DBoW2单词袋位置识别系统[9],[75]。这种方法也被最近实现回环检测的VO和SLAM系统所采用(表I)。
不同于跟踪,位置识别不会从一个初始的相机位姿开始。相反,DBoW2使用单词向量来构建一个关键帧的数据库,给出一个查找的图像能够有效的提供最相似的基于单词的关键帧。
在本文中,我们提出了一种新的位置识别算法,该算法具有改进的召回率,用于长期和多地图数据关联。每当建图线程创建一个新的关键帧时,就会启动位置识别,试图检测与Atlas中已经存在的任何关键帧的匹配。如果找到的匹配关键帧属于活动地图,则执行回环。否则,它是一个多地图数据关联,然后,活动地图和匹配地图被合并。作为我们方法中的第二个新颖之处,一旦估计了新关键帧和匹配地图之间的相对姿态,我们就定义了一个具有匹配关键帧及其共视图中的邻居的局部窗。在这个窗口中,我们集中搜索中期数据关联,提高了回环检测和地图合并的准确性。这两个新颖之处解释了在EuRoC实验中,与ORB-SLAM2相比,ORB-SLAM3获得了更好的精度。下面将解释不同操作的细节。
A、位置识别
为了实现更高的召回率,对于每个新的活动关键帧,我们在DBoW2数据库中查询Atlas中的几个类似关键帧。为了达到100%的精度,每一个候选都要经过几个几何验证步骤。所有几何验证步骤的基本操作包括使用它们之间的汉明距离的阈值来检查图像窗口内是否存在其描述符与地图点的ORB描述符匹配的ORB关键点。如果搜索窗口中有几个候选者,为了丢弃不明确的匹配,我们检查与第二个最近匹配的距离比。
位置识别算法的步骤是:
1)DBoW2 候选帧。
我们查询具有活动关键帧Ka的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匹配的最小集合来找到Tam的每个假设。
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,以避免巨大的计算成本。