概述

本文对上文的卡尔曼滤波知识进行些许补充,并简单说明扩展卡尔曼的知识及用法。

正文

对卡尔曼滤波的补充

卡尔曼是一种多数据递归融合算法,同时也可以理解为一个权重在变化的低通滤波器。

其思想公式为:

扩展卡尔曼滤python_扩展卡尔曼滤python

所以,递归次数越多,测量值的作用越小,其估计值越接近真实值。如下例子:

假设A的真实值为50,经过上述公式计算后,结果波形如下:

扩展卡尔曼滤python_递归_02


所谓的数据融合,其实就是通过计算增益值K使得测量值的方差扩展卡尔曼滤python_卡尔曼滤波_03最小,使得数据为最优解。

使用卡尔曼滤波器的步骤:
(1)建立系统的状态空间方程和测量方程

例如:二维的位置P、速度V恒定速度系统,测量值为P,无控制量

扩展卡尔曼滤python_递归_04

扩展卡尔曼滤python_卡尔曼滤波_05

扩展卡尔曼滤python_卡尔曼滤波_06

扩展卡尔曼滤python_权重_07

扩展卡尔曼滤python_扩展卡尔曼滤python_08扩展卡尔曼滤python_权重_09为过程噪声和测量噪声。

设状态向量扩展卡尔曼滤python_权重_10

所以用矩阵表示为:

扩展卡尔曼滤python_卡尔曼滤波_11

扩展卡尔曼滤python_权重_12

(2)将矩阵代入公式计算

这里状态转移矩阵扩展卡尔曼滤python_扩展卡尔曼滤python_13

由于没有控制量,所以扩展卡尔曼滤python_递归_14

过程噪声协方差矩阵扩展卡尔曼滤python_扩展卡尔曼滤python_15其实就是前面的扩展卡尔曼滤python_递归_16

测量噪声协方差矩阵扩展卡尔曼滤python_权重_17其实就是前面的扩展卡尔曼滤python_扩展卡尔曼滤python_18

由于状态协方差矩阵只在初始阶段产生影响,且位置速度噪声相互独立,所以一般可以给定矩阵初始值扩展卡尔曼滤python_卡尔曼滤波_19

系统转换矩阵扩展卡尔曼滤python_卡尔曼滤波_20

扩展卡尔曼滤波器

扩展卡尔曼应用于非线性程度不高的系统。扩展卡尔曼其实与卡尔曼很类似,只是扩展卡尔曼是利用泰勒级数展开对扩展卡尔曼滤python_扩展卡尔曼滤python_21时刻求扩展卡尔曼滤python_卡尔曼滤波_22扩展卡尔曼滤python_卡尔曼滤波_23的偏导。所以两者最大的区别是状态转移矩阵扩展卡尔曼滤python_递归_24和系统转换矩阵扩展卡尔曼滤python_卡尔曼滤波_25用雅各比矩阵表示。

即扩展卡尔曼先验估算公式为:

扩展卡尔曼滤python_递归_26

后验估算公式为:

扩展卡尔曼滤python_递归_27

例如:

某系统的状态空间方程为:

扩展卡尔曼滤python_权重_28

扩展卡尔曼滤python_卡尔曼滤波_29

扩展卡尔曼滤python_卡尔曼滤波_30

扩展卡尔曼滤python_递归_31

所以:

扩展卡尔曼滤python_扩展卡尔曼滤python_32

扩展卡尔曼滤python_递归_33

由此可以看出扩展卡尔曼滤python_递归_24扩展卡尔曼滤python_卡尔曼滤波_25随着扩展卡尔曼滤python_扩展卡尔曼滤python_36的变化而变化。

其余公式与卡尔曼滤波公式一致,将这两个雅各比矩阵代入重新计算即可。

总结

如上所说,即可完成将卡尔曼滤波器改写成扩展卡尔曼滤波器。