【數據結構與算法學習筆記001】Kalman濾波

 

 

目錄

一、          卡爾曼濾波的起源

二、          卡爾曼濾波的原理

三、          卡爾曼濾波的發展

四、          卡爾曼濾波的應用

五、          我對卡爾曼濾波的體會


 

 


卡爾曼濾波

一、          卡爾曼濾波的起源

談到信號的分析與處理,就離不開濾波兩個字。通常,信號的頻譜處於有限的頻率範圍內而噪聲的頻譜則散佈在很廣的頻率範圍內,爲了消除噪聲,可以把FIR濾波器或者IIR濾波器設計成合適的頻帶濾波器,進行頻域濾波。但在許多應用場合,需要直接進行時域濾波,從帶噪聲的信號中提取有用信號。雖然這樣的過程其實也算是對信號的濾波,但其所依據的理論,即針對隨機信號的估計理論,是自成體系的。人們對於隨機信號干擾下的有用信號不能“確知”,只能“估計”。爲了“估計”,要事先確定某種準則以評定估計的好壞程度。

最小均方誤差是一種常用的比較簡單的經典準則。對於平穩時間序列的最小均方誤差估計的第一個明確解是維納在1942年2月首先給出的。當時美國的一個戰爭研究團體發表了一個祕密文件,其中就包括維納關於濾波問題的研究工作,這項研究是用於防空火力控制系統的。維納濾波器是基於最小均方誤差準則的估計器。爲了尋求維納濾波器的衝激響應,需要求解著名的維納–霍夫方程。這種濾波理論所求的是使均方誤差最小的系統最佳衝激響應的明確表達式。

從維納–霍夫方程來看,維納濾波算法是十分低效的。這種算法要求設置大量的存儲器來保存過去的測量數據,一個新的數據到來後,要進行刷新,重新計算自相關和互相關序列。再者,求解這個方程需要耗費大量時間對高階矩陣求逆。因此,維納濾波算法難以運用於實時處理中,尤其是無法用於軍事、航空航天等領域。

爲此,許多科技工作者進行了多方探索,但在解決非平穩過程的濾波問題時,能給出的方法很少。到20世紀50年代中期,隨着空間技術的發展,要求對衛星軌道進行精確地測量,這種方法越來越不能滿足實際應用的需要。爲此,人們將濾波問題以微分方程表示,提出了一系列適應空間技術應用的精煉算法。1960年和1961年,卡爾曼(R.E. Kalman)和布西(R.S. Bucy)提出了遞推濾波算法,成功的將狀態變量引入到濾波理論中來,用消息與干擾的狀態空間模型代替了通常用來描述它們的協方差函數,將狀態空間描述與離散數間刷新聯繫起來,適於計算機直接進行計算,而不是去尋求濾波器衝激響應的明確公式。這種方法得出的是表徵狀態估計值及其均方誤差的微分方程,給出的是遞推算法。這就是著名的卡爾曼理論。

卡爾曼濾波不要求保存過去的測量數據,當新的數據到來時,根據新的數據和前一時刻的儲值的估計,藉助於系統本身的狀態轉移方程,按照一套遞推公式,即可算出新的估值。這一點說明卡爾曼濾波器屬於IIR濾波器的範疇。這就是說,與維納濾波器不同,卡爾曼濾波器能夠利用先前的運算結果,再根據當前數據提供的最新消息,即可得到當前的估值。卡爾曼遞推算法大大減少了濾波裝置的存儲量和計算量,並且突破了平穩隨機過程的限制,使卡爾曼濾波器適用於對時變信號的實時處理

二、          卡爾曼濾波的原理

卡爾曼濾波的含義是現時刻的最佳估計爲在前一時刻的最佳估計的基礎上根據現時刻的觀測值作線性修正。卡爾曼濾波在數學上是一種線性最小方差統計估算方法,它是通過處理一系列帶有誤差的實際測量數據而得到物理參數的最佳估算。其實質要解決的問題是要尋找在最小均方誤差下的估計值。它的特點是可以用遞推的方法計算,其所需數據存儲量較小,便於進行實時處理。具體來說,卡爾曼濾波就是要用預測方程和測量方程對系統狀態進行估計。

設動態系統的狀態方程和測量方程分別爲:

       

     

    上兩式子中,是k時刻的系統狀態,和是k-1時刻到k時刻的狀態轉移矩陣,是k時刻的測量值,是測量系統的參數,和分別表示過程和測量的噪聲,他們被假設成高斯白噪聲。如果被估計狀態和觀測量是滿足上述第一式,系統過程噪聲和觀測噪聲滿足第二式的假設,k時刻的觀測的估計可按下述方程求解。

