【強基固本】卡爾曼濾波器

2021-01-14 人工智慧前沿講習

「強基固本,行穩致遠」,科學研究離不開理論基礎,人工智慧學科更是需要數學、物理、神經科學等基礎學科提供有力支撐,為了緊扣時代脈搏,我們推出「強基固本」專欄,講解AI領域的基礎知識,為你的科研學習提供助力,夯實理論基礎,提升原始創新能力,敬請關注。

轉載來源:https://longaspire.github.io/blog/卡爾曼濾波/Kalman Filter (KF) 是一個高效的遞歸濾波器,它可以實現從一系列的噪聲觀測中,估計動態系統的狀態。

01

卡爾曼濾波器以它的發明者Rudolf. Emil. Kalman先生(2016年去世,向這位傳奇的科學家致敬)而命名。在控制領域,Kalman濾波被稱為線性二次型估計。其也可以認為是一個最優化自回歸數據處理算法(optimal recursive data processing algorithm)。目前,卡爾曼濾波已經有很多不同的實現,有施密特擴展濾波器、信息濾波器以及一系列的Bierman和Thornton發明的平方根濾波器等,而卡爾曼最初提出的形式現在稱為簡單卡爾曼濾波器。也許最常見的卡爾曼濾波器應用是鎖相環,它在收音機、計算機和幾乎全部視頻或通訊設備中廣泛存在。一個簡單的應用是估計物體的位置和速度。簡要描述如下:假設我們可以獲取一個物體的包含噪聲的一系列位置觀測數據,我們可以獲得此物體的精確速度和位置連續更新信息。例如,對於雷達來說,我們關心的是跟蹤目標,而目標的位置、速度、加速度的觀測值是時刻含有誤差的,卡爾曼濾波器利用目標的動態信息,去掉噪聲影響,獲取目標此刻好的位置估計(即濾波過程),將來的位置估計(即預測過程),也可以是過去位置估計的(即插值平滑過程)。

02

假設我們要研究的對象是一個房間的溫度。根據你的經驗判斷,這個房間的溫度是恆定的,也就是下一分鐘的溫度等於現在這一分鐘的溫度(假設我們用一分鐘來做時間單位)。假設你對你的經驗不是絕對相信,可能會有上下偏差幾度。我們把這些偏差看成是高斯白噪聲(White Gaussian Noise,理想情況下我們以高斯噪聲來進行假設估計),也就是這些偏差跟前後時間是沒有關係的而且符合高斯分布(Gaussian Distribution)。另外,我們在房間裡放一個溫度計,但是這個溫度計也不準確的,觀測值會比實際值偏差。我們也把這些偏差看成是高斯白噪聲。好了,現在對於某一分鐘我們有兩個有關於該房間的溫度值:你根據經驗的預測值(系統的預測值)和溫度計的值(觀測值)。下面我們要用這兩個值結合它們各自的噪聲來估算出房間的實際溫度值。假如我們要估算 

上面的 

03

卡爾曼濾波基於時域描述的線性動態系統,它的模型是馬爾科夫鏈(Markov Chain),而馬爾科夫鏈建立在一個被高斯噪聲幹擾的線性算子之上。系統的狀態可以用一個元素為實數的向量表示。隨著離散時間的增加,這個線性算子就會作用到當前狀態之上,產生一個新的狀態,並且會帶入一定的噪聲,同時一些已知的控制信息也會加入。同時,另外一個受噪聲幹擾的線性算子將產生這些隱含狀態的可見輸出。卡爾曼濾波器可以被看作為類隱馬爾科夫模型,它們的顯著不同點在於:隱狀態變量的取值空間是一個連續的空間,而不是離散的狀態空間;另外,隱馬爾科夫模型可以描述下一個狀態的一個任意分布,這也與應用於卡爾曼濾波器中的高斯噪聲模型相反。

首先,我們先要引入一個離散控制過程的系統。該系統的過程模型可用一個線性隨機微分方程(Linear Stochastic Difference Equation)來描述:上兩式子中, 3.1 預測階段對於滿足上面的條件(線性隨機微分系統,過程和觀測都是高斯白噪聲),卡爾曼濾波器是最優的信息處理器。下面我們來用它們結合它們的協方差來估算系統的最優化輸出(類似上一節那個溫度的例子)。首先,我們要利用系統的過程模型,來預測下一狀態的系統。假設現在的系統狀態是 3.2 更新階段首先是觀測餘量(measurement residual):因為觀測過程中存在一個觀測誤差的協方差矩陣,我們可以給出一個觀測餘量的協方差:接下來給出一個卡爾曼增益(Kalman Gain): 現在我們有了現在狀態的預測結果,然後我們再收集現在狀態的觀測值。結合預測值和觀測值,我們可以得到現在狀態 

