定位、建圖與 SLAM

SLAM 前端與後端

SLAM 是「同時定位與建圖」的英文縮寫——指機器人一邊搞清楚自己在哪裡,一邊把自己所在之處的地圖畫出來。這件事實在太大,於是工程師把它拆成分工明確的兩半:前端和後端。前端是接觸原始感覺的那一部分。它把湧進來的海量資料——攝影機畫面、雷射掃描、輪子轉動的計數——整理成一條條乾淨而有意義的陳述,比如「從上一刻到這一刻,我向前走了大約半公尺、略微左轉」,或者「我正看著五分鐘前看過的那個牆角」。每一條這樣的陳述都是一個約束:關於兩個位置之間、或一個位置與一個地標之間如何相互關聯的線索。

後端從不去看任何一張照片或一束雷射。它只看到前端送來的那一堆約束,它的任務是找出機器人路徑與地圖的某一種安排,使其同時盡可能地吻合所有這些線索。這一點之所以重要,是因為這些線索之間會悄悄打架:每個感測器都有一點雜訊,誤差會隨時間累積,而連續二十次「我向前開了半公尺」,永遠不可能和「我又回到了出發點」嚴絲合縫地對上。後端就是那位謹慎的談判者,把每一個位置和地標都輕輕挪一點,直到整個故事盡其所能地自洽——這是一場大型的最佳化,悄無聲息地把地圖重新掰回正形。

之所以要這樣拆開,原因很實在:兩半需要的本領完全不同。前端關乎感知——認出地點、匹配形狀——而且和你裝上去的那個感測器密切綁定,所以攝影機 SLAM 和雷射 SLAM 的前端差別很大。後端關乎數學——求解一個由略微互相矛盾的方程構成的大方程組——它幾乎不在乎這些約束是從哪來的。把兩者分開,就能讓各自獨立地去設計、替換和改進。

一台送貨機器人的前端發現自己又回到了一小時前離開的那扇大樓正門,於是把這件事報告為一個迴環約束;後端隨即把整條長達一小時的路徑重新平衡,讓起點和終點終於對上,從而把整張地圖理直。

前端認出重訪的那扇門,後端把整個迴環重新縫合。

一句好記的口訣:前端從感測器裡搭出約束,後端把這些約束最佳化成一張自洽的地圖和一條自洽的路徑。

又稱
SLAM front endSLAM back end前端与后端前端與後端