十一、回环检测
11.1 回环检测的意义
前端提供特征点的提取和轨迹、地图的初值,而后端负责对所有的数据进行优化。若只像视觉里程计那样仅考虑相邻时间的关键帧,会使整个SLAM出现积累误差,无法构建全局一致的轨迹和地图。
虽然后端能够估计最大后验误差。但是,回环检测能够给出除了相邻帧的一些更加久远的约束。回环检测的关键:如何有效地检测出相机经过同一个地方。回环检测对于SLAM系统意义重大。一方面,它关系到我们估计的轨迹和地图在长时间下的正确性。另一方面,由于回环检测提供了当前数据与历史数据的关联,我们还可以利用回环检测进行重定位。因此,回环检测对整个SLAM系统精度与稳健性的提升是非常明显的。
11.2 回环检测的方法
最简单的方法就是对任意两幅图像都做一遍特征匹配,根据正确匹配的数量确定哪两张图像存在关联。
根据“哪处可能出现回环”,有两种思路:
1.基于里程计的几何关系
当我们发现当前相机运动到了之前的某个位置附近时,检测它们有没有回环关系。但是由于累计误差的存在,我们往往也无法正确地发现“运动到之前的某个位置附近”这个事实,回环检测也无从谈起。
2.基于外观
它和前端、后端的估计都无关,仅根据两幅图像的相似性确定回环检测关系。这种做法摆脱了累计误差,使回环检测模块成为SLAM系统中一个相对独立的模块,能够有效地在不同场景下工作,成为视觉SLAM中主流的做法。核心是如何计算图像间的相似性。
3.工程角度
利用GPS,可在室外提供全局的位置信息。在室内不好用。
11.1.3 准确率和召回率
准确率:算法提取的所有回环中确实是真实回环的概率。
召回率:在所有真实回环中被正确检测出来的概率。
通常他们是一对矛盾。
在SLAM中,我们对准确率的要求更高,而对召回率则相对宽容一些。由于假阳性的回环将在后端的位姿图中添加根本错误的边,有时候会导致优化算法给出完全错误的结果。相比之下,召回率低一些,顶多有部分的回环没有被检测到,地图可能受一些累积误差的影响,然而仅需一两次回环就可以完全消除他们。所以在回环检测算法时,我们更倾向于把参数设置得更严格,或者在检测之后再加上回环验证的步骤。
感知偏差(假阳性):检测结果是而实际不是的。
感知变异(假阴性):检测结果不是而实际是的。