从贝叶斯滤波理论到容积卡尔曼滤波算法(CKF)详细推导及编程实现常转弯率模型估计。(matlab)

本文深入探讨了容积卡尔曼滤波(CKF)的理论基础与应用,包括贝叶斯滤波原理、球面-径向容积规则,并通过MATLAB实现常转弯率模型的CKF滤波估计。

容积卡尔曼滤波(CKF)是由加拿大学者Arasaratnam和Haykin在2009年提出的。该算法的核心思想是针对非线性高斯系统,通过三阶球面径向容积准则来近似状态的后验均值和协方差,以保证在理论上以三阶多项式逼近任何非线性高斯状态的后验均值和方差。

  • 贝叶斯滤波
  • 球面-径向容积规则
  • 容积卡尔曼滤波算法
  • matlab实现"Cubature Kalman Filters"论文中常转弯率例子

贝叶斯滤波:

由于容积卡尔曼滤波是基于贝叶斯滤波理论框架的次优滤波,所以我们先来了解一下贝叶斯滤波。

在解决滤波问题时,如果我们能求出状态的后验概率密度函数,就可以通过状态的概率密度函数描述非线性系统的统计特性,再通过各种估计准则和近似方法就能得到不同的滤波算法。
系统状态后验概率密度决定了系统的多种统计特性。因此如何求得系统状态的后验概率密度函数成为关键。而贝叶斯估计的优点是给出了状态后验概率密度函数的递推求解方法,成为众多滤波算法的核心思想。

系统
在这里插入图片描述
在这里插入图片描述

上面两个式子就组成了贝叶斯递推公式,我们可以看出贝叶斯滤波从理论上实现了非线性滤波的最优估计。

2
在这里插入图片描述
2
3
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1
下图为贝叶斯滤波框图。在这里插入图片描述在这里插入图片描述

球面-径向容积规则:

由上一部分的贝叶斯滤波,我们很难直接求解上述积分。我们将上述积分变形为:
在这里插入图片描述

n维球坐标变换

在这里插入图片描述

由n维球坐标变换定理可将上面积分转换成球面径向积分:
在这里插入图片描述
在这里插入图片描述
将上面积分分解成球面积分径向积分
在这里插入图片描述
在这里插入图片描述
上述球面积分和径向积分都是通过容积规则来实现,容积规则是将一系列点集D用非线性函数进行传递,然后根据加权求和来近似非线性函数的后验均值和方差。
*

点集D有如下定义: 在这里插入图片描述

在这里插入图片描述在这里插入图片描述
所以球面积分就变成了:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以容积点可选取单位球的球面与其坐标系相交的点。
所以球面积分可近似为:
在这里插入图片描述
径向积分:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
将球面积分的近似带入到径向积分中可得:
在这里插入图片描述
在这里插入图片描述
上面式子就是三阶球面径向容积规则的近似规则。
接下来我们将容积规则与高斯分布的积分相结合:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面式子就是容积卡尔曼滤波使用的三阶球面径向容积规则
在这里插入图片描述

接下来我们来看一下CKF算法的流程:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
常转弯率模型CKF滤波估计(matlab):
在这里插入图片描述

程序如下:

CKF函数:
function [Pk,Xjian]=CKF(Pk,n,Xjian,y,Q,R)
m = 2*n;  %n为状态维数
T=1;%时间
kesai=sqrt(m/2) * [eye(n),-eye(n)];
[S1]=chol(Pk)';%分解成AT*A(下三角*上三角)取下三角
Xr=S1*kesai+repmat(Xjian,1,m);%计算容积点,repmat()把元素复制m行n列
for i=1:m
    omiga = Xr(5,i);
    fai= [1,     sin(omiga*T)/omiga, 0, -(1-cos(omiga*T))/omiga, 0;
          
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值