游龙战神|扩展卡尔曼滤波(EKF)浅谈

一个月前 , 有脚友提问:怎么基于车辆模型利用卡尔曼滤波算法进行车辆速度估计?
我当时没有回答 , 主要原因是实际车辆上一般都是基于轮速和纵向加速度等运动学的参数进行车速估计 , 简单实用 。 另外关于卡尔曼滤波的内容我也差不多忘了 , 好多年没用过捡起来也需要一点时间 。
【游龙战神|扩展卡尔曼滤波(EKF)浅谈】
后来 , 有其他脚友也想了解卡尔曼相关的估计问题 。。。
游龙战神|扩展卡尔曼滤波(EKF)浅谈
既然这么多人感兴趣 , 说明这个话题是有意义的 。 脚主决定花一些时间 , 恢复记忆 , 去给大家谈一谈个人对扩展卡尔曼滤波算法的理解 。
在介绍扩展卡尔曼滤波器之前 , 有必要回忆一下之前介绍过的卡尔曼滤波器 。
卡尔曼滤波主要根据系统状态方程 , 通过系统输出作为观测数据 , 来不断迭代修正预估的逻辑 , 实现对系统状态的最优估计 。 其核心的5个公式如下图:
游龙战神|扩展卡尔曼滤波(EKF)浅谈
其中 , 前两个为预测部分 , 后三个为校正部分 。 我们在进行卡尔曼滤波器设计时 , 重点是把系统的模型用状态方程表示出来:
游龙战神|扩展卡尔曼滤波(EKF)浅谈
测量结果用输出方程表示出来:
游龙战神|扩展卡尔曼滤波(EKF)浅谈
上述公式中的系统矩阵A、输出矩阵H就对应卡尔曼5个核心的公式的A、H , A用于状态预测 , H用于量测后校正 。
需要注意的是 , 卡尔曼滤波仅适用于线性系统 。 对于非线性系统 , 只能使用扩展卡尔曼滤波器 , 将非线性系统线性化处理 。
如果一个系统的输入、输出满足叠加原理 , 该系统称为线性系统 , 否则为非线性系统 。
扩展卡尔曼滤波可通过将非线性系统在其参考点处作泰勒级数展开 , 取其一阶线性部分作为该非线性模型的逼近 , 从而得到非线性系统在当前时刻的线性化描述 。
非线性系统的状态方程一般可表示为:
游龙战神|扩展卡尔曼滤波(EKF)浅谈
输出方程表示为:
游龙战神|扩展卡尔曼滤波(EKF)浅谈
扩展卡尔曼滤波器的核心公式同卡尔曼滤波器基本一致 , 有两点小差异:
1、需要使用非线性函数f、h来表示状态方程和输出方程;
2、系统矩阵A、输出矩阵H需要用f、h函数求偏导后的雅克比矩阵表示 。
游龙战神|扩展卡尔曼滤波(EKF)浅谈
游龙战神|扩展卡尔曼滤波(EKF)浅谈
回到最开始的问题 , 我们想基于车辆模型使用卡尔曼滤波器来进行车辆速度估计 , 怎么做呢?首先列出车辆模型的状态方程 , 如下图 。
游龙战神|扩展卡尔曼滤波(EKF)浅谈状态变量一定要包含你想估计的参数 。


推荐阅读