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」時,核心問題其實是「環境有多穩定」,而不是單純比較兩種技術何者更先進。
- amcl
- slam
- localization
- particle-filter
- navigation