‍‍‍‍‍‍

04

以上一直提到卡爾曼增益,那麼其實際意義如何理解呢?我們結合一些數學知識來對其進行解釋。我們知道,卡爾曼濾波器對於隨機變量的噪聲,加入了高斯分布的假設,而這,也是能夠對連續動態信息進行濾波的基礎。那麼先從高斯分布開始:符合高斯分布的一個隨機變量 

高斯分布的一個重要性質是:互不相關的兩個高斯分布相乘(相互疊加)後,仍然是一個正態分布!

並且新的正態分布的均值和方差滿足:

以上是單變量概率密度函數的計算結果,如果是多變量的,那麼,就變成了協方差矩陣 

再結合第三部分我們結合的卡爾曼濾波器算法,可以知道,此處卡爾曼增益正是此處的K。它正是用來計算當前兩個高斯噪聲疊加後的系統情況的。而為什麼要進行疊加呢?

我們知道,兩個事件的發生都是概率性的,不能完全相信其中的任何一個。如果具有兩個事件,都發生的話,從直覺或者是理性思維上講,兩個事件同時發生的可能性越大,我們越相信它!要想考察它們同時發生的可能性,就是將兩個事件單獨發生的概率相乘。但是究竟是相信自己預測還是相信觀測呢?我們可以用卡爾曼的方法來加權,即利用他們的方差 

紅色分布為預測,藍色分布為觀測,綠色分布為二者的相乘卡爾曼濾波器的理論基礎,正是假定觀測值和預測值的噪聲都符合正態分布,且兩個正態分布的融合仍是正態分布這一特性進行迭代的。

05

5.1 物體運動狀態估計在算法模型的基礎上,我們再進一步給出一個幫助理解的例子,是從[3]的頁面上直接搬過來的:考慮在無摩擦、無限長的直軌道上的一輛車。該車最初停在位置0處,但時不時受到隨機的衝擊。注意這裡我們考慮沒有外力的影響,因此忽略掉 5.2 算法流程抽象公式是不是很複雜,但是只要你跟著流程來一趟,應該能夠明白KF的整個過程。跑完這個例子之後,我們把整個流程抽象出來:先決定當前系統的初始狀態,並根據預測方程(過程模型)得到一個下一個時刻預測的狀態;根據預測方程中過程的誤差,得到當前預測的協方差估計;進入更新階段,我們根據目前系統的觀測值和上一個時刻預測的狀態,從轉換方程(觀測模型)入手,得到一個測量餘量;根據轉換方程和上個時刻預測的協方差估計,也可以得到一個測量餘量的協方差估計;根據1)測量餘量的協方差 

最後我們應該回過頭來看看以上講的房間溫度的例子,來對比下這個過程。


06

給出一個matlab版本的小程序。

N=200;w(1)=0;w=randn(1,N)  % White Gaussian Noise of Prediction
x(1)=25;a=1; % prediction parameterfor k=2:N; x(k)=a*x(k-1)+w(k-1);end
V=randn(1,N); % White Gaussian Noise of Measurementq1=std(V);Rvv=q1.^2; % covariance of Measurementq2=std(x);Rxx=q2.^2;q3=std(w);Rww=q3.^2; % covariance of predictionc=0.2; % measurement parameterY=c*x+V;
p(1)=10; % initial prediction results(1)=26; % initial optimal resultfor t=2:N; p1(t)=a.^2*p(t-1)+Rww; % covariance of t-1 b(t)=c*p1(t)/(c.^2*p1(t)+Rvv); % kalman gain s(t)=a*s(t-1)+b(t)*(Y(t)-a*c*s(t-1)); % optimal result p(t)=p1(t)-c*b(t)*p1(t); % covariance of tend
t=1:N;plot(t,s,'r',t,Y,'g',t,x,'b');


07

可以查看[4]一個關於卡爾曼濾波器的教程,它對應的一個中文版本可見[5]。


引用

1.http://carpa.bokee.com/4725695.html.

2.http://internetbuff.blog.163.com/blog/static/9425110720091501413932/.

3.http://en.wikipedia.org/wiki/Kalman_filtering.

4.http://www.cl.cam.ac.uk/~rmf25/papers/Understanding the Basis of the Kalman Filter.pdf

5.https://segmentfault.com/a/1190000000514987

 

‍‍

本文目的在於學術交流,並不代表本公眾號贊同其觀點或對其內容真實性負責,版權歸原作者所有,如有侵權請告知刪除。




分享、點讚、在看,給個三連擊唄!

