扩展卡尔曼滤波理解

简介: 扩展卡尔曼滤波理解

前言

我们在博客卡尔曼滤波详细推导中以匀速行驶的小车以及引入加速度之后的非匀速行驶小车为例,介绍了卡尔曼滤波的推导过程,总结了五条公式用于卡尔曼滤波过程中的预测和更新,并讨论了卡尔曼增益 K在其中的作用。

但是,我们实际生活中所遇到的问题并不一定都能够通过一个简单的线性模型进行描述,而更多的是非线性模型。那么此时如果我们还是想通过卡尔曼滤波算法来优化估算状态量该怎么做呢?这就引入了扩展卡尔曼滤波。


扩展卡尔曼滤波能够应用于非线性高斯系统

线性化

现在我们考虑另外一个稍微复杂一些的非线性系统:

                                     image.png

当状态转换函数 f ( x t − 1 , u t ) 或者观测函数 g ( x t )不为线性时,其高斯分布的特性就不能得到保证从而导致卡尔曼滤波可能不收敛。因此,我们使用扩展卡尔曼滤波进行处理,它把非线性函数在当前估算专题的平均值附近进行线性化(每两个相邻时刻的过程中都进行局部线性化),然后将得到的雅克比矩阵用于预测和更新卡尔曼滤波器的状态。

计算雅克比矩阵:

                                     image.png

则线性化后的系统变为:

                                   image.png

接着再对应改变卡尔曼滤波中的公式就得到了相应的扩展卡尔曼滤波。

当然上述过程也有一个使用条件,即非线性化系统能够通过线性化进行很好的近似(函数可导,且能较好的线性近似)。

存在问题

当非线性化系统能够通过线性化进行很好的近似时,扩展卡尔曼滤波是一个较好的解决方案。但是其也存在下述问题:

当函数过于复杂时,难以计算函数导数的解析形式。

以数值的形式进行求导则需要较高的计算成本。

扩展卡尔曼滤波器不适用于具有不连续模型的系统。(因为若函数不连续,则不可导,也就不存在雅克比矩阵,即不能进行线性化)

高度非线性系统的线性化效果不好。(存在非线性函数不能通过线性化进行很好的近似表达)

其他改进方法

无迹卡尔曼滤波

无迹卡尔曼滤波(unscented Kalman Filters, UKF)不同于扩展卡尔曼滤波,它不通过线性化操作来近似非线性函数,而是去近似概率分布。

如上图所示,无迹卡尔曼滤波选取若干个Sigma点(一组最小的采样点,围绕均值两侧均匀分布),让这些点的均值和协方差与该分布相同。接着,使用系统中的非线性函数进行计算,得到一组新的值。

计算经过非线性变换后的输出点的均值和方差,构建一个新的高斯分布(经验高斯分布),并以其来计算更新的状态值。

线性卡尔曼滤波器算法中在预测步骤中使用状态转移函数计算误差协方差 P P P,然后使用测量值进行更新。而无迹卡尔曼滤波是以新的估计的高斯分布进行获取对应的均值和方差。

粒子滤波

与无迹卡尔曼滤波使用相似原理的另外一种方法是粒子滤波器,其使用的样本点称为“粒子”。其具有一个显著的优势是粒子滤波器可以通过大量的粒子来近似任意分布,而不局限与高斯分布。

对我们所提及到的各种方法对应的特性,描述如下:

再次推荐一下这个matlab官方的学习视频,很不错,通俗易懂,感兴趣的可以去看一下:如何通俗并尽可能详细地解释卡尔曼滤波?

码字不易,若有转载还请注明出处!
目录
相关文章
基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计
基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计
|
4天前
|
机器学习/深度学习 传感器
稳态和时变卡尔曼滤波器KALMAN FILTER的设计和仿真植物动力学模型案例研究
稳态和时变卡尔曼滤波器KALMAN FILTER的设计和仿真植物动力学模型案例研究
|
4天前
|
传感器 运维 机器人
matlab实现扩展卡尔曼滤波(EKF)进行故障检测
matlab实现扩展卡尔曼滤波(EKF)进行故障检测
|
6月前
|
存储 算法 机器人
卡尔曼滤波 KF | 扩展卡尔曼滤波 EKF (思路流程和计算公式)
本文分析卡尔曼滤波和扩展卡尔曼滤波,包括:思路流程、计算公式、简单案例等。滤波算法,在很多场景都有应用,感觉理解其思路和计算过程比较重要。
470 0
|
9月前
|
机器学习/深度学习 传感器 算法
【航迹】基于MN逻辑算法实现航迹关联和卡尔曼滤波外推附matlab代码
【航迹】基于MN逻辑算法实现航迹关联和卡尔曼滤波外推附matlab代码
|
9月前
|
机器学习/深度学习 安全
基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计(Matlab代码实现)
基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计(Matlab代码实现)
|
10月前
|
传感器 算法 vr&ar
【状态估计】卡尔曼滤波器、扩展卡尔曼滤波器、双卡尔曼滤波器和平方根卡尔曼滤波器研究(Matlab代码实现)
【状态估计】卡尔曼滤波器、扩展卡尔曼滤波器、双卡尔曼滤波器和平方根卡尔曼滤波器研究(Matlab代码实现)
|
10月前
|
资源调度 算法 计算机视觉
【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)
【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)
|
10月前
|
资源调度
【鲁棒、状态估计】用于电力系统动态状态估计的鲁棒迭代扩展卡尔曼滤波器研究(Matlab代码实现)
【鲁棒、状态估计】用于电力系统动态状态估计的鲁棒迭代扩展卡尔曼滤波器研究(Matlab代码实现)
|
10月前
|
数据采集 监控 定位技术
【状态估计】基于增强数值稳定性的无迹卡尔曼滤波多机电力系统动态状态估计(Matlab代码实现)
【状态估计】基于增强数值稳定性的无迹卡尔曼滤波多机电力系统动态状态估计(Matlab代码实现)