鄭家旺,劉有源
(武漢理工大學物流工程學院,湖北 武漢 430063)
卡爾曼濾波是從與被測信號有關的觀測中通過算法估計出所需信號的一種最優化自回歸數據處理算法.由于卡爾曼濾波具有最小無偏方差性,目前廣泛應用于機器人導航、控制、傳感器數據融合、設備狀態檢測和計算機圖像處理等領域.卡爾曼濾波與其他傳統的濾波器相比,最大的特點是能夠去除測量系統中的隨機誤差,來獲取更接近真實值的信息.
卡爾曼濾波有連續和離散型兩種算法,其中離散型算法目前被廣泛應用于線性系統的狀態估計中.
設tk時刻的狀態估計為X(k),系統噪聲序列為W(k),則狀態方程[1-3]可描述為

對于X(k)的測量滿足線性關系,測量方程為

其中,F為轉移矩陣,Γ為系統噪聲矩陣,H為測量矩陣,v(k)為測量噪聲序列,W(k)為狀態方程的過程噪聲序列.則卡爾曼濾波的方程為:濾波估計

濾波增益

單步預測誤差協方差矩陣

濾波誤差協方差矩陣

需要指出的是,P(k+1|k+1)可以看作Kalman濾波的性能評價,因為

卡爾曼濾波流程如圖1所示.可見,只要給定初值P0,根據tk時刻的測量值Z(k),就可以遞推計算得到k時刻的狀態估計 X(k).

圖1 卡爾曼濾波基本流程
在卡爾曼濾波中,有時候會出現一種現象:隨著測量值的不斷累積,按照濾波方程計算的估計誤差方差矩陣會逐漸趨于一個穩定值,但估計值相對實際測量值被估計誤差卻逐漸增大,使示波器逐漸失去作用,這種現象被稱為卡爾曼濾波器的發散.
引起濾波器誤發散原因主要有:1)描述該系統動力學特性的數學模型和噪聲的統計特性與真實的物理過程有偏差;2)在卡爾曼濾波的遞推過程中,隨著濾波次數的增加,舍入誤差逐漸積累.
通過MAT LAB來驗證該濾波器的收斂性[1].初值的確定如下.
測量時間Measure=100 s.由于頻率太高會導致數據量增大,導致MATLAB中仿真時運行較慢,所以周期T=0.01 s;q=0.01;r=0.01;

仿真結果如圖2所示.

圖2 卡爾曼濾波MATLAB仿真
通過圖2可見,在該參數下設計的卡爾曼濾波器是收斂的,且收斂速度較快.在提高數據的精度方面,濾波之后的誤差遠小于原始誤差.
在設計中采用VC++6.0編程[5],對該濾波算法的效果進行檢測.初值的確定如下.
由于VC++6.0能夠調用系統底層資源,運行較快,所以周期 T=0.001 s;q=0.01;r=0.01;

設采樣函數為y=2t;高斯噪聲函的均值為0,方差為0.5.
施加噪聲函數之后的采樣函數如圖3所示,卡爾曼濾波之后的采樣函數如圖4所示.


圖3中,采樣函數在添加了白噪聲之后,系統出現明顯的波動.圖4中,在卡爾曼濾波之后,系統經過短暫的波動,逐漸與采樣函數接近,濾波效果較好.對比圖3和圖4可見,該濾波器對于白噪聲的濾除效果較好,能夠對采集的數據進行較準確的修正.
在卡爾曼濾波算法的設計過程中,一般需要根據提前觀測的信息,確定系統的數學模型,以較好地擬合動態系統的變化規律,提高修正數據的精度.對于一個穩定的系統,只要能夠確保初始值的精度,就可以達到指定的精度.
[1]謝克明.現代控制理論[M].北京:清華大學出版社,2007.
[2]蔣志凱.數字濾波與卡爾曼濾波[M].北京:中國科學技術出版社,1993.
[3]鄧自立.卡爾曼濾波與維納濾波[M].哈爾濱:哈爾濱工業大學出版社,2001.
[4]余祖鋒,許才軍.Matlab在測量中的應用[J].東北測繪,2004,25(4):43-46.
[5]孫 鑫,余 安.VC++深入詳解[M].北京:電子工業出版社,2006.