天天看點

卡爾曼濾波器原理

1.卡爾曼濾波作用

    卡爾曼濾波實作簡單而且是純時域的濾波器,不需要進行頻域變換。在任何含有不确定資訊的動态系統中使用卡爾曼濾波,可以對系統下一步的走向做出有根據的預測。優點:占用記憶體小(隻需保留前一個狀态量),速度快,适用于實時問題和嵌入式系統)。

2.狀态預測公式

        假設有一輛車在路上行駛,我們用位置和速度表示目前行駛狀态,設狀态變量(u表示加速度):

卡爾曼濾波器原理

    其中  ,                    

卡爾曼濾波器原理

    觀察可得,它們的輸出變量都隻是輸入變量的線性組合,是以卡爾曼濾波器是最佳的線性濾波器,它隻能描述狀态與狀态之間的線性關系。就可以把它寫成矩陣的形式:

卡爾曼濾波器原理

    進一步提取兩個狀态矩陣:

卡爾曼濾波器原理

    是以可将公式簡化成:

卡爾曼濾波器原理

 --------------------------------------------(1)

    這就是卡爾曼濾波器中的第一個公式,狀态預測公式,其中F叫狀态轉移矩陣,表示如何從上一時刻的狀态來推測目前時刻的狀态,B叫控制矩陣,表示控制量u如何作用于目前狀态。

卡爾曼濾波器原理

表示是對x的估計量,而不是真實值。因為真實狀态不可知,我們隻能根據觀測來盡可能地估計x的值。等号左邊有一個減号上标,表示這一時刻的值是通過上一時刻的值推測而來的。待會還會通過觀測量修正x的值,修正之後才算最佳估計值,減号上标會去掉。

3.協方差矩陣

    有了狀态預測公式,我們就可以預測目前狀态。但是所有的推測都是包含噪聲的,噪聲越大,不确定性越大,如何來表示這次推測帶來了多少不确定性,我們用協方差矩陣來表示。

    一維情況:假設我們有一個一維的包含噪聲的資料,每次測量的值都不同,但都是圍繞在一個中心值周圍。

卡爾曼濾波器原理

    我們表示它們分布狀況的最簡單的方法就是記下它的中心值和方差,實際上是高斯分布。

卡爾曼濾波器原理

    二維情況:這裡有一個二維包含噪聲的資料分别對兩個坐标軸進行頭暈,在兩個坐标軸上都是高斯分布:

卡爾曼濾波器原理

                                                                                             圖一

        在表示分布的時候,如果兩個次元是獨立的時候,我們分别記下兩個坐标軸的中心值和方差,但如果兩個次元有相關性,比如在一個次元上噪聲增大另一個次元相應地噪聲也增大,如下圖所示:

卡爾曼濾波器原理

                                                                                             圖二

        或比如一個次元噪聲增大另一個次元噪聲減小,如下圖所示:

卡爾曼濾波器原理

                                                                                                  圖三

        這時候在兩個坐标軸上的投影跟第一個圖完全沒有變化,仍然是高斯分布,是以為了表示這兩個次元之間的相關性,除了要記錄兩個次元之間的方差之外,還要用協方差來表示兩個次元之間的相關程度。把它們寫成矩陣的形式如下:

卡爾曼濾波器原理

        對角線上兩個位置的值是兩個次元的方差,副對角線上兩個位置的值是相等的,是它們的協方差。上面三個圖中,第一個圖的

卡爾曼濾波器原理

,第二個圖的

卡爾曼濾波器原理

,第三個圖的

卡爾曼濾波器原理

。在卡爾曼濾波器中,所有關于不确定性的表述都要用到這個協方差矩陣。

4.噪聲協方差矩陣的傳遞

    在小汽車的例子中,每一個狀态的不确定性都是由協方差矩陣P來表示,在狀态轉換矩陣左右兩邊乘上協方差矩陣便可以讓這個不确定性在每個時刻之間傳遞:

卡爾曼濾波器原理

    因為有協方差矩陣的性質:

卡爾曼濾波器原理

    但這時候我們考慮到預測模型不是百分百準确地,它本身也是包含噪聲的,是以我們還在後面加上一個協方差矩陣Q來表示預測模型本身帶來的噪聲:

