定位、建圖與 SLAM

蒙地卡羅定位

蒙地卡羅定位,是機器人在拿不準時回答「我在哪」的一種巧妙、甚至帶點玩興的辦法。它不急著認定某一個猜測,而是把成千上萬個小小的猜測——稱為粒子——撒滿整張地圖,每一個都是一份完整的小假設,說著「也許我就在這裡、朝著這個方向」。這一整群猜測,就是機器人的「信念」:粒子聚得密的地方,機器人強烈懷疑自己就在那兒;一個粒子都沒有的地方,它則把這個位置排除掉了。這個名字借自蒙地卡羅的賭場,因為這套方法倚靠大量隨機抽樣,就像賭徒一擲又一擲之後,結果會一點點堆積出規律。

接著,這群粒子會玩一場分三步反覆進行的生存遊戲。第一步,當機器人移動時,每個粒子都照同樣的方式移動,並摻進一點隨機雜訊,因為真實的運動從來都不完美。第二步,機器人取一次感測器讀數,並問每個粒子:如果我真的就在你說的位置,這個讀數說得通嗎?與讀數吻合得好的粒子拿到高分,也就是高權重;與讀數相牴觸的粒子則拿到低分。第三步是重採樣——機器人培育出新一批粒子,把高分的複製下來、把落敗的淘汰掉,就像演化保留適者、淘汰其餘。一輪又一輪,倖存者構成的這團雲會朝真實位置漂移過去,並越收越緊。

這套辦法之所以惹人喜愛,在於它處理「困惑」的方式何其自然。一開始,當機器人真的毫無頭緒時,粒子可以撒得到處都是,甚至凝成好幾個彼此分開的團——如實地反映出「兩條長得一模一樣的走廊,都可能是答案」這個事實。隨著更多感測器證據到來,錯誤的團會漸漸「餓死」,直到只剩一團勝出。它不需要完美的數學,又能從容應對雜亂、含混的真實世界,這正是它成為移動機器人主力的原因。而在它的引擎蓋之下,它是一種叫作粒子濾波器的工具裡著名的一支。

一台掃地機器人在一個未知的位置被打開後,把粒子撒滿它整張地面地圖。隨著它撞到一堵牆、繞過一個拐角、讀到一道門口,錯誤的猜測紛紛消亡,直到只剩下一團密集的粒子——於是機器人有把握地宣布:它就在廚房中島旁邊。

成千上萬個猜測彼此競爭;只有那些持續與感測器吻合的才能存活下來。

有一種實用的小技巧叫自適應採樣:當機器人迷失、困惑時,讓它用很多粒子;一旦它有了把握,就自動把粒子數減下來——既省下計算量,又不損失可靠性。

又稱
MCLparticle-filter localization粒子滤波定位蒙特卡羅定位