Python 實現 卡爾曼濾波器 非常簡單

2021-09-04 02:10:35 字數 933 閱讀 5907

整體思路很簡單,卡爾曼濾波器就是做資料融合的,先給乙個gps的資料(z)和乙個里程計資料(u),讓他們融合吧。

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

"""created on tue dec 18 19:37:13 2018

@author: sc

args explanition:

p:covariance

x:state

z:observation

u:control

pred:predict

est:estatemation

q:表示過程激勵雜訊的協方差,它是狀態轉移矩陣與實際過程之間的誤差。

"""import numpy as np

import math

import matplotlib.pyplot as plt

q=np.diag([0.1,0.1,math.radians(1.0),1.0])**2

r=np.diag([1.0,math.radians(40.0)])**2

dt=0.1

def motion_model(x,u):

b=np.matrix([[dt*math.cos(x[2,0]),0.0],

[dt*math.sin(x[2,0]),0.0],

[0.0,dt],

[1.0,0.0]])

x=x+b*u

return x

#def observe_model(z):

# h=

# pass

#def jacomo(xest,u):

# return jmo

#def jacoob(xest):

# return

Python 卡爾曼濾波器實現

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

卡爾曼濾波器

協方差 用於表示兩個變數的總體誤差,如果兩個變化趨勢一致則協方差為正值,變化趨勢不一致則為負值。從直觀上來看,協方差表示的是兩個變數總體誤差的期望。由k 1時刻的最優值和系統輸入計算k時刻的系統 值。根據k 1時刻的系統協方差 k時刻系統協方差。根據 k時刻 協方差矩陣的 值計算卡爾曼增益。根據狀態...

卡爾曼濾波器原理和matlab實現

以其中的一篇參考資料為例 卡爾曼濾波器的遞迴過程 估計時刻k 的狀態 x k ax k 1 bu k 這裡,u k 是系統輸入,在專案中,一維輸入訊號a 1 計算誤差相關矩陣p,度量估計值的精確程度 p k a p k 1 a q 這裡,q e 是系統雜訊的協方差陣,即系統框圖中的wj的協方差陣,q...