進一步預測:                                  (1)

狀態估計:                        (2)

    濾波增益矩陣:                               (3)

    一步預測誤差方差陣:    (4)

    估計誤差方差陣:                          (5)

上述就是卡爾曼濾波器的5條基本公式,只有給定初值和,根據k時刻的觀測值,就可以遞推計算得k時刻的狀態估計(K=1,2,N)。

三、          卡爾曼濾波的發展

自卡爾曼濾波提出以來,經過40多年的發展,卡爾曼濾波已經形成了一個比較完整的理論體系,並且成功應用於航空航天、工業控制等領域,美國空軍還將卡爾曼濾波定爲標準濾波器。

但是,隨着應用領域的不斷擴大,濾波對象不確定性的不斷提高,傳統KF已經不能滿足更高的要求,它的主要不足在於:(1)濾波限制條件比較苛刻,它要求系統模型精確以及系統誤差模型和觀測誤差模型已知,這在實際應用中是很難滿足的,或者在系統工作過程中,模型發生變化,這些都導致傳統KF的濾波發散或精度下降。(2)計算機字長的限制,這種情況可能導致計算過程中出現舍入誤差,從而導致方差陣P( k | k)不對稱引起濾波發散。(3)觀測數據發生突變,由於傳感器故障或外部條件發生改變,極有可能出現數據突變,即野值,這會對濾波器的收斂性產生嚴重影響,甚至導致發散,可以說,野值是對濾波器穩定性的一個考驗。

針對上述不足,很多學者提出了不同的方法加以克服,如限定記憶法、平方根濾波、漸消記憶濾波、自適應卡爾曼濾波(Adaptive Kalman Filtering,AKF)、抗野值濾波等。其中,AKF因爲具有自適應特性非常適合動態系統濾波而受到廣泛重視。因此,在採用卡爾曼濾波處理動態測量數據時,一般都要考慮採取適當的自適應濾波方法來解決這一問題。

自適應卡爾曼濾波最新發展的幾個分支包括:相關自適應卡爾曼濾波、多模型自適應卡爾曼濾波、基於信息的自適應卡爾曼濾波、神經網絡自適應卡爾曼濾波、模糊邏輯自適應卡爾曼濾波。

