最近期末考試完了,終於有時間靜下心來好好推一下卡爾曼最優預測跟濾波的相關方程了,雖然之前也用過也知道怎麼用,但是也僅僅停留在知道怎麼用能用來幹什麼的境界。老早就想好好理一理卡爾曼的幾個基本方程,也算是來填個坑。
最早接觸卡爾曼濾波還是在三年前調試慣性MEMS的時候,就那麼十幾幾十行代碼甚至神奇,當時理解起來也只能是人云亦云,什麼陀螺儀是短時測量精準但是存在積分誤差,加速度計短時測量沒有陀螺儀準但是不存在積分誤差,可以用加速度計來修正陀螺儀的積分誤差等等等等......反正那會兒也沒去深究,能用就行了,但是心裏總感覺有一個梗......
現在有時間也有相關的知識儲備來好好探究一下那幾個方程了,打算用兩篇文章來詳細地推導一下卡爾曼最優預測方程跟卡爾曼最優濾波方程,如果過年回老家有時間精力的話我會寫一個demo來實際評估一下卡爾曼的效果。前排提醒,這兩篇文章不是卡爾曼最優預測跟最優濾波的科普性文章,不會舉什麼養豬、開車的例子,因此想看通俗解釋的請提前繞道,個人儘量做到嚴謹的推導。若發現錯誤,望讀者不吝指正。
一、基礎知識複習
在正式開篇之前,希望讀者能有最基本的概率論與數理統計、一點點的線性代數、一點點的微積分、億點點的隨機過程以及一些線性系統的狀態空間描述的知識儲備。
先給出幾個簡單的定義跟定理:
1.正定對稱矩陣的相關性質:
(1)若爲正定對稱矩陣,有,且對,有當且僅當時爲0
(2)若爲正定對稱矩陣,則的各特徵值均大於0
2.接下來幫大家復(yu)習概率論裏面的相關知識:
(1)隨機變量(全稱應寫爲,爲樣本空間,一般直接簡寫爲)的分佈函數爲:
若爲連續型隨機變量,則有:
其中爲隨機變量的概率密度,且有
(2)隨機變量的數學期望(也稱均值)爲:
若爲離散型隨機變量,則有:
若爲連續型隨機變量,則有:
,數學期望的本質爲一階矩
(3)隨機變量的方差定義爲:
若爲離散型隨機變量,則:
若爲連續型隨機變量,則:
稱爲標準差,方差其實是二階中心矩
(4)對於維連續型隨機向量,其聯合分佈函數爲:
其中爲維聯合概率密度。維隨機向量的期望向量(也稱均值向量)爲:
方差陣(有的地方也叫協方差矩陣,本質上一樣,但是這裏爲了與下面的不同隨機向量之間做區分記爲方差陣)爲:
方差陣主對角線爲隨機向量各分量的方差,其餘元素爲分量之間的相關矩。特別的,對於兩個隨機變量,若有,則稱正交,後面我們會證明的正交定理就是基於此
(5)對於二維隨機向量,其協方差爲:
,當,均爲維隨機向量時,稱爲的協方差矩陣,且:
(6)正態隨機變量在實際工程中廣泛存在,我們所熟知的高斯白噪聲就是一類幅值服從正態分佈,功率譜密度分佈服從均勻分佈的一類噪聲。正態分佈的隨機變量在自然界中也是廣泛存在的,中心極限定理告訴我們,無窮多個獨立同分布甚至不同分佈的隨機變量的疊加的結果近似服從正態分佈,因此單個因素可能影響很小,但是無窮多因素疊加會影響整體分佈。
正態分佈又稱高斯分佈,其概率密度爲:
記爲,其中爲的均值(數學期望),爲的方差。
正態分佈有一個非常重要的性質,也就是正態分佈的線性函數也服從正態分佈。即若,則。這一點非常重要,在實際採樣過程中,由於採樣信號中混雜着零均值的高斯白噪聲,那麼對採樣信號疊加的時候實際有用信號幅值會疊加,但是零均值的高斯白噪聲疊加均值仍然爲零,相當於變相地提高了信噪比。
(8)對於維正態隨機向量,其均值向量爲,協方差矩陣爲
若協方差矩陣非奇異即,則其維聯合概率密度爲:
,記爲
此時協方差矩陣爲一個正定對稱矩陣。若協方差矩陣爲奇異矩陣,不存在,則上面的聯合概率密度公式無意義,此時稱該維隨機向量服從退化正態分佈(也稱奇異正態分佈)。上面提到正態分佈的線性函數也服從正態分佈,對於多維正態隨機向量,有同樣的性質。即對於維正態隨機向量服從的正態分佈,且爲任意矩陣,則線性變換服從維正態分佈,此性質稱爲正態隨機變量的線性不變性。
3.坐穩了,下面開始復(yu)習隨機過程的相關知識
(1)隨機過程的嚴格定義是:對於給定概率空間和指標集,若對於每一個,有定義在上的隨機變量與之對應,稱依賴於的隨機變量族爲隨機過程,記爲,或記爲以及,定義比較抽象,這裏舉個簡單的例子,拿我們熟知的電阻的熱噪聲來講,指標集就是時間,對於時刻我們對熱噪聲採樣,則實際採樣得到的數據其實是一個隨機變量,其服從正態分佈,因此電阻熱噪聲就是個正態過程,當然指標集可以是連續的也可以是離散的,可以是時間也可以是其他。常見的隨機過程分類就是正態過程、更新計數過程、平穩過程、馬爾可夫過程等。隨機過程可以看成一個無窮維的隨機向量,我們可以用有限維分佈函數族來近似的刻畫隨機過程,但是較爲複雜,實際工程不可能採用此方法來分析隨機過程,因此我們經常研究隨機過程的一階矩、二階矩統計特性。
一階矩其實就是我們在概率論裏所熟知的均值,但是這裏是的一個函數,即:
稱爲隨機過程的均值函數。有了均值函數,我們可以定義隨機過程的方差函數
下面給出隨機過程的一些重要的數字特徵:
對於隨機過程,稱
爲隨機過程的自相關函數,自相關函數是隨機過程中最常用的數字特徵。稱
爲隨機過程的協方差函數,不難得出以及
(2)就像多維隨機變量一樣,也存在多維隨機過程,給定兩個隨機過程,則稱
爲兩隨機過程的互協方差函數,其中。稱
爲兩個隨機過程的互相關函數,同樣,若對有,則稱隨機過程相互正交
(3)二階矩過程:對於隨機過程,若對有,則稱該隨機過程爲二階矩過程
(4)平穩過程:若隨機過程的任意維聯合分佈函數不隨時間推移而改變,則稱此隨機過程爲嚴平穩過程,但是由於嚴平穩過程要求過於嚴格,且證明較困難,因而在實際工程技術中應用更多的一類是寬平穩過程。對於二階矩過程,若滿足
(a)爲一個常數
(b)對只與時間區間長度有關,與起始時間無關
則稱此二階矩過程爲寬平穩過程,一般來講嚴平穩過程不一定是寬平穩過程,寬平穩過程也不一定是嚴平穩過程,但是對於正態過程,嚴平穩與寬平穩等價。此外,正態隨機過程還有一個非常重要的性質就是正態隨機過程經過線性系統之後還是正態隨機過程。本文所講的平穩過程均指寬平穩過程
*(5)關於平穩過程的均方遍歷性(也稱爲各態歷經性),通俗的來講就是可以僅利用一條樣本軌跡來估計整體的統計特性,雖然實際工程中許多隨機過程都滿足均方遍歷性,但是其定義涉及到均方微積分的相關概念,數學驗證也往往很困難,不過很多時候可以根據實際工程背景來確定。在此就不展開敘述,讀者若有興趣可以翻閱隨機過程相關書籍的相關章節
*(6)傅里葉變換是一種有效的信號分析方法,同樣我們可以用傅里葉變換來分析平穩過程獲得平穩過程的功率譜。對於平穩過程是均方連續的,若其自相關函數滿足
則此平穩過程功率譜密度爲:
同時
即平穩過程的相關函數與功率譜密度構成一對傅里葉變換。稱
爲平穩過程的譜函數
4.線性系統的狀態空間描述
(1)線性系統的定義在這裏就不給出了,線性系統最重要的性質是滿足齊次跟疊加原理。線性系統又分爲線性時變系統跟線性定常系統。線性時變系統是指系統各結構參數會隨時間變化的線性系統,而線性定常系統則不會隨時間變化,拿我們人體爲例,我們身體各器官各功能從長遠看一定在變化,比如我們的聽力、視力等一定會衰減,這時就是一個時變系統,但是在很短的時間內我們的各項器官功能可以看作不變的,這時可以看成是一個定常系統。
描述一個動態系統,最常用的兩種方式是傳遞函數描述外部的輸入輸出關係以及狀態空間描述內部各狀態變化規律。傳遞函數的相關介紹在此就不展開,可以參考信號與系統相關章節,本文的重點是系統的狀態空間描述。卡爾曼等人在20世紀60年代將狀態以及狀態空間的概念引入到系統控制理論中,極大地推動了系統的時間域理論的發展,狀態空間描述不僅可以用於分析單輸入單輸出的線性定常、時變系統、還可以分析多輸入多輸出的線性系統、非線性系統,本文所講的卡爾曼濾波就是基於線性系統的狀態空間描述。
(2)系統的狀態是指一組能完整描述系統的時間域行爲或運動過程的線性無關(數目最少)的變量,當狀態表示爲以各狀態變量爲分量的向量時,稱爲狀態向量,記爲:
狀態空間定義爲狀態向量的集合,是以狀態向量的個線性無關的分量爲基底生成的維線性空間。這裏可以舉個簡單的例子,還是拿我們人體來說,我們人體本身就是一個複雜的系統,描述我們人體的時候我們經常選取的一些變量可以是身高、體重、性別、年齡....這些變量就可以稱爲我們人體這個系統的狀態。系統的狀態空間描述通常需要兩個過程,即系統的輸入引起系統內部狀態變化的過程以及狀態與輸入導致的輸出變化的過程。輸入引起狀態變化是一個動態過程,通常用微分方程來描述,稱其爲狀態方程。而狀態與輸入導致輸出的變化是一個轉化的過程,通常用代數方程來描述,稱其爲輸出方程或者量測方程。記系統的個輸入爲:
系統的個輸出爲:
則對於連續時間線性時變系統可以描述爲:
其中爲與時間相關的維矩陣,稱爲系統矩陣;爲維輸入矩陣;爲維輸出矩陣;爲維前饋矩陣。它們均由系統的參數或結構決定。特別的,當系統的各項參數結構不隨時間變化時,則退化爲與時間無關的常數矩陣,此時系統變爲線性定常系統,其狀態空間描述可寫爲:
(3)我們實際經常使用的數字系統本質上是離散的線性系統,此時可以用差分方程的形式給出離散時間線性時變系統的狀態空間描述,即:
同樣,對於離散時間線性定常系統的狀態空間描述爲:
5.相關定理的證明:
在推導卡爾曼最優預測以及最優濾波方程時,經常用到正交定理,下面我們來證明一下正交定理。
在討論線性最小方差估計的時候,通常使用觀測值的線性函數來表示的估計值,即:
,式中爲待定的常數,
則估計誤差方差要最小,即:
當達到最小時,應滿足:
,即
式中
爲估計誤差,立即可得到:
即估計誤差與觀測值的乘積的期望爲0,也就是估計誤差與觀測值正交。
充分性的證明在此略去,僅需證明在估計誤差與觀測值正交的條件下確實是方差最小的。
同樣我們可以證明估計誤差與也是正交的。由於線性最小方差估計是無偏估計,即有:
則我們有:
,即與正交。
以上對所需的數學基礎知識以及線性系統的相關知識做了一些複習,下一節我們將正式進入線性系統的卡爾曼濾波部分的學習。
二、問題的提法
在實際系統中,信號總是受到各種隨機噪聲的干擾,因此引起我們系統各狀態變化的因素裏面還應加上一項干擾項,此時系統的狀態方程應改寫爲:。同時我們的各傳感器、ADC等量測得出的信號其實也都是受到隨機噪聲干擾的信號,在沒有前饋通道的情況下,量測方程實際上應寫爲(這裏用符號區別於之前講的量測方程,其實本質上都是對狀態的反映)。上兩式中,爲干擾向量,爲觀測向量,爲觀測噪聲向量。爲了實現最優控制,我們需要實際的狀態向量,但是狀態向量受到隨機噪聲的干擾,因此需要估計狀態向量,並且需要狀態向量的估計值儘可能的接近實際狀態向量。但是在大家實際應用的基本上都是離散的數字系統,因此我們主要來研究線性離散系統的卡爾曼濾波。
我們給出卡爾曼濾波問題的提法:
對於線性離散的隨機系統的卡爾曼濾波問題可以描述爲:
設有線性離散隨機系統狀態空間描述如下:
式中:
爲維狀態向量;
爲維輸入控制向量;
爲維隨機干擾向量;
爲維量觀測向量;
爲維隨機觀測噪聲向量;
分別爲維矩陣。
並且假定:
(1)均爲零均值的白噪聲或高斯白噪聲序列,且相互獨立,即有:
其中,爲的方差陣,是一個非負定對稱矩陣,爲的方差陣,是一個正定對稱矩陣。
(2)狀態向量的初始時刻均值爲,方差陣
(3)與不相關,即
這些假定是合理的,因爲通常我們所接觸到的噪聲都是高斯白噪聲,都是正態隨機過程,經過採樣之後成爲高斯白噪聲序列,且系統噪聲與量測噪聲分屬不同部分一般都是不相關的,且實際有用信號也跟噪聲是不相關的。
對於式所描述的系統,已經得到觀測序列,要求找出的線性最優估計,使得估計值與之間的誤差的方差最小,同時要求估計值是觀測序列的線性函數,且估計是無偏的,即
根據和的大小,估計問題可以分爲三類:
(a) 稱爲預測問題
(b) 稱爲濾波問題
(c) 稱爲平滑問題
這裏僅研究預測以及濾波問題。
三、線性離散系統的卡爾曼最優預測方程
通常在推導卡爾曼最優預測方程時,我們均忽略控制輸入信號的作用,即輸入爲0,這樣我們可以得到系統的狀態空間描述爲:
給定觀測序列,我們需要找出的最優估計,稱此估計爲一步最優估計,使得估計誤差:
的方差最小,也就是使得:
當我們已經獲得觀測序列後,假定我們已經找到了狀態向量的一個最優線性預測估計。在我們還沒有獲得觀測值的情況下,先對時刻的狀態向量做出估計,觀察狀態方程,由於爲零均值的白噪聲序列,我們無法做具體預測,其最優估計爲,因此只能把
當作狀態向量的一個預測估計。
則當是的最優線性估計時,我們所得到的也是的最優線性估計,下面給出證明:
證明:由
由於是的最優線性估計,根據正交定理,估計誤差應正交於,同時,由於均值爲零且與相互獨立,即有,因此與也正交,根據線性代數的相關知識,我們可以得出的線性變換與的線性變換的疊加也應與正交,即也與正交。所以,在獲取到觀測向量之前,是的最優線性估計。
在獲取到觀測向量之後,我們就可以利用觀測值來修正。
由於是的最優線性估計,則通過量測方程,且由於也是零均值的白噪聲序列且無法預測,我們可以得到時刻觀測向量的最優線性估計爲:
若獲取到的觀測值恰好等於預測估計,則新的觀測值並沒有提供任何有用的信息,無法用於修正。關於這一點,只需要證明估計誤差與正交即可,下面給出證明:
證明:根據正交定理,我們有
接下來我們計算
不難看出上式中右側第一項與第二項均爲0,因此可以得出誤差與正交。
因此,若獲取到的觀測值恰好等於預測估計,則就是的最優線性估計。但是在實際中,一般觀測值不可能恰好等於預測估計,但是我們可以分析一下誤差的來源:
由
而
從上式我們不難看出誤差主要來源於的估計誤差以及量測噪聲。因此我們可以考慮用量測誤差來修正我們之前的預測值使其變爲。由於採用的是線性估計方法,通常我們使用加權的方法來修正,也就是在後加上一項與成正比的修正項,如此,我們可以得到:
即:
式中爲一個待定的矩陣,稱爲最優增益矩陣或加權矩陣。式可進一步寫成:
要讓是的最優線性估計,那麼估計誤差:
必定與觀測序列均正交。
由
則估計誤差:
觀察上式右邊已正交於,因而也正交於,因此,只要還正交於,那麼就是的最優線性估計。因此我們可以根據最優線性估計的條件來反算出最優增益矩陣。(學過現代控制論的同學可能注意到,上式右側第一項的係數是不是非常眼熟(矩陣)?其實就是觀測器的系統矩陣。)
由與正交,即:
也就是:
觀察上式右側,不難看出第1、3、4、5、6、7、8項均爲0,因此可以進一步化簡爲:
上式中爲誤差方差陣,簡記爲,且又,則:
即:
因此可以計算出最優增益矩陣:
上式中引入了誤差方差陣,下面開始計算他的迭代式:
由其定義式可知:
不難看出上式右側第2、3、4、6、7、8項均爲0,因此可以進一步化簡爲:
進一步展開得:
觀察上式中右側第4項以及第6項,我們有:
將式代入上式右側中前面的有:
將上式代回式可得:
將式代入上式中的有:
由此得到誤差方差陣的遞推公式。
最後將式、、綜合起來可以得到卡爾曼最優預測方程如下:
最優預測估計方程:
最優增益矩陣方程:
誤差方差陣遞推方程:
至此推導完成。
四、線性離散系統的卡爾曼最優預測的算法實現
(1)給定時刻的初始值:
估計誤差的方差陣爲:
(2)計算時刻的最優增益矩陣:
(3)此時應獲取到新的觀測值,結合新觀測值,計算的最優預測估計:
(4)更新估計誤差方差陣:
(5)獲取到新的估計誤差方差陣之後可以計算時刻的最優增益矩陣
(6)根據新的觀測值,結合,計算的最優預測估計
......
依次迭代。
五、總結
第四節中的算法實現可以看出卡爾曼最優預測所需要存儲的數據很少,僅僅是更新後的最優增益矩陣、誤差方差陣以及前一時刻的最優狀態預測估計值,不需要存儲其他過去時刻的值,極大地減少了存儲量跟運算量,因此便於實時處理。
正是由於卡爾曼等人提出的線性系統的狀態空間描述以及相關的估計、濾波算法使得二十世紀六十年代以來航空航天事業、制導、定位、火控等迅猛發展。在此對老爺子致以崇高的敬意。
寫到這裏最優預測篇也該結束了,即將開啓下一篇--最優濾波篇。