卡爾曼濾波器原理

 --------------------------(2)

    這是卡爾曼濾波器的第二個公式,表示不确定性在各個時刻間的傳遞關系。

5.觀察矩陣

    對小汽車模型來說,假設我們在公路的一端放一個雷射測距儀,在每個時刻都可以觀測到汽車的位置,觀測到的值我們記為Zt,汽車本身狀态Xt與觀測狀态Zt之間有一個變換關系,我們記為H,當然這個變換關系也隻能是線性關系(因為卡爾曼濾波器是線性濾波器),是以我們把H寫成矩陣的形式,也叫觀測矩陣。X和Z的次元不一定是相同的,在我們的汽車模型例子是,X是二維列向量,Z隻是一個标量,是以H是一個一行兩列的矩陣,裡面的元素分别是1和0(因為測距儀測得的是距離,它和X的第一個元素相等)。是以例子裡:

卡爾曼濾波器原理

    後面加小v是因為,我們的觀測值也不是百分百可靠,是以後面也要加上v來表示觀測的噪聲,觀測噪聲的協方差矩陣我們用R來表示。因為在我們的例子裡,觀測值是一個一維的值,是以R的形式也不是一個矩陣,而是一個單獨的值,僅僅表示Z的方差。假設除了雷射測距儀外,我們還有其他測量方法,可以觀測到小汽車的某項特征,Z就會變成多元的列向量,會包含每一種測量方式的測量值,而每一個測量值都是真實狀态的一種不完全表現。我們可以從幾種不完整的表述裡面,推斷出真實的狀态, 而卡爾曼濾波器的資料融合的功能,正是在這個測量矩陣中展現出來。

6.狀态更新

    我們有了觀測量Z和它的噪聲的協方差矩陣R,那麼我們如何把它們整合進我們對狀态X的估計,我們前面得到了帶減号上标的Xt,現在我們隻要在它後面加上一項,來修正它的值,就可以得到我們的最佳估計值,

卡爾曼濾波器原理

----------------------=------(3)

    加号後面括号裡的值

卡爾曼濾波器原理

表示實際的觀測值和我們預期觀測值的殘差,殘差乘上一個系數K,就可以用來修正Xt的值,K十分關鍵,叫卡爾曼系數,實際上它也是一個矩陣,它的公式是:

卡爾曼濾波器原理

-------------------------(4)

    卡爾曼系數K的作用主要有兩個方面:

        (1)權衡預測狀态協方差P和觀察量協方差矩陣R的大小,來決定我們是相信預測模型多一點還是觀察模型多一點。如果相信預測模型多一點,殘差的權重就會小一點,如果相信觀察模型多一點,殘差的權重就會大一點

        (2)把殘差表現形式從觀察域轉換到狀态域。比如剛才的觀察值Z是一維的向量,狀态量X是二維向量,它們所用的機關甚至描述的特征都有可能不同,如何用觀察值的殘差更新狀态值,這個卡爾曼系數K就是做這樣一個轉換。在我們的例子裡,我們隻觀察到了汽車的位置,但K裡面已經包含了協方差矩陣P的資訊,是以它利用位置和速度這兩個次元的相關性,從位置的殘差裡面推算出了速度的殘差,進而讓我們可以對狀态X的兩個次元同時進行修正

7.噪聲協方差矩陣更新

卡爾曼濾波器原理

------------------------------(5)

    最後一步就是更新最佳估計值的噪聲分布,這個值是留給下一輪疊代時用的,在這一步裡,狀态的不确定性是減小的,而在下一輪疊代中,由于傳遞噪聲的引入,不确定性又在增大,卡爾曼濾波器就是在這種不确定性變化中尋求一種平衡的。

8.五個公式

    到目前為止,我們已經有了卡爾曼濾波的五個公式,在這五個公式中,前兩個是通過上一時刻的狀态來預測目前時刻的狀态:

    預測:                                                     

卡爾曼濾波器原理

    通過這兩個公式,我們得到的是帶減号上标的X和P,表示這并不是最佳的估計值,還欠缺一些東西,這些欠缺的東西需要從觀測值裡面的資訊帶來,因為我們還沒有考慮目前時刻的觀測值。

    後面上個公式就是用目前的觀測值來更新後面的X和P,經過更新後的值就是最佳觀測值,是以它們不帶減号上标。

卡爾曼濾波器原理

繼續閱讀