相關焦點

  • 為什麼叫「卡爾曼」,卡爾曼濾波器算法介紹
    我們現在要學習的卡爾曼濾波器,正是源於他的博士論文和1960年發表的論文《A New Approach to Linear Filtering and Prediction Problems》(線性濾波與預測問題的新方法)。  簡單來說,卡爾曼濾波器是一個「optimal recursive data processing algorithm(最優化自回歸數據處理算法)」。
  • 為什麼叫「卡爾曼」?卡爾曼濾波器算法介紹
    我們現在要學習的卡爾曼濾波器,正是源於他的博士論文和1960年發表的論文《A New Approach to Linear Filtering and Prediction Problems》(線性濾波與預測問題的新方法)。簡單來說,卡爾曼濾波器是一個「最優化自回歸數據處理算法」。
  • 卡爾曼濾波器的工作原理(一)
    視頻演示了一個卡爾曼濾波器通過測量一個自由浮動物體的速度計算出它的方向。1.卡爾曼濾波器是什麼?可以在任何有關某些動態系統的不確定信息的地方使用卡爾曼濾波器,並且可以對有關系統下一步做什麼進行有根據的預測。
  • 視頻教程 | 理解卡爾曼濾波器(英語中字)
    卡爾曼濾波器是一種優化估算算法,用於在不確定和間接測量的情況下估算系統狀態。本視頻教程由7個小節組成,系統介紹了卡爾曼濾波器,言簡意賅,適合入門。各個小節的主要內容為:第一節:通過幾個案例了解使用卡爾曼濾波器的常見場景。了解卡爾曼濾波器背後的工作原理。第二節:介紹了解狀態觀測器的工作原理,並解釋其背後的數學原理。在無法直接測量時,使用狀態觀測器估算系統的內部狀態。
  • 使用卡爾曼濾波器和路標實現機器人定位
    第一部分-線性卡爾曼濾波器 卡爾曼濾波器可以理解為一種感知充滿噪聲的世界的方式。當我們要定位機器人在哪裡,依賴兩個條件:我們知道機器人如何從一個時刻移動到下個時刻,因為我們以某種確定的方式命令它移動。
  • 開發者說 | 手把手教你寫卡爾曼濾波器
    這兩步完成後,我們就會獲得某一時刻,自車坐標系下的各種傳感器數據。這些數據包括障礙物的位置、速度;車道線的曲線方程、車道線的類型和有效長度;自車的GPS坐標等等。你會發現綠色區域的方差比紅色區域和藍色區域的小。這是因為進行加權運算時,需要將兩個高斯分布進行乘法運算,得到的新的高斯分布的方差比兩個做乘法的高斯分布都小。
  • 面向軟體工程師的卡爾曼濾波器
    與我的朋友交談時,我經常聽到:「哦,卡爾曼(Kalman)濾波器……我經常學它,然後我什麼都忘了」。好吧,考慮到卡爾曼濾波器(KF)是世界上應用最廣泛的算法之一(如果環顧四周,你80%的技術可能已經在內部運行某種KF),讓我們嘗試將其弄清楚。
  • 擴展卡爾曼濾波器在同步電機無速度矢量控制系統中的應用
    因為它其會利用反饋對估計的狀態變量進行修正,使估計的誤差方差減小,所以卡爾曼濾波器是一種最優估計算法。卡爾曼濾波器是一種線性估計,即要求估計的狀態和觀測序列與狀態是線性關係。卡爾曼濾波器方程為:3 擴展卡爾曼濾波器同步電機矢量控制中的應用  卡爾曼濾波器只能對離散線性模型進行狀態估計
  • 卡爾曼與卡爾曼濾波
    斯坦利·施密特(Stanley Schmidt)首次實現了卡爾曼濾波器。卡爾曼在NASA埃姆斯研究中心訪問時,發現他的方法對於解決阿波羅計劃的軌道預測很有用,後來阿波羅飛船的導航電腦使用了這種濾波器。 關於這種濾波器的論文由Swerling (1958), Kalman (1960)與 Kalman and Bucy (1961)發表。
  • 基於卡爾曼濾波器和CAN智能從站技術實現開關磁阻電機調速系統設計
    卡爾曼濾算法是一種遞推算法,對於系統存在過程及測量噪聲,狀態變量受到汙染,可以利用卡爾曼濾波技術進行處理。本文將卡爾曼濾波器與傳統的PID控制相結合,使SRD控制效果得到明顯改善。 1、系統設計方案 基於CAN總線的開關磁阻電機遠程控制系統如圖1所示。系統主要包括PC(上位機)、RS-485與CAN結合的通信網絡、CAN智能節點與開關組電機四大部分。
  • 卡爾曼濾波器及多傳感狀態融合估計算法
    1 卡爾曼濾波器  多傳感信息融合的主要任務之一就是利用多傳感器信息進行目標的狀態估計。目前, 進行狀態估計的方法很多,Kalman 濾波器是一種常用方法。Kalman 濾波器在機動目標跟蹤中具有良好的性能, 它是最佳估計並能夠進行遞推計算, 即它只需要當前的一個測量值和前一個採樣周期的預測值就能進行狀態估計。
  • 一代宗師卡爾曼
    卡爾曼濾波器基本原理卡爾曼濾波器基本原理圖儘管學控制的人都要學現代控制理論,但大多數人記得卡爾曼還是因為那個卡爾曼濾波器(Kalman Filter),這種濾波方法以它的發明者魯道夫·卡爾曼的名字命名由於世界上很多變化的事物,都可以抽象成「按照某種固定方式的系統」,而且人們都有估計這些事物的「狀態」的需求,並且無數應用證明卡爾曼濾波器在這些情況下都是適用的,因此卡爾曼濾波器能夠滿足人們的需求。
  • 卡爾曼濾波的原理
    2.卡爾曼濾波器的介紹(Introduction to the Kalman Filter)為了可以更加容易的理解卡爾曼濾波器,這裡會應用形象的描述方法來講解,而不是像大多數參考書那樣羅列一大堆的數學公式和數學符號。但是,他的5條公式是其核心內容。結合現代的計算機,其實卡爾曼的程序相當的簡單,只要你理解了他的那5條公式。
  • 卡爾曼濾波應用於自動駕駛
    自主車輛的組成部分卡爾曼濾波器使用的數據來自LIDAR和RADAR 。所以現在只關注這兩個方面。為何使用卡爾曼濾波器?我們可以使用卡爾曼濾波器進行有根據的猜測,在我們對某些動態系統有不確定信息的任何地方,系統將要做什麼。在自主車輛的情況下,卡爾曼濾波器可用於根據我們的車輛接收的數據預測我們的自動駕駛車輛前方的車輛將採取的下一組動作。這是一個使用兩步預測和更新的迭代過程。
  • 透徹理解擴展卡爾曼濾波
    卡爾曼濾波是貝葉斯濾波的一種特例,是在線性濾波的前提下,以最小均方誤差為最佳準則的。估計線性高斯模型,是對線性模型和高斯分布的優化方法。邊緣分布和條件分布的模型:卡爾曼濾波器的主要參數卡爾曼濾波器假設x(paths), z(observations)都為線性高斯的:主要參數:A是在沒有命令的情況下,由於環境因素造成的機器人的位置移動。
  • 基於卡爾曼濾波器及多傳感狀態的融合估計算法介紹
    1 卡爾曼濾波器  多傳感信息融合的主要任務之一就是利用多傳感器信息進行目標的狀態估計。目前, 進行狀態估計的方法很多,Kalman 濾波器是一種常用方法。Kalman 濾波器在機動目標跟蹤中具有良好的性能, 它是最佳估計並能夠進行遞推計算, 即它只需要當前的一個測量值和前一個採樣周期的預測值就能進行狀態估計。
  • 深入淺出講解卡爾曼濾波(附Matlab程序)
    在學習卡爾曼濾波器之前,首先看看為什麼叫「卡爾曼」。跟其他著名的理論(例如傅立葉變換,泰勒級數等等)一樣,卡爾曼也是一個人的名字,而跟他們不同的是,他是個現代人!學過控制的應該都知道,卡爾曼是現代控制理論的奠基人!卡爾曼全名Rudolf Emil Kalman,匈牙利數學家,1930年出生於匈牙利首都布達佩斯。
  • 車載毫米波雷達之大話卡爾曼濾波
    所以,卡爾曼濾波在毫米波雷達的應用上,就扮演著至關重要的角色。卡爾曼&卡爾曼濾波什麼是卡爾曼濾波?卡爾曼濾波和傅立葉變換、泰勒級數一樣,都是以其發明人命名。稍微不同的是,卡爾曼是個現代人!卡爾曼是匈牙利數學家,1930年出生於匈牙利首都布達佩斯。
  • 卡爾曼濾波是怎麼回事?
    維納濾波就是一個典型的降噪濾波器。卡爾曼濾波Kalman Filter 算法,是一種遞推預測濾波算法。Kalman Filter 提供了一種高效可計算的方法來估計過程的狀態,並使估計均方誤差最小。卡爾曼濾波器應用廣泛且功能強大:它可以估計信號的過去和當前狀態,甚至能估計將來的狀態,即使並不知道模型的確切性質。
  • 卡爾曼濾波及其衍生算法在SOC估計中的應用
    卡爾曼濾波作為一種去除幹擾數據,獲得優質估計結果的優秀算法,在許多領域得到應用。無人機定位、實驗數據處理以及動力電池的SOC、SOH等,需要作出參數估計的領域都有應用。本文意在初步的表述我可以理解到的卡爾曼濾波及其衍生算法的物理意義和算法間的區別。