粒子濾波(Particle Filter)
定義
粒子濾波(Particle Filter),又稱序列蒙地卡羅方法,用一大群帶權重的樣本來表示狀態的機率分佈。每一顆粒子代表一個「機器人可能在這裡」的假設。
直覺理解
在地圖上撒滿一千個小點,每個點都是機器人可能的位置。機器人移動時,每個點跟著移動(加一點隨機雜訊);雷射掃描回來後,看起來跟地圖越吻合的點權重越高;接著依權重重新抽樣,好的假設被複製、差的被淘汰。幾輪之後,點會收斂在真正的位置附近。
演算法流程
- 預測:依運動模型移動每顆粒子,
- 更新權重:
- 重取樣:依權重重新抽樣,避免大部分粒子權重趨近於零
和卡爾曼濾波比較
| 卡爾曼濾波 | 粒子濾波 | |
|---|---|---|
| 分佈假設 | 單一高斯 | 任意分佈(可多峰) |
| 非線性 | 需線性化(EKF) | 直接處理 |
| 計算量 | 低 | 隨粒子數增加 |
使用情境
- AMCL 定位:Nav2 預設的定位方法,在已知地圖上估計機器人位置。
- 全域定位與「綁架問題」:機器人開機不知道自己在哪、或被搬到別處時,粒子濾波能從均勻分佈重新收斂。
- FastSLAM:每顆粒子攜帶自己的地圖假設。
延伸閱讀
常見問題
- 粒子要用多少顆?
- 沒有固定答案,取決於狀態空間大小與初始不確定度。AMCL 使用 KLD 取樣,會在定位不確定時自動增加粒子、收斂後減少,常見設定在 500 到 5000 顆之間。
- 什麼是粒子退化(particle deprivation)?
- 重複重取樣後,所有粒子都擠在錯誤的位置附近,正確位置周圍沒有粒子,濾波器就再也找不回來。常見對策是隨機注入少量新粒子,AMCL 的 recovery 參數就是做這件事。
faq_01.log
faq_02.log