kalman濾波演算法理解

2021-09-11 04:28:22 字數 1696 閱讀 3423

kalman濾波的定義:

卡爾曼濾波的乙個典型例項是從一組有限的,包含雜訊的,對物體位置的觀察序列(可能有偏差)**出物體的位置的座標及速度。在很多任務程應用(如雷達、計算機視覺)中都可以找到它的身影。同時,卡爾曼濾波也是控制理論以及控制系統工程中的乙個重要課題。例如,對於雷達來說,人們感興趣的是其能夠跟蹤目標。但目標的位置、速度、加速度的測量值往往在任何時候都有雜訊。卡爾曼濾波利用目標的動態資訊,設法去掉雜訊的影響,得到乙個關於目標位置的好的估計。這個估計可以是對當前目標位置的估計(濾波),也可以是對於將來位置的估計(**),也可以是對過去位置的估計(插值或平滑)。

我目前應用到的是對乙個時間觀測序列進行平滑。也就是對過去位置的估計。用於目標物體軌跡的跟蹤。

因為最基礎的kalman filter是線性濾波器,並且使用的引數有些提前的設定,所以kalman filter是有使用條件的。還有一些kalman filter的變種。我只用到了基礎的就可以滿足我的應用場景。

kalman的最中心的思想是,使用系統內部**值,和實際觀測值來計算出乙個最優的值(這些值在已有的引數設定下是最少雜訊的,因為難以做到完全去除。)

那麼如何使用兩個已經有的值去計算最優值,一般想到的就是這兩個值得加權平均。這個權,表示哪個更加重要,哪個貌似噪音更少,就對最優結果更有貢獻力。

下面是kalman的5個公式,可以分為兩部分:

看不下去沒關係,可以看完分析後再回頭看這個就清楚很多

類似於隱馬爾科夫,系統的**值是由系統狀態推導出來。因為kalman

的線性性,最簡單的就是與矩陣內積。所以轉換矩陣a其實是這個kalman filter的乙個性質,在初始化時設定好的常數矩陣。所以使用a與上一次得到的最優結果(系統狀態)相乘。

由於這一項無法人為對**進行控制,所以後面的b係數表示人為對系統的控制,一般用不到。

這樣得出來的**值,是先驗的**值。也就是僅僅只根據系統的過去去**。但是我們還有當前時間對應的觀測值,雖然有雜訊,但是也是有參考價值的。

所以使用了上文說的先驗**值和觀測值的加權平均。這個權就是卡爾曼增益。

這個值怎麼得到的呢?這個得結合kalman filter最優化得目標。乙個序列如果目標是想要它越平滑,那麼最終後驗的**值(加權平均後的)要越接近於沒有雜訊的真實值xk(這個真實值我們無法知曉)。

編輯公式不方便,所以用文字描述。上文說的最接近,用公式表示就是後驗**的值,與真實值的後驗估計誤差協方差是最小的。就我自己理解,這個協方差的大小表示了兩個隨機變數的離散程度。如果兩個隨機變數的分布越接近的話,協方差越小。

協方差表示的是兩個隨機變數的總體的誤差,這與只表示乙個變數誤差的方差不同。 如果兩個變數的變化趨勢一致,也就是說如果其中乙個大於自身的期望值,另外乙個也大於自身的期望值,那麼兩個變數之間的協方差就是正值。 如果兩個變數的變化趨勢相反,即其中乙個大於自身的期望值,另外乙個卻小於自身的期望值,那麼兩個變數之間的協方差就是負值。

計算這個卡爾曼增益,就是帶入協方差均值公式,對k求導獲取的k值。

這個可以參考:鏈結

在計算出卡爾曼增益後對**值進行更新,並且計算出最優值對應的協方差。為下次迭代做準備。對於第一次計算沒有上一次的值,所以需要對需要上次值的變數進行初始化,包括第0個最優值,第0個最優值對應的協方差誤差。

如果需要平滑的軌跡非常陡峭(雜訊比較多),可以調整**的雜訊和測量的雜訊來平滑。

kalman卡爾曼濾波

卡爾曼濾波器 kalman filter 1 什麼是卡爾曼濾波器 what is the kalman filter?簡單來說,卡爾曼濾波器是乙個 optimal recursive data processing algorithm 最優化自回歸資料處理演算法 對於解決很大部分的問題,他是最優,效...

A 演算法理解

廣度優先 bfs 和深度優先 dfs 搜尋 深度優先搜尋,用俗話說就是不見棺材不回頭。演算法會朝乙個方向進發,直到遇到邊界或者障礙物,才回溯。一般在實現的時候,我們採用遞迴的方式來進行,也可以採用模擬壓棧的方式來實現。如下圖,s代表起點,e代表終點。我們如果按照右 下 左 上這樣的擴充套件順序的話,...

dijkstra 演算法理解

求有向圖中乙個源點到其他頂點的最短距離 自己的理解 剛開始的時候相當於有三個集合 v 頂點集合 s 已求得的最短距離頂點集合,假設求a到其他頂點的最短距離 s 剩餘頂點集合 d 儲存的是最短距離值 求一維陣列中的最小值的下標,這個陣列不包含已經求得的頂點 找出最小值下標後,放入到s中,然後求剩餘頂點...