簡介
已經歷經了半個世紀的卡爾曼濾波至今仍然是研究的熱點,相關的文章不斷被發表。其中許多文章是關於卡爾曼濾波器的新應用,但也不乏改善和擴充套件濾波器演算法的研究。而對演算法的研究多著重於將卡爾曼濾波應用於非線性系統。
為什麼學界要這麼熱衷於將卡爾曼濾波器用於非線性系統呢?因為卡爾曼濾波器從一開始就是為線性系統設計的演算法,不能用於非線性系統中。但是事實上多數系統都是非線性的,所以如果卡爾曼濾波器不能用在非線性系統中的話,那麼它的應用範圍就非常有限了。如果真的是這樣,卡爾曼濾波器可能早就壽終正寢或者過很久很久才會被人注意到。幸運的是早期的學者們對這個問題理解的非常深刻,而且也找到了解決方法,就是擴充套件卡爾曼濾波(ekf)。
事實上世界上的第乙個卡爾曼濾波也是擴充套件卡爾曼濾波,而不是線性卡爾曼濾波器。擴充套件卡爾曼濾波有很久遠的歷史,如果說有乙個非線性系統需要用到卡爾曼濾波的話,不必懷疑,先試試擴充套件卡爾曼濾波準沒錯。因為他有很久遠的歷史,所以可以輕鬆的找到許多這方面的資料。
不過擴充套件卡爾曼濾波也不是無懈可擊的,它有乙個很嚴重的短板——發散。使用擴充套件卡爾曼濾波的時候請務必記在心上,時刻提醒自己,這樣設計濾波器其結果會發散嗎?毫不誇張地說相對於線性卡爾曼濾波設計擴充套件卡爾曼濾波器的就是在解決發散問題。發散問題解決了剩下的都是小事。
小結:
在討論擴充套件卡爾曼濾波之前,首先要了解一下線性化卡爾曼濾波。它和線性卡爾曼濾波器在濾波器的演算法方面有同樣的演算法結構,一樣一樣的。不一樣的地方在於這兩者的系統模型不同。線性卡爾曼濾波器的系統本身就是線性系統,而線性化卡爾曼濾波器的系統本身是非線性系統,但是機智的大神們將非線性的系統進行了線性化,於是卡爾曼濾波就可以用在非線性系統中了。對於乙個卡爾曼濾波器的設計者,就不要去管你的模型到底是一開始就是線性系統還是非線性系統線性化得到的線性系統,反正只要是線性系統就好了。好了,現在你有了乙個線性系統,那你還需要擔心什麼呢?這就是乙個之前講過的線性卡爾曼濾波器啦。
的確是這樣的,沒有很大的差別,但是請跟我一起念:線性化卡爾曼濾波器會發散。為什麼會發散呢?是這樣,我們在對非線性系統進行線性化的過程中,只有被線性化的那個點附近的線性化模型和真實的模型相近,遠的誤差就大了,那麼這個時候卡爾曼濾波器的效果就不好。如果懂點線性化知識這個道理就很明顯。所以線性化的這個限制要時刻考慮,這也就是為什麼要把線性卡爾曼濾波器和線性化卡爾曼濾波器區分開的理由。
而決定乙個線性化濾波器成功與否的關鍵就在於這個濾波器系統模型線性化得好不好。乙個貼近於真實模型的線性化模型對於濾波器的良好輸出非常重要。所以說掌握如何線性化乙個非線性模型很重要,然而我們並不會討論關於系統線性化的問題,因為這已經不屬於卡爾曼濾波的範疇了,而且每個系統有不同的線性化方法,有點複雜。
總而言之,如果你已經明白了如何使用線性卡爾曼濾波器,那麼使用線性化卡爾曼濾波器就沒有什麼需要擔心的,因為演算法結構一樣嘛。唯一需要注意的就是線性化卡爾曼濾波器會發散,要在有效範圍內使用,要不然濾波器的表現不會好。
小結:
在這節具體介紹卡爾曼濾波器。首先從比較熟悉的線性卡爾曼濾波器開始比較擴充套件卡爾曼濾波器與線性化卡爾曼濾波器的異同,從系統模型到濾波器演算法,並解釋這些不同。之後將提供兩個具體的應用例子來加以體會。這門書的重點在於如何感性的理解和使用卡爾曼濾波器,所以對於演算法的推導不會被具體描述。但是如何理解和區別這些不同,這些不同表達了什麼意義將會一一解釋。如下圖所示,右面是我們已經熟悉的經典的線性化卡爾曼濾波的演算法結構和步驟,左面則是擴充套件卡爾曼濾波器的演算法結構和步驟,其中不同的地方已經用紅筆圈出來。可以看到兩個濾波器的演算法結構是相同的,只有幾個方程上有細微的差別。
在非線性系統中,系統模型是這樣的:
xk+1 = f(xk)+ wk
zk = h(xk) + vk
這與線性系統的區別在於非線性系統的狀態向量和其係數是不能夠分離的。
比如說,在gps定位的偽距與接收機位置的關係中:ρ[xu]= [(xu-xsi)2 + (yu -ysi)2 +(zu - zsi)2 ]1/2 + b + vi
,其中[xu]=[xu,yu,zu,b]是系統狀態向量,分別是接收機的位置和接收機與衛星的鐘差,
[xsi,ysi,zsi]是衛星的位置座標,ρ是偽距,vi是觀測雜訊。
在這個關係中狀態向量與它的係數就是不可分離的,沒有辦法寫成axk的形式,只能是f(xk)。h(xk)的存在同理。
比較上圖,可以看到差別主要在這樣兩個地方:
第 i 步中xk+1 = f(xk-1),與原來的xk+1 = axk-1;
第 iii 步中xk = xk
- + kk(zk - h(xk
-)),與原來的xk = xk
- + kk(zk - hxk
-);其他的地方則完全一樣。那麼是不是只需要改動這兩點就可以將乙個線性卡爾曼濾波變成擴充套件卡爾曼濾波呢?不是的,有一些更重要的差別隱藏在公式中。在右圖中,也就是線性卡爾曼濾波器中矩陣a和矩陣h是已知的,在而左圖中雖然將第i步和第iii步中的a和h替換成f和h,但是其他地方的a和h卻仍然存在,可是在非線性系統中,哪有a和h呢?
a和h的獲得就要涉及到之前所提到的決定擴充套件卡爾曼濾波器表現的決定因素:線性化。線性化的方法很經典:
將非線性系統中的f對x求(xk估計)處的偏導得到a,同樣的求h對x求(xk-)處的偏導得到h。(向量和矩陣怎麼求偏導?)
線性化濾波器和擴充套件卡爾曼濾波器的共同點在於他們都需要經歷乙個線性化的過程,不同點在於,擴充套件卡爾曼濾波器是將xk估計作為線性化的參考點,線性化卡爾曼濾波器不是。(線性化濾波器是用什麼作為線性化參考點?參考點是不是就是求偏導以後的帶入值?) 在設計擴充套件卡爾曼濾波器的時候是不是知道這一點並不會有什麼不同。但是如果你在猶豫我是要用擴充套件卡爾曼濾波器還是用線性化卡爾曼濾波器的時候,明白這一點是非常重要的。下面對線性化濾波器和卡爾曼濾波器線性化參考點的差異做簡單的解釋。
在擴充套件卡爾曼濾波中,我們並不用前乙個時刻的先驗值xk-(卡爾曼濾波器未經過修正的**值)作為參考點,而是用前乙個時刻的估計值作為參考點做線性化。這是因為相對於先驗值,前乙個時刻的估計值更加貼近於真實值,將估計值作為線性化參考點可以得到乙個更加貼近於實際的線性化系統模型。這種線性化方法跟適合難以提前確定線性化參考點的系統模型。而相反的。如果說線性化參考點已經確定了,那麼完全不必用前一刻的估計值作為線性化參考點。比如說在對衛星的位置這樣的系統模型進行線性化的時候,由於衛星的運動軌跡有乙個連續的軌道,在這種情況下,就不必用前乙個時刻的估計值作為線性化參考點。(而是直接用系統對下乙個時刻的**就可以了?)
總而言之,你只要有個概念,擴充套件卡爾曼濾波器是基於先驗估計做系統線性化的就可以了。具體的細節在實驗中就會有所體會。重要的是我們知道了a和h是根據上面兩個公式得到的。
總結一下這一小結講的什麼。我們看到總體而言擴充套件卡爾曼濾波器的結構過程都和線性卡爾曼濾波器相同。但是每一步的等式都有一些細微的差別,這些差別可以分為兩塊:第乙個是擴充套件卡爾曼濾波器用非線性系統系統方程f和h替換了線性系統的a和h。第二個是擴充套件卡爾曼濾波器中的矩陣a和矩陣h是非線性系統的雅可比行列式(什麼鬼)。除了這兩塊剩下的都和線性卡爾曼濾波器相同。
小結:
初學者的卡爾曼濾波 擴充套件卡爾曼濾波
簡介 已經歷經了半個世紀的卡爾曼濾波至今仍然是研究的熱點,相關的文章不斷被發表。其中許多文章是關於卡爾曼濾波器的新應用,但也不乏改善和擴充套件濾波器演算法的研究。而對演算法的研究多著重於將卡爾曼濾波應用於非線性系統。為什麼學界要這麼熱衷於將卡爾曼濾波器用於非線性系統呢?因為卡爾曼濾波器從一開始就是為...
擴充套件卡爾曼濾波 不變擴充套件卡爾曼濾波 技術報告
本文使用 zhihu on vscode 創作並發布 connor 2020.06.02 不變擴充套件卡爾曼濾波的適用範圍 不變擴充套件卡爾曼濾波的使用步驟 乙個矩陣李群 matrix lie group g是滿足下列條件的 其中 表示 維單位矩陣,表示矩陣 的逆,表示矩陣乘法。現在,將上述構成李群...
卡爾曼濾波原理二 擴充套件卡爾曼
1 理論部分 系統方程 各個變數意義同上一節,其中f和h代表狀態和觀測的非線性函式。在擴充套件卡爾曼濾波中,狀態的 以及觀測值的 由非線性函式計算得出,線性卡爾曼濾波中的狀態轉移矩陣a陣和觀測矩陣h陣由f和h函式的雅克比矩陣代替,假設狀態有n維,則求法如下 有了上面矩陣的計算方法,ekf濾波過程同線...