歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOCX文檔下載  

授之以漁: 卡爾曼濾波器

  • 資源ID:81774442       資源大?。?span id="l7wri3s" class="font-tahoma">86.60KB        全文頁數(shù):8頁
  • 資源格式: DOCX        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

授之以漁: 卡爾曼濾波器

. . 一片綠油油的草地上有一條曲折的小徑,通向一棵大樹。一個要求被提出:從起點沿著小徑走到樹下。“很簡單。〞A說,于是他絲毫不差地沿著小徑走到了樹下。現(xiàn)在,難度被增加了:蒙上眼?!耙膊浑y,我當過特種兵。〞B說,于是他歪歪扭扭地走到了樹……….旁?!鞍Γ镁貌痪?,生疏了。〞“看我的,我有DIY的GPS!〞 C說,于是他像個醉漢似地走到了樹……….旁。“唉,這個GPS軟件沒做好,漂移太大。〞“我來試試。〞旁邊一人拿過GPS,蒙上眼,居然沿著小徑走到了樹下?!斑@么厲害!你是什么人"〞“卡爾曼 ! 〞“卡爾曼?!你是卡爾曼?〞眾人大吃一驚。“我是說這個GPS卡而慢。〞 這段時間研究了一下卡爾曼濾波器,有一些心得,寫出來與大家分享??柭鼮V波器與我以前講過的FIR, IIR濾波器完全不一樣,與其說屬于濾波器,不如說是屬于最優(yōu)控制的范疇。下面的內(nèi)容涉及相當多的控制理論知識,對于在這方面缺乏的同學可能有些吃力。不過不要緊,大家關(guān)注結(jié)果,會應(yīng)用就夠了,那些晦澀的理論和推導(dǎo)可以忽略。我也會用圖片讓大家更直觀的理解卡爾曼濾波器 首先回憶一下傳統(tǒng)數(shù)字濾波器。對于一個線性時不變系統(tǒng),施加一個輸入u(t),我們可以得到一個輸出y(t) .如果輸入是一個沖擊,那么輸出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)換到差分方程,最后得到一個遞推公式,這種形式的濾波器就是IIR濾波器。以前講過,一個系統(tǒng)可以用時域的微分方程來建立,然后可以用laplace的傳遞函數(shù)來處理,把解微分方程變?yōu)槎囗検匠朔?,可以簡單的求解。還有另外一種處理形式就是狀態(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)換,事實上矩陣A的特征值就是s傳遞函數(shù)的極點。系統(tǒng)的傳遞函數(shù)〔陣〕可以通過矩陣變換得到:Y(s) = C * (s * I - A)-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ù)測估計器,走出了一個預(yù)測路徑,為Zb; C用測量器,走出了一條測量路徑,為Zc。用圖片來說明:“系統(tǒng)真實輸出〞是A走過的路徑:Za = C * X;“測量輸出〞是Zb.Zb = Za + V,這里V是噪聲,即GPS的漂移;“預(yù)測估計輸出〞是Zc = C * X^,X^是預(yù)測的狀態(tài)。T是采樣延時?,F(xiàn)在,蒙上眼的情況下有兩種選擇,GPS或大腦預(yù)測估計器。如果GPS很準而預(yù)測不準,那么可以選擇GPS;如果預(yù)測準確而GPS不準,那么選擇預(yù)測估計器,等等,沒有反響的預(yù)測估計器會因為累積誤差而導(dǎo)致越來越不準。如果兩個都不準,該如何取舍?如何把兩者結(jié)合在一起呢?我們可以設(shè)置一個信心指數(shù)K,K在0與1之間,來說明對測量值還是預(yù)測值的信任程度:Z = K * Zb + (1 – K) * Zc= Zc + K*(Zb – Zc)(1)可以看出,當K = 1和0時,分別選擇了GPS或預(yù)測估計器.現(xiàn)在,可以把誤差Zb -Zc作為反響誤差,來修正預(yù)測估計器的結(jié)果。新的系統(tǒng)構(gòu)造圖如下:這個框圖,就是卡爾曼濾波器的根本構(gòu)造。學過現(xiàn)代控制理論的同學都這個圖應(yīng)該很熟悉,與狀態(tài)變量估計控制的圖形差不多,只是其中的K = 1而且沒有噪聲項和系統(tǒng)反響而已。而我們下面的任務(wù),就是如何確定這個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é)果。 計算過程:卡爾曼濾波是一種遞歸的估計,即只要獲知上一時刻狀態(tài)的估計值以及當前狀態(tài)的觀測值就可以計算出當前狀態(tài)的估計值,因此不需要記錄觀測或者估計的歷史信息??柭鼮V波器的遞歸過程:1)估計時刻k的狀態(tài):X(k) = A*X(k-1) + B*u(k)這里,u(k)是系統(tǒng)輸入2)計算誤差相關(guān)矩陣P, 度量估計值的準確程度:P(k) = A*P(k-1)*A’+ Q這里,Q = E{ Wj^2 }是系統(tǒng)噪聲的協(xié)方差陣,即系統(tǒng)框圖中的Wj的協(xié)方差陣, Q應(yīng)該是不斷變化的,為了簡化,當作一個常數(shù)矩陣。 3)計算卡爾曼增益,以下略去(k),即P = P(k), X = X(k):K = P *C’ * (C * P * C’ + R)-1這里R = E{ Vj^2 },是測量噪聲的協(xié)方差(陣),即系統(tǒng)框圖中的Vj的協(xié)方差,為了簡化,也當作一個常數(shù)矩陣。由于我們的系統(tǒng)一般是單輸入單輸出,所以R是一個1x1的矩陣,即一個常數(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)在的問題就是如何實現(xiàn)卡爾曼濾波, A, B, C, Q, R 這些矩陣或量如何確定? 仿真實例下面用仿真實例來觀察卡爾曼濾波器的效果。假設(shè)我們的系統(tǒng)是一個加熱系統(tǒng),熱時間常數(shù)為60秒,100度時到達熱平衡。忽略系統(tǒng)的延遲,那么當系統(tǒng)加電后,溫度由0開場上升。這個上升過程大家應(yīng)該很熟悉,這是一個指數(shù)函數(shù):y(t) = 100 * (1 – e-t/60)其 laplace 傳遞函數(shù)為:y(s) = 100 / (60 * s - 1)我們?nèi)藶榈膮⒓恿穗S機噪聲來模擬測量噪聲我們假定并不知道系統(tǒng)的傳遞函數(shù),現(xiàn)在只是簡單的,隨便地構(gòu)造了一個預(yù)測系統(tǒng)。A = [1, 0; 0, 1]B = [1; 0]C = [1, 0]這是一個二階系統(tǒng),其輸出是一條直線,與實際的系統(tǒng)相去甚遠:測量噪聲的協(xié)方差R = 40,此為猜測值;系統(tǒng)噪聲Q = 2,也是猜測值,預(yù)測模型越不準,Q值應(yīng)越大。卡爾曼濾波器的結(jié)果,紅色為濾波器輸出:可以看到,盡管我們使用了一個粗劣的預(yù)測估計器,Kalman濾波器還是相當?shù)钠崳旧舷嗽肼?如果我們有一個相當準確的模型,結(jié)果會怎么樣呢?準確模型的建立要建立一個準確的預(yù)測估計模型,我們還是要利用方差。如果一個估計的曲線與實際曲線完全重合時,他們的方差為 0. 方差越小,擬合度越高,最小二乘法的原理便是如此。具體推導(dǎo)過程還是省略,直接給出matlab的擬合程序,這是一個非常非常有用的程序。如果數(shù)學模型很準確,能不能直接數(shù)學模型的輸出作為濾波器的結(jié)果呢?不能,因為沒有反響,數(shù)學模型的輸出會因為沒有反響的校正造成誤差不斷累積,失之毫厘,謬之千里。下面是用最小二乘法獲得系統(tǒng)的模型并做為預(yù)測估計器,設(shè)定為 3 階系統(tǒng),得出的數(shù)學模型相當準確,所以Q值可以取一個小值,這里Q= 0.02,現(xiàn)在看看卡爾曼濾波器的結(jié)果:效果非常好,卡爾曼濾波器的輸出與實際系統(tǒng)的輸出 (即無噪聲的系統(tǒng)輸出) 幾乎重合,這是準確的預(yù)測估計模型帶來的好處?,F(xiàn)在比較兩個例子中卡爾曼增益的不同最小二乘法獲得系統(tǒng)的模型中的增益迅速地由大變小,最后小于不準確模型。K 值較小,意味著誤差反響量較小,使得預(yù)測輸出更偏重信任預(yù)測模型的結(jié)果,通過上圖可以看到 kalman 算法的自適應(yīng)性。至于誤差相關(guān)陣 P 的值,同樣,最小二乘法獲得系統(tǒng)的模型中的 C*P*C' 的值較小,這里就不給出圖形了。結(jié)論:從上面的例子可以看出,卡爾曼濾波器對于預(yù)測系統(tǒng)的要求并不高,所以,那個〞卡爾曼〞可以蒙上眼,拿著一個劣質(zhì)的GPS可以走到樹下。假設(shè)系統(tǒng)的預(yù)測模型很準確,卡爾曼濾波器會有一個相當良好的效果。 matlab 的驗證程序z在 62, 63樓,所有程序均為原創(chuàng)。 最小二乘法獲取系統(tǒng)傳遞函數(shù): 1. function [numd, dend] = LeastSquare(x, y, N) 2. count = length(y); 3. M = 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 傳遞函數(shù)分子與分母的系數(shù),即: h(z) = numd(z) / dend(z)這個函數(shù)實在是居家旅行 ..., 啊,是建模仿真必備良器 Ts = 1; 采樣時間 s = tf('s'); sysc = 100/(60*s +1); 真實系統(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)); 測量量 = 系統(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 = 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; 采樣時間 s = tf('s'); sysc = 100/(60*s +1); 真實系統(tǒng)的傳遞函數(shù) sysd = c2d(sysc, 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)輸出 + 噪聲 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 = 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; 采樣時間 s = tf('s'); sysc = 100/(60*s +1); 真實系統(tǒng)的傳遞函數(shù) sysd = c2d(sysc, 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 = zeros(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)選

注意事項

本文(授之以漁: 卡爾曼濾波器)為本站會員(ph****6)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!