如何通俗並儘可能詳細解釋卡爾曼濾波?

盡量少用公式


假設你有兩個感測器,測的是同一個信號。可是它們每次的讀數都不太一樣,怎麼辦?

取平均。

再假設你知道其中貴的那個感測器應該准一些,便宜的那個應該差一些。那有比取平均更好的辦法嗎?

加權平均。

怎麼加權?假設兩個感測器的誤差都符合正態分布,假設你知道這兩個正態分布的方差,用這兩個方差值,(此處省略若干數學公式),你可以得到一個「最優」的權重。

接下來,重點來了:假設你只有一個感測器,但是你還有一個數學模型。模型可以幫你算出一個值,但也不是那麼准。怎麼辦?

把模型算出來的值,和感測器測出的值,(就像兩個感測器那樣),取加權平均。

OK,最後一點說明:你的模型其實只是一個步長的,也就是說,知道x(k),我可以求x(k+1)。問題是x(k)是多少呢?答案:x(k)就是你上一步卡爾曼濾波得到的、所謂加權平均之後的那個、對x在k時刻的最佳估計值。

於是迭代也有了。

這就是卡爾曼濾波。

(無公式)


怒答!剛剛學過並且試著直觀地理解過,如有不妥的地方還望大牛們指教。
圖片來源及參考文獻:http://www.cl.cam.ac.uk/~rmf25/papers/Understanding%20the%20Basis%20of%20the%20Kalman%20Filter.pdf

題主如果只是想泛泛理解, @Kent Zeng 的回答已經非常棒了。我嘗試做一個更詳細的解答。

好了下面進入正題,先從簡單的說起:
考慮軌道上的一個小車,無外力作用,它在時刻t的狀態向量x(t)只與x(t-1)相關:
(狀態向量就是描述它的t=0時刻所有狀態的向量,比如:
[速度大小5m/s, 速度方向右, 位置坐標0],反正有了這個向量就可以完全預測t=1時刻小車的狀態)

x(t)=Fx(t-1)

那麼根據t=0時刻的初值x(0),理論上我們可以求出它任意時刻的狀態。

當然,實際情況不會這麼美好。

這個遞推函數可能會受到各種不確定因素的影響(內在的外在的都算,比如颳風下雨地震,小車結構不緊密,輪子不圓等等)導致x(t)並不能精確標識小車實際的狀態。

我們假設每個狀態分量受到的不確定因素都服從正態分布。

現在僅對小車的位置進行估計
請看下圖:t=0時小車的位置服從紅色的正態分布。

根據小車的這個位置,我們可以預測出t=1時刻它的位置:

分布變「胖」了,這很好理解——因為在遞推的過程中又加了一層雜訊,所以不確定度變大了。

為了避免純估計帶來的偏差,我們在t=1時刻對小車的位置坐標進行一次雷達測量,當然雷達對小車距離的測量也會受到種種因素的影響,於是測量結果告訴我們,小車t=1時的位置服從藍色分布:

好了,現在我們得到兩個不同的結果。前面有人提過加權,Kalman老先生的牛逼之處就在於找到了相應權值,使紅藍分布合併為下圖這個綠色的正態分布(啰嗦一句,這個綠色分布均值位置在紅藍均值間的比例稱為Kalman增益(比如下圖中近似0.8),就是各種公式里的K(t))

你問為什麼牛逼?
綠色分布不僅保證了在紅藍給定的條件下,小車位於該點的概率最大,而且,而且,它居然還是一個正態分布!
正態分布就意味著,可以把它當做初值繼續往下算了!這是Kalman濾波能夠迭代的關鍵。

最後,把綠色分布當做第一張圖中的紅色分布對t=2時刻進行預測,演算法就可以開始循環往複了。

你又要問了,說來說去綠色分布是怎麼得出的呢?

其實可以通過多種方式推導出來。我們課上講過的就有最大似然法、Ricatti方程法,以及上面參考文獻中提及的直接對高斯密度函數變形的方法,這個不展開說了。

