機器人學 —— 機器人感知(Kalman Filter)


  對於機器人感知任務而言,經常需要預判物體的運動,保證機器人在物體與自身接觸之前進行規避。比如無人機與障礙物的碰撞,足球機器人判斷足球的位置。預判的前提是對當前狀態進行准確的估計,比如足球的速度,障礙物靠近的速度。一般認為,測量是存在誤差的 —— 眼見未必為實。

1、物體的運動學模型

  物體的運動學模型使用狀態向量來表達。以2維空間的質點運動為例,物體的運動學模型可以表達為 x = [ px py vx vy ]' 。其中 px py 表示物體的位置,vx vy 表示物體的速度。如果能夠准確估計物體當前狀態x 就可以對其一段時間后的狀態進行判斷。然而當前狀態的測量噪聲會對x 的估計產生干擾。Kalman Filter 的作用就是去除這些干擾。

  卡爾曼濾波器的原理是使用馬爾科夫鏈來對隨機變量進行推測。馬爾科夫鏈是一種特殊的貝葉斯網絡,所以卡爾曼濾波器實際上是一種貝葉斯濾波器。其Graph Model 如下所示:

  

  這里需要指出的是 Xt-1 實際是未知的,但是我們以其估計量來作為實際值的最優估計。對於給定PGM,我們使用高斯分布來對隨機變量進行建模 —— 高斯分布的幾大優點見上篇博客。在不考慮子節點(還沒有發生),父節點又被認為是給定的情況下,當前節點的CPD可以認為是父節點與觀測節點的Factor product. 如果我們使用高斯模型進行建模,則factor 如下:
  

  其中,A代表轉移矩陣,給定 t 時刻的狀態,t+1時刻則由轉移矩陣確定。vm 則表示轉移噪聲 —— t+1 時刻與 t 時刻中,速度不是常量。 vo 表示觀測噪聲 —— 我們對測量的肯定程度。使用高斯模型建模后,我們可以得到p(xt+1|xt) 與p(zt|xt) 的分布。第一個定義了xt+1|x的 factor ,第二個定義了觀測模型的factor.  於是,我們可以用貝葉斯公式求取 p(xt|xt-1, zt-1 ) . 

  

  這里需要指出的是,一旦給定了zt 的父節點 xt , 那么zt 和 xt-1 是 d- Seperate 的。所以 P(zt|xt,xt-1) = P(zt|xt). 

2、最大后驗估計

  

       

  最大后驗估計對象如上,按照上述公式即可實現卡爾曼濾波器。實現后的誤差及預測結果如圖:

  

  卡爾曼濾波器的設計技巧在於,如果物體不是勻加速運動(如足球的滾動),那么位置方差可以給的較小(認為我們的運動跟蹤算法幀率足夠高,且相機檢測夠准),但是!!!速度方差一定要給的夠大,以保證能夠模擬變加速狀態!!!

  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM