一、Atlas 多地图的表示
1.1 Atlas(地图集)
Atlas(地图集)
(图1)由几乎无限数量的地图组成,每个地图都有自己的关键帧、地图点、共视图和生成树。每个地图参考帧固定在建立这个地图时的第一个相机中,并且它独立于ORBSLAM中的其他地图参考。传入的视频只更新地图册中的一个地图,我们称之为活动地图(active map),我们将其余地图称为非活动地图(non active map)。该图集还包含一个所有地图的唯一DBoW2识别数据库,该数据库存储识别任何地图中任何关键帧的所有信息。
我们的系统有一个单一的位置识别步骤来检测公共地图区域,如果它们都在活动地图中,它们对应一个闭环,而如果它们在不同的地图中,它们对应一个地图合并。
1.2 新地图创建标准
当相机 tracking被认为丢失时,我们尝试在地图册中重新定位。如果在几帧内重新定位失败,活动地图将变为非活动地图并存储在地图册中。然后,启动新的地图初始化。
为了确定相机是否在轨道上,我们试探性地提出了两个必须满足的规定,否则,相机将被视为丢失:
a) 匹配特征数:当前帧与局部地图中的点之间的匹配数高于定义的阈值。
b) 相机姿态可观测性:如果检测点的几何条件较差,则相机姿态不可观测,相机定位估计不准确。
1.3 相机位姿可观测性
我们从相机的位姿误差协方差估计可观测性。我们假设地图点是被完美的估计的,因为没有办法实时地计算每一帧的地图点的协方差。测量的信息矩阵 Ω i , j \boldsymbol{\Omega}_{i, j} Ωi,j编码了地图点 j j j在相机 i i i种的观测 x i , j x_{i,j} xi,j的不确定度。它与检测到图像FAST特征点的图像分辨率成比例地调整。相机 i i i的不确定性是用 m i m_i mi点来估计的,其中 m i m_i mi是相机 i i i中与地图点匹配的特征点数。
我们用
T
^
i
,
w
∈
SE
(
3
)
\hat{\mathbf{T}}_{i, w} \in \operatorname{SE}(3)
T^i,w∈SE(3)变换估计相机的6自由度位姿。此外,我们通过6个参数
ϵ
i
\epsilon_{i}
ϵi的无偏高斯向量对其不确定性进行编码,该无偏高斯向量定义了近似于
T
i
,
ω
\mathbf{T}_{i,\omega}
Ti,ω和
T
^
i
,
ω
\hat{\mathbf{T}}_{i,\omega}
T^i,ω的李代数:
协方差矩阵
C
i
C_i
Ci:相机i位姿估计的准确度.
J
i
,
j
J_{i,j}
Ji,j:相机i中的地图点j的观测导致的相机位姿测量的雅可比矩阵
由于平移是弱可观测量,我们建议在准则中仅使用与平移误差相对应的
C
i
\mathbf{C}_i
Ci对角线值:
1.4 在多地图中的重定位
和ORB2中一样,如果相机跟踪丢失,我们使用帧来查询地图集DBoW数据库。这个查询可以在任何地图中找到更相似的关键帧。一旦我们有了候选的关键帧、建图和假定的匹配映射点,我们就执行下面的重新定位[1]。它包括通过第一个PnP和RANSAC步骤稳健地估计相机位姿,然后进行匹配的引导搜索和最终的非线性相机位姿优化。
二、无缝的地图拼接
为了检测地图合并,我们使用ORBSLAM位置识别步骤。为了降低误报风险,该算法对由共视图连接的三个关键帧进行重复位置识别。此外,在合并过程中,活动地图会吞并已找到公共区域的其他地图。合并完成后,合并的地图将完全替换这两个合并地图。必要时,我们将使用a、s和m子索引分别代表活动的、吞入的和合并的地图。
- 两个地图之间公共区域的检测。位置识别提供了两个匹配的关键帧 K a K_a Ka和 K s K_s Ks以及两个地图 M a M_a Ma和 M s M_s Ms中的点之间的一组假定匹配.
- 对准变换的估计。正是这种变换,立体视觉中的 S E ( 3 ) SE(3) SE(3)或单目中的 S i m ( 3 ) Sim(3) Sim(3),将两个合并地图的全局参照对齐。我们结合Horn方法[21]和RANSAC,从 M a M_a Ma和 M s M_s Ms地图点之间的假定匹配计算初始估计。我们将估计的变换应用于 K s K_s Ks的引导匹配阶段,在 K s K_s Ks中匹配 M a M_a Ma的点,最后通过对重投影误差的非线性优化来估计 T W a , W s \mathbf{T}_{W_a,W_s} TWa,Ws。
- 融合合并的地图。我们将 T W a , W s \mathbf{T}_{W_a,W_s} TWa,Ws应用于 M s M_s Ms中的所有关键帧和地图点。然后,我们检测出重复的地图点并将其融合,从而得到从 M s M_s Ms和 M a M_a Ma中的关键帧观测到的地图点。然后,我们将所有 M s M_s Ms和 M a M_a Ma关键帧合并,并将点映射到 M m M _m Mm。此外,我们还将 M s M_s Ms和 M a M_a Ma生成树以及可测图合并到 M m M_m Mm的生成树和共视图中。
- 拼接区域的局部BA。根据 M m M_m Mm共视图,它包含了所有与 K a K_a Ka共视的关键帧。为了固定尺度自由度(参数 s),在 M a M_a Ma中固定的关键帧在局部BA中仍保持固定,而其余关键帧在非线性优化过程中自由移动。我们应用第二个重复点检测和融合阶段更新 M m M_m Mm的共视图。
- 位姿图优化。最后,我们对
M
m
M_m
Mm展开了位姿图优化
合并在与跟踪线程、局部建图线程并行的线程中运行,偶尔也运行一个全局约束调整线程(上图)。在开始合并之前,局部建图线程将停止,以避免在地图集中添加新的关键帧。如果一个全局约束调整线程正在运行,它也会停止,因为BA正在运行的生成树将被更改。跟踪线程保持在旧的活动地图上运行,以保持实时操作。完成地图合并后,我们继续局部建图线程。全局约束调整(如果已停止)将重新启动以处理新数据