卡爾曼濾波器學習筆記

weixin_34019929發表於2017-07-02

網上很多關於卡爾曼的講解,自從看到Youtube上的這個視訊,才煥然大悟!這才是真正的深入淺出呀!

以下內容摘錄於視訊,僅作學習記錄。

卡爾曼公式一

整個過程如下圖:


2301467-477c86c62d305428.png
Screen Shot 2017-07-02 at 8.53.44 PM.png
2301467-919b056ea115fd9f.png
Screen Shot 2017-07-04 at 10.38.49 PM.png
  • x 表示當前時刻的狀態
  • p 表示位置
  • v 表示速度
  • u 表示對車的控制量。不踩油門,速度為0

如果已知上一時刻的狀態X(t-1) ,那麼X(t)會是什麼呢?如下圖:

2301467-a72b4c1f6d727e6f.png
Screen Shot 2017-07-04 at 10.41.01 PM.png

而速度如下圖:

2301467-185b59ed0858b315.png
Screen Shot 2017-07-04 at 10.41.50 PM.png

通過觀察這兩個公式,發現輸出變數是輸入變數的線性組合。卡爾曼最佳的線性濾波器,它只能描述狀態與狀態之間的線性關係。上面兩個公式是線性的關係,那麼寫成矩陣的形式就是這樣:

2301467-b1571dbdd29f325e.png
Screen Shot 2017-07-04 at 10.47.21 PM.png

進一步把狀態變換矩陣提取出來:

2301467-6b39d3cc9469a944.png
Screen Shot 2017-07-04 at 10.48.01 PM.png

F:狀態轉移矩陣,表示如何從上一時刻狀態如何推測當前狀態
B:控制矩陣,表示控制量u是如何作用於當前狀態

最後公式可以簡化成:

2301467-c978333b653ea7a6.png
Screen Shot 2017-07-04 at 10.48.36 PM.png

這個就是卡爾曼濾波器的第一個公式:狀態預測公式。所有的推測都是包含噪聲的,噪聲越大,不確定性就越大。如何表示這次推測帶來了多少不確定性呢?就需要使用協方差矩陣來表示。

如何表示推測的不確定性呢?

卡爾曼公式二

2301467-bc04e17b19450166.png
Screen Shot 2017-07-02 at 8.59.37 PM.png

在卡爾曼濾波器中,所有不確定性的表述都需要用到協方差矩陣。
協方差用P表示,如何讓不確定性在每個時刻裡面傳遞呢?答案使用上面的狀態轉移矩陣。

2301467-201ce6df3c5b228a.png
Screen Shot 2017-07-02 at 9.03.14 PM.png

預測模型本身也不是百分百準確的,本身也包含噪聲。


2301467-bce372d224c25122.png
Screen Shot 2017-07-02 at 9.04.39 PM.png

Q : 表示預測模型本身帶來的噪聲。
上面的公式表示不確定性在各個時刻的傳遞關係。

卡爾曼公式三

2301467-671c19746c2f33bf.png
Screen Shot 2017-07-02 at 9.07.54 PM.png
  • z 是汽車在某一時刻觀察的值。 它們之間的變換關係是線性的。
  • 因為觀察值也不是百分百正確的,所有用v來表示觀察的噪聲。
  • 噪聲的協方差矩陣用R表示,由於觀察值是一個一維的值,所有R不是矩陣,而是一個單獨的值。

卡爾曼公式四

2301467-6a1deade37b01879.png
Screen Shot 2017-07-02 at 9.46.37 PM.png
2301467-60b4f65660542f19.png
Screen Shot 2017-07-02 at 9.40.09 PM.png

它表示實際觀測值和預期觀測值之間的殘差。引數乘以係數K就可以用來修正Xt 的值。而K是什麼?

2301467-0e5bbf84f9986f2a.png
Screen Shot 2017-07-02 at 9.41.26 PM.png

K 叫做卡爾曼係數。作用主要是:

  • 權衡預測狀態協方差P 和觀察量協方差矩陣R的大小,來決定我們是相信預測模型多一點(殘差權重小),還是觀察模型多一點(殘差權重大)。

  • 把殘差的錶行形式,從觀察域轉換到狀態域。

卡爾曼公式五

2301467-d86f7879b749be41.png
Screen Shot 2017-07-02 at 9.47.49 PM.png

更新最佳估計值的噪聲分佈,留給下一輪迭代使用。


2301467-28bc4761ed869b8a.png
Screen Shot 2017-07-02 at 9.49.54 PM.png

Demo

2301467-e58181a2b566c5f7.png
Screen Shot 2017-07-02 at 9.59.17 PM.png

Ref:

卡爾曼濾波的簡單實現(Matlab & OC)

說說卡爾曼濾波

相關文章