為什麼叫「卡爾曼」?卡爾曼濾波器算法介紹

2021-01-14 電子產品世界

首先看看為什麼叫「卡爾曼」。跟其他著名的理論(例如傅立葉變換,泰勒級數等等)一樣,卡爾曼也是一個人的名字,而跟他們不同的是,他是個現代人!


匈牙利數學家,1930年出生於匈牙利首都布達佩斯。1953,1954年於麻省理工學院分別獲得電機工程學士及碩士學位。1957年於哥倫比亞大學獲得博士學位。我們現在要學習的卡爾曼濾波器,正是源於他的博士論文和1960年發表的論文《A New Approach to Linear Filtering and Prediction Problems》(線性濾波與預測問題的新方法)。



簡單來說,卡爾曼濾波器是一個「最優化自回歸數據處理算法」。對於解決很大部分的問題,他是最優,效率最高甚至是最有用的。他的廣泛應用已經超過30年,包括機器人導航,控制,傳感器數據融合甚至在軍事方面的雷達系統以及飛彈追蹤等等。近年來更被應用於計算機圖像處理,例如頭臉識別,圖像分割,圖像邊緣檢測等等。


為了可以更加容易的理解卡爾曼濾波器,這裡會應用形象的描述方法來講解,而不是像大多數參考書那樣羅列一大堆的數學公式和數學符號。但是,他的5條公式是其核心內容。結合現代的計算機,其實卡爾曼的程序相當的簡單,只要你理解了他的那5條公式。


在介紹他的5條公式之前,先讓我們來根據下面的例子一步一步的探索。


假設我們要研究的對象是一個房間的溫度。根據你的經驗判斷,這個房間的溫度是恆定的,也就是下一分鐘的溫度等於現在這一分鐘的溫度(假設我們用一分鐘來做時間單位)。


假設你對你的經驗不是100%的相信,可能會有上下偏差幾度。我們把這些偏差看成是高斯白噪聲,也就是這些偏差跟前後時間是沒有關係的而且符合高斯分配。另外,我們在房間裡放一個溫度計,但是這個溫度計也不準確的,測量值會比實際值偏差。我們也把這些偏差看成是高斯白噪聲。


好了,現在對於某一分鐘我們有兩個有關於該房間的溫度值:你根據經驗的預測值(系統的預測值)和溫度計的值(測量值)。下面我們要用這兩個值結合他們各自的噪聲來估算出房間的實際溫度值。


假如我們要估算k時刻的是實際溫度值。首先你要根據k-1時刻的溫度值,來預測k時刻的溫度。因為你相信溫度是恆定的,所以你會得到k時刻的溫度預測值是跟k-1時刻一樣的,假設是23度,同時該值的高斯噪聲的偏差是5度。


5是這樣得到的:如果k-1時刻估算出的最優溫度值的偏差是3,你對自己預測的不確定度是4度,他們平方相加再開方,就是5。


然後,你從溫度計那裡得到了k時刻的溫度值,假設是25度,同時該值的偏差是4度。



由於我們用於估算k時刻的實際溫度有兩個溫度值,分別是23度和25度。究竟實際溫度是多少呢?相信自己還是相信溫度計呢?究竟相信誰多一點,我們可以用他們的covariance來判斷。


因為Kg²=5²/(5²+4²),所以Kg=0.78,我們可以估算出k時刻的實際溫度值是:23+0.78·(25-23)=24.56度。可以看出,因為溫度計的covariance比較小(比較相信溫度計),所以估算出的最優溫度值偏向溫度計的值。


現在我們已經得到k時刻的最優溫度值了,下一步就是要進入k+1時刻,進行新的最優估算。到現在為止,好像還沒看到什麼自回歸的東西出現。對了,在進入k+1時刻之前,我們還要算出k時刻那個最優值(24.56度)的偏差。算法如下:((1-Kg)·5²)0.5=2.35。這裡的5就是上面的k時刻你預測的那個23度溫度值的偏差,得出的2.35就是進入k+1時刻以後k時刻估算出的最優溫度值的偏差(對應於上面的3)。


就是這樣,卡爾曼濾波器就不斷的把covariance遞歸,從而估算出最優的溫度值。他運行的很快,而且它只保留了上一時刻的covariance。上面的Kg,就是卡爾曼增益。他可以隨不同的時刻而改變他自己的值,是不是很神奇!


