定位、建圖與 SLAM
迴環偵測
迴環偵測,就是機器人意識到「我以前來過這裡」的那一刻,並用這個識別把地圖重新拉回正形。機器人四處行駛時,會一步一步地追蹤自己的運動——往前一點、稍微轉個彎——而每一步裡那一丁點誤差會悄悄累積起來,於是它對自己位置的猜測會慢慢偏離真實。這種逐漸累積的誤差叫做漂移。你不妨半閉著眼、數著步子繞一棟樓走一大圈,等回到正門時,你數出來的位置會顯示你在完全不同的地方。迴環偵測,就是機器人在門口睜開眼、認出了它,然後說「等等——這正是我出發的地方」。
這一次識別威力極大。機器人此刻知道:它原以為相距很遠的兩個點,其實是同一個地方,這就給了它一條硬性約束:這個環的起點和終點必須對得上。於是它可以把累積下來的誤差,沿著自己走過的整條路徑向後攤開,輕輕地把路線掰彎,讓環真正閉合,而不是留下一道缺口或一處重疊。一張原本越漂越糊、處處對不齊的地圖,會被拉回成乾淨而一致的形狀——走廊接上了、牆不再重影、房間各歸各位。
麻煩在於,認出一個重訪過的地方本身既困難又冒險,因為它依賴於資料關聯問題:兩個地方可以看起來很像卻並非同一個。一次錯誤的迴環——在你其實身處另一個相似卻不同的地點時,卻宣稱你回到了起點——會把地圖猛地拽成一個自信卻錯誤的形狀,而且極難挽回。所以好的系統在信任一次迴環之前,會要求強有力、經過仔細核驗的證據,並把一次被錯誤接受的迴環看得遠比一次漏掉的迴環更嚴重。
一台正在測繪整套公寓的掃地機器人,跑完一大圈,又回到了它出發的廚房。認出廚房後,它意識到自己的地圖已經漂移了半公尺,於是一舉把整張戶型圖都修正了過來。
回到一個熟悉的地點,讓一次識別就能修正整段旅程累積的誤差。
漂移就是迴環偵測要治的那種慢性誤差;如果不重訪一個已知的地方,一台僅靠航位推算移動的機器人就無從發現、也無從糾正這種漂移。
又稱
另見