卡尔曼滤波总结——KF、EFK、UKF
1.用途
現(xiàn)實(shí)是我們的處理和測(cè)量模型都是非線性的,結(jié)果就是一個(gè)不規(guī)則分布,KF能夠使用的前提就是所處理的狀態(tài)是滿足高斯分布的,為了解決這個(gè)問題,EKF是尋找一個(gè)線性函數(shù)來近似這個(gè)非線性函數(shù),而UKF就是去找一個(gè)與真實(shí)分布近似的高斯分布。
KF處理線性模型:
EKF 通過雅克比和偏導(dǎo)數(shù)近似非線性模型,但是忽略了高階導(dǎo)數(shù):(強(qiáng)非線性系統(tǒng)下誤差大,另一方面Jacobian矩陣的計(jì)算復(fù)雜)
UKF 通過去點(diǎn)的方式近似非線性模型,因?yàn)闆]有用雅克比和偏導(dǎo)數(shù),讓計(jì)算變得更加簡(jiǎn)單,同時(shí)也沒有忽略高階導(dǎo)數(shù)項(xiàng)。
PF不一定限于高斯分布
2.KF
卡爾曼濾波是一種高效率的遞歸濾波器(自回歸濾波器), 它能夠從一系列的不完全包含噪聲的測(cè)量(英文:measurement)中,估計(jì)動(dòng)態(tài)系統(tǒng)的狀態(tài),然而簡(jiǎn)單的卡爾曼濾波必須應(yīng)用在符合高斯分布的系統(tǒng)中。
百度百科是這樣說的,也就是說卡爾曼濾波第一是遞歸濾波,其次KF用于線性系統(tǒng)。
但經(jīng)過研究和改進(jìn),出現(xiàn)了很多卡爾曼,如EKF(extended kalman filter)擴(kuò)展卡爾曼,UKF(UnscentedKalmanFilter)無跡卡爾曼等等。
而我們就來研究EKF,而EKF的中心思想就是將非線性系統(tǒng)線形化后再做KF處理。
狀態(tài)方程
當(dāng)我們從最簡(jiǎn)單的系統(tǒng)開始,我們假定k時(shí)刻的系統(tǒng)狀態(tài)與k-1時(shí)刻有關(guān),于是我們可以得到方程:
其中a為常量,但是當(dāng)系統(tǒng)內(nèi)部有噪聲,我們稱為過程噪聲,計(jì)為w。所以方程可以寫成:
而我們實(shí)際觀測(cè)的時(shí)候會(huì)出現(xiàn)觀測(cè)噪聲,于是我們將觀測(cè)值計(jì)為Z,觀測(cè)噪聲為v,那我們可以把k時(shí)刻的觀測(cè)值與系統(tǒng)狀態(tài)值寫成方程:
于是最簡(jiǎn)單的系統(tǒng)狀態(tài)方程就有啦。
卡爾曼濾波算法核心思想在于預(yù)測(cè)+測(cè)量反饋,它由兩部分組成,第一部分是 線性系統(tǒng)狀態(tài)預(yù)測(cè)方程,第二部分是 線性系統(tǒng)觀測(cè)方程。
這里系統(tǒng)的預(yù)測(cè)時(shí)候,我們要將通過系統(tǒng)狀態(tài)方程計(jì)算的預(yù)測(cè)值作為先驗(yàn)信息,之后在觀測(cè)部分在重新更新這個(gè)信息。
回頭說狀態(tài)的預(yù)測(cè),我們引入一個(gè)符號(hào)^在相應(yīng)的變量上表示該變量是預(yù)計(jì)值。再說一個(gè)新概念:新息。一個(gè)時(shí)間序列{X(t)}里,根據(jù)歷史數(shù)據(jù)的預(yù)測(cè)值,新息是真實(shí)值減去預(yù)測(cè)值。
注:上有波浪線表示新息,也有用字母e表示的;上面尖的是預(yù)測(cè)值;無標(biāo)注為真實(shí)值
我們給出一個(gè)優(yōu)化過的預(yù)測(cè)值,新預(yù)測(cè)值 = 上一輪預(yù)測(cè)值(先驗(yàn)) + 權(quán)重× 新息,即:
那下一個(gè)問題就是權(quán)重g是怎么計(jì)算得出的呢?答案是間接的從噪聲里求得的。當(dāng)我們將估計(jì)協(xié)方差叫做p,而傳感器的協(xié)方差為r,我們通過這兩個(gè)值計(jì)算權(quán)重。
既然獲得了g,我們下一步將先驗(yàn)信息輸入到上面的兩個(gè)方程中獲得后驗(yàn)預(yù)測(cè)值,也就是我們的輸出值。
那整個(gè)計(jì)算步驟和過程就應(yīng)該是這樣的:
先預(yù)測(cè)后更新。具體計(jì)算過程和曲線生成可以參考levys教程的Part7。
之后我們?cè)僬f更復(fù)雜一點(diǎn)的系統(tǒng),系統(tǒng)地狀態(tài)方程引入了輸入量U。換句話說有一個(gè)U會(huì)時(shí)刻影響系統(tǒng)狀態(tài)量。
而觀測(cè)到的觀測(cè)值為
那我們新的計(jì)算方法就需要引入這兩個(gè)新的變量,
同樣是預(yù)測(cè),更新,預(yù)測(cè)下一時(shí)刻,更新的計(jì)算方式。
而當(dāng)系統(tǒng)用矩陣的方式寫的狀態(tài)方程,就需要以矩陣的方式計(jì)算。相同的數(shù)學(xué)公式及計(jì)算方法。如P的計(jì)算,
又如G,
還有P的更新,
這樣的話,我們的系統(tǒng)方程及計(jì)算步驟方式如下
需要注意的是我們使用的R是對(duì)測(cè)量誤差v的協(xié)方差,當(dāng)我們?cè)谝胍粋€(gè)Q代表過程噪聲引起的誤差時(shí),可以使系統(tǒng)表現(xiàn)更好,即使Q很小,
2.1 非線性系統(tǒng)之EKF
那如果系統(tǒng)是非線性的呢?我們?nèi)绻麑⒂^測(cè)值Z計(jì)做X的非線性函數(shù)組成的,我們的模型可以改成。
而我們的中心思想是將其線性化,如果我們使用函數(shù)一階導(dǎo)為C來計(jì)算G和P。
最后系統(tǒng)復(fù)雜到這樣的程度,
那我們就引入雅科比矩陣,雅各比矩陣就是方程矩陣對(duì)每一個(gè)變量的偏導(dǎo)數(shù)。
則在向量分析中,雅可比矩陣Jacobian matrix是該函數(shù)的所有分量(個(gè))對(duì)向量的所有分量(個(gè))的一階偏導(dǎo)數(shù)組成的矩陣。
函數(shù)有個(gè)分量,于是有行。向量有個(gè)分量,于是有列。
而最終,F(xiàn)為f方程的雅可比,H為h方程的雅可比。最終計(jì)算如下:
到這里簡(jiǎn)單的EKF就已經(jīng)完成基本介紹啦。
3.UKF
https://blog.csdn.net/qq_36355662/article/details/84300082
3.0 模型
z(k+1)=h(x(k+1))
3.1 生成sigma點(diǎn)
計(jì)算每一個(gè)sigma點(diǎn)的權(quán)重:
3.2 預(yù)測(cè)
1.根據(jù)模型預(yù)測(cè)sigma point(k+1步的分布點(diǎn))
2.預(yù)測(cè)均值(Xpred)和方差(Ppred)
無跡變換:
3.預(yù)測(cè)測(cè)量值
z(k+1)i=h(x(k+1)i)
從而zpred:
3.3更新
1.更新卡爾曼系數(shù)
其中:
2.更新最終值:
總結(jié)
以上是生活随笔為你收集整理的卡尔曼滤波总结——KF、EFK、UKF的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用 iPhone 11 和 11
- 下一篇: 买了第三方数据线,如何鉴定是否通过了 M