授之以漁: 卡爾曼濾波器
《授之以漁: 卡爾曼濾波器》由會員分享,可在線閱讀,更多相關(guān)《授之以漁: 卡爾曼濾波器(8頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、. . 一片綠油油的草地上有一條曲折的小徑,通向一棵大樹。一個(gè)要求被提出:從起點(diǎn)沿著小徑走到樹下?!昂芎唵?。〞A說,于是他絲毫不差地沿著小徑走到了樹下?,F(xiàn)在,難度被增加了:蒙上眼?!耙膊浑y,我當(dāng)過特種兵。〞B說,于是他歪歪扭扭地走到了樹……….旁?!鞍Γ镁貌痪?,生疏了。〞“看我的,我有DIY的
2、GPS!〞 C說,于是他像個(gè)醉漢似地走到了樹……….旁。“唉,這個(gè)GPS軟件沒做好,漂移太大。〞“我來試試。〞旁邊一人拿過GPS,蒙上眼,居然沿著小徑走到了樹下?!斑@么厲害!你是什么人"〞“卡爾曼 ! 〞“卡爾曼?!你是卡爾曼?〞眾人大吃一驚?!拔沂钦f這個(gè)GPS卡而慢。〞 這段時(shí)間研究了一下卡爾曼濾波器,有一些心得,寫出來與大家分享??柭鼮V波器與我以前講過的FIR, IIR濾波器完全不一樣,與其說屬于濾波器,不如說是屬于最優(yōu)控制的范疇。下面的內(nèi)容涉及相當(dāng)多的控制理論知識,對于在這方面缺乏的同學(xué)可能有些吃力。不過不要緊,大家關(guān)注結(jié)果,會應(yīng)用就夠了,那些晦澀的理論和推導(dǎo)可以忽略。我也會用圖片讓
3、大家更直觀的理解卡爾曼濾波器 首先回憶一下傳統(tǒng)數(shù)字濾波器。對于一個(gè)線性時(shí)不變系統(tǒng),施加一個(gè)輸入u(t),我們可以得到一個(gè)輸出y(t) .如果輸入是一個(gè)沖擊,那么輸出y(t)被稱作沖擊響應(yīng),用h(t)來表示,是系統(tǒng)的內(nèi)核。對于任意u(t),輸出y(t)可以通過u(t)與沖擊響應(yīng)h(t)的卷積得到,這是FIR濾波器的根本原理。我們還可以通過系統(tǒng)微分方程轉(zhuǎn)換為差分方程,或是通過laplace傳遞函數(shù)轉(zhuǎn)換到差分方程,最后得到一個(gè)遞推公式,這種形式的濾波器就是IIR濾波器。以前講過,一個(gè)系統(tǒng)可以用時(shí)域的微分方程來建立,然后可以用laplace的傳遞函數(shù)來處理,把解微分方程變?yōu)槎囗?xiàng)式乘法,可以簡單的求解
4、。還有另外一種處理形式就是狀態(tài)空間,以矩陣形式來處理微分方程或微分方程組,利用矩陣變換求解,類同齊次方程組的矩陣形式。例如微分方程:y’’ +3y’ + 2y = u讓X1 = y, X2 = y’ = X1’,那么上式變?yōu)椋?X2’ = -3 X2??– 2 X1- u X1’ =X2矩陣形式為:通用形式為:X’ = A*X + B*uY = C*X.可以看到,可以很輕易的微分方程或微分方程組轉(zhuǎn)換到狀態(tài)空間形式,而狀態(tài)空間與laplace傳遞函數(shù)之間可以相互轉(zhuǎn)換,事實(shí)上矩陣A的特征值就是s傳遞函數(shù)的極點(diǎn)。系統(tǒng)的傳遞函數(shù)〔陣〕可以通過矩陣變換得到:Y(s) = C * (s * I - A)-
5、1* B同理,連續(xù)域的微分方程對應(yīng)了離散域的差分方程,s對應(yīng)了z,離散域狀態(tài)空間相應(yīng)的變?yōu)椋篨(k) = A*X(k-1) + B(u-1)Y(k) = C*X(k) 我們現(xiàn)在來看看蒙眼走小徑的走法問題。假設(shè)A走過的路徑是真真正的路徑,為Za; B是用自己的大腦作為預(yù)測估計(jì)器,走出了一個(gè)預(yù)測路徑,為Zb; C用測量器,走出了一條測量路徑,為Zc。用圖片來說明:“系統(tǒng)真實(shí)輸出〞是A走過的路徑:Za = C * X;“測量輸出〞是Zb.Zb = Za + V,這里V是噪聲,即GPS的漂移;“預(yù)測估計(jì)輸出〞是Zc = C * X^,X^是預(yù)測的狀態(tài)。T是采樣延時(shí)?,F(xiàn)在,蒙上眼的情況下有兩種選擇,G
6、PS或大腦預(yù)測估計(jì)器。如果GPS很準(zhǔn)而預(yù)測不準(zhǔn),那么可以選擇GPS;如果預(yù)測準(zhǔn)確而GPS不準(zhǔn),那么選擇預(yù)測估計(jì)器,等等,沒有反響的預(yù)測估計(jì)器會因?yàn)槔鄯e誤差而導(dǎo)致越來越不準(zhǔn)。如果兩個(gè)都不準(zhǔn),該如何取舍?如何把兩者結(jié)合在一起呢?我們可以設(shè)置一個(gè)信心指數(shù)K,K在0與1之間,來說明對測量值還是預(yù)測值的信任程度:Z = K * Zb + (1 – K) * Zc= Zc + K*(Zb – Zc)(1)可以看出,當(dāng)K = 1和0時(shí),分別選擇了GPS或預(yù)測估計(jì)器.現(xiàn)在,可以把誤差Zb -Zc作為反響誤差,來修正預(yù)測估計(jì)器的結(jié)果。新的系統(tǒng)構(gòu)造圖如下:這個(gè)框圖,就是卡爾曼濾波器的根本構(gòu)造。學(xué)過現(xiàn)代控制理論的同
7、學(xué)都這個(gè)圖應(yīng)該很熟悉,與狀態(tài)變量估計(jì)控制的圖形差不多,只是其中的K = 1而且沒有噪聲項(xiàng)和系統(tǒng)反響而已。而我們下面的任務(wù),就是如何確定這個(gè)K值。......以下略去三百字的方差,與協(xié)方差的介紹.自己看吧:zh.wikipedia.org/wiki/%E5%8D%8F%E6%96%B9%E5%B7%AE........以下略去五百字的kalman Filter Gain K的推導(dǎo)。自己看吧:zh.wikipedia.org/wiki/%E5%8D%A1%E5%B0%94%E6%9B%BC%E6%BB%A4%E6%B3%A2關(guān)于卡爾曼濾波器的推導(dǎo)過程,枯燥晦澀,我就略過,直接關(guān)注結(jié)果。 計(jì)算過程
8、:卡爾曼濾波是一種遞歸的估計(jì),即只要獲知上一時(shí)刻狀態(tài)的估計(jì)值以及當(dāng)前狀態(tài)的觀測值就可以計(jì)算出當(dāng)前狀態(tài)的估計(jì)值,因此不需要記錄觀測或者估計(jì)的歷史信息。卡爾曼濾波器的遞歸過程:1)估計(jì)時(shí)刻k的狀態(tài):X(k) = A*X(k-1) + B*u(k)這里,u(k)是系統(tǒng)輸入2)計(jì)算誤差相關(guān)矩陣P, 度量估計(jì)值的準(zhǔn)確程度:P(k) = A*P(k-1)*A’+ Q這里,Q = E{ Wj^2 }是系統(tǒng)噪聲的協(xié)方差陣,即系統(tǒng)框圖中的Wj的協(xié)方差陣, Q應(yīng)該是不斷變化的,為了簡化,當(dāng)作一個(gè)常數(shù)矩陣。 3)計(jì)算卡爾曼增益,以下略去(k),即P = P(k), X = X(k):K = P *C’ * (C
9、* P * C’ + R)-1這里R = E{ Vj^2 },是測量噪聲的協(xié)方差(陣),即系統(tǒng)框圖中的Vj的協(xié)方差,為了簡化,也當(dāng)作一個(gè)常數(shù)矩陣。由于我們的系統(tǒng)一般是單輸入單輸出,所以R是一個(gè)1x1的矩陣,即一個(gè)常數(shù),上面的公式可以簡化為:K = P *C’ / (C * P * C’ + R)4)狀態(tài)變量反響的誤差量:e = Z(k) – C*X(k)這里的Z(k)是帶噪聲的測量量5)更新誤差相關(guān)矩陣PP = P – K * C * P6)更新狀態(tài)變量:X =X + K*e = X + K* (Z(k) – C*X(k))7)最后的輸出:Y = C*X 現(xiàn)在的問題就是如何實(shí)現(xiàn)卡爾曼濾波,
10、A, B, C, Q, R 這些矩陣或量如何確定? 仿真實(shí)例下面用仿真實(shí)例來觀察卡爾曼濾波器的效果。假設(shè)我們的系統(tǒng)是一個(gè)加熱系統(tǒng),熱時(shí)間常數(shù)為60秒,100度時(shí)到達(dá)熱平衡。忽略系統(tǒng)的延遲,那么當(dāng)系統(tǒng)加電后,溫度由0開場上升。這個(gè)上升過程大家應(yīng)該很熟悉,這是一個(gè)指數(shù)函數(shù):y(t) = 100 * (1 – e-t/60)其 laplace 傳遞函數(shù)為:y(s) = 100 / (60 * s - 1)我們?nèi)藶榈膮⒓恿穗S機(jī)噪聲來模擬測量噪聲我們假定并不知道系統(tǒng)的傳遞函數(shù),現(xiàn)在只是簡單的,隨便地構(gòu)造了一個(gè)預(yù)測系統(tǒng)。A = [1, 0; 0, 1]B = [1; 0]C = [1, 0]這是一個(gè)二階
11、系統(tǒng),其輸出是一條直線,與實(shí)際的系統(tǒng)相去甚遠(yuǎn):測量噪聲的協(xié)方差R = 40,此為猜測值;系統(tǒng)噪聲Q = 2,也是猜測值,預(yù)測模型越不準(zhǔn),Q值應(yīng)越大??柭鼮V波器的結(jié)果,紅色為濾波器輸出:可以看到,盡管我們使用了一個(gè)粗劣的預(yù)測估計(jì)器,Kalman濾波器還是相當(dāng)?shù)钠?shí),根本上消除了噪聲.如果我們有一個(gè)相當(dāng)準(zhǔn)確的模型,結(jié)果會怎么樣呢?準(zhǔn)確模型的建立要建立一個(gè)準(zhǔn)確的預(yù)測估計(jì)模型,我們還是要利用方差。如果一個(gè)估計(jì)的曲線與實(shí)際曲線完全重合時(shí),他們的方差為 0. 方差越小,擬合度越高,最小二乘法的原理便是如此。具體推導(dǎo)過程還是省略,直接給出matlab的擬合程序,這是一個(gè)非常非常有用的程序。如果數(shù)學(xué)模型很準(zhǔn)
12、確,能不能直接數(shù)學(xué)模型的輸出作為濾波器的結(jié)果呢?不能,因?yàn)闆]有反響,數(shù)學(xué)模型的輸出會因?yàn)闆]有反響的校正造成誤差不斷累積,失之毫厘,謬之千里。下面是用最小二乘法獲得系統(tǒng)的模型并做為預(yù)測估計(jì)器,設(shè)定為 3 階系統(tǒng),得出的數(shù)學(xué)模型相當(dāng)準(zhǔn)確,所以Q值可以取一個(gè)小值,這里Q= 0.02,現(xiàn)在看看卡爾曼濾波器的結(jié)果:效果非常好,卡爾曼濾波器的輸出與實(shí)際系統(tǒng)的輸出 (即無噪聲的系統(tǒng)輸出) 幾乎重合,這是準(zhǔn)確的預(yù)測估計(jì)模型帶來的好處?,F(xiàn)在比較兩個(gè)例子中卡爾曼增益的不同最小二乘法獲得系統(tǒng)的模型中的增益迅速地由大變小,最后小于不準(zhǔn)確模型。K 值較小,意味著誤差反響量較小,使得預(yù)測輸出更偏重信任預(yù)測模型的結(jié)果,通過
13、上圖可以看到 kalman 算法的自適應(yīng)性。至于誤差相關(guān)陣 P 的值,同樣,最小二乘法獲得系統(tǒng)的模型中的 C*P*C' 的值較小,這里就不給出圖形了。結(jié)論:從上面的例子可以看出,卡爾曼濾波器對于預(yù)測系統(tǒng)的要求并不高,所以,那個(gè)〞卡爾曼〞可以蒙上眼,拿著一個(gè)劣質(zhì)的GPS可以走到樹下。假設(shè)系統(tǒng)的預(yù)測模型很準(zhǔn)確,卡爾曼濾波器會有一個(gè)相當(dāng)良好的效果。 matlab 的驗(yàn)證程序z在 62, 63樓,所有程序均為原創(chuàng)。 最小二乘法獲取系統(tǒng)傳遞函數(shù): 1. function [numd, dend] = LeastSquare(x, y, N) 2. count = length(y); 3. M
14、 = count - 1; 4. ai = zeros(N*2, M); 5. for i=1:N 6. ai(i, i:M) = x(1:(count-i)); 7. ai(i+N, i:M) = -y(1:(count-i)); 8. end 9. bi = y(2:(count)); 10. xd = (inv(ai*ai')*ai*bi)'; 11. numd = [0 xd(1:N)]; 12. dend = [1 xd(N+1: N+N)]; 復(fù)制代碼 輸入?yún)?shù): x---系統(tǒng)輸入陣列y---系統(tǒng)輸出陣列 N---系統(tǒng)傳遞函數(shù)的階數(shù)函數(shù)輸出:系統(tǒng) Z
15、傳遞函數(shù)分子與分母的系數(shù),即: h(z) = numd(z) / dend(z)這個(gè)函數(shù)實(shí)在是居家旅行 ..., 啊,是建模仿真必備良器 Ts = 1; 采樣時(shí)間 s = tf('s'); sysc = 100/(60*s +1); 真實(shí)系統(tǒng)的傳遞函數(shù) sysd = c2d(sysc, Ts); t = 0:TsTs*300); u = ones(1, length(t)); 系統(tǒng)輸入 ys = lsim(sysd, u, t, 0); 系統(tǒng)輸出 ys = ys + 10*rand(size(ys)); 測量量 =
16、系統(tǒng)輸出 + 噪聲 A = [1, 0; 0, 1]; B = [1; 0]; C = [1, 0]; N = length(A); 系統(tǒng)維數(shù) Len = length(u); yout = zeros(Len, 1); 濾波器輸出 Xh = zeros(N, 1); 狀態(tài)變量 P = eye(N); Q = 2 * eye(N); 系統(tǒng)噪聲 R = 50; 測量噪聲 for i = 1 : Len Xh = A*Xh + B*u(i); P
17、= A*P*A' + Q; K = P*C'* inv(C*P*C' + R); Xh = Xh + K*(ys(i) - C*Xh); P = P - K*C*P; yout(i) = C*Xh; end Ts = 1; 采樣時(shí)間 s = tf('s'); sysc = 100/(60*s +1); 真實(shí)系統(tǒng)的傳遞函數(shù) sysd = c2d(sysc, Ts); t = 0:Ts:(Ts*300); u = ones(1, length(t)); 系統(tǒng)輸入 ys = lsim(sy
18、sd, u, t, 0); 系統(tǒng)輸出 ys = ys + 10*rand(size(ys)); 測量量 = 系統(tǒng)輸出 + 噪聲 A = [1, 0; 0, 1]; B = [1; 0]; C = [1, 0]; N = length(A); 系統(tǒng)維數(shù) Len = length(u); yout = zeros(Len, 1); 濾波器輸出 Xh = zeros(N, 1); 狀態(tài)變量 P = eye(N); Q = 2 * eye(N); 系統(tǒng)噪聲 R = 50;
19、 測量噪聲 for i = 1 : Len Xh = A*Xh + B*u(i); P = A*P*A' + Q; K = P*C'* inv(C*P*C' + R); Xh = Xh + K*(ys(i) - C*Xh); P = P - K*C*P; yout(i) = C*Xh; end plot(t, ys, t, yout); Ts = 1; 采樣時(shí)間 s = tf('s'); sysc = 100/(60*s +1); 真實(shí)系統(tǒng)的傳遞函數(shù) sysd = c2d(sysc,
20、 Ts); t = 0:Ts:(Ts*300); u = ones(1, length(t)); 系統(tǒng)輸入 ys = lsim(sysd, u, t, 0); 系統(tǒng)輸出 ys = ys + 10*rand(size(ys)); 測量量 = 系統(tǒng)輸出 + 噪聲 [numd, dend] = LeastSquare(u, ys, 3); 最小二乘法獲取預(yù)測系統(tǒng)模型 [A, B, C, D] = tf2ss(numd, dend); 變換到狀態(tài)空間形式 Len = length(u); N = length(A); 系統(tǒng)維數(shù) yout = zer
21、os(Len, 1); 濾波器輸出 Xh = zeros(N, 1); 狀態(tài)變量 P = eye(N); Q = 0.02 * eye(N); 系統(tǒng)噪聲 R = 50; 測量噪聲 for i = 1 : Len Xh = A*Xh + B*u(i); P = A*P*A' + Q; K = P*C'* inv(C*P*C' + R); Xh = Xh + K*(ys(i) - C*Xh); P = P - K*C*P; yout(i) = C*Xh; end plot(t, ys, t, yout); - 優(yōu)選
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 火力發(fā)電廠各設(shè)備的主要作用大全
- 3.高壓電工考試判斷練習(xí)題含答案
- 企業(yè)電氣防爆知識
- 13 低壓電工電工作業(yè)模擬考試題庫試卷含答案
- 電氣設(shè)備維修的十項(xiàng)原則
- 2.電氣電纜與直流模擬考試復(fù)習(xí)題含答案
- 電氣節(jié)能措施總結(jié)
- 2.電氣電機(jī)(一)模擬考試復(fù)習(xí)題含答案
- 接地電阻測量原理與測量方法
- 3.高壓電工作業(yè)模擬考試題庫試卷含答案
- 礦山維修電工安全技術(shù)操作規(guī)程
- 電工基礎(chǔ)口訣總結(jié)
- 3.某電廠值長面試題含答案解析
- 電工基礎(chǔ)知識順口溜
- 配電系統(tǒng)詳解