另外,由於我只對小車位移這個一維量做了估計,因此Kalman增益是標量,通常情況下它都是一個矩陣。而且如果估計多維量,還應該引入協方差矩陣的迭代,我也沒有提到。如果樓主有興趣,把我提及那篇參考文獻吃透,就明白了。

Kalman濾波演算法的本質就是利用兩個正態分布的融合仍是正態分布這一特性進行迭代而已。


先來點背景音樂:我種下一顆種子,終於長出了果實。。


好吧,假設你在去一個風景區旅遊的時候,種下了一棵果樹,但顯然從果樹幼苗到果實不是一天兩天能完成的啊,需要慢慢長高。而你又不可能經常去看,但又想知道果樹的高度,那怎麼辦?

所以要解決的問題是:如何正確估計一棵果樹的高度?

我們把想要知道的果樹高度叫做待估的狀態變數。我們想一年知道一次,這就叫做步長

你需要知道種下果樹的時候大概高度啊,於是你想了想,大概1米吧,但我也不確定,有可能90公分也有可能110公分。於是這個1米,叫做你的初始狀態估計,這個10公分的不確定性,叫做狀態估計的誤差協方差矩陣,後續它會隨著你的下一步估計而變化。


怎麼辦呢?

你在網上查了查,這種果樹差不多每年都比前一年生長10%的高度(純假設而已哈),這個生長的規律/模型就叫做狀態轉移矩陣。於是根據模型,假如2017年有1米,2018年就大概有1.1米。

但顯然這個模型不適用於任意一棵果樹和你種植當地的實際日照風土情況,而且你明明知道果樹不可能無限增長。所以咱們的模型不可能是100%準確的,我們用一個叫做過程雜訊的東西來衡量它。可以理解為模型遞推下去的不準確度。比如假設這個估計模型誤差在0.3米,這叫做白雜訊。過程雜訊越小就意味著你相信生長模型很準確,越大就表示模型越垃圾


但儘管如此還是不靠譜啊,閉門猜果樹高度肯定不可能一直准,這個時候我們需要找一下本地的朋友們定期去看一眼。由於是拜託他們幫忙,也不想真要求他們爬上去拿尺子量,大概給個數就行,這個朋友幫忙看到的高度就是我們的測量值

假設有朋友A和B,朋友A很認真,每次都拿尺子大概比一比,告訴你都用大概多少分米來說,比如大概1米8到1米9吧;而朋友B不認真,只瞄一眼說大概1.5-2米吧。但是A有一個壞處,比較懶,兩年才給你發個簡訊;B比較勤快,每年就有。這個2年或者1年就叫做測量更新頻率。我們需要他們儘可能提供數據,所以兩個都要採納。而且這兩個測量一個來自尺子一個來自視力,不同的測量類型我們都能同時使用,太好了!

你明顯覺得A比B要靠譜一些,於是認為A的精度在分米級,B的精度在半米級,這個分米和半米叫做他倆的測量雜訊。基於這個測量雜訊你可以建立一個測量雜訊矩陣,衡量在參考時對A和B觀測值的權重。


那麼你現在明白了,既需要果樹生長模型,這樣即便A和B不給我數據,我也大概能估計出明年這個樹的高度。但也不能只依靠模型,比如果樹進入成熟期慢慢就不長了,我們也需要A和B的觀測值去校正估計,那麼就需要把他們融合在一起。


於是,從模型這裡,有一個衡量初始估計是否準確的矩陣叫做狀態估計協方差矩陣,有一個衡量生長模型準確度的過程雜訊矩陣;從觀測那裡有一個衡量觀測是否準確的矩陣叫做觀測雜訊協方差矩陣。

我們把它和模型融合在一起,就變成了一個叫做增益矩陣的東西。糊塗了?別著急,其實增益矩陣就是一件事情:我到底是應該相信我推的模型多,還是應該相信來自A和B的測量多呢?


