粒子濾波(Particle Filter)

定義

粒子濾波(Particle Filter),又稱序列蒙地卡羅方法,用一大群帶權重的樣本來表示狀態的機率分佈。每一顆粒子代表一個「機器人可能在這裡」的假設。

直覺理解

在地圖上撒滿一千個小點,每個點都是機器人可能的位置。機器人移動時,每個點跟著移動(加一點隨機雜訊);雷射掃描回來後,看起來跟地圖越吻合的點權重越高;接著依權重重新抽樣,好的假設被複製、差的被淘汰。幾輪之後,點會收斂在真正的位置附近。

演算法流程

  1. 預測:依運動模型移動每顆粒子,xk(i)∼p(xk∣xk−1(i),uk)x_k^{(i)} \sim p(x_k \mid x_{k-1}^{(i)}, u_k)
  2. 更新權重:wk(i)∝wk−1(i) p(zk∣xk(i))w_k^{(i)} \propto w_{k-1}^{(i)}\,p(z_k \mid x_k^{(i)})
  3. 重取樣:依權重重新抽樣,避免大部分粒子權重趨近於零

和卡爾曼濾波比較

卡爾曼濾波粒子濾波
分佈假設單一高斯任意分佈(可多峰)
非線性需線性化(EKF)直接處理
計算量低隨粒子數增加

使用情境

  • AMCL 定位:Nav2 預設的定位方法,在已知地圖上估計機器人位置。
  • 全域定位與「綁架問題」:機器人開機不知道自己在哪、或被搬到別處時,粒子濾波能從均勻分佈重新收斂。
  • FastSLAM:每顆粒子攜帶自己的地圖假設。

延伸閱讀

常見問題

faq_01.log
粒子要用多少顆?
沒有固定答案,取決於狀態空間大小與初始不確定度。AMCL 使用 KLD 取樣,會在定位不確定時自動增加粒子、收斂後減少,常見設定在 500 到 5000 顆之間。
faq_02.log
什麼是粒子退化(particle deprivation)?
重複重取樣後,所有粒子都擠在錯誤的位置附近,正確位置周圍沒有粒子,濾波器就再也找不回來。常見對策是隨機注入少量新粒子,AMCL 的 recovery 參數就是做這件事。

相關文章

相關術語