卡尔曼滤波_3(EKF)

2024-05-15 21:32
文章标签 卡尔曼滤波 ekf

本文主要是介绍卡尔曼滤波_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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/992973

相关文章

【PSINS】SINS与航位推算的EKF例程讲解|三维轨迹

文章目录 SINS与航位推算例程构造滤波前滤波主体滤波后处理 运行结果源代码 SINS与航位推算 SINS是捷联惯导,略。 航位推算: 本文讲解的程序是PSINS工具箱(相关文章:PSINS初学指导,https://blog.csdn.net/callmeup/article/details/136459824)的一个函数,在此基础上进行优化。如果要运行,需要先安装工具箱

无迹卡尔曼滤波算法(C语言代码)

无迹卡尔曼滤波(Unscented Kalman Filter, UKF)是一种非线性状态估计算法,它通过无迹变换来处理非线性系统,相比扩展卡尔曼滤波(EKF),UKF在处理非线性系统时更具鲁棒性。下面是一个简单的无迹卡尔曼滤波器的C语言实现示例。这个实现展示了如何定义UKF并进行状态估计。 #include <stdio.h>#include <math.h>#include <strin

MATLAB代码|中心差分卡尔曼滤波(CDKF)的滤波例程,无需下载,直接复制到MATLAB上面就能运行

文章目录 CDKF介绍代码运行结果各模块解析初始化系统模型设置CDKF循环绘图 另有关于EKF和CDKF的对比程序:EKF+CDKF两个滤波的MATLAB程序,估计三轴位置,带中文注释—— https://blog.csdn.net/callmeup/article/details/136610153。 CDKF介绍 中心差分卡尔曼滤波(Central Differe

卡尔曼滤波实现一阶马尔可夫形式的滤波|价格滤波|MATLAB代码|无需下载,复制后即可运行

一节马尔可夫 一阶马尔可夫噪声是一种具有马尔可夫性质的随机过程。在这种噪声中,当前时刻的状态只与前一时刻的状态有关,与更早的状态无关。 一阶马尔可夫噪声可以用一个状态转移矩阵表示,矩阵的每个元素表示从一个状态转移到另一个状态的概率。 滤波模型 状态量的迭代模型如下: 观测量为X的第一维,所以观测方程也就是取X的第一维。 运行结果 应用背景为价格滤波,所以对比X真值和滤波值的第一维

卡尔曼滤波公式通俗理解

本文需要配合博客卡尔曼滤波详解进行理解 1.简单介绍 参考卡尔曼滤波详解 上面可简化理解为 2.主要过程 主要过程还是参考卡尔曼滤波详解 3.实例 这里以线性运动为例 3.1 前期定义状态和变量 3.1.1分析运动情况 已知线性运动上一状态和当前状态的关系,假设没有噪声干扰,为 { x ′ = x + v x Δ t y ′ = y + v y Δ t \begin{

【逐行注释】容积卡尔曼滤波的MATLAB例程(三维CKF),无需下载,可直接复制代码到MATLAB上运行

文章目录 CKF完整源代码与注释程序运行结果绘图部分误差的统计特性计算与输出部分 CKF CKF全称为容积卡尔曼滤波,相比于UKF(无迹卡尔曼滤波),拥有更合理的理论推导和鲁棒性,且在理论上比UKF的精度更高。 另有: 与EKF的对比程序:https://blog.csdn.net/callmeup/article/details/136147833 完整源代码与注释

2-82 基于matlab的多种工况下融合EKF的AUV定位误差

基于matlab的多种工况下融合EKF的AUV定位误差,工况1:AUV工况2:应答器基阵+速度传感器+角度传感器;工况3:AUV和AUV+速度传感器+角度传感器;工况4:应答器基阵;工况5:AUV和AUV+速度传感器+角度传感器+应答器基阵。程序已调通,可直接运行。 2-82 EKF的AUV定位误差 - 小红书 (xiaohongshu.com)

卡尔曼滤波算法(c语言代码)

卡尔曼滤波器是一种用于估计动态系统状态的算法,常用于信号处理、控制系统、机器人和导航等领域。以下是一个简单的卡尔曼滤波器的 C 语言实现示例。这个示例展示了如何使用卡尔曼滤波器来估计一维系统的状态。 1. 卡尔曼滤波器算法概述 卡尔曼滤波器由两部分组成:预测和更新。基本的卡尔曼滤波器包括以下步骤: 预测步骤: 预测状态估计值。预测协方差矩阵。 更新步骤: 计算卡尔曼增益。更新状态估计值。更

【逐行注释】MATLAB下的UKF(无迹卡尔曼滤波),带丰富的中文注释,可直接复制到MATLAB上运行,无需下载

文章目录 程序组成部分完整代码运行结果主要模块解读:运动模型绘图部分误差统计特性输出 程序组成部分 由模型初始化、运动模型、UKF主体部分、绘图代码和输出部分组成: 完整代码 将下列代码复制粘贴到MATLAB里面,即可运行: % 三维状态量的UKF例程% 作者联系方式:微信matlabfilter(除前期达成一致外,付费咨询)% date: 2024-8-7/V

卡尔曼滤波器、扩展卡尔曼滤波器、无向卡尔曼滤波器的详细推导

这段时间做轴承故障诊断和预测的时候,需要一个针对已经获取了特征向量的工具来对轴承故障状态进行估计和预测。卡尔曼滤波器可以实现对过去、当前和未来目标位置的估计,所以想通过卡尔曼滤波器的设计思路找到一些灵感。虽然最后发现:卡尔曼滤波器中的状态量是有具体的物理含义的物理量,而表征轴承故障状态的量只是一种表征量。这两者之间存在着本质的差别,因为轴承的退化过程目前为止还不能建模。虽然如此,我还是想将卡尔曼滤