於是通過增益矩陣和這一系列矩陣,你建立了一套系統:當模型比較準確時,我相信模型多一點,當它不準時我相信實際測量多一些。而且還有一個優勢,測量幫助我校正模型準確度;當A和B突然不給我測量時,我也能通過已經建立好的這套體系估計在下一個步長(明年)果樹的高度


卡爾曼濾波就這樣建立起來了。

最理想的情況是怎樣?

最準確的果樹初始高度估計,=較小的狀態估計誤差

最準確的果樹生長狀態模型,=較小的過程雜訊

最準確的果樹測量值,=較小的測量雜訊,而且測量類型越多越好(尺子和視力)

卡爾曼博士在1960年去了NASA訪問,把這套理論首次提出,震驚了NASA,於是很快採用。美國的標誌性阿波羅登月任務,就是使用這套嶄新的估計理論,登上月球的!

大家經常開玩笑,說阿波羅登月是」劃著洗衣盆飄過大西洋「,那麼這套估計理論大概就相當於洗衣盆上的那個舵手了。現在在航天領域,卡爾曼濾波是一種殿堂級的理論,應用的

到處都是!

到處都是!

到處都是啊!

2016年86歲的魯道夫卡爾曼博士仙逝了,祝他在天堂里依然幸福!


覺得不夠通俗的其實只用看前半段就好了…………後半段就是套公式並說明公式怎麼來的

你們啊,說的還是不夠通俗。
假設我養了一隻豬:

一周前,這隻豬的體重是46±0.5kg。注意,在這裡我用了±0.5,表示其實我對這隻豬一周前的體重並不是那麼確定的,也就是說,46kg這個體重有0.5kg的誤差。
現在,我又養了這隻豬一個星期。那麼我想要知道它一個星期之後多重,又大概有多少的誤差?

為了得到一周後的體重,我有兩種方法:一是根據我多年的養豬經驗得到的豬體重公式推求出一個大概的值,另一個就是直接去稱它的體重。當然,兩種方法都有一定的誤差。假設經驗公式得到的體重是48kg,誤差2kg;直接稱體重得到的是49kg,誤差1kg:

可是,我是一個處女座的人,不管是經驗公式得到的值,還是直接稱量得到的值,我都覺得不夠准。我希望有一種方法,可以同時結合這隻豬一周前的體重、用經驗公式估計的值以及直接稱量得到的值,綜合考慮,得出一個最接近豬真實體重的,誤差最小的值。這就是卡爾曼濾波要完成的任務。
現在我們來把養豬的模型抽象成數學公式:

上圖的左邊,上一周的豬的體重,可以抽象為也k-1時刻的狀態值,用k-1時刻的最優估計值加上一個誤差項來表示,右邊同理。其中,

這一項表示的是估計值的協方差。這裡要說明兩點:1,上圖中所有的變數都是用粗體,表示這是一個向量或者一個矩陣;2,之所以用(列)向量而非一個數來表示狀態值,是因為,雖然一隻豬的體重可以用一個值來表示,但是在實際的應用中很多狀態並不是一個數就能表示的(比如導彈在空間中的位置,同時有x、y、z三個坐標)。
上圖中右邊表示k時刻的狀態值,這個值可以通過預測模塊(也就是根據經驗公式估計豬的體重)和糾錯模塊(也就是直接去稱量豬的體重值)來估計。同樣,預測模塊和糾錯模塊都有著對應的誤差和誤差協方差矩陣。卡爾曼濾波要做的,就是根據貝葉斯估計的相關理論,同時考慮預測模塊和糾錯模塊的協方差,對誤差小的項賦予較大的權重,對誤差大的項賦予較小的權重,並使預測的誤差最小。

具體的實現過程如下:

至於具體的這個過程是怎麼推求的,每個參數的詳細解釋又是怎麼樣的,這個在所有介紹卡爾曼的濾波的書上都有講述,也並不是一個帖子就能說清楚的,這裡就不展開講了~
謝謝各位看官~