下面就要言歸正傳,討論真正工程系統上的卡爾曼。


在這一部分,我們就來描述源於Dr Kalman的卡爾曼濾波器。下面的描述,會涉及一些基本的概念知識,包括概率,隨機變量,高斯/正態分配還有State-space Model等等。但對於卡爾曼濾波器的詳細證明,這裡不能一一描述。


首先,我們先要引入一個離散控制過程的系統。該系統可用一個線性隨機微分方程來描述:


X(k)=A·X(k-1)+B·U(k)+W(k)


再加上系統的測量值:


Z(k)=H·X(k)+V(k)


上兩式子中,X(k)是k時刻的系統狀態,U(k)是k時刻對系統的控制量。A和B是系統參數,對於多模型系統,他們為矩陣。Z(k)是k時刻的測量值,H是測量系統的參數,對於多測量系統,H為矩陣。W(k)和V(k)分別表示過程和測量的噪聲。他們被假設成高斯白噪聲 (White Gaussian Noise),他們的covariance分別是Q和R。這裡我們假設他們不隨系統狀態變化而變化。


對於滿足上面的條件(線性隨機微分系統,過程和測量都是高斯白噪聲),卡爾曼濾波器是最優的信息處理器。下面我們來用他們結合他們的covariances 來估算系統的最優化輸出。



首先我們要利用系統的過程模型,來預測下一狀態的系統。假設現在的系統狀態是k,根據系統的模型,可以基於系統的上一狀態而預測出現在狀態:


X(k|k-1)=A·X(k-1|k-1)+B·U(k)  (1)


式(1)中,X(k|k-1)是利用上一狀態預測的結果,X(k-1|k-1)是上一狀態最優的結果,U(k)為現在狀態的控制量,如果沒有控制量,它可以為0。


到現在為止,我們的系統結果已經更新了,可是,對應於X(k|k-1)的covariance還沒更新。我們用P表示covariance:


P(k|k-1)=A·P(k-1|k-1)·A』+Q  (2)


式(2)中,P(k|k-1)是X(k|k-1)對應的covariance,P(k-1|k-1)是X(k-1|k-1)對應的 covariance,A』表示A的轉置矩陣,Q是系統過程的covariance。式子1,2就是卡爾曼濾波器5個公式當中的前兩個,也就是對系統的預 測。


現在我們有了現在狀態的預測結果,然後我們再收集現在狀態的測量值。結合預測值和測量值,我們可以得到現在狀態(k)的最優化估算值X(k|k):


X(k|k)=

X(k|k-1)+Kg(k)·(Z(k)-H·X(k|k-1))  (3)


其中Kg為卡爾曼增益(Kalman Gain):


Kg(k)=P(k|k-1)·H』 / (H·P(k|k-1)·H』+R)  (4)


到現在為止,我們已經得到了k狀態下最優的估算值X(k|k)。但是為了要另卡爾曼濾波器不斷的運行下去直到系統過程結束,我們還要更新k狀態下X(k|k)的covariance:


P(k|k)=(I-Kg(k)·H)P(k|k-1)  (5)


其中I為1的矩陣,對於單模型單測量,I=1。當系統進入k+1狀態時,P(k|k)就是式子(2)的P(k-1|k-1)。這樣,算法就可以自回歸的運算下去。


卡爾曼濾波器的原理基本描述了,式子1、2、3、4和5就是它的5個基本公式。根據這5個公式,可以很容易的實現計算機的程序。

↓↓↓↓點擊閱讀原文,查看更多新聞

