LOOP CLOSING
闭环检测线程对于,即局部建图处理的最后一个关键帧,并尝试检测和关闭循环。 接下来描述这些步骤:
A. Loop Candidates Detection
首先,我们在共视图中计算的词袋向量和其所有邻居之间的相似性(= 30)并保留最低得分。然后我们查询识别数据库并丢弃其得分低于的所有关键帧。这与前一个图像被计算获得鲁棒性作为DBoW2中的标准化分数是一个类似的操作,但在这里我们使用共视信息。此外,所有直接连接到的关键帧都会从结果中丢弃。为了接受循环候选,我们必须连续检测三个一致的循环候选(在共视图中连接的关键帧)。有几个与相似的地方,就可以有几个循环候选。
B. Compute the Similarity Transformation
在单目slam中,地图可以有七个自由度漂移,三个平移,三个旋转和一个比例因子。因此对于一个闭环,我们需要计算当前关键帧到闭环关键帧的相似矩阵。这可以告诉我们关于闭环的误差累计。相似矩阵的计算也可以作为闭环的几何校正。
我们首先按着第III-E节中解释的过程计算与当前关键帧中地图点相关联的ORB和闭环候选帧之间的关系。此时,我们为每个循环候选提供3D到3D的关系。我们或者对每一个候选执行RANSAC迭代。尝试用Horn的方法找到相似变换。如果我们用足够的内点找到了相似变换,我们优化它,并且执行有指导的搜索更多的响应。我们再一次优化它,如果被足够的内点支持,对于闭环是被接受的。
C. Loop Fusion
对于闭环矫正的第一步是融合重复的地图点,并在将附加的闭环检测的共视图插入新的边。首先,当前的关键帧位姿被相似变换更正。并且,这个矫正被传播到所有的邻域,连接变换,以便闭环的两侧对齐。被循环关键帧和它邻域看到的所有地图点都投影到中,并且在投影周围的狭窄区域搜索邻居和匹配,如第V-D部分所述。所有那些匹配的地图点和计算的内点都是被融合的。所有的在融合中涉及到的关键帧将会在共视图中更新他们的边。从而有效地创建附加闭环检测的边。
D. Essential Graph Optimization
为了有效地闭合循环,我们对第III-D节中描述的基本图执行姿态图优化,该图根据图分布循环闭合误差。在相似变换上执行优化将会改变尺度漂移。经过优化,根据观察它的一个关键帧的矫正来变换每个地图点。