上QQ阅读APP看书,第一时间看更新
1.3.4 回环检测
回环检测,又称闭环检测(Loop Closure Detection),主要解决位姿估计随时间漂移的问题。假设实际情况下,运动主体经过一段时间运动后回到了原点,但是由于漂移,它的位置估计值却没有回到原点。如果有某种手段感知到“回到了原点”这件事,或者把“原点”识别出来,我们再把位置估计值“拉”过去,就可以消除漂移了,这就是所谓的回环检测。回环检测与“定位”和“建图”二者都有密切的关系。事实上,我们认为,地图存在的主要意义,是为了让运动主体知晓自己到达过的地方。为了实现回环检测,我们需要让运动主体具有识别曾到达过场景的能力。实现回环的手段有很多,例如我们可以在环境中某个位置设置一个标志物(如一张二维码图片),只要它看到了这个标志,就知道自己回到了原点,但是,该标志物实质上是对环境位置的一种人为标识,对应用环境提出了限制,而我们更希望通过运动主体自身携带的传感器——图像数据,来完成这一任务。例如,我们可以判断图像间的相似性,来完成回环检测,这一点和人类对事物的判断是相似的,当我们看到两张相似图片时,容易辨认它们来自同一个地方,当然,在计算机中判断两张图像相似这个任务比我们所想象的要难得多,这是一个典型的人觉得容易而计算机觉得难的命题。
如果回环检测成功,则可以显著地减小累积误差,所以回环检测,实质上是一种计算图像数据相似性的算法。由于图像的信息非常丰富,使正确检测回环的难度也降低了不少。在检测到回环之后,我们会把“A与B是同一个点”这样的信息通知后端优化算法,后端根据这些新的信息,把轨迹和地图调整到符合回环检测结果的样子。这样,如果我们有充分而且正确的回环检测,就可以消除累积误差,从而得到全局一致的轨迹和地图。