相關焦點

  • 為什麼叫「卡爾曼」,卡爾曼濾波器算法介紹
    首先看看為什麼叫「卡爾曼」。跟其他著名的理論(例如傅立葉變換,泰勒級數等等)一樣,卡爾曼也是一個人的名字,而跟他們不同的是,他是個現代人!我們現在要學習的卡爾曼濾波器,正是源於他的博士論文和1960年發表的論文《A New Approach to Linear Filtering and Prediction Problems》(線性濾波與預測問題的新方法)。  簡單來說,卡爾曼濾波器是一個「optimal recursive data processing algorithm(最優化自回歸數據處理算法)」。
  • 視頻教程 | 理解卡爾曼濾波器(英語中字)
    卡爾曼濾波器是一種優化估算算法,用於在不確定和間接測量的情況下估算系統狀態。本視頻教程由7個小節組成,系統介紹了卡爾曼濾波器,言簡意賅,適合入門。各個小節的主要內容為:第一節:通過幾個案例了解使用卡爾曼濾波器的常見場景。了解卡爾曼濾波器背後的工作原理。第二節:介紹了解狀態觀測器的工作原理,並解釋其背後的數學原理。在無法直接測量時,使用狀態觀測器估算系統的內部狀態。
  • 卡爾曼與卡爾曼濾波
    例如在圖像處理方面,應用卡爾曼濾波對由於某些噪聲影響而造成模糊的圖像進行復原。在對噪聲作了某些統計性質的假定後,就可以用卡爾曼的算法以遞推的方式從模糊圖像中得到均方差最小的真實圖像,使模糊的圖像得到復原。性質①卡爾曼濾波是一個算法,它適用於線性、離散和有限維系統。
  • 【強基固本】卡爾曼濾波器
    其也可以認為是一個最優化自回歸數據處理算法(optimal recursive data processing algorithm)。目前,卡爾曼濾波已經有很多不同的實現,有施密特擴展濾波器、信息濾波器以及一系列的Bierman和Thornton發明的平方根濾波器等,而卡爾曼最初提出的形式現在稱為簡單卡爾曼濾波器。
  • 面向軟體工程師的卡爾曼濾波器
    與我的朋友交談時,我經常聽到:「哦,卡爾曼(Kalman)濾波器……我經常學它,然後我什麼都忘了」。好吧,考慮到卡爾曼濾波器(KF)是世界上應用最廣泛的算法之一(如果環顧四周,你80%的技術可能已經在內部運行某種KF),讓我們嘗試將其弄清楚。
  • 使用卡爾曼濾波器和路標實現機器人定位
    第一部分-線性卡爾曼濾波器 卡爾曼濾波器可以理解為一種感知充滿噪聲的世界的方式。當我們要定位機器人在哪裡,依賴兩個條件:我們知道機器人如何從一個時刻移動到下個時刻,因為我們以某種確定的方式命令它移動。
  • 卡爾曼濾波的原理
    在學習卡爾曼濾波器之前,首先看看為什麼叫「卡爾曼」。
  • 開發者說 | 手把手教你寫卡爾曼濾波器
    無人駕駛技術入門軟體篇已經介紹了傳感器數據的解析和傳感器信息的坐標轉換。這兩步完成後,我們就會獲得某一時刻,自車坐標系下的各種傳感器數據。這些數據包括障礙物的位置、速度;車道線的曲線方程、車道線的類型和有效長度;自車的GPS坐標等等。這些信號的組合,表示了無人車當前時刻的環境信息。由於傳感器本身的特性,任何測量結果都是有誤差的。
  • 卡爾曼濾波器的工作原理(一)
    視頻演示了一個卡爾曼濾波器通過測量一個自由浮動物體的速度計算出它的方向。1.卡爾曼濾波器是什麼?可以在任何有關某些動態系統的不確定信息的地方使用卡爾曼濾波器,並且可以對有關系統下一步做什麼進行有根據的預測。
  • 擴展卡爾曼濾波器在同步電機無速度矢量控制系統中的應用
    針對這個問題本文將擴展卡爾曼濾波算法應用到永磁同步電機矢量控制系統中,改進後的系統具有不改變電動機結構、安裝維護簡單、受環境變化影響小、成本低等眾多優點。2 卡爾曼濾波器  卡爾曼濾波器採用遞歸算法,利用系統當前的已知信息(包括系統的觀測序列和前一時刻的狀態)去估計系統的狀態變量
  • 深入淺出講解卡爾曼濾波(附Matlab程序)
    在學習卡爾曼濾波器之前,首先看看為什麼叫「卡爾曼」。跟其他著名的理論(例如傅立葉變換,泰勒級數等等)一樣,卡爾曼也是一個人的名字,而跟他們不同的是,他是個現代人!學過控制的應該都知道,卡爾曼是現代控制理論的奠基人!卡爾曼全名Rudolf Emil Kalman,匈牙利數學家,1930年出生於匈牙利首都布達佩斯。
  • 一代宗師卡爾曼
    過程控制算法與社會經濟系統。只用輸出的反饋叫輸出反饋,經典控制理論裡的反饋都可以歸到輸出反饋裡,但是用狀態進行反饋的就叫狀態反饋了。輸出反饋對常見系統已經很有效了,但狀態反饋要猛得多。你想想,一個系統的所有狀態都被牢牢地瞄住,所有狀態都乖乖地聽從調遣,那是何等的專業?臺商的大奶們的最高境界呀。卡爾曼濾波器基本原理
  • 卡爾曼濾波及其衍生算法在SOC估計中的應用
    卡爾曼濾波作為一種去除幹擾數據,獲得優質估計結果的優秀算法,在許多領域得到應用。無人機定位、實驗數據處理以及動力電池的SOC、SOH等,需要作出參數估計的領域都有應用。本文意在初步的表述我可以理解到的卡爾曼濾波及其衍生算法的物理意義和算法間的區別。
  • 基於卡爾曼濾波器及多傳感狀態的融合估計算法介紹
    1 卡爾曼濾波器  多傳感信息融合的主要任務之一就是利用多傳感器信息進行目標的狀態估計。目前, 進行狀態估計的方法很多,Kalman 濾波器是一種常用方法。Kalman 濾波器在機動目標跟蹤中具有良好的性能, 它是最佳估計並能夠進行遞推計算, 即它只需要當前的一個測量值和前一個採樣周期的預測值就能進行狀態估計。
  • 卡爾曼濾波器及多傳感狀態融合估計算法
    1 卡爾曼濾波器  多傳感信息融合的主要任務之一就是利用多傳感器信息進行目標的狀態估計。目前, 進行狀態估計的方法很多,Kalman 濾波器是一種常用方法。Kalman 濾波器在機動目標跟蹤中具有良好的性能, 它是最佳估計並能夠進行遞推計算, 即它只需要當前的一個測量值和前一個採樣周期的預測值就能進行狀態估計。
  • 卡爾曼濾波算法解析(一)
    在工程領域,只要涉及到信號處理問題,都繞不開一個人,那就是卡爾曼,雖然卡爾曼提出的估計理論已經過去八九十年之久
  • 透徹理解擴展卡爾曼濾波
    卡爾曼濾波是貝葉斯濾波的一種特例,是在線性濾波的前提下,以最小均方誤差為最佳準則的。估計線性高斯模型,是對線性模型和高斯分布的優化方法。邊緣分布和條件分布的模型:卡爾曼濾波器的主要參數卡爾曼濾波器假設x(paths), z(observations)都為線性高斯的:主要參數:A是在沒有命令的情況下,由於環境因素造成的機器人的位置移動。
  • 基於卡爾曼濾波器和CAN智能從站技術實現開關磁阻電機調速系統設計
    卡爾曼濾算法是一種遞推算法,對於系統存在過程及測量噪聲,狀態變量受到汙染,可以利用卡爾曼濾波技術進行處理。本文將卡爾曼濾波器與傳統的PID控制相結合,使SRD控制效果得到明顯改善。 1、系統設計方案 基於CAN總線的開關磁阻電機遠程控制系統如圖1所示。系統主要包括PC(上位機)、RS-485與CAN結合的通信網絡、CAN智能節點與開關組電機四大部分。
  • 卡爾曼濾波是怎麼回事?
    維納濾波就是一個典型的降噪濾波器。卡爾曼濾波Kalman Filter 算法,是一種遞推預測濾波算法。Kalman Filter 提供了一種高效可計算的方法來估計過程的狀態,並使估計均方誤差最小。卡爾曼濾波器應用廣泛且功能強大:它可以估計信號的過去和當前狀態,甚至能估計將來的狀態,即使並不知道模型的確切性質。
  • 車載毫米波雷達之大話卡爾曼濾波
    我們現在要了解的卡爾曼濾波器,正是源於他的論文《線性濾波與預測問題的新方法》。講完卡爾曼,再講講濾波。卡爾曼濾波屬於一種軟體濾波方法,其基本思想是以最小均方誤差為最佳估計準則,採用信號與噪聲的狀態空間模型,利用前一時刻的估計值和當前時刻的觀測值來更新對狀態變量的估計,求出當前時刻的估計值,算法根據建立的系統方程和觀測方程對需要處理的信號做出滿足最小均方誤差的估計。