卡爾曼濾波器

2022-09-15 02:12:07 字數 1522 閱讀 8148

協方差:用於表示兩個變數的總體誤差,如果兩個變化趨勢一致則協方差為正值,變化趨勢不一致則為負值。

從直觀上來看,協方差表示的是兩個變數總體誤差的期望。

k-1時刻的最優值系統輸入計算k時刻的系統**值。

根據k-1時刻的系統協方差**k時刻系統協方差

根據(k時刻)協方差矩陣的**值計算卡爾曼增益

根據狀態變數的**值系統測量值計算出k時刻狀態變數的最優值

為了求k時刻的協方差矩陣。(為得到k+1時刻的卡爾曼輸出值做準備)

序號型別

名稱描述

1float

last_p

上次估計協方差

2float

now_p

當前估算協方差

3float

out卡爾曼濾波器輸出值(最優值)

4float

kg卡爾曼增益

5float

q過程雜訊協方差

6float

r觀測雜訊協方差

//1. 結構體型別定義

typedef struct

kfp;//kalman filter parameter

//2. 以高度為例 定義卡爾曼結構體並初始化引數

kfp kfp_height=;

/** *卡爾曼濾波器

*@param kfp *kfp 卡爾曼結構體引數

* float input 需要濾波的引數的測量值(即感測器的採集值)

*@return 濾波後的引數(最優值)

*/ float kalmanfilter(kfp *kfp,float input)

/***呼叫卡爾曼濾波器 實踐

*/int height;

int kalman_height=0;

kalman_height = kalmanfilter(&kfp_height,(float)height);

注:本文參考

Python 卡爾曼濾波器實現

去年我們在設計一款新產品的時候,由於選用定製開發的乙個soc器件,導致我們在用adc讀取經由這個soc晶元放大後的訊號時,出現了極其不穩定的情況。正常情況下adc讀取出來的訊號應當為一條平穩的直線,而現實上讀取出來的訊號確上下波動極其大,遠遠超出了我們理論計算水平。雖然後來通過大量的研究分析,得出時...

卡爾曼濾波器 Python Numpy基本函式

import numpy as np 匯入numpy庫 defone tenth x 將輸入轉化成矩陣,dtype指定陣列的資料型別 x np.asarray x,dtype np.float32 return x 10 x np.array 1,2 申請一浮點矩陣 3,4 dtype float ...

卡爾曼濾波器學習筆記(上)

最近在學習probablistic robotics這本書,獲益良多。以前學了概率論和隨機過程之後一直覺得這些是虛的,不知道在工程上怎麼用,而這本書恰恰就是講如何把這些概率理論和方差估計應用到工程上去,更確切的說,應用到機械人上去。要應用kalman filter,首先要有三個前提假設 kalman...