卡爾曼濾波(KF)與擴展卡爾曼(EKF)


卡爾曼濾波是一種高效率的遞歸濾波器(自回歸濾波器), 它能夠從一系列的不完全包含噪聲的測量(英文:measurement)中,估計動態系統的狀態,然而簡單的卡爾曼濾波必須應用在符合高斯分布的系統中。

百度百科是這樣說的,也就是說卡爾曼濾波第一是遞歸濾波,其次KF用於線性系統。

但經過研究和改進,出現了很多卡爾曼,如EKF(extended kalman filter)擴展卡爾曼,UKF(Unscented Kalman Filter)無跡卡爾曼等等。

而我們就來研究EKF,而EKF的中心思想就是將非線性系統線形化后再做KF處理。

 

狀態方程  

 當我們從最簡單的系統開始,我們假定k時刻的系統狀態與k-1時刻有關,於是我們可以得到方程:

 其中a為常量,但是當系統內部有噪聲,我們稱為過程噪聲 ,計為w。所以方程可以寫成:

 

而我們實際觀測的時候會出現觀測噪聲,於是我們將觀測值計為Z,觀測噪聲為v,那我們可以把k時刻的觀測值與系統狀態值寫成方程:

於是最簡單的系統狀態方程就有啦。

卡爾曼濾波算法核心思想在於預測+測量反饋,它由兩部分組成,第一部分是 線性系統狀態預測方程,第二部分是 線性系統觀測方程。

這里系統的預測時候,我們要將通過系統狀態方程計算的預測值作為先驗信息,之后在觀測部分在重新更新這個信息。

 

回頭說狀態的預測,我們引入一個符號 ^在相應的變量上表示該變量是預計值。再說一個新概念:新息。一個時間序列{X(t)}里,根據歷史數據的預測值,新息是真實值減去預測值。

注:上有波浪線表示新息,也有用字母e表示的;上面尖的是預測值;無標注為真實值

我們給出一個優化過的預測值,新預測值 = 上一輪預測值(先驗) + 權重 × 新息,即:

那下一個問題就是權重g是怎么計算得出的呢?答案是間接的從噪聲里求得的。當我們將估計協方差叫做p,而傳感器的協方差為r,我們通過這兩個值計算權重。

既然獲得了g,我們下一步將先驗信息輸入到上面的兩個方程中獲得后驗預測值,也就是我們的輸出值。

那整個計算步驟和過程就應該是這樣的:

先預測后更新。具體計算過程和曲線生成可以參考levys教程的Part7。

之后我們再說更復雜一點的系統,系統地狀態方程引入了輸入量U。換句話說有一個U會時刻影響系統狀態量。

而觀測到的觀測值為

 

 那我們新的計算方法就需要引入這兩個新的變量,

 

 同樣是預測,更新,預測下一時刻,更新的計算方式。

 而當系統用矩陣的方式寫的狀態方程,就需要以矩陣的方式計算。相同的數學公式及計算方法。如P的計算,

又如G,

還有P的更新,

這樣的話,我們的系統方程及計算步驟方式如下

需要注意的是我們使用的R是對測量誤差v的協方差,當我們在引入一個Q代表過程噪聲引起的誤差時,可以使系統表現更好,即使Q很小,

 

 

 

 

那如果系統是非線性的呢?我們如果將觀測值Z計做X的非線性函數組成的,我們的模型可以改成。

 

而我們的中心思想是將其線性化,如果我們使用函數一階導為C來計算G和P

 最后系統復雜到這樣的程度,

 

那我們就引入雅科比矩陣,雅各比矩陣就是方程矩陣對每一個變量的偏導數。

則在向量分析中,雅可比矩陣Jacobian matrix是該函數的所有分量( m 個)對向量 x 的所有分量( n 個)的一階偏導數組成的矩陣。

函數有 f_1,...,f_m 個分量,於是有 m 行。向量 xx_1,...,x_n 個分量,於是有 n 列。

而最終,F為f方程的雅可比,H為h方程的雅可比。最終計算如下:

 

到這里簡單的EKF就已經完成基本介紹啦。

有興趣的可以去github上看levys的matlab代碼,鏈接在下。

 

參考資料:    

筆記參考:A0402272018

levys教程:

http://home.wlu.edu/~levys/kalman_tutorial/

levys源碼:

https://github.com/simondlevy/SensorFusion

卡爾曼濾波(KF)與擴展卡爾曼濾波(EKF)的一種理解思路及相應推導

http://blog.csdn.net/qq_18163961/article/details/52505591


免責聲明!

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



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