個人覺得何毓琦老師(曾與Kalman合作,何老博客里有不少介紹)的這篇博文講得算是非常好了,雖然仍有公式。

http://blog.sciencenet.cn/blog-1565-14253.html


信號處理中的濾波實質上就是講降噪。一個信號通常是有用的原始信號與一個雜訊的疊加,雜訊一般用高斯白雜訊描述,它們混在一起了,我放大信號雜訊也放大,縮小雜訊信號也縮小,一般我沒有通用辦法改善信噪比。但是如果我有好幾個信號,裡面包含了相同的原始信號,我把它們疊加在一起,原始信號是相干疊加,幅度變成兩倍功率變成了四倍,而雜訊是非相干疊加,許多地方會相互抵消,功率只變成兩倍,這樣信噪比就提高了一倍。所有的「濾波」降噪,本質上都是通過相干疊加增強原始信號提高信噪比的。
上面的情況是信噪比相同,如果信噪比不同呢?用一步柯西不等式就能證明,對於雜訊功率相同的信號,只要按各自信號功率比例混合,就能最大化信噪比。
最後,如果不是另采了一個信號,而是用歷史測量值來預測,將預測值作為另一個信號,這個預測值的信噪比是可以推算出來的,再採用前面的方法就得到卡爾曼濾波


記得大學的時候上信號處理的課程,書上第一次出現了那恐怖的五個公式,而且每個公式都是帶k下標的,即使老師講了一遍又一遍,依然雲里霧裡。後來讀了研究生,搞不懂卡爾曼濾波心裡不服,再看那些公式,雖然慢慢可以推導出來,可是至於為什麼是這樣還是不明白,心裡的疙瘩還是沒解開。至此,都是從信號處理、控制理論的領域去理解卡爾曼濾波。我準備放棄了,我相信我還弄不懂KF不是我自己的問題,一定是我看的資料解釋的不具有一般性,沒有從問題的本質出發。

後來我接觸了機器學習領域,當然要看入門聖經PRML這本書啦。一開始我並不知道ML會跟KF有半毛錢關係,直到看到第13章講LDS(線性動態系統)那部分,書上告訴我LDS的前向演算法就是KF,而它的後向演算法是卡爾曼平滑(KS)。我靠,原來嚼了好幾年都沒嚼爛的KF只是LDS的一部分,而且從概率模型的角度去理解KF更簡單也更接近本質。LDS理論不僅告訴你KF是怎麼來的,以及它的哥們兒KS是怎麼來的,而且能告訴你在狀態方差和觀測方差未知且可能隨時間變化時(標準KF假定這兩者已知且不隨時間變化)怎麼從數據學習到這些參數。

另外,順便說一下和KF關係很密切也非常常見的HMM(隱馬爾科夫模型)。HMM和LDS都是用來處理時間序列問題的模型,兩者的模型結構完全一樣,理論推導過程也可以對照著寫。唯一不同的是,HMM的隱變數是離散的,狀態方程被一個狀態轉移矩陣替代。因而HMM只能用來處理像手寫識別、詞性標註等隱變數是離散變數的時間序列問題。而LDS的隱變數(包括觀測變數)是連續的,且假設觀測方程(在HMM里叫發射概率模型,高斯分布)和狀態方程(在HMM里叫轉移概率模型,用一個狀態轉移概率矩陣表示)均為線性高斯分布。我有一篇文章詳細介紹了HMM模型,大家有興趣可以看看。

而HMM和LDS又都是PGM(概率圖模型)的特例,從PGM理論出發,可以推導出HMM和LDS的所有結論,只不過在發展歷程上,HMM、LDS和PGM都是獨立發展的。而PGM的理論知識在PRML一書第8章也有詳細闡述。

下圖描述了PGM、HMM和LDS之間的關係。其中KF是LDS的前向演算法,LDS的後向演算法為KS,圖中未畫出。


