天天看點

【資料結構與算法學習筆記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天平均價格的偏差。通過這樣的方法,卡爾曼濾波器就不斷的進行遞歸,進而估算出最優的值。

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

【資料結構與算法學習筆記001】Kalman濾波一、          卡爾曼濾波的起源二、          卡爾曼濾波的原理三、          卡爾曼濾波的發展四、          卡爾曼濾波的應用五、          我對卡爾曼濾波的體會

繼續閱讀