鄭家旺,劉有源
(武漢理工大學物流工程學院,湖北 武漢 430063)
卡爾曼濾波是從與被測信號有關的觀測中通過算法估計出所需信號的一種最優(yōu)化自回歸數(shù)據(jù)處理算法.由于卡爾曼濾波具有最小無偏方差性,目前廣泛應用于機器人導航、控制、傳感器數(shù)據(jù)融合、設備狀態(tài)檢測和計算機圖像處理等領域.卡爾曼濾波與其他傳統(tǒng)的濾波器相比,最大的特點是能夠去除測量系統(tǒng)中的隨機誤差,來獲取更接近真實值的信息.
卡爾曼濾波有連續(xù)和離散型兩種算法,其中離散型算法目前被廣泛應用于線性系統(tǒng)的狀態(tài)估計中.
設tk時刻的狀態(tài)估計為X(k),系統(tǒng)噪聲序列為W(k),則狀態(tài)方程[1-3]可描述為
對于X(k)的測量滿足線性關系,測量方程為
其中,F為轉移矩陣,Γ為系統(tǒng)噪聲矩陣,H為測量矩陣,v(k)為測量噪聲序列,W(k)為狀態(tài)方程的過程噪聲序列.則卡爾曼濾波的方程為:濾波估計
濾波增益
單步預測誤差協(xié)方差矩陣
濾波誤差協(xié)方差矩陣
需要指出的是,P(k+1|k+1)可以看作Kalman濾波的性能評價,因為
卡爾曼濾波流程如圖1所示.可見,只要給定初值P0,根據(jù)tk時刻的測量值Z(k),就可以遞推計算得到k時刻的狀態(tài)估計 X(k).
圖1 卡爾曼濾波基本流程
在卡爾曼濾波中,有時候會出現(xiàn)一種現(xiàn)象:隨著測量值的不斷累積,按照濾波方程計算的估計誤差方差矩陣會逐漸趨于一個穩(wěn)定值,但估計值相對實際測量值被估計誤差卻逐漸增大,使示波器逐漸失去作用,這種現(xiàn)象被稱為卡爾曼濾波器的發(fā)散.
引起濾波器誤發(fā)散原因主要有:1)描述該系統(tǒng)動力學特性的數(shù)學模型和噪聲的統(tǒng)計特性與真實的物理過程有偏差;2)在卡爾曼濾波的遞推過程中,隨著濾波次數(shù)的增加,舍入誤差逐漸積累.
通過MAT LAB來驗證該濾波器的收斂性[1].初值的確定如下.
測量時間Measure=100 s.由于頻率太高會導致數(shù)據(jù)量增大,導致MATLAB中仿真時運行較慢,所以周期T=0.01 s;q=0.01;r=0.01;
仿真結果如圖2所示.
圖2 卡爾曼濾波MATLAB仿真
通過圖2可見,在該參數(shù)下設計的卡爾曼濾波器是收斂的,且收斂速度較快.在提高數(shù)據(jù)的精度方面,濾波之后的誤差遠小于原始誤差.
在設計中采用VC++6.0編程[5],對該濾波算法的效果進行檢測.初值的確定如下.
由于VC++6.0能夠調(diào)用系統(tǒng)底層資源,運行較快,所以周期 T=0.001 s;q=0.01;r=0.01;
設采樣函數(shù)為y=2t;高斯噪聲函的均值為0,方差為0.5.
施加噪聲函數(shù)之后的采樣函數(shù)如圖3所示,卡爾曼濾波之后的采樣函數(shù)如圖4所示.
圖3中,采樣函數(shù)在添加了白噪聲之后,系統(tǒng)出現(xiàn)明顯的波動.圖4中,在卡爾曼濾波之后,系統(tǒng)經(jīng)過短暫的波動,逐漸與采樣函數(shù)接近,濾波效果較好.對比圖3和圖4可見,該濾波器對于白噪聲的濾除效果較好,能夠對采集的數(shù)據(jù)進行較準確的修正.
在卡爾曼濾波算法的設計過程中,一般需要根據(jù)提前觀測的信息,確定系統(tǒng)的數(shù)學模型,以較好地擬合動態(tài)系統(tǒng)的變化規(guī)律,提高修正數(shù)據(jù)的精度.對于一個穩(wěn)定的系統(tǒng),只要能夠確保初始值的精度,就可以達到指定的精度.
[1]謝克明.現(xiàn)代控制理論[M].北京:清華大學出版社,2007.
[2]蔣志凱.數(shù)字濾波與卡爾曼濾波[M].北京:中國科學技術出版社,1993.
[3]鄧自立.卡爾曼濾波與維納濾波[M].哈爾濱:哈爾濱工業(yè)大學出版社,2001.
[4]余祖鋒,許才軍.Matlab在測量中的應用[J].東北測繪,2004,25(4):43-46.
[5]孫 鑫,余 安.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.