放一篇自己寫的blog吧,理論結合具體應用,看完應該能對Kalman Filter有基本的理解。
卡爾曼濾波器學習筆記


濾波幾個相互正交的分類:

低通,高通
開環,閉環(有無iterate)
線性,非線性
時變,定常
動態系統,靜態系統
是否最小方差

狀態估計:

卡爾曼濾波:閉環,線性,時變,動態系統,steady state是低通,最小方差

加權平均:開環,線性,定常,靜態系統,低通,最小方差

本質區別是系統是動態系統還是靜態系統,靜態系統的話,卡爾曼就閉環轉開環(不再iterate)、時變轉定常,回到加權平均,也可被看作steady state的卡爾曼濾波。如此來說,卡爾曼濾波是動態系統的加權平均~

信息融合:

卡爾曼濾波:閉環,線性,時變,動態系統,最小方差

互補濾波:開環,線性,定常,動態或靜態系統,靜態系統最小方差、動態是次小方差

本質區別是:互補濾波是對閉環的、iterative的、時變的卡爾曼濾波的開環、不iterative、定常的近似,也可被看作steady state的卡爾曼濾波,因此是sub optimal 次優(次小方差)。如果是靜態系統,那卡爾曼濾波就回到互補濾波~


對動態事物的感知我們往往有兩種手段,一種是預測,一種是觀測。但是不幸的是無論是預測還是觀測均避免不了誤差,比如天氣情況可以用一組非線性偏微分方程算出來,也可以用各個基站測量出來,但是均有誤差。再比如導彈的運行軌跡我們可以預測也可以通過雷達觀測,但是也均有誤差。那麼自然的問題就是如何在預測和觀測給出一個最優的估計值。卡爾曼告訴了我們答案。答案很簡單就是從兩個方面觀察得到,一是靜態,如果預測的誤差大觀測的誤差小我們有理由相信最優解更加靠近觀測反之亦然;二是動態的角度,如果觀測的誤差大我們有理由相信下一時刻觀測的貢獻要小一些。我稱之為動態的最小二乘,這便是大名鼎鼎的卡爾曼演算法。對未來時刻用卡氏演算法我們稱之為預測,對當下的結果用卡氏演算法我們稱之為濾波,對過去的結果用卡氏演算法我們稱之為平滑。懂了這些也不枉費一晚上的學習。


假設我們要研究的對象是一個房間的溫度。根據你的經驗判斷,這個房間的溫度是恆定
的,也就是下一分鐘的溫度等於現在這一分鐘的溫度(假設我們用一分鐘來做時 間單位)。
假設你對你的經驗不是 100%的相信,可能會有上下偏差幾度。我們把這些偏差看成是高斯
白雜訊(White Gaussian Noise),也就是這些偏差跟前後時間是沒有關係的而且符合高斯分
配(Gaussian Distribution)。另外,我們在房間里放一個溫度計,但是這個溫度計也不準確
的,測量值會比實際值偏差。我們也把這些偏差看成是高斯白雜訊。
好了,現在對於某一分鐘我們有兩個有關於該房間的溫度值:你根據經驗的預測值(系
統的預測值)和溫度計的值(測量值)。下面我們要用這兩個值結合他們各自的雜訊來估算
出房間的實際溫度值。
假如我們要估算 k 時刻的是實際溫度值。首先你要根據 k-1 時刻的溫度值,來預測 k 時
刻的溫度。因為你相信溫度是恆定的,所以你會得到 k 時刻的溫度預測值是跟 k-1 時刻一
樣的,假設是 23 度,同時該值的高斯雜訊的偏差是 5 度(5 是這樣得到的:如果 k-1 時刻
估算出的最優溫度值的偏差是 3,你對自己預測的不確定度是 4 度,他們平方相加再開方,
就是 5)。然後,你從溫度計那裡得到了 k 時刻的溫度值,假設是 25 度,同時該值的偏差
是 4 度。
由於我們用 於估算 k 時刻的實際溫度有兩個溫度值,分別是 23 度和 25 度。究竟實際
溫度是多少呢?相信自己還是相信溫度計呢?究竟相信誰多一點,我們可以用他們的
covariance 來判斷。因為 Kg^2=5^2/(5^2+4^2),所以 Kg=0.78,我們可以估算出 k 時刻的
實際溫度值是:23+0.78* (25-23)=24.56 度。可以看出,因為溫度計的 covariance 比較小
(比較相信溫度計),所以估算出的最優溫度值偏向溫度計的值。
現在我們已經得到 k 時刻的最優溫度值了,下一步就是要進入 k+1 時刻,進行新的最
優估算。到現在為止,好像還沒看到什麼自回歸的東西出現。對了,在進入 k+1 時刻之前,
我們還要算出 k 時刻那個最優值(24.56 度)的偏差。演算法如下:((1-Kg)*5^2)^0.5=2.35。
這裡的 5 就是上面的 k 時刻你預測的那個 23 度溫度值的偏差,得出的 2.35 就是進入 k+1
時刻以後 k 時刻估算出的最優溫度值的偏差(對應於上面的 3)。
就是這樣,卡爾曼濾波器就不斷的把 covariance 遞歸,從而估算出最優的溫度值。他
運行的很快,而且它只保留了上一時刻的 covariance。上面的 Kg,就是卡爾曼增益(Kalman
Gain)。他可以隨不同的時刻而改變他自己的值,是不是很神奇!

