版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、卡爾曼濾波簡(jiǎn)介及其算法實(shí)現(xiàn)代碼卡爾曼濾波算法實(shí)現(xiàn)代碼(C,C分別實(shí)現(xiàn)) 卡爾曼濾波器簡(jiǎn)介 近來(lái)發(fā)現(xiàn)有些問(wèn)題很多人都很感興趣。所以在這里希望能盡自己能力跟大家討論一些力所能及的算法?,F(xiàn)在先討論一下卡爾曼濾波器,如果時(shí)間和能力允許,我還希望能夠?qū)憣懫渌乃惴ǎ邕z傳算法,傅立葉變換,數(shù)字濾波,神經(jīng)網(wǎng)絡(luò),圖像處理等等。因?yàn)檫@里不能寫復(fù)雜的數(shù)學(xué)公式,所以也只能形象的描述。希望如果哪位是這方面的專家,歡迎討論更正。卡爾曼濾波器 Kalman Filter1什么是卡爾曼濾波器(What is the Kalman Filter?)在學(xué)習(xí)卡爾曼濾波器之前,首先看看為什么叫“卡爾曼”。跟其他著名的理論(例如
2、傅立葉變換,泰勒級(jí)數(shù)等等)一樣,卡爾曼也是一個(gè)人的名字,而跟他們不同的是,他是個(gè)現(xiàn)代人!卡爾曼全名Rudolf Emil Kalman,匈牙利數(shù)學(xué)家,1930年出生于匈牙利首都布達(dá)佩斯。1953,1954年于麻省理工學(xué)院分別獲得電機(jī)工程學(xué)士及碩士學(xué)位。1957年于哥倫比亞大學(xué)獲得博士學(xué)位。我們現(xiàn)在要學(xué)習(xí)的卡爾曼濾波器,正是源于他的博士論文和1960年發(fā)表的論文A New Approach to Linear Filtering and Prediction Problems(線性濾波與預(yù)測(cè)問(wèn)題的新方法)。如果對(duì)這編論文有興趣,可以到這里的地址下載: /w
3、elch/media/pdf/Kalman1960.pdf。 簡(jiǎn)單來(lái)說(shuō),卡爾曼濾波器是一個(gè)“optimal recursive data processing algorithm(最優(yōu)化自回歸數(shù)據(jù)處理算法)”。對(duì)于解決很大部分的問(wèn)題,他是最優(yōu),效率最高甚至是最有用的。他的廣泛應(yīng)用已經(jīng)超過(guò)30年,包括機(jī)器人導(dǎo)航,控制,傳感器數(shù)據(jù)融合甚至在軍事方面的雷達(dá)系統(tǒng)以及導(dǎo)彈追蹤等等。近年來(lái)更被應(yīng)用于計(jì)算機(jī)圖像處理,例如頭臉識(shí)別,圖像分割,圖像邊緣檢測(cè)等等。2卡爾曼濾波器的介紹(Introduction to the Kalman Filter)為了可以更加容易的理解卡爾曼濾波器,這里會(huì)應(yīng)用形象的描述方法來(lái)
4、講解,而不是像大多數(shù)參考書那樣羅列一大堆的數(shù)學(xué)公式和數(shù)學(xué)符號(hào)。但是,他的5條公式是其核心內(nèi)容。結(jié)合現(xiàn)代的計(jì)算機(jī),其實(shí)卡爾曼的程序相當(dāng)?shù)暮?jiǎn)單,只要你理解了他的那5條公式。在介紹他的5條公式之前,先讓我們來(lái)根據(jù)下面的例子一步一步的探索。假設(shè)我們要研究的對(duì)象是一個(gè)房間的溫度。根據(jù)你的經(jīng)驗(yàn)判斷,這個(gè)房間的溫度是恒定的,也就是下一分鐘的溫度等于現(xiàn)在這一分鐘的溫度(假設(shè)我們用一分鐘來(lái)做時(shí)間單位)。假設(shè)你對(duì)你的經(jīng)驗(yàn)不是100%的相信,可能會(huì)有上下偏差幾度。我們把這些偏差看成是高斯白噪聲(White Gaussian Noise),也就是這些偏差跟前后時(shí)間是沒(méi)有關(guān)系的而且符合高斯分配(Gaussian Dis
5、tribution)。另外,我們?cè)诜块g里放一個(gè)溫度計(jì),但是這個(gè)溫度計(jì)也不準(zhǔn)確的,測(cè)量值會(huì)比實(shí)際值偏差。我們也把這些偏差看成是高斯白噪聲。好了,現(xiàn)在對(duì)于某一分鐘我們有兩個(gè)有關(guān)于該房間的溫度值:你根據(jù)經(jīng)驗(yàn)的預(yù)測(cè)值(系統(tǒng)的預(yù)測(cè)值)和溫度計(jì)的值(測(cè)量值)。下面我們要用這兩個(gè)值結(jié)合他們各自的噪聲來(lái)估算出房間的實(shí)際溫度值。假如我們要估算k時(shí)刻的是實(shí)際溫度值。首先你要根據(jù)k-1時(shí)刻的溫度值,來(lái)預(yù)測(cè)k時(shí)刻的溫度。因?yàn)槟阆嘈艤囟仁呛愣ǖ?,所以你?huì)得到k時(shí)刻的溫度預(yù)測(cè)值是跟 k-1時(shí)刻一樣的,假設(shè)是23度,同時(shí)該值的高斯噪聲的偏差是5度(5是這樣得到的:如果k-1時(shí)刻估算出的最優(yōu)溫度值的偏差是3,你對(duì)自己預(yù)測(cè)的不
6、確定度是4度,他們平方相加再開方,就是5)。然后,你從溫度計(jì)那里得到了k時(shí)刻的溫度值,假設(shè)是25度,同時(shí)該值的偏差是4度。由于我們用于估算k時(shí)刻的實(shí)際溫度有兩個(gè)溫度值,分別是23度和25度。究竟實(shí)際溫度是多少呢?相信自己還是相信溫度計(jì)呢?究竟相信誰(shuí)多一點(diǎn),我們可以用他們的 covariance來(lái)判斷。因?yàn)镵g2=52/(52+42),所以Kg=0.78,我們可以估算出k時(shí)刻的實(shí)際溫度值是:23+0.78* (25-23)=24.56度??梢钥闯?,因?yàn)闇囟扔?jì)的covariance比較?。ū容^相信溫度計(jì)),所以估算出的最優(yōu)溫度值偏向溫度計(jì)的值?,F(xiàn)在我們已經(jīng)得到k時(shí)刻的最優(yōu)溫度值了,下一步就是要進(jìn)入
7、k+1時(shí)刻,進(jìn)行新的最優(yōu)估算。到現(xiàn)在為止,好像還沒(méi)看到什么自回歸的東西出現(xiàn)。對(duì)了,在進(jìn)入 k+1時(shí)刻之前,我們還要算出k時(shí)刻那個(gè)最優(yōu)值(24.56度)的偏差。算法如下:(1-Kg)*52)0.5=2.35。這里的5就是上面的k時(shí)刻你預(yù)測(cè)的那個(gè)23度溫度值的偏差,得出的2.35就是進(jìn)入k+1時(shí)刻以后k時(shí)刻估算出的最優(yōu)溫度值的偏差(對(duì)應(yīng)于上面的3)。就是這樣,卡爾曼濾波器就不斷的把covariance遞歸,從而估算出最優(yōu)的溫度值。他運(yùn)行的很快,而且它只保留了上一時(shí)刻的covariance。上面的Kg,就是卡爾曼增益(Kalman Gain)。他可以隨不同的時(shí)刻而改變他自己的值,是不是很神奇!下面就
8、要言歸正傳,討論真正工程系統(tǒng)上的卡爾曼。3卡爾曼濾波器算法(The Kalman Filter Algorithm)在這一部分,我們就來(lái)描述源于Dr Kalman 的卡爾曼濾波器。下面的描述,會(huì)涉及一些基本的概念知識(shí),包括概率(Probability),隨即變量(Random Variable),高斯或正態(tài)分配(Gaussian Distribution)還有State-space Model等等。但對(duì)于卡爾曼濾波器的詳細(xì)證明,這里不能一一描述。首先,我們先要引入一個(gè)離散控制過(guò)程的系統(tǒng)。該系統(tǒng)可用一個(gè)線性隨機(jī)微分方程(Linear Stochastic Difference equation)
9、來(lái)描述:X(k)=A X(k-1)+B U(k)+W(k) 再加上系統(tǒng)的測(cè)量值:Z(k)=H X(k)+V(k) 上兩式子中,X(k)是k時(shí)刻的系統(tǒng)狀態(tài),U(k)是k時(shí)刻對(duì)系統(tǒng)的控制量。A和B是系統(tǒng)參數(shù),對(duì)于多模型系統(tǒng),他們?yōu)榫仃?。Z(k)是k時(shí)刻的測(cè)量值,H 是測(cè)量系統(tǒng)的參數(shù),對(duì)于多測(cè)量系統(tǒng),H為矩陣。W(k)和V(k)分別表示過(guò)程和測(cè)量的噪聲。他們被假設(shè)成高斯白噪聲(White Gaussian Noise),他們的covariance 分別是Q,R(這里我們假設(shè)他們不隨系統(tǒng)狀態(tài)變化而變化)。對(duì)于滿足上面的條件(線性隨機(jī)微分系統(tǒng),過(guò)程和測(cè)量都是高斯白噪聲),卡爾曼濾波器是最優(yōu)的信息處理器。
10、下面我們來(lái)用他們結(jié)合他們的covariances 來(lái)估算系統(tǒng)的最優(yōu)化輸出(類似上一節(jié)那個(gè)溫度的例子)。首先我們要利用系統(tǒng)的過(guò)程模型,來(lái)預(yù)測(cè)下一狀態(tài)的系統(tǒng)。假設(shè)現(xiàn)在的系統(tǒng)狀態(tài)是k,根據(jù)系統(tǒng)的模型,可以基于系統(tǒng)的上一狀態(tài)而預(yù)測(cè)出現(xiàn)在狀態(tài):X(k|k-1)=A X(k-1|k-1)+B U(k) . (1)式(1)中,X(k|k-1)是利用上一狀態(tài)預(yù)測(cè)的結(jié)果,X(k-1|k-1)是上一狀態(tài)最優(yōu)的結(jié)果,U(k)為現(xiàn)在狀態(tài)的控制量,如果沒(méi)有控制量,它可以為0。到現(xiàn)在為止,我們的系統(tǒng)結(jié)果已經(jīng)更新了,可是,對(duì)應(yīng)于X(k|k-1)的covariance還沒(méi)更新。我們用P表示covariance:P(k|k-1
11、)=A P(k-1|k-1) A+Q (2)式 (2)中,P(k|k-1)是X(k|k-1)對(duì)應(yīng)的covariance,P(k-1|k-1)是X(k-1|k-1)對(duì)應(yīng)的 covariance,A表示A的轉(zhuǎn)置矩陣,Q是系統(tǒng)過(guò)程的covariance。式子1,2就是卡爾曼濾波器5個(gè)公式當(dāng)中的前兩個(gè),也就是對(duì)系統(tǒng)的預(yù)測(cè)?,F(xiàn)在我們有了現(xiàn)在狀態(tài)的預(yù)測(cè)結(jié)果,然后我們?cè)偈占F(xiàn)在狀態(tài)的測(cè)量值。結(jié)合預(yù)測(cè)值和測(cè)量值,我們可以得到現(xiàn)在狀態(tài)(k)的最優(yōu)化估算值X(k|k):X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1) (3)其中Kg為卡爾曼增益(Kalman Gain):Kg(k)=
12、 P(k|k-1) H / (H P(k|k-1) H + R) (4)到現(xiàn)在為止,我們已經(jīng)得到了k狀態(tài)下最優(yōu)的估算值X(k|k)。但是為了要另卡爾曼濾波器不斷的運(yùn)行下去直到系統(tǒng)過(guò)程結(jié)束,我們還要更新k狀態(tài)下X(k|k)的covariance:P(k|k)=(I-Kg(k) H)P(k|k-1) (5)其中I 為1的矩陣,對(duì)于單模型單測(cè)量,I=1。當(dāng)系統(tǒng)進(jìn)入k+1狀態(tài)時(shí),P(k|k)就是式子(2)的P(k-1|k-1)。這樣,算法就可以自回歸的運(yùn)算下去。卡爾曼濾波器的原理基本描述了,式子1,2,3,4和5就是他的5 個(gè)基本公式。根據(jù)這5個(gè)公式,可以很容易的實(shí)現(xiàn)計(jì)算機(jī)的程序。下面,我會(huì)用程序舉一
13、個(gè)實(shí)際運(yùn)行的例子。4簡(jiǎn)單例子(A Simple Example)這里我們結(jié)合第二第三節(jié),舉一個(gè)非常簡(jiǎn)單的例子來(lái)說(shuō)明卡爾曼濾波器的工作過(guò)程。所舉的例子是進(jìn)一步描述第二節(jié)的例子,而且還會(huì)配以程序模擬結(jié)果。根據(jù)第二節(jié)的描述,把房間看成一個(gè)系統(tǒng),然后對(duì)這個(gè)系統(tǒng)建模。當(dāng)然,我們見的模型不需要非常地精確。我們所知道的這個(gè)房間的溫度是跟前一時(shí)刻的溫度相同的,所以A=1。沒(méi)有控制量,所以U(k)=0。因此得出:X(k|k-1)=X(k-1|k-1) . (6)式子(2)可以改成:P(k|k-1)=P(k-1|k-1) +Q (7)因?yàn)闇y(cè)量的值是溫度計(jì)的,跟溫度直接對(duì)應(yīng),所以H=1。式子3,4,5可以改成以下:
14、X(k|k)= X(k|k-1)+Kg(k) (Z(k)-X(k|k-1) (8)Kg(k)= P(k|k-1) / (P(k|k-1) + R) (9)P(k|k)=(1-Kg(k))P(k|k-1) (10)現(xiàn)在我們模擬一組測(cè)量值作為輸入。假設(shè)房間的真實(shí)溫度為25度,我模擬了200個(gè)測(cè)量值,這些測(cè)量值的平均值為25度,但是加入了標(biāo)準(zhǔn)偏差為幾度的高斯白噪聲(在圖中為藍(lán)線)。為了令卡爾曼濾波器開始工作,我們需要告訴卡爾曼兩個(gè)零時(shí)刻的初始值,是X(0|0)和P(0|0)。他們的值不用太在意,隨便給一個(gè)就可以了,因?yàn)殡S著卡爾曼的工作,X會(huì)逐漸的收斂。但是對(duì)于P,一般不要取0,因?yàn)檫@樣可能會(huì)令卡爾曼
15、完全相信你給定的X(0|0)是系統(tǒng)最優(yōu)的,從而使算法不能收斂。我選了 X(0|0)=1度,P(0|0)=10。該系統(tǒng)的真實(shí)溫度為25度,圖中用黑線表示。圖中紅線是卡爾曼濾波器輸出的最優(yōu)化結(jié)果(該結(jié)果在算法中設(shè)置了Q=1e-6,R=1e-1)。最佳線性濾波理論起源于 40 年代美國(guó)科學(xué)家 Wiener 和前蘇聯(lián)科學(xué)家 等人的研究工作,后人統(tǒng)稱為維納濾波理論。從理論上說(shuō),維納濾波的最大缺點(diǎn)是必須用到無(wú)限過(guò)去的數(shù)據(jù),不適用于實(shí)時(shí)處理。為了克服這一缺點(diǎn), 60 年代 Kalman 把狀態(tài)空間模型引入濾波理論,并導(dǎo)出了一套遞推估計(jì)算法,后人稱之為卡爾曼濾波理論??柭鼮V波是以最小均方誤差為估計(jì)的最佳準(zhǔn)則
16、,來(lái)尋求一套遞推估計(jì)的算法,其基本思想是:采用信號(hào)與噪聲的狀態(tài)空間模型,利用前一時(shí)刻地估計(jì)值和現(xiàn)時(shí)刻的觀測(cè)值來(lái)更新對(duì)狀態(tài)變量的估計(jì),求出現(xiàn)時(shí)刻的估計(jì)值。它適合于實(shí)時(shí)處理和計(jì)算機(jī)運(yùn)算。 現(xiàn)設(shè)線性時(shí)變系統(tǒng)的離散狀態(tài)防城和觀測(cè)方程為: X(k) = F(k,k-1)X(k-1)+T(k,k-1)U(k-1) Y(k) = H(k)X(k)+N(k) 其中 X(k)和Y(k)分別是k時(shí)刻的狀態(tài)矢量和觀測(cè)矢量 F(k,k-1)為狀態(tài)轉(zhuǎn)移矩陣 U(k)為k時(shí)刻動(dòng)態(tài)噪聲 T(k,k-1)為系統(tǒng)控制矩陣 H(k)為k時(shí)刻觀測(cè)矩陣 N(k)為k時(shí)刻觀測(cè)噪聲 則卡爾曼濾波的算法流程為: 預(yù)估計(jì)X(k)= F(k,
17、k-1)X(k-1) 1. 計(jì)算預(yù)估計(jì)協(xié)方差矩陣C(k)=F(k,k-1)C(k)F(k,k-1)+T(k,k-1)Q(k)T(k,k-1)Q(k) = U(k)U(k) 2. 計(jì)算卡爾曼增益矩陣K(k) = C(k)H(k)H(k)C(k)H(k)+R(k)(-1)R(k) = N(k)N(k) 3. 更新估計(jì)X(k)=X(k)+K(k)Y(k)-H(k)X(k) 4. 計(jì)算更新后估計(jì)協(xié)防差矩陣C(k) = I-K(k)H(k)C(k)I-K(k)H(k)+K(k)R(k)K(k) 5. X(k+1) = X(k)C(k+1) = C(k)重復(fù)以上步驟 Kalman Filter科技 201
18、0-05-29 21:13:49 閱讀90 評(píng)論0 字號(hào):大中小訂閱 Kalman Filter是一個(gè)高效的遞歸濾波器,它可以實(shí)現(xiàn)從一系列的噪聲測(cè)量中,估 計(jì)動(dòng)態(tài)系統(tǒng)的狀態(tài)。廣泛應(yīng)用于包含Radar、計(jì)算機(jī)視覺(jué)在內(nèi)的等工程應(yīng)用領(lǐng)域,在控制理論和控制系統(tǒng)工程中也是一個(gè)非常重要的課題。連同線性均方規(guī)劃,卡爾曼濾波器可以用于解決LQG(Linear-quadratic-Gaussian control)問(wèn)題。卡爾曼濾波器,線性均方歸化及線性均方高斯控制器,是大部分控制領(lǐng)域基礎(chǔ)難題的主要解決途徑。目錄 1應(yīng)用實(shí)例 2 命名和發(fā)展歷史 3 基本動(dòng)態(tài)系統(tǒng)模型 4 卡爾曼濾波器 4.1 預(yù)測(cè)4.2 更新4.
19、3 不變量 5 實(shí)例 6 推導(dǎo) 6.1 后驗(yàn)估計(jì)協(xié)方差矩陣推導(dǎo) 6.2 Kalman 增益推導(dǎo)6.3 后驗(yàn)誤差協(xié)方差矩陣簡(jiǎn)化7 信息濾波8 非線性濾波器 8.1擴(kuò)展Kalman 濾波8.2 Unscented Kalman filter9 Kalman-Bucy濾波 10應(yīng)用 11參見 12參考文獻(xiàn) 13外部鏈接 1應(yīng)用實(shí)例一個(gè)簡(jiǎn)單的應(yīng)用是估計(jì)物體的位置和速度;簡(jiǎn)要描述如下:假設(shè)我們可以獲取一個(gè)物體的包含噪聲的一系列位置觀測(cè)數(shù)據(jù),我們可以獲得此物體的精確速度和位置連續(xù)更新信息。例如,對(duì)于雷達(dá)來(lái)說(shuō),我們關(guān)心的是跟蹤目標(biāo),而目標(biāo)的位置,速度,加速度的測(cè)量值是時(shí)刻含有誤差的,卡爾曼濾波器利用目標(biāo)的動(dòng)
20、態(tài)信息,去掉噪聲影響,獲取目標(biāo)此刻好的位置估計(jì)(濾波),將來(lái)位置估計(jì)(預(yù)測(cè)),也可以是過(guò)去位置估計(jì)的(插值或平滑) 2 命名和發(fā)展歷史 這個(gè)濾波器以它的發(fā)明者Rudolf.E.Kalman 而命名,但是在Kanlman之前,Thorvald Nicolai Thiele和Peter Swerling 已經(jīng)提出了類似的算法。Stanley Schmidt 首次實(shí)現(xiàn)了Kalman濾波器。在一次對(duì)NASA Ames Research Center訪問(wèn)中,卡爾曼發(fā)現(xiàn)他的方法對(duì)于解決阿波羅計(jì)劃的軌跡預(yù)測(cè)很有用,后來(lái)阿波羅飛船導(dǎo)航電腦就使用了這種濾波器。這個(gè)濾波器可以追溯到Swerling(1958),K
21、alman(1960),Kalman和Bucy(1961)發(fā)表的論文。 這個(gè)濾波器有時(shí)叫做Stratonovich-Kalman-Bucy濾波器。因?yàn)楦鼮橐话愕姆蔷€性濾波器最初由Ruslan L.Stratonovich發(fā)明,而Stratonovich-Kalman-Bucy濾波器只是非線性濾波器的一個(gè)特例。事實(shí)上,1960年夏季,Kalman和Stratonovich在一個(gè)Moscow召開的會(huì)議中相遇,而作為非線性特例的線性濾波方程,早已經(jīng)由Stratonovich在此以前發(fā)表了。 在控制領(lǐng)域,Kalman濾波被稱為線性二次型估計(jì),目前,卡爾曼濾波已經(jīng)有很多不同的實(shí)現(xiàn),有施密特?cái)U(kuò)展濾波器、信
22、息濾波器以及一系列的Bierman和Thornton 發(fā)明的平方根濾波器等,而卡爾曼最初提出的形式現(xiàn)在稱為簡(jiǎn)單卡爾曼濾波器。也許最常見的卡爾曼濾波器應(yīng)用是鎖相環(huán),它在收音機(jī)、計(jì)算機(jī)和幾乎全部視頻或通訊設(shè)備中廣泛存在。3 基本動(dòng)態(tài)系統(tǒng)模型Kalman濾波基于時(shí)域描述的線性動(dòng)態(tài)系統(tǒng),它的模型是Markov Chain,而Markov Chain建立在一個(gè)被高斯噪聲干擾的線性算子之上。系統(tǒng)的狀態(tài)可以用一個(gè)元素為實(shí)數(shù)的向量表示。 隨著離散時(shí)間的增加,這個(gè)線性算子就會(huì)作用到當(dāng)前狀態(tài)之上,產(chǎn)生一個(gè)新的狀態(tài),并且會(huì)帶入一定的噪聲,同時(shí)一些已知的控制信息也會(huì)加入。同時(shí)另外一個(gè)受噪聲干擾的線性算子將產(chǎn)生這些隱含
23、狀態(tài)的可見輸出。Kalman 濾波可以被看作為類似隱馬爾科夫模型,它們的顯著不同點(diǎn)在于:隱狀態(tài)變量的取值空間是一個(gè)連續(xù)的空間,而離散狀態(tài)空間則不是;另為,隱馬爾科夫模型可以描述下一個(gè)狀態(tài)的一個(gè)任意分布,這也與應(yīng)用于Kalman濾波器中的高斯噪聲模型相反。Kalman濾波器方程和隱馬爾科夫方程之間有很大的二重性,關(guān)于Kalman 濾波方程和隱馬爾科夫方程之間二重性參看Roweis and Ghahramani(1999)4。 為了從一系列的噪聲觀測(cè)中,應(yīng)用Kalman濾波估計(jì)觀測(cè)過(guò)程的內(nèi)部狀態(tài)。我們必須把這個(gè)過(guò)程在Kalman 濾波器的框架下建立模型, 這就意味著,對(duì)于 每一步k 我們要定義矩陣
24、 、 、 、 、 如下: Kalman Filter 假設(shè)k 時(shí)刻的真實(shí)狀態(tài)是從k-1時(shí)刻演化而來(lái),符合下式這里是作用在前一狀態(tài)的狀態(tài)轉(zhuǎn)移模型(狀態(tài)轉(zhuǎn)移矩陣)是作用在控制向量 上的控制輸入模型(輸入輸出矩陣) 是過(guò)程噪聲,假設(shè)是均值為0的白噪聲,協(xié)方差為 則: 在k時(shí)刻,假設(shè)真實(shí)狀態(tài) 的觀測(cè), 滿足如下公式: 其中 是觀測(cè)模型(觀測(cè)矩陣),它把真實(shí)狀態(tài)映射到觀測(cè)空間, 是觀測(cè)噪聲,假設(shè)它是均值是0,方差是 的高斯白噪聲: Kalman Filter基本動(dòng)態(tài)系統(tǒng)模型如圖(1)所示,圓圈代表向量,方塊代表矩陣,星號(hào)代表高斯噪聲,其協(xié)方差在右下方標(biāo)出。初始狀態(tài)以及每一時(shí)刻的噪聲向量x0, w1, .
25、, wk, v1 . vk 都為認(rèn)為是互相獨(dú)立的。實(shí)際中,真實(shí)世界中動(dòng)態(tài)系統(tǒng)并不是嚴(yán)格的符合此模型。但是Kalman模型是設(shè)計(jì)在噪聲過(guò)程工作的,一個(gè)近似的符合已經(jīng)可以使這個(gè)濾波器非常有用了,更多復(fù)雜模型關(guān)于Kalman Filter模型的變種,將在下述中討論: 圖(1) 4 卡爾曼濾波器Kalman Filter 是一個(gè)遞歸的估計(jì),即只要獲知上一時(shí)刻的狀態(tài)估計(jì)和當(dāng)前狀態(tài)的觀測(cè)就可以計(jì)算出當(dāng)前狀態(tài)的估計(jì),不同于其他的估計(jì)技術(shù),Kalman 濾波器不需要觀測(cè)或/和估計(jì)的歷史記錄,Kalman Filter 是一個(gè)純粹的時(shí)域?yàn)V波器,而不像低通濾波器等頻域?yàn)V波器那樣,需要在頻域中設(shè)計(jì),然后轉(zhuǎn)換到時(shí)域中
26、應(yīng)用。下面,代表已知從m到n-1包括m時(shí)刻的觀測(cè)在n時(shí)刻的估計(jì)值卡爾曼濾波器的狀態(tài)由以下兩個(gè)變量表示: 已知k時(shí)刻以前時(shí)刻觀測(cè)值,k時(shí)刻的狀態(tài)估計(jì)值 誤差協(xié)方差矩陣,度量狀態(tài)估計(jì)的精度程度Kalman 濾波包括兩個(gè)階段:預(yù)測(cè)和更新;在估計(jì)階段,濾波器應(yīng)用上一狀態(tài)的估計(jì)做出對(duì)當(dāng)前狀態(tài)的估計(jì)。在更新階段,濾波器利用在當(dāng)前狀態(tài)的觀測(cè)值優(yōu)化預(yù)測(cè)階段的預(yù)測(cè)值,以獲的一個(gè)更精確的當(dāng)前狀態(tài)的估計(jì)。4.1 預(yù)測(cè)狀態(tài)預(yù)測(cè): 估計(jì)協(xié)方差預(yù)測(cè):4.2 更新新息或測(cè)量余量 新息協(xié)方差 Kalman 增益 狀態(tài)估計(jì)更新 狀態(tài)協(xié)方差更新 使用上述公式計(jì)算 僅在最優(yōu)卡爾曼增益的時(shí)候有效。使用其他增益公式要復(fù)雜一些,看見推導(dǎo)
27、4.3 不變量如果模型準(zhǔn)確, 和 值將準(zhǔn)確反映最初狀態(tài)的分布,那么下面所有不變量保持不變,所有估計(jì)的誤差均值為0: 這里 表示 的期望,而協(xié)方差矩陣則反映的估計(jì)的協(xié)方差 5實(shí)例考慮在一個(gè)無(wú)摩擦、無(wú)限長(zhǎng)的直軌道上的一輛小車,它的初始位置在0點(diǎn),但是它會(huì)隨機(jī)的受到?jīng)_擊作用,我們每隔測(cè)量一次小車的位置,但是這些測(cè)量數(shù)據(jù)不是很精確。我們想建立一個(gè)關(guān)于小車位置和速度的模型,這里我們描述如何建立這個(gè)模型,以及從這個(gè)模型出發(fā)如何推導(dǎo)出Kalman 濾波器。因?yàn)樾≤嚊](méi)有控制輸入,我們可以忽略和。由于F,H,R和Q全是恒值,我們可以忽略時(shí)間下標(biāo)。小車的位置和速度用線性空間可以描述如下:這里表示速度,也就是位置對(duì)
28、時(shí)間的微分。我們假設(shè)在時(shí)間間隔k-1和k之間,小車受到一個(gè)恒定的沖擊 ,服從均值為0,方差為的正態(tài)分布,根據(jù)Newton 動(dòng)力學(xué)方程,可得到:其中, 我們發(fā)現(xiàn): 在每一時(shí)刻,我們獲取真實(shí)位置的.我們假設(shè)噪聲服噪聲干擾測(cè)量,假設(shè)測(cè)量噪聲服從均值為0,標(biāo)準(zhǔn)差為正態(tài)分布。其中 H= 1 0, 我們可以得到足夠精度的初始狀態(tài)數(shù)據(jù),所以我們可以初始化 , 如果初始位置和速度不是精確的知道,那么協(xié)方差矩陣應(yīng)該初始化為一個(gè)對(duì)角線元素B為適當(dāng)大小的矩陣如下:這樣與模型中已有信息相比,濾波器更趨向于使用首次的測(cè)量數(shù)據(jù)信息。 6 推導(dǎo)6.1 后驗(yàn)估計(jì)協(xié)方差矩陣推導(dǎo)首先開始不變量后驗(yàn)估計(jì)協(xié)方差矩陣的推導(dǎo): 帶入 定
29、義,可得 ,代入 可得 代入 可得 整理誤差向量可得, 由于誤差向量 與其他不相關(guān),所以 由協(xié)方差矩陣性質(zhì)則 :使用不變量Pk|k-1以及Rk的定義這一項(xiàng)可以寫作 ,此公式(Joseph form)對(duì)任意增益Kk的都成立,如果Kk最優(yōu)卡爾曼增益,則可以進(jìn)一步簡(jiǎn)化,見下文。6.2 Kalman 增益推導(dǎo)Kalman 濾波器是一個(gè)最小均方誤差估計(jì)器,先驗(yàn)狀態(tài)誤差估計(jì)可表示為 我們最小化這個(gè)矢量幅度平方的期望值 ,這等價(jià)于最小化后驗(yàn)估計(jì)協(xié)方差矩陣 的跡,通過(guò)展開合并公式,可得 當(dāng)矩陣導(dǎo)數(shù)為0時(shí),矩陣的跡取最小值, 從這個(gè)式子解出Kalman增益 這個(gè)增益就是最優(yōu)Kalman增益,應(yīng)用它可以得到最小均
30、方誤差。6.3 后驗(yàn)誤差協(xié)方差矩陣簡(jiǎn)化當(dāng)應(yīng)用上述最優(yōu)Kalman增益時(shí),后驗(yàn)誤差協(xié)方差可以得到簡(jiǎn)化,在最優(yōu)Kalman增益兩邊同時(shí)乘以 ,可得 ,參見后驗(yàn)誤差協(xié)方差公式展開 ,帶入上式,可得: 這個(gè)公式的計(jì)算比較簡(jiǎn)單,所以實(shí)際中總是使用這個(gè)公式,但是需注意這公式僅在最優(yōu)卡爾曼增益時(shí)它才成立。如果算術(shù)精度總是很低而導(dǎo)致數(shù)值穩(wěn)定性出現(xiàn)問(wèn)題,或者特意使用非最優(yōu)卡爾曼增益,那么就不能使用這個(gè)簡(jiǎn)化;必須使用上面導(dǎo)出的后驗(yàn)誤差協(xié)方差公式。 7 信息濾波 在信息濾波器(逆方差濾波器)中,協(xié)方差估計(jì)和狀態(tài)估計(jì)將會(huì)被信息矩陣和信息向量所取代,它們的定義如下:類似的預(yù)測(cè)協(xié)方差和預(yù)測(cè)狀態(tài)也有等價(jià)的信息形式,定義如下
31、:同樣測(cè)量協(xié)方差和測(cè)量向量定義為:信息更新現(xiàn)在變成一個(gè)加和形式:信息濾波器的主要優(yōu)點(diǎn)在于N和測(cè)量數(shù)據(jù)都可以用于濾波,簡(jiǎn)單的通過(guò)信息矩陣和信息向量的加和。為了預(yù)測(cè)信息濾波器,信息矩陣和信息向量必須變換到它們的等價(jià)狀態(tài)空間,或者應(yīng)用下述信息空間更新:這里F和必須可逆。8非線性濾波器 8.1 擴(kuò)展Kalman 濾波估計(jì)過(guò)程如以上所述,卡爾曼濾波器估計(jì)一個(gè)線性隨機(jī)差分方程描述的離散時(shí)間過(guò)程的狀態(tài)變量,但是如果被估計(jì)的過(guò)程和(或)觀測(cè)變量與過(guò)程的關(guān)系不時(shí)線性關(guān)系。那該如何處理呢?一些很有趣和成功的Kalman濾波器應(yīng)用就是處理這些情況的。將期望和方差線性化的卡爾曼濾波器稱作擴(kuò)展卡爾曼濾波器(Extend
32、ed Kalman Filter),簡(jiǎn)稱EKF。同泰勒級(jí)數(shù)類似,面對(duì)非線性關(guān)系時(shí),我們可以通過(guò)求過(guò)程和量測(cè)方程的偏導(dǎo)來(lái)線性化并計(jì)算當(dāng)前估計(jì),為了實(shí)現(xiàn)這個(gè)目的,我們必須修改上面的一些描述,我們假設(shè)過(guò)程仍具有狀態(tài)向量,但其狀態(tài)方程已變?yōu)榉蔷€性隨機(jī)差分方程的形式。 觀測(cè)變量 為:這里隨機(jī)變量 和 分別為過(guò)程噪聲和觀測(cè)噪聲。差分方程式(1.1)中的非線性函數(shù)f 將過(guò)去k-1時(shí)刻狀態(tài)與現(xiàn)在k時(shí)刻狀態(tài)聯(lián)系起來(lái)。在測(cè)量方程(2.2)中,輸入函數(shù)uk和零均值過(guò)程噪聲wk是它的參數(shù)。非線性函數(shù)h 反映了狀態(tài)變量xk 和觀測(cè)變量zk 的關(guān)系。實(shí)際中我們并不知道每一時(shí)刻噪聲wk 和vk 各自真實(shí)值,但是我們可以在假
33、設(shè)他們不存在的前提下,近似估計(jì)狀態(tài)向量和測(cè)量向量: 這里 是相對(duì)于前一時(shí)刻k的后驗(yàn)狀態(tài)估計(jì)。有一點(diǎn)非常重要,那就是擴(kuò)展卡爾曼濾波器的一個(gè)基本缺陷:離散隨機(jī)變量的分布(或連續(xù)隨機(jī)變量的密度)在經(jīng)過(guò)非線性系統(tǒng)轉(zhuǎn)化后不再是正態(tài)的了。擴(kuò)展卡爾曼濾波器其實(shí)就是一個(gè)通過(guò)線性化而達(dá)到漸進(jìn)最優(yōu)貝葉斯決策的特殊狀態(tài)估計(jì)器。Julier96中描述了一項(xiàng)有趣的研究,Julier設(shè)計(jì)了擴(kuò)展卡爾曼濾波器的一種變體,使得通過(guò)非線性轉(zhuǎn)換后的隨機(jī)變量仍具有正態(tài)分布特性。濾波器的計(jì)算原型 為了估計(jì)一個(gè)具有非線性差分和量測(cè)關(guān)系的過(guò)程,我們先給出式1.3和式1.4的一個(gè)新的線性化表示: 其中:xk 和zk是狀態(tài)向量和觀測(cè)向量的真值
34、; 和 來(lái)自1.3式和1.4式,是狀態(tài)向量和觀測(cè)向量的近似值; 是k 時(shí)刻狀態(tài)向量的后驗(yàn)估計(jì); 隨機(jī)變量wk 和vk 表示過(guò)程激勵(lì)噪聲和觀測(cè)噪聲。 A是f 對(duì)x的偏導(dǎo)的雅可比矩陣: W 是f 對(duì)w 的偏導(dǎo)的雅可比矩陣: H 是h 對(duì)x 的偏導(dǎo)的雅可比矩陣: V 是h 對(duì)v 的偏導(dǎo)的雅可比矩陣: 最佳線性濾波理論起源于40年代美國(guó)科學(xué)家Wiener和前蘇聯(lián)科學(xué)家等人的研究工作,后人統(tǒng)稱為維納濾波理論。從理論上說(shuō),維納濾波的最大缺點(diǎn)是必須用到無(wú)限過(guò)去的數(shù)據(jù),不適用于實(shí)時(shí)處理。為了克服這一缺點(diǎn),60年代Kalman把狀態(tài)空間模型引入濾波理論,并導(dǎo)出了一套遞推估計(jì)算法,后人稱之為卡爾曼濾波理論。卡爾曼
35、濾波是以最小均方誤差為估計(jì)的最佳準(zhǔn)則,來(lái)尋求一套遞推估計(jì)的算法,其基本思想是:采用信號(hào)與噪聲的狀態(tài)空間模型,利用前一時(shí)刻地估計(jì)值和現(xiàn)時(shí)刻的觀測(cè)值來(lái)更新對(duì)狀態(tài)變量的估計(jì),求出現(xiàn)時(shí)刻的估計(jì)值。它適合于實(shí)時(shí)處理和計(jì)算機(jī)運(yùn)算?,F(xiàn)設(shè)線性時(shí)變系統(tǒng)的離散狀態(tài)防城和觀測(cè)方程為:X(k) = F(k,k-1)X(k-1)+T(k,k-1)U(k-1)Y(k) = H(k)X(k)+N(k)其中X(k)和Y(k)分別是k時(shí)刻的狀態(tài)矢量和觀測(cè)矢量F(k,k-1)為狀態(tài)轉(zhuǎn)移矩陣U(k)為k時(shí)刻動(dòng)態(tài)噪聲T(k,k-1)為系統(tǒng)控制矩陣H(k)為k時(shí)刻觀測(cè)矩陣N(k)為k時(shí)刻觀測(cè)噪聲則卡爾曼濾波的算法流程為:1. 預(yù)估計(jì)X
36、(k)= F(k,k-1)X(k-1)2. 計(jì)算預(yù)估計(jì)協(xié)方差矩陣C(k)=F(k,k-1)C(k)F(k,k-1)+T(k,k-1)Q(k)T(k,k-1)Q(k) = U(k)U(k)3. 計(jì)算卡爾曼增益矩陣K(k) = C(k)H(k)H(k)C(k)H(k)+R(k)(-1)R(k) = N(k)N(k)4. 更新估計(jì)X(k)=X(k)+K(k)Y(k)-H(k)X(k)5. 計(jì)算更新后估計(jì)協(xié)防差矩陣C(k) = I-K(k)H(k)C(k)I-K(k)H(k)+K(k)R(k)K(k)6. X(k+1) = X(k)C(k+1) = C(k)重復(fù)以上步驟 其c語(yǔ)言實(shí)現(xiàn)代碼如下:#inc
37、ludestdlib.h#includerinv.cintlman(n,m,k,f,q,r,h,y,x,p,g)intn,m,k;doublef,q,r,h,y,x,p,g;inti,j,kk,ii,l,jj,js;double*e,*a,*b;e=malloc(m*m*sizeof(double);l=m;if(ln)l=n;a=malloc(l*l*sizeof(double);b=malloc(l*l*sizeof(double);for(i=0;i=n-1;i+)for(j=0;j=n-1;j+)ii=i*l+j;aii=0.0;for(kk=0;kk=n-1;kk+)aii=aii+
38、pi*n+kk*fj*n+kk;for(i=0;i=n-1;i+)for(j=0;j=n-1;j+)ii=i*n+j;pii=qii;for(kk=0;kk=n-1;kk+)pii=pii+fi*n+kk*akk*l+j;for(ii=2;ii=k;ii+)for(i=0;i=n-1;i+)for(j=0;j=m-1;j+)jj=i*l+j;ajj=0.0;for(kk=0;kk=n-1;kk+)ajj=ajj+pi*n+kk*hj*n+kk;for(i=0;i=m-1;i+)for(j=0;j=m-1;j+)jj=i*m+j;ejj=rjj;for(kk=0;kk=n-1;kk+)ejj=e
39、jj+hi*n+kk*akk*l+j;js=rinv(e,m);if(js=0)free(e);free(a);free(b);return(js);for(i=0;i=n-1;i+)for(j=0;j=m-1;j+)jj=i*m+j;gjj=0.0;for(kk=0;kk=m-1;kk+)gjj=gjj+ai*l+kk*ej*m+kk;for(i=0;i=n-1;i+)jj=(ii-1)*n+i;xjj=0.0;for(j=0;j=n-1;j+)xjj=xjj+fi*n+j*x(ii-2)*n+j;for(i=0;i=m-1;i+)jj=i*l;bjj=y(ii-1)*m+i;for(j=0
40、;j=n-1;j+)bjj=bjj-hi*n+j*x(ii-1)*n+j;for(i=0;i=n-1;i+)jj=(ii-1)*n+i;for(j=0;j=m-1;j+)xjj=xjj+gi*m+j*bj*l;if(iik)for(i=0;i=n-1;i+)for(j=0;j=n-1;j+)jj=i*l+j;ajj=0.0;for(kk=0;kk=m-1;kk+)ajj=ajj-gi*m+kk*hkk*n+j;if(i=j)ajj=1.0+ajj;for(i=0;i=n-1;i+)for(j=0;j=n-1;j+)jj=i*l+j;bjj=0.0;for(kk=0;kk=n-1;kk+)bjj
41、=bjj+ai*l+kk*pkk*n+j;for(i=0;i=n-1;i+)for(j=0;j=n-1;j+)jj=i*l+j;ajj=0.0;for(kk=0;kk=n-1;kk+)ajj=ajj+bi*l+kk*fj*n+kk;for(i=0;i=n-1;i+)for(j=0;j=n-1;j+)jj=i*n+j;pjj=qjj;for(kk=0;kk1000#pragmaonce#endif/_MSC_VER1000#include#includecv.hclasskalmanpublic:voidinit_kalman(intx,intxv,inty,intyv);CvKalman*cv
42、kalman;CvMat*state;CvMat*process_noise;CvMat*measurement;constCvMat*prediction;CvPoint2D32fget_predict(floatx,floaty);kalman(intx=0,intxv=0,inty=0,intyv=0);/virtualkalman();#endif/!defined(AFX_KALMAN_H_ED3D740F_01D2_4616_8B74_8BF57636F2C0_INCLUDED_)=kalman.cpp=#includekalman.h#include/*testerdeprint
43、ertouteslesvaleursdesvecteurs*/*testerdechangerlesmatricesdunoises*/*replacestatebycvkalman-state_post?*/CvRandStaterng;constdoubleT=0.1;kalman:kalman(intx,intxv,inty,intyv)cvkalman=cvCreateKalman(4,4,0);state=cvCreateMat(4,1,CV_32FC1);process_noise=cvCreateMat(4,1,CV_32FC1);measurement=cvCreateMat(
44、4,1,CV_32FC1);intcode=-1;/*creatematrixdata*/constfloatA=1,T,0,0,0,1,0,0,0,0,1,T,0,0,0,1;constfloatH=1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0;constfloatP=pow(320,2),pow(320,2)/T,0,0,pow(320,2)/T,pow(320,2)/pow(T,2),0,0,0,0,pow(240,2),pow(240,2)/T,0,0,pow(240,2)/T,pow(240,2)/pow(T,2);constfloatQ=pow(T,3)/3,po
45、w(T,2)/2,0,0,pow(T,2)/2,T,0,0,0,0,pow(T,3)/3,pow(T,2)/2,0,0,pow(T,2)/2,T;constfloatR=1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0;cvRandInit(&rng,0,1,-1,CV_RAND_UNI);cvZero(measurement);cvRandSetRange(&rng,0,0.1,0);rng.disttype=CV_RAND_NORMAL;cvRand(&rng,state);memcpy(cvkalman-transition_matrix-data.fl,A,sizeof(A);memcpy(cvkalman-measurement_matrix-data.fl,H,sizeof(H);memcpy(cvkalman-process_noise_cov-data.fl,Q,sizeof(Q);memcpy(cvkalman-error_cov_post-data.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教師開學(xué)前軍訓(xùn)心得體會(huì)5篇
- 物流設(shè)施與設(shè)備第二章航空管道
- 債務(wù)償付質(zhì)押合同(2篇)
- 公共事業(yè)投資合作協(xié)議書(2篇)
- 河南省安陽(yáng)市第六十二中學(xué)2022年高三語(yǔ)文下學(xué)期期末試卷含解析
- 2025年Γ-球蛋白三類項(xiàng)目合作計(jì)劃書
- 上海寫字樓租賃合同范本
- 幼兒園房屋租賃合同書范本
- 小吃街?jǐn)偽蛔赓U合同
- 長(zhǎng)期租賃合同范本
- 人防、物防、技防工作措施
- 市場(chǎng)部培訓(xùn)課程課件
- 八年級(jí)歷史上冊(cè)論述題匯總
- 資產(chǎn)評(píng)估學(xué)教程(第八版)習(xí)題及答案 喬志敏
- 《民俗旅游學(xué)》教學(xué)大綱(含課程思政元素)
- 人教版小學(xué)三年級(jí)上學(xué)期期末數(shù)學(xué)試卷(及答案)
- 2021年學(xué)校意識(shí)形態(tài)工作總結(jié)
- 《關(guān)于加強(qiáng)和改進(jìn)新時(shí)代師德師風(fēng)建設(shè)的意見》培訓(xùn)課件
- 天津高考英語(yǔ)詞匯3500
- 2023年智慧電廠垃圾焚燒發(fā)電廠解決方案
- 人資法務(wù)技能指導(dǎo)【紅皮書完整版】
評(píng)論
0/150
提交評(píng)論