CAN博士学习笔记
【卡尔曼滤波器】_Kalman Filter_全网最详细数学推导
递归算法
卡尔曼滤波是一种最优化递归数字处理算法(Optimal Recursire Data Processing Algorithm)。
通常用于导航算法,处理一些不确定性的事物预测
递归算法的开始其实是找测量的平均值来估算真实值,通过算数推导可以发现此刻的状态(
x
~
k
\tilde{x}_k
x~k)可以用上一时刻的状态(
x
~
k
−
1
)
\tilde{x}_{k-1})
x~k−1))和当前测量的状态(
Z
k
Z_k
Zk)来表示。
数据融合思想
下面给出 K k K_k Kk公式推导,先从一个例题开始:
有两个秤用来称同一个物体,第一个称得物体重30g,它的标准差是2g,第二个称得物体重32g,它的标准差是4g,而且这两个误差都是符合正态分布(也叫高斯分布)的,也就是说,根据第一个秤测量结果我们可以的出结论,该物体的重量在28g~32g间的概率为68.4%。(28= Z 1 Z_1 Z1- σ 1 \sigma_1 σ1),根据两个秤的测量,我们得到两个正态分布曲线,通常情况下我们认为真实值就是在这两个值之间,但是如果我们用数学的方法给出一个最优估计值,我们就需要使用前面我们用到的卡尔曼增益K,
计算一个K使得 σ z \sigma_z σz 最小,既方差最小,它的方差可以表现为以下式子,最后推导得出 σ z 2 = ( 1 − k ) 2 σ 1 2 + k 2 σ 2 2 {\sigma_z}^2=(1-k)^2{\sigma_1}^2+k^2{\sigma_2}^2 σz2=(1−k)2σ12+k2σ22
将 σ z 2 {\sigma_z}^2 σz2对k求导,等于0,求其最小值,可得
k = σ 1 2 σ 1 2 + σ 2 2 = 0.2 k=\frac{\sigma_{1}^{2}}{\sigma_{1}^{2}+\sigma_{2}^{2}}=0.2 k=σ12+σ22σ12=0.2
将K、 σ 1 \sigma_1 σ1、 σ 2 \sigma_2 σ2带入原式可得方差和标准差
协方差矩阵
协方差矩阵是方差和协方差在一个矩阵中表现出来,表示变量间的联动关系,用一个例子来说明,下面的 P P P就是协方差矩阵。
后面为了编程我们会用到一个过渡矩阵 a a a,我们看后半部分是一个1矩阵(注意不是单位矩阵)乘以它本身,计算我们就发现, a a a矩阵就是前面矩阵减去它的平均值,而 P = 1 3 a T a P=\frac{1}{3}a^Ta P=31aTa
状态空间方程
用向量的形式表达,既状态空间方程
当我们拥有一个不太准的计算结果和一个不太准的测量结果,来获得一个误差比它俩相对小的结果。卡尔曼滤波就是解决此类问题的