定位、建图与 SLAM

回环检测

回环检测,就是机器人意识到“我以前来过这里”的那一刻,并用这个识别把地图重新拉回正形。机器人四处行驶时,会一步一步地追踪自己的运动——往前一点、稍微转个弯——而每一步里那一丁点误差会悄悄累积起来,于是它对自己位置的猜测会慢慢偏离真实。这种逐渐累积的误差叫做漂移。你不妨半闭着眼、数着步子绕一栋楼走一大圈,等回到正门时,你数出来的位置会显示你在完全不同的地方。回环检测,就是机器人在门口睁开眼、认出了它,然后说“等等——这正是我出发的地方”。

这一次识别威力极大。机器人此刻知道:它原以为相距很远的两个点,其实是同一个地方,这就给了它一条硬性约束:这个环的起点和终点必须对得上。于是它可以把累积下来的误差,沿着自己走过的整条路径向后摊开,轻轻地把路线掰弯,让环真正闭合,而不是留下一道缺口或一处重叠。一张原本越漂越糊、处处对不齐的地图,会被拉回成干净而一致的形状——走廊接上了、墙不再重影、房间各归各位。

麻烦在于,认出一个重访过的地方本身既困难又冒险,因为它依赖于数据关联问题:两个地方可以看起来很像却并非同一个。一次错误的回环——在你其实身处另一个相似却不同的地点时,却宣称你回到了起点——会把地图猛地拽成一个自信却错误的形状,而且极难挽回。所以好的系统在信任一次回环之前,会要求强有力、经过仔细核验的证据,并把一次被错误接受的回环看得远比一次漏掉的回环更严重。

一台正在测绘整套公寓的扫地机器人,跑完一大圈,又回到了它出发的厨房。认出厨房后,它意识到自己的地图已经漂移了半米,于是一举把整张户型图都修正了过来。

回到一个熟悉的地点,让一次识别就能修正整段旅程累积的误差。

漂移就是回环检测要治的那种慢性误差;如果不重访一个已知的地方,一台仅靠航位推算移动的机器人就无从发现、也无从纠正这种漂移。

又称
loop-closure detectionplace revisiting闭环检测回环閉環偵測