——摘自百度文庫 卡爾曼濾波入門強烈推薦 這個文檔讓我豁然開朗


喝酒的時候玩過猜牌點嗎?

隨便抽一張牌
我:你猜是幾?
你:6!(狀態更新)
我:小了!(測量更新)
你:10!
我:小了!
你:12!
我:錯了,是老K!喝酒喝酒!

所以讓你一直猜下去一定會猜對吧。


大白話說,就是對被觀測量進行物理一個建模,目的是用「道理」來約束觀測結果,減少雜訊的影響。

比如你同時觀測一個車的「加速度」和「速度」,如果上一次觀測中,沒有看到加速度,下一次的觀測結果中速度卻發生了變化,那麼上一次肯定是有觀測誤差了(雖然暫時還不確定是哪個量觀測錯了)。

一般而言,你會觀測一個系統的多個「相關變數」,並利用模型,通過上一次觀測結果來對下一次的測量做一個預估。
比如你同時觀測車的加速度,速度,和位移。然後你把其中每一個量當作未知量,用其它量去解它,這些計算方程就構建一了個「預估矩陣」,以此來進行預估。

在你通過預估矩陣,對上一組觀測結果進行預估並得到了「理性上」的下一組觀測結果後,然後你還會收到一組下一次的實際觀測結果,它們之間肯定會有一定偏差。

你要對他們進行一定程度的融合來獲得最後的結果。

一個很自然的想法是進行加權平均。比如我知道感測器比較不靠譜,我就把感測器的權重調小一些。或者我知道我用了很好的感測器,我可以把感測器的權重調大一些來增加穩定性。

卡爾曼濾波中對於如何調節權重有大量論文。經典的方法是先觀測一組值,然後通過解相關性來估計感測器雜訊的大小,再依據雜訊大小設置之後系統運行時採用的權重。


數據濾波的意義:從混有隨機雜訊的數據序列(系統和量測)中,在線辨識和處理其雜訊因素,還原出儘可能準確的狀態估計值。


KF的應用領域:目標跟蹤、故障診斷、計量經濟學、慣導系統……
(Optimal Recursive Data Processing Algorithm 最優化自回歸數據處理演算法)


KF的適用範圍:準確已知的線性系統和量測方程;系統雜訊和量測雜訊為互不相關的零均值高斯白雜訊。


