定位、建圖與 SLAM

機器人建圖

機器人建圖,是機器人一邊行進、一邊把感測器捕捉到的一切縫合起來,從而建立一份關於周圍環境長什麼樣的記錄。想像一位測量員走遍一片地,把每道籬笆、每棵樹、每條溝渠的位置都記下來,直到這些零散的筆記湊成一張能用的地圖。機器人做的是同一件事,只不過它的筆記是一連串的感測器讀數——雷射測到的距離、攝影機拍到的圖像、聲納返回的回聲——而完成的地圖,則是一份它日後能儲存、復用、並據以推理的、關於這處空間的數字模型。

讓建圖成為一項獨立技藝的關鍵之處在於:單單一次感測器掃描,只能告訴你某一瞬間、從某一個位置看出去時機器人四周的樣子。要建起一整張地圖,你必須從許多個位置取得讀數,再把它們融合成一幅前後一致的畫面;而要做到這一點,你就得知道每一次讀數時機器人站在哪裡。建圖在它最純粹的形式下,預設那些位置已經已知且可信——比方說,機器人被沿著一條精確測量過的軌道帶著走,或者它的位置由某個外部系統釘死。一旦有了可信的位置,要做的工作就是把每一次掃描都變換到一個共同的參考系裡,再把它們一層層疊上去,讓牆與牆對齊、讓整幅畫面嚴絲合縫。

得出的結果可以有不同的形態,取決於機器人需要什麼。它可能是一張佔據柵格地圖,把空間被擋住或空閒的地方塗出來;可能是一張地標地圖,只記錄角落、立柱這樣寥寥幾個醒目的特徵;也可能是一份更豐富的三維模型。當然,在實際中,機器人很少能事先完美地知道自己的各個位置,而這恰恰就是為什麼純粹的建圖,常常要和定位捆在一起,合成 SLAM 這個聯合問題。

一家工廠裝了一台機器人,它的精確路徑由軌道固定下來,因此它每一刻的位置都精確到毫米、清清楚楚。它一邊滑行,一邊用雷射掃過貨架,把這些掃描縫合成一張倉庫通道的詳細地圖,供其他機器人取用。

當機器人的各個位置都已知時,建圖不過就是把那些掃描正確地對齊。

建圖與定位互為鏡像:建圖假定你知道自己在哪,去問「世界長什麼樣」;定位則假定你知道世界,去問「你在哪」。兩者之所以都難,恰恰是因為在真實世界裡,這兩樣你通常都得不到現成的。

又稱
mappingmap building建图地图构建