本文主要是介绍卡尔曼滤波_3(EKF),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
wiki原文
EKF
在估计理论中,EKF是KF的非线性版本,对当前估计的均值和协方差进行线性化。如果状态转移模型很准确的话,EKF会是非线性状态估计理论、导航系统、GPS中最好的方法。
历史
创造卡尔曼滤波器的论文发表于上世纪60年代。卡尔曼滤波器对于线性系统模型,在状态转移系统和测量系统中加上独立白噪声下,都是最有估计器。然而,实际应用问题中,大部分都是非线性系统,需要对卡尔曼滤波器进行一些改进。这方面大部分工作由NASA Ames童鞋完成。EKF采用的方法来源于微积分中的泰勒展开式,对模型进行线性化。如果系统模型不太清楚或者不够精确(下面会描述这种情况),蒙特卡洛方法,特别是粒子滤波的方法,就派上用场。蒙特卡洛方法在EKF之前就出现了,但是蒙特卡洛方法计算比EKF慢。
计算公式
在EKF中,状态转移模型和观测模型(就是KF中的俩矩阵)不必是状态变量的线性函数,而可以是可微分函数。
和分别是过程噪声和测量噪声,假定是0均值的高斯分布,协方差分别是和。是控制输入向量。
函数用来从上一次估计的状态计算预测的状态,同样的,函数从预测的状态计算测量量。但是,和无法直接计算协方差,而是需要计算偏导矩阵(雅可比矩阵)。
每一步计算时,需要从当前的估计值中计算雅可比矩阵。这些矩阵才可以用于卡尔曼滤波器方程。这个步骤就是在对非线性系统进行线性化。
离散时间域下的预测和更新方程
预测
状态预测方程
协方差预测方程
更新
Innovation or measurement residual
Innovation (or residual) covariance
卡尔曼增益
状态预测更新
协方差预测更新
状态转移矩阵和观测矩阵如下:
高阶EKF
上述是一阶EKF。更高阶的EKF可以通过保留更多项泰勒展开来实现。例如,二阶和三阶EKF。不过,只有当测量误差很小时,更高阶的EKF才会表现更好。
非加性噪声下的公式和方程
EKF下的典型形式假设过程噪声和测量噪声都是加性的。这个假设,在EKF的实现下,不是必须的。可以考虑下面更加一般的情况:
和分别是过程噪声和测量噪声,假定是0均值的高斯分布,协方差分别是和。这样一来,预测的协方差以及相应的方程就变成如下形式:
其中,和都是雅可比矩阵:
The predicted state estimate and measurement residual are evaluated at the mean of the process and measurement noise terms, which is assumed to be zero. Otherwise, the non-additive noise formulation is implemented in the same manner as the additive noise EKF.
连续时间下的EKF
EKF的缺陷
Robust EKF
UKF
比EKF性能更好的非线性卡尔曼滤波器是UKF。在UKF中,通过采样点来估计潜在高斯分布的概率密度函数。这些采样点为了能对后验概率进行估计,需要进行变换。这个变换叫做U变换。UKF在误差估计方面,比EKF还要鲁棒和精确。
Invariant UKF
附注:本文为转载文章
出处:http://blog.csdn.net/duinodu/article/details/52143231
这篇关于卡尔曼滤波_3(EKF)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!