DVO-SLAM详解之闭环检测
DVO-SLAM的后端用图优化的方式对位姿图进行优化,首先需要搭建位姿图,在关键帧更新之前,将每帧对应的相机位姿作为节点,相邻帧间以及每帧与其关键帧间的运动变换矩阵作为边,运动变换矩阵的信息矩阵作为边的信息。当检测到新的关键帧时,则检测与先前关键帧间是否存在闭环,若存在则作为位姿图的边加入位姿图。
一、局部闭环检测
DVO-SLAM中局部闭环检测的代码在keyframe_graph.cpp文件的insertNewKeyframe()函数中,具体流程如下图所示:
(1) 将上一个关键帧及以其为关键帧的帧搭建的局部位姿图优化后添加到全局位姿图中。
(2) 在已有关键帧中搜索离新选取的关键帧距离一定范围内的帧,作为候选帧。
(3) 在候选帧中选取满足一定条件的帧,与新的关键帧构建边加入全局位姿图中。
上文第三步中的条件,包括如下几条:
二、全局闭环检测
局部闭环检测只检测新选取的关键帧之前的关键帧,在读取完全部图片后,针对每个关键帧,在全部关键帧中寻找闭环。