AMCL vs 即時 SLAM:機器人定位該用哪一種

2026-09-02

「我在哪裡」跟「這裡長什麼樣子」,是不是同一個問題

機器人導航要解決的第一個問題,通常被拆成兩個子問題:環境長什麼樣子(建圖),以及機器人目前在這個環境裡的哪個位置(定位)。SLAM(同步定位與建圖)把這兩個問題綁在一起同時求解,但多數走進商用部署的機器人系統,實際運行時卻選擇把兩者拆開——先離線用 SLAM 建好一張高品質地圖,機器人上線服務時改用運算成本低得多的 AMCL(Adaptive Monte Carlo Localization)在這張固定地圖上定位,不再持續更新地圖本身。

AMCL 的核心:用粒子群表示「我可能在哪裡」

AMCL 的核心是粒子濾波(Particle Filter)——用大量隨機取樣的粒子,每個粒子代表一個「機器人可能所在位置與朝向」的假設。每次機器人移動,所有粒子依照運動模型(結合輪組里程計)各自更新位置;每次收到新的感測器觀測(例如雷射掃描),系統會依「如果機器人真的在這個粒子的位置,感測器應該看到什麼、跟實際看到的匹配程度」對每個粒子重新加權,匹配度高的粒子權重上升、匹配度低的粒子權重下降,接著依權重重新取樣粒子群——這個「預測、加權、重新取樣」的循環反覆執行,粒子群會逐漸收斂到機器人真實所在位置附近,這正是本站在 SLAM 技術總覽 文章中介紹的機率機器人學框架在定位問題上的具體實作。

為什麼多數量產系統選擇「先建圖、後定位」

持續運行完整 SLAM 需要同時處理姿態估計與地圖更新兩件事,且地圖會隨探索範圍持續增長,長時間運行下記憶體用量與運算負擔會累積上升;而多數商用場域(倉儲、賣場、醫院走廊)的環境佈局在機器人服務期間相對穩定,不需要每次運行都重新建圖。因此常見架構是離線階段先用 SLAM Toolbox 或類似工具跑一次高品質建圖流程,人工確認地圖品質無誤後固定下來,機器人上線服務時只需要在這張固定地圖上運行運算成本低得多的 AMCL,這也是 Nav2 導航堆疊 預設架構裡定位模組與建圖模組分離、各自對應不同運行模式的設計考量。

什麼場景仍然需要全程 SLAM

如果機器人服務的環境本身會頻繁變動(貨架位置常常調整的倉儲、家具經常搬動的居家環境),或者機器人需要進入完全陌生、事先沒有地圖的場域執行任務(搜救、探勘),固定地圖加 AMCL 的假設就不成立,這類場景仍然需要讓 SLAM 全程運行,持續更新地圖以反映環境的真實變化,代價是必須承受較高的運算與記憶體負擔,這也是為什麼評估「該用 AMCL 還是全程 SLAM」時,核心問題其實是「環境有多穩定」,而不是單純比較兩種技術何者更先進。

常見問題

faq_01.log
既然 SLAM 能同時定位又能更新地圖,為什麼量產機器人不乾脆全程都用 SLAM,還要多一道先建圖再用 AMCL 定位的流程?
因為全程運行 SLAM 的運算成本明顯高於只做定位——SLAM 每一刻都要同時處理「地圖要不要更新」與「我在哪裡」兩個問題,且地圖會隨時間持續增長,長時間運行下記憶體與運算負擔會累積上升;AMCL 是在一張已經固定、不再變動的地圖上運作,只需要解「我在哪裡」這一個問題,運算量遠低於同時建圖定位。多數商用場域(倉儲、賣場、工廠)的環境佈局相對穩定,不需要機器人每次運行都重新建圖,「離線建一次高品質地圖、上線後長期用輕量的 AMCL 定位」是更符合成本效益的架構,只有在環境本身會頻繁變動、或機器人需要進入全新未知場域的場景,才需要讓 SLAM 持續全程運行。
faq_02.log
AMCL 用的粒子濾波(particle filter)跟 EKF 這類濾波器有什麼不同?
最核心的差異在於機器人姿態的機率分布用什麼形式表示。EKF(延伸卡爾曼濾波)假設姿態的不確定性可以用一個高斯分布(平均值加共變異數矩陣)近似描述,運算效率高,但遇到多峰(multi-modal)不確定性——例如機器人剛開機、完全不知道自己在地圖上哪個位置,可能同時有好幾個候選位置都合理——高斯分布這種單峰假設就無法準確表達這種情況。粒子濾波用大量隨機取樣的「粒子」各自代表一個可能的姿態假設,天生就能表達多峰分布,這也是為什麼機器人剛啟動、需要處理「全域定位」(不知道起始位置、要从大量候選位置中收斂到正確答案)這類問題時,粒子濾波為基礎的 AMCL 是更常見的選擇,代價是需要維護數百到數千個粒子,運算量高於單一高斯分布的 EKF。
faq_03.log
如果機器人在 AMCL 模式下定位失準(例如被人為搬動位置),系統要怎麼發現並修正?
多數實作會持續監控粒子群的收斂程度與感測器觀測跟預測位置的匹配殘差——如果雷射掃描實際量到的環境跟目前估計位置對應的地圖區域差異過大,代表目前的位置估計很可能已經失準。常見的因應機制是動態調整粒子的取樣策略:偵測到匹配殘差持續偏高時,系統會在既有粒子群之外額外撒入一批隨機分布在地圖各處的新粒子(這個技巧稱為 augmented MCL 或 KLD 取樣的變體),讓濾波器有機會重新收斂到正確位置,而不是持續卡在錯誤的區域性最優解附近。這也是為什麼機器人被人為搬動位置後,即使沒有明確重新定位指令,多數 AMCL 實作仍然有機會在幾次掃描週期內自行恢復正確定位,但恢復所需時間跟搬動距離、環境特徵獨特程度都有關,不是絕對保證能快速修復。

相關術語

訂閱 RoboTech Lab 電子報

每週一封,整理新的教學、論文導讀與機器人業界動態。隨時可以取消訂閱。