Kalman filter的個人理解

2021-06-22 18:50:05 字數 1792 閱讀 9490

最近在做目標跟蹤相關的工作,看了很多資料,零零總總的,過段時間自己都有些小混亂了…(不知道是不是自己應該吃點核桃補腦了呢),在這裡mark些資料,當腦容量不足時候,就暫且卸掉一些,擴充容量後,再繼續裝載……

kalman filter,wiki上對它的介紹很詳細,對應中文的介紹~

對每一步k,定義矩陣a,h,q,r,有時候也需要定義b,卡爾曼濾波模型假設k時刻的真實狀態時從k-1時刻狀態演化而來,卡爾曼濾波有經典的五個公式,下面一一來對每個公式進行介紹:

1. **模型和測量模型

**模型為:

xk = a·

xk-1+b·

uk +wk;ak**轉移矩陣,bk輸入控制模型,uk控制向量,wk**過程雜訊~n(0,q

)測量模型為:

zk = h·x

k +vk;h

測量矩陣,vk測量過程雜訊~n(0,r)

以上兩個模型是進行kalman filter的基礎,缺少任何乙個,則無法構成完整的**測量系統,而後……自然也就沒有而後了……只能另尋他法嘍。

2.後驗誤差協方差模型 p

k =

a·pk-1·a+

q, 因為這裡不方便敲擊公式,故a的轉置無法打出來,第一項相乘的三個因子分別為a,

pk-1,

a的轉置。

1&2為**過程,而後利用kalman filter經典的另三個公式進行更新過程。

3. kalman filter增益k的計算

kk =  pk·

h/(h·pk·

h + r),其中除了pk前h外的另兩個h均表示h的轉置。

獲得的kk可以理解為對**值和測量值之間的權重分配過程,哪個值的置信度更高。

4. 進行xk校正更新

xk = xk +kk·(zk - h

·xk)

kalman filter 求解的x值是最優自回歸的解,根據kalman gain對xk的值進行校正更新。

5. 級更新後驗誤差協方差pk

pk = ( 1- kk·

h)·pk,為k+1提供協方差值,以此迴圈下去。

note: 以上pk的更新式為僅在使用最優卡爾曼增益時候才得到此化簡式,由於化簡式的計算簡單,故在計算過程中其使用頻率最高。

如果算數精度總是很低導致數值穩定性出現問題,或者特意使用非最優卡爾曼增益,以上這個化簡式就不再適用。

個人總結:

kalman filter適用於能獲得x**值和觀測值,但各自都有一定偏差的情況下,通過kalman filter完成自回歸過程,以此得到最小誤差的x值。

後期會再結合opencv中cvkalman的相關結構和函式對其實現進行mark

後續:對kalman filter的五個公式理解後,即可進入到實現過程

1.初始化

對opencv中kalman中的如下變數進行初始化操作:

a **轉移矩陣;

uk控制向量,b輸入-控制向量;(如果存在uk,則需初始化b,否則b.release)

h測量矩陣;

wk過程雜訊協方差矩陣;

vk觀測雜訊協方差矩陣;

pk後驗錯誤協方差矩陣;

xk-1前一狀態校正後的值;

zk當前觀察值;

dp狀態向量維數;

mp測量向量維數;

cp控制向量維數(如果存在uk)

2,**predict

xk = a·

xk-1+b·

uk 3,校正correct

xk = xk +kk·(zk - h

·xk)

通過以上幾個步驟,即可獲得kalman filter的**結果。

Kalman Filter學習筆記

由於感測器本身的特性,任何測量結果都有誤差。因此需要在感測器測量結果的基礎上,進行跟蹤,以此來保證所觀測物體的資訊不會發生突變。這就需要用到經典跟蹤演算法 卡爾曼濾波器。卡爾曼濾波器就是根據上一時刻的狀態,當時時刻的狀態,將 的狀態與當時時刻的測量值進行加權,加權後的結果才認為是當前的實際狀態,而不...

個人的反思

快速排序,是為了解決什麼問題呢,暫時我無法對排序這一類問題作出乙個比較不錯的總結,事實上我的大腦現在有點亂,無論是過程向的,還是物件向的,光是c 語言已經讓我現在的大腦有些接受不住了。我們是在使用工具,當工具為人所用,將產生巨大效果。雖然我不知道別人考慮沒考慮過,但我的大腦現在是不大能理解乙個問題,...

個人的執行力

個人的執行力取決於其本人是否有良好的工作方式與習慣,是否熟練掌握管人與管事的相關管理工具,是否有正確的工作思路與方法,是否具有執行力的管理風格與性格特質等。具體可以體現在以下幾點 1 個性化的工作方式與習慣 如何管好自己的工作 有效的工作方式 時間日程管理 優先順序管理 授權與任務管理 意外干擾管理...