相關法是最基本的一種AKF方法,在許多文獻中都有詳細的論述,相關法分爲兩類:輸出相關法和信息相關法。輸出相關法的主要思想是利用觀測向量的相關性M(k) =E[Z(k)ZT(k)]自適應調整增益矩陣K(k),這種方法的主要缺陷是計算複雜,實時性難以滿足要求。對於高動態系統(如GPS/INS組合導航系統),這種複雜性就更加突出。信息相關法自適應濾波的主要思想是利用信息的相關性M(k) = E[(V(k)VT(k)]自動調整增益矩陣K(k),其中V(k)= Z(k) - C(k) X^( k)。信息相關法比輸出相關法更加有效,因爲信息更能反映觀測數據特性,但是信息相關法計算複雜度卻有所增加,很難滿足工程需要。

但是在高動態系統中(如GPS/INS組合導航、靶場數據測量等),測量數據經常發生突變產生野值,導致狀態估計明顯偏離真實狀態。抗野值的AKF通過對信息的監測判斷是否有野值出現,當有野值出現時,通過自適應調整增益矩陣,達到消除野值影響的目的,虛警概率爲4.5%。這種方法不僅可以消除野值的影響,而且還可以用於對傳感器的故障診斷。但是它僅僅解決了由於野值引起濾波發散的情況,而對其它原因引起的濾波發散無能爲力。如果將這種方法與其它AKF方法結合,那麼將得到更完善的自適應濾波方法。

多模型AKF(MultipleModel AKF)最早由Magill在1965年提出的。它由一組卡爾曼濾波器組成,每一個卡爾曼濾波器使用不同的系統模型,各個卡爾曼濾波器並行運行,根據觀測向量估計各自的狀態。隨着時間的不斷增加,系統會選出最優的一個濾波器並將其權值增大,而其它權值相應減小。多模型AKF性能最優的前提條件是所用的模型集包含了系統所有可能的模式,但是這個前提條件往往是很難滿足的。

基於信息的AKF主要是通過調整噪聲統計特性達到自適應的目的,解決了因爲噪聲統計特性不明確或噪聲發生變化的情況。但是對於系統其它模型發生變化不能達到自適應的目的。

卡爾曼濾波器需要精確已知系統模型才能得到系統狀態的最優估計,但是這種要求在實際當中很難得到。在上述方法中,大部分方法只是對噪聲的統計特性進行了自適應估計,如果系統的其它模型不正確或發生變化時,就不能自適應估計了。將人工智能技術和濾波技術融合是濾波技術的發展趨勢。神經網絡作爲人工智能技術中的一個領域,其主要優點在於它對系統的模型沒有特別要求,只要有足夠的用於訓練的先驗數據,就可以用訓練的神經網絡近似代替原系統。神經網絡AKF正是爲了滿足這一需求而提出的。

AKF是一種很有效的狀態濾波技術,已經在目標跟蹤、組合導航、故障診斷、圖像處理等方面得到成功應用。隨着AKF的應用範圍不斷擴大,AKF已經成爲解決工程濾波(估計)問題的主要研究方向。

AKF的發展趨勢大概有以下幾個方面:

(1)深入研究NNAKF。神經網絡與AKF結合不僅可以解決模型不確定問題,而且由於神經網絡的並行計算,使NNAKF的實時性得到保證。在應用神經網絡時,還有許多問題需要進一步解決:NNAKF的結構、訓練樣本的獲取及其魯棒性研究。

(2)AKF與其它智能方法結合。神經網絡、模糊邏輯與AKF結合使我們看到智能方法與AKF的結合是一個很有前途的研究方向。其它的智能方法包括專家系統、遺傳算法以及小波變換等。

(3)AKF與新方法的結合。

(4)AKF與自適應控制的結合。

(5)尋找對放鬆假設條件系統的濾波方法,如考慮噪聲相關模型等。目前的AKF均是在一定的假設條件下的濾波算法。如果假設條件發生變化,或假設條件不能滿足,AKF就可能失效,即濾波發散、精度達不到要求等。

(6)自適應算法性能評估。面對如此衆多的AKF,針對特定的濾波對象,如何選擇恰當的濾波算法是另外一個研究方向。其中濾波器的濾波精度、魯棒性、實時性是性能評估的三個重要標準。從工程應用角度考慮,魯棒性、實時性要求比精度要求更高。

四、          卡爾曼濾波的應用

卡爾曼濾波器(KalmanFilter)是一個最優化自迴歸數據處理算法(optimalrecursive data processing algorithm),它的廣泛應用已經超過30年,包括航空器軌道修正、機器人系統控制、雷達系統與導彈追蹤等。近年來更被應用於組合導航與動態定位,傳感器數據融合、微觀經濟學等應用研究領域。特別是在圖像處理領域如頭臉識別、圖像分割、圖像邊緣檢測等當前熱門研究領域佔有重要地位。

卡爾曼濾波作爲一種數值估計優化方法,與應用領域的背景結合性很強。因此在應用卡爾曼濾波解決實際問題時,重要的不僅僅是算法的實現與優化問題,更重要的是利用獲取的領域知識對被認識系統進行形式化描述,建立起精確的數學模型,再從這個模型出發,進行濾波器的設計與實現工作。

濾波器實際實現時,測量噪聲協方差R一般可以觀測得到,是濾波器的已知條件。它可以通過離線獲取一些系統觀測值計算出來。通常,難確定的是過程激勵噪聲協方差的Q值,因爲我們無法直接觀測到過程信號。一種方法是通過設定一個合適的Q,給過程信號“注入”足夠的不確定性來建立一個簡單的可以產生可接受結果的過程模型。爲了提高濾波器的性能,通常要按一定標準進行係數的選擇與調整。基本卡爾曼濾波(KF)器限定在線性的條件下,在大多數的非線性情形下,使用擴展的卡爾曼濾波(EKF)器來對系統狀態進行估計。

隨着卡爾曼濾波理論的發展,一些實用卡爾曼濾波技術被提出來,如自適應濾波,次優濾波以及濾波發散抑制技術等逐漸得到廣泛應用。其它的濾波理論也迅速發展,如線性離散系統的分解濾波(信息平方根濾波,序列平方根濾波,UD分解濾波),魯棒濾波(H∞ 波)。

下面給出幾個具體應用的例子。

(1)      GPS變形監測動態數據處理中的應用:現階段GPS用於變形觀測中,通常是在確定的瞬間靜態研究監測點的狀態,而沒有考慮到監測點隨時間改變位移的動態特性。並且在觀測過程中,觀測數據往往不連續,這樣就無法對動態變形進行實時準確描述。卡爾曼濾波(Kalman,1960)是當前應用最廣的一種動態數據處理方法,它具有最小無偏方差。在GPS變形監測中,如果將變形體視爲一個動態就可以用來描述這個變形體的運動情況。並能在這個系統中分別找出表示它們的狀態參數與其觀測值之間的函數關係,那麼就可以利用卡爾曼濾波來減弱隨機噪聲的干擾,進而達到提高GPS變形觀測數據精度的目的。

(2)      現代汽車中的懸架分爲從動懸架和主動懸架兩種。從動懸架即傳統式的懸架,是由彈簧、減震器、導向機構等組成,它的功能是減弱路面傳給車身的衝擊力,衰減由衝擊力而引起的承載系統的震動。其中彈簧主要起減緩衝擊力的左右,減震器的作用是衰減震動。從動懸架是由外力驅動而起作用的。主動懸架是近十幾年發展起來的由電腦控制的一種新型懸架。主動懸架的控制環節中安裝了能夠產生主動力的裝置,採用一種以力抑制力的方式來抑制路面對車身的衝擊力及車身的傾斜力。汽車的液壓主動懸架系統在控制過程中不可避免的受到噪聲的影響。應用卡爾曼濾波對系統的狀態向量做最優估計,並應用到系統的全狀態反饋控制中,可以有效的提高系統的魯棒性,

(3)      以探測搜索、捕獲跟蹤、激光瞄準爲技術依託的機載光電穩定跟蹤系統已成爲發展新一代光電裝備的戰略基點之一,對於國防安全、社會穩定、現代化生產和生活有着非常重要的意義。在機載光電穩定跟蹤系統中,圖像跟蹤是一個關鍵技術,直接決定了跟蹤系統的性能。同時,圖像跟蹤也是計算機視覺領域的一個熱點研究問題,在視覺監控、人機互動、機器人導航等領域有着廣泛的應用。圖像跟蹤方法大致可分爲兩大類:概率跟蹤方法和確定性跟蹤方法。概率跟蹤方法由於跟蹤性能穩定、可靠,已成爲圖像跟蹤的主流方法,卡爾曼濾波和粒子濾波是這類方法的典型代表。卡爾曼濾波對系統模型和後驗分佈有嚴格限制,只能處理線性、高斯、單模態的情況。

五、          我對卡爾曼濾波的體會

通過對卡爾曼濾波相關內容的學習,我對卡爾曼濾波的起源、原理、發展過程以及在實際中的廣泛應用有了全新的認識。由於專業原因,平時在專業相關內容的學習、仿真和項目研究過程中還沒有在實際中用到卡爾曼濾波,在課堂上的學習和這次大作業相關資料的查閱之後,我總結了自己對卡爾曼濾波的一些認識。下面拋開卡爾曼濾波的公式,用一個簡單的例子來進行說明。

假定我們研究的對象是某個物品在市場上的平均價格,根據我們的經驗,該物品的平均價格不會發生變化,即是恆定不變的,某天的平均價格和前一天的一樣。但是我們對於我們的經驗也不是百分之百的肯定,就可能出現上下幾元的偏差,可以把這個偏差當做是我們做信號處理中所遇到的噪聲,若這些偏差和前後時間沒有關係而且服從高斯分配的,就把這個偏差看成是高斯白噪聲。同時,我們會有專門的人員來反饋市場上該物品的價格,當然,這個價格中也存在高斯白噪聲的偏差。

那麼現在,對於某一天該物品的平均價格,我們就有兩個值,一個是根據經驗的預測值,如同系統的預測值,一個是人員反饋回來的值,如同測量值。若要估計第d天的平均價格,首先要根據d-1天的平均價格來預測第d天的平均價格。由於我們估計價格是不變的,即這兩天的平均價格相同,設爲100元,同時該值的高斯噪聲的偏差是5元。我們從人員反饋回來的價格是107元,偏差是3元。那麼,實際平均價格是多少呢?我們是該相信自己的推斷還是相信人員的反饋?或者是相信哪個多一點呢?

我們可以用他們的協方差來判斷。因爲d02=52/(52+32)=0.735,所以d0=0.86,我們可以估算出第d天的實際平均價格是:100+0.86*(107-100)=106.02元。可以看出,因爲人員反饋的協方差比較小,即比較相信人員反饋,所以估算出的最優平均價格偏向人員反饋的價格。此外,還要計算這個最優平均價格的偏差,算法爲:((1-d0)*52)^0.5=2.57。這個偏差就是繼續估算第d+1天平均價格的偏差。通過這樣的方法,卡爾曼濾波器就不斷的進行遞歸,從而估算出最優的值。

當然這樣的比喻並不是很恰當,實際中卡爾曼濾波的應用過程遠遠比這個要複雜的多,同時現在根據實際情況對卡爾曼濾波器的改進也很多,使得其越來越適應實際的需求。關於卡爾曼濾波的學習對我的幫助是很大的,我不僅掌握了結合課堂內容進行擴展學習的方法,也爲日後進行信息處理的研究打下了基礎。這種方法也可以運用於其他方面的學習,令我受益匪淺。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章