如果你學過自動控制理論,應該聽說過狀態觀測器。卡爾曼濾波器其實就是一個狀態觀測器,只不過,狀態觀測器的增益K值不是配極點配出來的,而是使用卡爾曼的公式算出來的。經過證明,使用此K值可以達到在當前感測器測量值與前次狀態預測值之間估計得到最優的狀態估計值(即當噪知道過程雜訊process noise和感測器雜訊sensor noise的統計學特性時,就可以設計出步步最優的狀態觀測器)。就個人理解,這個過程雜訊主要用來衡量模型的不確定性。

前面說了這麼多,其實個人感覺卡爾曼濾波並沒有那麼的好用,因為在本人的研究中,過程雜訊不可忽略又無法測量,只能試湊。另外,如果模型參數不準,估計效果也不會好。


How a Kalman filter works, in pictures 不能再清楚明了了


花了兩個晚上把 Kalman Filter 給弄懂了,來分享一下學習經歷。

基本模型

X_n=G_nX_{n-1}+V_n

Y_n=H_nX_n+W_n

V_nsim mathcal{N}(0,C_{V_n})

W_nsim mathcal{N}(0,C_{W_n})

Y_n是測量,V_n 是過程雜訊, W_n 是測量雜訊,互相獨立

0. 符號約定

hat{x}_{n|n}=E[X_n|Y_{(n)}=y_{(n)}]

hat{y}_{n|n-1}=E[Y_n|Y_{(n)}=y_{(n-1)}]

1. 預測環節

根據上一次預測的狀態以及過程矩陣 G_n 來預測當前狀態

hat{x}_{n|n-1}=G_nhat{x}_{n-1|n-1}

對應的協方差

C_{X_{n|n-1}}=G_nC_{X_{n-1|n-1}}G_n^intercal +C_{V_n}

C_{Y_{n|n-1}}=H_nC_{X_{n|n-1}}H_n^intercal +C_{W_n}

2. 修正環節

簡言之,就是通過 Delta Y 去擬合一個最有可能的修正項 Delta X,來獲得一個對於 X 的 MMSE(最小平均方差)估計。

hat{x}_{n|n}=hat{x}_{n|n-1}+K_n Delta y_n

Delta y_n=y_n-H_nhat{x}_{n|n-1}

我們知道對於 hat{y}=x^intercal t+m 這樣的線性模型來說,MMSE 擬合方法是

hat{t}=(X^intercal X)^{-1}X^intercal y

應用到剛剛的方程中

K_n=E[X_nDelta Y_n^intercal]E[Delta Y_n Delta Y_n^intercal]^{-1}

帶入化簡

K_n=C_{X_{n|n-1}}H_n^intercal C_{Y_{n|n-1}}^{-1}

其中

C_{Y_{n|n-1}}=H_nC_{X_{n|n-1}}H_n^intercal +C_{W_n}

最後

C_{X_{n|n}}=C_{X_{n|n-1}}-K_nH_nC_{X_{n|n-1}}

基本的 Kalman Filter 從模型中就可以看出,依賴於對於雜訊的先驗知識;控制模型被限制為一個確定的矩陣加一個高斯白雜訊。

ps. 還是得多學學線性代數啊

pps. C 語言實現: kalman_filter.c


至少已經有人回答了,我補上中文版鏈接(????)?"""
機器人眼中的數學 - 說說卡爾曼濾波(分享自知乎網)https://zhuanlan.zhihu.com/p/25598462?utm_source=com.android.mmsutm_medium=social


本質上是個狀態觀測器,對所需狀態變數進行最優估計,順便去了除雜訊,達到濾波目的


使用貝葉斯推導的控制方法。

yeah! No equations.


推薦閱讀:

怎樣DIY一個簡單的四旋翼?
如何看待三星申請的無人機專利?
如何評價王孟秋團隊的Hover Camera?其最大的創新點在哪?值他在節目上所說的600美金嗎?
大疆 DJI 更應該怕誰,是 Parrot 還是 3D Robotics還是GoPro等?

TAG:機器人 | 自動化 | 無人機Drone | 四軸飛行器 | 卡爾曼濾波KalmanFilter |