。。。
slam 地图的一个重要优点是在BA中匹配并联合使用了之前形成的三种类型的数据
短期数据关联——从刚才的几秒中获取匹配地图元素,这是大部分仅在VO系统中使用的数据类型。一旦离开视线,这些环境元素就会被忘记,会导致连续的预测漂移,即使系统是在同一个区域移动。
中期数据关联——匹配那些靠近相机的累计误差还很小的地图元素。可以被BA用于短期观测数据用相同的方法匹配及使用,当系统在已建图区域移动,可实现零漂移。这点是我们系统与VO系统在回环检测中获得更好精度的关键。
长期数据关联——使用一种位置识别技术匹配之前访问过区域段的观测值,忽视(回环检测过程中的)累计误差即使定位迹点已经丢失(相当于使用该技术进行了重定位)。长期匹配实现定位漂移重置,并使用位置图(PG)识别对回环实现纠偏,或者想要更精确,可使用BA技术,这个是中,大重复环境中slam准确性的关键。
在这个过程中,我们实现了orb_slam2 和orb_slam 视觉-惯性4。第一个视觉和视觉-惯性系统通过充分使用短,中,长期数据关联的优点,在已建地图中实现了定位零漂移。本文,我们更近一步提供了多地图数据集合,可供我们在前面地图片段获取的BA地图元素中匹配及使用,从而实现slam系统的真正目标: 建一个地图供后续精确定位使用(building a map that can be used later to provide accurate localization.)
本文本质上是一个系统文档,重点贡献在orb_slam3 库本身,包含大部分完整和精确的视觉,视觉-惯导和多地图系统。orb-slam3 的主要创新点有:
一个单目 和双目视觉-惯导slam系统
它完全依赖于最大后验概率(MAP)估计,甚至在IMU初始化阶段也是如此。该初始化方法,之前在参考6中有提出,本我们将该方法集成到orb_slam 视觉-惯导4,并扩展到双目-惯导 slam中,经过在开源数据库上周密的评估,测试结果显示,单目和双目 视觉-惯导系统相当鲁棒,并显示比其他视觉-惯导方法精度高的多,即使在没有回环的情况下。
高召回率的位置识别
目前许多视觉slam和vo系统,使用DBoW2 词带库[9]解决位置识别问题[2][7][8]。DBoW2 需要在检测位置一致性之前需要时间一致,在同一个地方连续匹配三个关键帧,以提高召回的精度,这会导致系统在回环检测及重复利用之前地图的速度变慢。本文提出了一个新颖的地点识别算法—— 先检测候补关键帧的几何一致性,然后使用在大多数场合已经存在于地图中的三个covisible关键帧检测局部一致性。这个步骤增加了召回率,且在稠密的数据集合上可以以轻微增加的计算代价提高地图精度。
orb_slam 地图集
首个完备的处理单目或双目的视觉及视觉-惯性系统的多地图slam系统。这个地图集代表了一系列的非连续的地图,并且将所有的地图平稳的应用于: 地点识别,相机重定位,回环及精确的无缝地图拼接。这个过程可以自动的在不同时期使用及合并地图。形成递增的多时期slam。一个视觉传感器orb_slam地图集的初步版本在[10]中有说明,本文新增了地点识别系统,这个视觉-惯导 多地图系统在公开数据集上进行了评估
抽象的相机表示
使得slam 代码可以使用未知的相机模型,并且允许通过提供投影,反投影和雅可比矩阵添加新的模型。我们提供了针孔,鱼眼相机模型。
所有这些创新和一些代码的改进,使得Orb_slam3成为一个可供参考的视觉和视觉-惯导开源slam库,与参考文献中最好的系统一样的鲁棒,而且精度得到显著提高,正如第VII部分的实验结果显示,本文提供了单目,双目,单目-惯导,双目-惯导slam对比结果可供读者参考。
table 1 展现了大部分典型的 视觉和视觉-惯导系统进行了总结,展示了估计和数据处理主要使用技术,并且在表中对精度和鲁棒性进行了定性的评级,现代系统的对比报告在VII部分,经典系统见前面参考文献见[2][52]
单目SLAM 首次在MonoSlam中使用EKF 和通过相关性搜索在后续的图像中追踪到的ShiTomasi 点求解。使用技术来确保所使用的特征匹配的一致性使得中期数据关联得到了显著改善,实现了手持试视觉slam。
相反,基于关键帧的实现方法进使用少量挑选出来的关键帧预测地图,忽略了来自中间帧的信息,以关键帧的速率进行BA操作,这样耗费了较少的代价的同时得到了较高精度。最有代表性的系统是PTAM,将相机轨迹追踪和建图划为两个并列线程,基于关键帧的技术在同等计算代价下较滤波的方法有着较好精度,这个成为了视觉slam和vo领域的黄金标准。[57]使用滑动窗口BA实现了大规模单目slam,[58]使用了双滑动窗口优化及可视图。
基于这些思想,orb_slam2 使用orb 特征,该描述子实现了短期和中期数据的关联,建立了可视图限制轨迹追踪和建图的复杂性,使用DBoW2库的词带进行回环和重定位,实现长期数据关联。这是唯一一个集成了三种数据关联的可视slam系统,我们相信这是其出色准确性的关键。这这项工作中,我们通过使用新的地图集系统——当轨迹追踪丢失时开始一个新地图提高了单纯视觉slam的鲁棒性,同时通过使用新的高召回率的地点识别算法提高了在循环场景中的准确性。
直接法不提取特征,直接使用图像中的像素亮度,通过最小化光度误差预测运动和结构,LSD-SLAM 通过使用高梯度像素构建大规模的半稠密地图。然而 地图估计被简化为了位姿图,较PTAM和ORBSLAM的精度较低。混合系统SVO提取FAST特征,使用直接法逐帧追踪特征和其他零亮度像素点,使用重投影误差获取相机轨迹和3D结构。SVO 相当高效,但是是一个纯VO的方法,仅实现了短期数据关联,限制了精度。直接稀疏里程DSO 方法可以计算相机的精确位置,即使在点检测器性能较差的情况下,增加了低纹理区域或模糊图像的鲁棒性,它引入了局部光度学BA,同时优化一个7个相连关键帧的窗口和点的反向深度。该项工作可扩展到双目,使用特征进行回环和DBoW2,及视觉-惯导里程中去。直接稀疏建图DSM引入了地图直接重用方法的想法,显示了中期数据关联的重要性。在所有情况下,缺乏短期,中期和长期数据关联的集成都会导致其准确性低于我们的提议。(请参阅第七部分)
视觉和惯导传感器的结合,提高低纹理,运动模糊和闭塞环境的鲁棒性,在单目系统中,使得尺度可视。
紧密耦合方法的研究可以追溯到MSCKF [33],其中通过特征边缘化避免了特征数量上的EKF二次成本。 最初的系统在[34]中得到完善,并在[35],[36]中扩展到双目。 第一个基于关键帧和约束调整的紧耦合视觉里程计系统是OKVIS [38] [39],它也能够使用单目和双目视觉。 虽然这些系统依赖于特征点,但ROVIO [41],[42]使用直接数据关联为EFK带来了光度误差。
ORB-SLAM-VI 4首次提出了一种视觉惯性SLAM系统,该系统通过一种基于Imu预积分的高精度局部视觉惯性集数调整方法对短期,中期和长期数据关联,实现重用地图[61],[62]。 但是,其IMU初始化技术太慢,耗时15秒,降低了鲁棒性和准确性。 在[63],[64]中提出了一种更快的初始化技术,该技术基于一种封闭形式的解决方案,可以共同获取比例尺,重力,加速度计偏差和初始速度以及视觉特征深度。 至关重要的是,他们忽略了IMU噪声特性,并最小化了空间点的3D误差,而不是其重投影误差,这是基于特征的计算机视觉的关键标准。 我们以前的工作[65]表明,这会导致大的不可预测的错误。
VINS-Mono [7]是一个非常准确且鲁棒的单目惯性里程系统,具有基于DBoW2的回环检测和4 DoF姿态图优化以及地图拼接功能。 特征跟踪是使用Lucas-Kanade的跟踪器执行的,比描述符匹配要健壮得多。 在VINS-Fusion [44]中,被扩展到双目和双目惯性。 Kimera [8]是一种新颖的,出色的度量语义建图系统,但其度量部分由双目惯性里程计,使用DBoW2的回环和姿态图优化组成,实现了与VINS-Fusion相似的精度。 最新的BASALT [47]是一种双目视觉惯性里程计系统,该系统从视觉惯性里程计中提取非线性因素以在BA中使用它们,并使用ORB特征进行回环检测,从而实现了非常好的精度。
最近,VI-DSO [66]将DSO扩展到视觉惯性里程表。 他们提出了一种捆绑调整,将惯性观测与所选高梯度像素中的光度误差相结合,提供了非常好的准确性。 成功地利用了高梯度像素中的信息,并提高了纹理较差的场景区域的鲁棒性。 他们的初始化方法依赖于视觉惯性BA,并花费20-30秒的时间使得尺度误差收敛到1%内。
在这项工作中,我们以ORB-SLAM-VI为基础,并将其扩展到双目惯性SLAM。 我们提出了一种基于最大后验(MAP)估计的新颖快速初始化方法,该方法适当考虑了视觉和惯性传感器的不确定性,并在2秒钟内达到真实比例的5%误差范围内,在15秒钟内收敛为1%的比例误差。 上面讨论的所有其他系统都是视觉惯性里程计法,其中一些系统使用回环检测进行扩展,并且缺少使用中期数据关联的能力。 我们相信,加上我们快速精确的初始化,这是我们系统获得更高精度的关键,即使是在无回环的场景序列中。
[67]首次提出了通过滤波的方案创建和融合均值地图以增加探测过程中轨迹丢失的鲁棒性。 第一个基于关键帧的多地图系统是[68],但是地图初始化是手动的,并且该系统无法合并或关联不同的子地图。 MOARSLAM [71]为协作多设备SLAM提出了一个健壮的无状态客户端-服务器体系结构, 作为协作建图系统的组成部分,已经研究了多地图功能,它具有几个建图代理和一个仅接收信息的中央服务器[69]或像C2TAM [70]那样具有双向信息流。但它的主要重点是软件体系结构,没有报告准确性结果。
最近,CCM-SLAM [72] [73]在ORB-SLAM的基础上,提出了一种具有双向信息流的多无人机分布式多图系统。 他们的重点是克服有限带宽和分布式处理的挑战,而我们的重点是准确性和鲁棒性,从而在Eu-RoC数据集上取得明显更好的结果。 ORB-SLAMM [74]也提出了ORB-SLAM2的多地图扩展,但是在我们执行无缝地图拼接时,将子地图保留为分离的对象,以构建更精确的全局地图。
VINS-Mono [7]是一种具有回环和多地图功能的视觉里程计系统,这些功能依赖于位置识别库DBoW2 [9]。 我们的实验表明,由于使用了中期数据关联,在EuRoc数据集上的单目-惯性信号融合操作,ORB-SLAM3的准确度比VINS-Monoin的高2.6倍。我们的Atlas系统也是基于DBoW2构建,但提出了一种新颖的具有较高召回率的位置识别技术,并使用局部BA实现了更详细,准确的地图拼接,在EuRoC上的精度比VINS-Monoin的多时期操作提高了3.2倍。
ORB-SLAM3建立在ORB-SLAM2 3和ORB-SLAM-VI 4之上。 它是一个完整的多地图和多会话系统,可以通过针孔和鱼眼镜头模型在单目,双目或RGB-D传感器下以纯视觉或视觉惯性模式工作。 图1显示了主要的系统组件,这些组件与ORB-SLAM2的组件并行,并具有一些重要的创新,下面概述了这些组件:
其中有一个活动的地图,在跟踪线程中对传入的帧不断进行定位,并且在局部地图线程中不断的接受关键帧进行优化和生长。在其中定位传入的帧,并由本地建图线程不断优化并与新的关键帧一起增长。 我们将地图集中的其他地图称为非活动地图。 该系统构建了一个关键帧的唯一DBoW2数据库,该数据库用于重新定位,循环关闭和地图合并。
处理传感器信息并 实时使用活动地图计算当前帧的位置,最小化匹配地图特征的重投影误差;决定当前帧是否是关键帧;在视觉-惯性模型下,通过优化惯性残差计算本地速度和imu bias。但跟踪丢失,跟踪线程尝试利用当前帧与Atlas中的所有地图进行重定位。重定位成功,则跟踪恢复,如果需要,则当前地图转为活动地图。否则,一段时间后,活动地图保存为非活动图,重新初始化一个新的活动地图。
添加新的关键帧和点到活动地图中去,删除冗余,当局部关键帧滑动窗口接近当前帧时,使用视觉和视觉-惯导集束约束细化活动地图,除此之外,在惯导过程中,imu参数使用所提出的最大后验估计技术在建图线程中进行初始化与更新。
识别活动地图和所有Atlas中的共有区域,如果共有区域在活动地图中,则执行回环检测,如果属于其他地图,则两个地图无缝拼接为一个,都为活动地图。经过一个回环检测,会开一个独立线程进行全局BA 进一步优化地图而不影响算法实时性。
惯导 ORB-SLAM在所有系统组件中均采用针孔照相机模型。 我们的目标是通过提取与相机模型相关的所有属性和函数(投影和非投影函数,雅可比矩阵等)到单独的模块中,从而从整个SLAM个中抽象相机模型,从而允许我们的系统通过提供相应的相机模块来使用任何相机模型。 在ORB-SLAM3库中,除了针孔模型外,我们还提供了Kannala-Brandt [12]鱼眼模型。 但是,相机模型的抽象提出了一些需要解决的困难,下面将进行讨论。
一个鲁棒的SLAM系统需要能够在跟踪失败时重新定位摄像机。 ORB-SLAM通过基于PnP算法[75]设置一个Perspective-n-Points解算器来解决重新定位问题,该算法在其所有公式中均假设使用经过校准的针孔照相机。 为了跟进我们的方法,我们需要一种PnP算法,该算法独立于所使用的相机模型而工作。 因此,我们采用了最大似然透视n点算法(MLPnP)[76],因为它使用投影射线作为输入,因此与相机模型完全分离。 相机模型仅需要提供从像素到投影射线的非投影功能,即可使用重新定位
大多数双目SLAM系统假定双目帧均经过极线校正,即两个图像都转换为针孔使用相同焦距的投影和像平面共面,并与水平极线对齐,这样一幅图像中的特征可以很容易地与看着另一张图片中的同一行。 然而矫正双目图像的假设非常严格,并且很多应用,都不适合也不可行。 例如,矫正发散的双目对或双目鱼眼镜头将需要进行严重的图像裁剪,从而失去了优势的大视野:更快地绘制环境并具有更好的遮挡鲁棒性。
因此,我们的系统不依赖于图像矫正,而是将立体摄影机视为两个具有以下功能的单目摄像头:
1)它们之间的相对SE(3)常数恒定不变;
2)可选的,可以观察到相同图像的公共图像区域 场景的一部分。。
这些约束条件使我们可以通过在三角测量新地标时以及在捆绑调整最优化中引入该信息来有效地估计地图的比例。根据这个想法,我们的SLAM传递估算了一个6DoF刚体姿态,其参考系统可以位于 其中一个摄像头或IMU传感器中,并代表相对于刚体姿势的摄像头。如果两个摄像头都有一个重叠的区域,我们可以在其中进行双目观察,则可以在首次看到它们时对真实比例的地标进行三角剖分。 这两幅图像的其余部分仍具有大量与SLAM极线有关的信息,并且被用作单目信息。 如在单目情况下,首先在这些区域中看到的特征是从多个角度进行三角剖分的
ORB-SLAM-VI 4是第一个能够重用地图的真正的视觉惯性SLAM系统。 但是,它仅限于针孔单眼相机,并且初始化速度太慢,在某些具有挑战性的场景中失败。 在这项工作中,我们在ORB-SLAM-VI的基础上提供了快速,准确的IMU初始化技术,以及具有针孔和鱼眼镜头摄像头的单眼惯性和双目惯性SLAM的开源SLAM库。
在纯视觉SLAM中,状态估计仅包括当前相机姿态,而在视觉惯性SLAM中,需要计算其他变量。 这是机体位姿 T i = [ R i , p i ] ∈ S E ( 3 ) Ti = [Ri,pi]∈SE(3) Ti=[Ri,pi]∈SE(3)和世界坐标系下的速度vi,以及陀螺仪和加速度计偏差 b i g b_i^g big和 b i a b_i^a bia,可根据布朗运动求解。 构成状态向量: S i = T I , v i , b i g , b i a S_i={T_I,v_i,b_i^g,b_i^a} Si=TI,vi,big,bia
对于视觉惯性SLAM,我们基于[61]中的开发理论及遵循[62]中规定,对可视的连续两帧i 和i+1 之间的Imu测量值进行预积分, 我们获得预积分的旋转角度,速度和位置测量值,分别表示为 ∆ R i , i + 1 , ∆ v i , i + 1 ∆R_{i,i + 1},∆v_{i,i + 1} ∆Ri,i+1,∆vi,i+1和 ∆ p i , i + 1 ∆p_{i,i + 1} ∆pi,i+1,以及整个测量向量的信息矩阵 Σ T i , i + 1 ΣT_{i,i + 1} ΣTi,i+1。 给定了这些预积分项和状态 S i S_i Si和 S i + 1 S_{i + 1} Si+1,我们使用[62]中的惯性残差 r T i , i + 1 r_{T_{i,i+1}} rTi,i+1的定义:
连同惯性残差,我们还使用了第i帧和3D点j在位置 x j x_j xj之间的重投影误差 r i j r_{ij} rij:
其中 Π : R 3 − > R n Π:R^3->R^n Π:R3−>Rn是对应相机模型的投影函数, u i j u_{ij} uij是在图像i上对点j的观察,得到信息矩阵 Σ i j Σ_{ij} Σij. T C B ∈ S E ( 3 ) T_{CB}∈SE(3) TCB∈SE(3)表示从机身-IMU到相机的刚性转换(左或右), 从校准中得知。⊕是李代数群在R3元素上的转换操作。
结合惯性和视觉残差项,视觉惯性SLAM可以被视为基于关键帧的最小化问题[39]。
给定k+1个关键帧和其状态集合
S ‾ k . = S 0 . . . S k {\overline{S}_k}.={S_0...S_k} Sk.=S0...Sk, 和l个3D 点和其状态集合 X . = x 0 . . . x l − 1 X.={x_0...x_{l−1}} X.=x0...xl−1, 视觉惯导优化问题可以被描述为:其中 K j K^j Kj是观测到第j个3D点云的关键帧集合。该优化可以概括为图2a所示的因子图。 请注意,对于重投影误差,我们使用鲁棒的Huber核 ρ H u b ρ_Hub ρHub来减少虚假匹配的影响,而对于惯性残差则不需要,因为不存在关联。 需要优化此算法以提高跟踪和地图绘制的效率,但更重要的是,它需要良好的初始状态来收敛以实现精确性。
此步骤的目标是为惯性变量获取良好的初始值:机体速度,重力方向和IMU偏差。 诸如VI-DSO [46]之类的某些系统尝试从视觉惯性BA找出解决结果,避开特定的初始化过程,获得了较缓慢的惯性参数的收敛速度(高达30秒)。在这项工作中,我们提出了一种基于三个方面的快速而准确的初始化方法 主要见解:•纯单目SLAM可以提供非常准确的初始化地图2,其主要问题是比例尺未知。首先解决唯一的视觉问题将增强IMU初始化。•当比例尺度明确地表示为优化变量,而不是使用BA的隐式表示时,如[77]所示,收敛速度更快。 •在IMU初始化过程中忽略传感器不确定性会产生较大的不可预测的错误[65]。
因此,在适当考虑传感器不确定性的情况下,我们将IMU初始化表示为MAP(最大后验)估计问题,分为三个步骤:
1)仅视觉的MAP估计:我们初始化纯单目SLAM 2并使用2秒时间运行它,以4Hz的频率插入关键帧。 在这段时间之后,我们得到了一个由k = 10个相机和数百个点组成的比例尺最新地图,该地图使用纯视觉BA进行了优化(图2b)。 将这些位姿转换到机体坐标系下,获得轨迹̄ T ‾ 0 : k = [ R , ˉ p ‾ ] 0 : k \overline{T}_{0:k} = [R,̄\overline{p}]_{ 0:k} T0:k=[R,ˉp]0:k,其中,上划线表示按比例缩放的变量
2)纯惯性的MAP估计:此步骤是为获得惯性变量的最佳估计,仅使用̄ T ‾ 0 : k \overline{T}_{0:k} T0:k和这些关键帧之间的惯性测量。 这些惯性变量可以放在仅惯性状态向量中:
其中 s ∈ R + s∈R^+ s∈R+是纯视觉估计中求解出来的尺度系数, R w g ∈ S O ( 3 ) R_{wg}∈SO(3) Rwg∈SO(3)是重力方向,用两个角度表示,例如世界参考系下的重力矢量为 g = R w g g I g=R^{wg}g_I g=RwggI,其中 g l = ( 0 , 0 , G ) g_l=(0,0,G) gl=(0,0,G),G为重力大小; b = ( b a , b g ) ∈ R 6 b =(b^a,b^g)∈R^6 b=(ba,bg)∈R6是在初始化期间假设的加速度计和陀螺仪偏置恒定的值; ̄ v ‾ 0 : k ∈ R 3 \overline{v}_{0:k}∈R3 v0:k∈R3是从第一个关键帧到最后一个关键帧的机体速度,最初是根据̄ T 0 : k T_{0:k} T0:k估算的。在此,我们仅考虑惯性测量的集合 L 0 : k . = L 0 , 1 , . . . L k − 1 , k L_{0:k}.={L_{0,1},...L_{k-1,k}} L0:k.=L0,1,...Lk−1,k
。 因此,我们可以表示为一个MAP估计问题,其中要最大化的后验分布是
其中, p ( L 0 : k ∣ y k ) p(L_{0:k }| y_k) p(L0:k∣yk)代表似然性, p ( y k ) p(y_k) p(yk)代表先验性。 考虑到测量的独立性,仅惯性MAP估计问题可以写为:
取负对数并为IMU预积分和先验分布假设高斯误差,最终优化问题可写为:
该优化问题对应于图2c,与等式4的不同之处在于,不包括视觉残差,但是先验残差 r p r_p rp应该接近于0,其协方差由IMU特征给出。在多情况下中进行优化时,需要定义一个尺度[62]以在优化过程中更新重力方向的估计值
是Exp(.)从so(3)到SO(3)的指数映射图。为了确保比例因子在优化过程中保持正值,我们将其更新定义为
一旦纯惯性优化完成,每帧的位姿,速度和3D地图点就会以估计的比例缩放,并旋转以使z轴与估计的重力方向对齐。 更新偏置并重复IMU预积分,以减少将来的线性化误差。
3)视觉-惯导最大后验概率估计:一旦对惯导和视觉参数有了一个好的估计,我们可以执行视觉惯性联合优化,以进一步完善解决方案。 该优化可以如图2a所示,但是对于所有关键帧具有共同的偏差,并且包括与仅惯性步骤相比相同的先验信息。
我们在EuRoC数据集6上进行的详尽初始化实验表明,这种初始化非常有效,在2秒的轨迹上实现了5%的比例误差。 为了改善初始估计,在初始化后5到15秒执行视觉惯性BA,收敛到1%的比例误差,如VII节所示。 在获得这些BA之后,我们说地图已经成熟,这意味着比例,IMU参数和重力方向已被准确估算出来。
我们的初始化比解决一组o代数方程[63]-[65]的联合初始化方法更加准确,并且比ORB-SLAM-VI 4中使用的初始化(需要15秒才能获得第一个尺度预测)要快得多,或VI-DSO [66]中使用的估计,从一个巨大的比例误差开始,需要20-30秒才能收敛到1%的误差。
通过将比例因子固定为1并从纯惯性的优化变量中移除,可以轻松地将单目惯性初始化扩展到双目惯性,从而增强其收敛性。
对于跟踪和建图,我们采用4中提出的方案。 跟踪解决简单的视觉惯性优化,其中仅优化了最后两帧的状态,而地图点保持固定。
对于建图,尝试解决等式4的整个优化问题对于大型地图而言将是棘手的。 我们使用一个滑动窗口内的关键帧及其点作为优化变量,包括可视的关键帧,但保持不变。
在某些特定情况下,当慢动作不能给惯性参数提供良好的可观察性时,初始化可能会在15秒内无法收敛到准确的解。为克服这种情况的鲁棒性,我们提出了一种新的尺度细化技术,基于改进的纯惯性优化,其中包括所有插入的关键帧,但比例和重力方向是唯一要估计的参数(图2d)。 请注意,在这种情况下,恒定偏差的假设将是不正确的。 相反,我们使用每个帧的估计值,然后对其进行固定。 这种优化具有很高的计算效率,它每十秒钟在局部建图线程中执行一次,直到地图自初始化以来已超过100个关键帧或超过75秒为止。
在纯视觉SLAM或VO系统中,暂时的相机遮挡和快速运动会导致失去视觉元素的跟踪,从而使系统迷路。 ORB-SLAM率先使用了基于词袋位置识别的快速重定位技术,但事实证明它们不足以解决EuRoC数据集中的困难序列3。 当地图跟踪少于15个点时,我们的视觉惯性系统将进入视觉丢失状态,并通过两个阶段实现鲁棒性:
•短期丢失:根据IMU的读数估算当前的机体状态,并以估算的摄像机位姿投影地图点,并在大图像窗口中搜索匹配项。 匹配结果加入视觉惯性优化中。 在大多数情况下,这可以恢复视觉跟踪。 否则,在5秒钟后,我们进入下一个阶段。
•长期丢失:一个新的视觉惯性地图如上所述进行初始化,并且成为活动的地图。
帧和活动地图之间的短期和中期数据关联通常通过跟踪和建图线程找到,方法是将地图点投影到估计的相机位姿中,并在仅几个像素的图像窗口中搜索匹配项。 为了实现用于重定位和回环检测的长期数据关联,ORB-SLAM使用DBoW2词袋位置识别系统[9],[78]。 最新的VO和SLAM系统也采用了这种方法实现回环检测的(表I)。
与跟踪不同,位置识别不是从对相机位姿的初始猜测开始的。 相反,DBoW2使用其词袋矢量构建关键帧的数据库,并且给定查询图像能够根据其词袋有效地提供最相似的关键帧。 仅使用第一个候选对象,原始DBoW2查询就可以达到50-80%的精度和召回率[9]。 为了避免误报会破坏地图,DBoW2实施了时间和几何一致性检查,将工作点的精度提高到100%,召回率达到30-40%[9],[78]。 至关重要的是,时间一致性检查延迟了位置识别至少3个关键帧。 当尝试在我们的Atlas系统中使用它时,我们发现这种延迟和低召回率结果在相同或不同地图中重复的区域里经常发生。
在这项工作中,我们提出了一种新的位置识别算法,该算法可改善长期和多地图数据关联的召回率。每当地图线程创建新的关键帧时,就会启动位置识别,以尝试检测与Atlas中已存在的任何关键帧去匹配。如果找到的匹配关键帧属于活动地图,则执行回环。否则,它是一个多地图数据关联,则将活动地图和匹配的地图合并。作为我们方法的第二个创新之处,一旦估计了新关键帧与匹配地图之间的相对位姿,我们用匹配的关键帧及其在covisibility graph中的邻居帧定义了一个局部窗口。在此窗口中,我们集中搜索中期数据的关联性,从而提高了回环检测和地图合并的准确性。这两个创新性解释了在EuRoC实验中,与ORB-SLAM2相比,ORB-SLAM3获得了更好的精度。接下来说明不同操作的细节。
为了获得较高的召回率,对于每个新的活动关键帧,我们都会在DBoW2数据库中查询Atlas中的几个相似关键帧。 为了达到100%的精度,每个候选对象都要经过几个几何验证步骤。所有几何验证步骤的基本操作包括检查图像窗口中是否存在ORB关键点,其描述符与地图一个点的ORB描述符匹配 ,使用它们之间的汉明距离作为阈值。 如果在搜索窗口中有多个候选者,为了丢弃不明确的匹配项,我们将检查与第二近匹配项的距离比[79]。 我们的位置识别算法的步骤是:
1)DBoW2候选关键帧。我们使用活动关键帧Ka查询Atlas DBoW2数据库,以检索三个最相似的关键帧,但不包括与Ka可视的关键帧。我们将每个用于位置识别的匹配候选者称为Km。
2)本地窗口。对于每一个Km,我们定义一个局部窗口,其中包括Km其最佳可视关键帧以及所有对象观察到的地图点。 DBoW2的直接索引在Ka和局部窗口的关键帧上关键点之间提供了一组假定的匹配项。在这些2D-2D匹配中,我们还可得到它们对应的地图点之间的3D-3D匹配。
3)3D对齐转换。我们使用RANSAC计算变换矩阵 T a m T_{am} Tam,以更好地将Km局部窗口中的地图点与Ka的对齐。在纯单目或单目惯性中,当地图仍不成熟时,我们计算 T a m T_{am} Tam∈Sim(3),否则计算 T a m T_{am} Tam∈SE (3)。在这两种情况下,我们都使用Hornalgorithm [80],使用最少的三个3D-3D匹配点对来找到每个关于 T a m T_{am} Tam的假设。在通过 T a m T_{am} Tam对Ka中的地图点进行转换之后,低于阈值的Ka中获得重新投影误差之后,推定的匹配项对该假设投了赞成票,如果数字超过阈值,则选择具有更多投票的假设。
4)引导匹配细化。 用Tam转换局部窗口中的所有地图点,以查找与Ka中的关键点更多的匹配项。同时也反向 搜索,在局部窗口的所有关键帧中找到Ka映射点的匹配项。 使用找到的所有匹配项,通过非线性优化对Tam进行优化,其中目标函数为双向重投影误差,并使用Huber影响函数为错误匹配项提供鲁棒性。 如果优化后的内部数超过阈值,则使用较小的图像搜索窗口启动第二次引导匹配和非线性细化。
5)在三个可视的关键帧中进行验证。 为了避免误报,DBoW2在三个连续的关键帧中位置识别延迟或丢失才触发位置识别。 我们的关键是,大多数时候,验证所需的信息已经在地图中。 为了验证位置识别,我们在地图的活动部分中搜索了两个与Ka可视的关键帧,其中局部窗口中点的匹配数超过阈值。 如果未找到它们,则使用新传入的关键帧进一步尝试验证,而无需再次触发“词袋”。 验证将持续到三个关键帧验证Tam或两个连续的新关键帧未能验证它为止
6)VI重力方向验证。 在视觉惯性的情况下,如果活动地图已经成熟,我们就可以估计出Tam∈SE(3)。 我们进一步检查俯仰角和翻滚角是否低于阈值,以验证位置识别是否正确。
当成功的位置识别在活动的地图Ma中的关键帧Ka与来自Atlas Mm中存储的其他地图的匹配关键帧Km之间通过对齐变换Tam生成多地图数据关联时,我们将启动地图合并操作。 在此过程中,必须格外小心,以确保跟踪线程可以迅速重用Mm中的信息,以避免地图重复。 为此,我们建议将Ma地图纳入Mm参考。 由于Ma 可能包含许多元素,合并可能需要很长时间,因此合并分为两个步骤。 首先,在由Ka和Km的邻居定义的焊接窗口中执行合并,然后在第二阶段,通过位图优化将校正传播到合并图的其余部分。 合并算法的详细步骤为:
1) 焊接窗组件。 焊接窗口包括Ka及其可视关键帧,Km及其可视关键帧,以及它们观察到的所有地图点。 在将它们包含在焊接窗口中之前,属于Ma的关键帧和地图点将通过Tma进行变换,以使其与Mm对齐。
2)合并地图。 地图Ma和Mm融合在一起成为新的活动地图。 要删除重复的点,将在Mm关键帧中主动搜索匹配项中的Ma点。 对于每个匹配项,都会删除Ma中的点,并保留Mm中的点,以累积该删除点的所有观测值。 由于发现了新的中期点关联,通过添加连接Mm和Ma的关键帧的边 更新可视图和基本图2。
3)焊接束调整。 执行局部BA优化焊接窗口中来自Ma和Mm的所有关键帧(图3a)。 为了保持一致性,与Mm中共视的关键帧固定。 优化完成后,焊接区域中包含的所有关键帧都可以用于相机轨迹跟踪,从而实现地图Mm的快速准确重用
4)位姿图优化。 使用整个合并图的基本图执行位姿图优化,同时将关键帧固定在焊接区域中。 此优化将校正从焊接窗口传播到地图的其余部分…
视觉惯性合并算法与纯视觉情况相比,遵循相似的步骤。 修改了步骤1)和3),以更好地利用惯性信息:
1)VI焊接窗口装配:如果活动图成熟,在将地图Ma添加进焊接窗口之前使用已知的Tma∈SE(3)对其进行旋转平移。 如果活动图还不成熟,则使用可用的Tma∈Sim(3)对齐Ma。
2)VI焊接束调整:活动关键帧Ka及其最近的5个临时关键帧的位置,速度和偏差作为可优化项。 这些变量与IMU预积分项相关。 对于地图Mm,我们进行相似的处理,包括Km及其5个时间邻域的位姿,速度和偏差,如图3b所示。 对于Mm,包括但局部窗口之前的关键帧固定,但对于Ma,包括类似的关键帧,但其位姿保持优化。 所有这些关键帧看到的所有点以及观察这些点的关键帧的位姿也都进行了优化。 所有关键帧和点都通过重投影误差关联。
回环校正算法类似于地图合并,但是在通过位置识别匹配的两个关键帧都属于活动地图的情况下。 焊接窗口是由匹配的关键帧组成的,进行重复点检测,融合过程中在可视性图和基本图中创建了新链接。 下一步是位姿图优化,以将多层嵌套校正传播到地图的其余部分。 最后一步是在考虑环路闭合中期和长期匹配之后进行全局BA找到MAP估计值。 在视觉惯性的情况下,仅在关键帧的数量低于阈值时才执行全局BA,以避免巨大的计算成本
参考:
https://arxiv.org/pdf/2007.11898.pdf#page=5&zoom=auto,-188,588
https://blog.csdn.net/qq_36559293/article/details/107791285