整體思路很簡單,卡爾曼濾波器就是做資料融合的,先給乙個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...