扩展卡尔曼滤波器

概述

本文对上文的卡尔曼滤波知识进行些许补充,并简单说明扩展卡尔曼的知识及用法。

正文

对卡尔曼滤波的补充

卡尔曼是一种多数据递归融合算法,同时也可以理解为一个权重在变化的低通滤波器。

其思想公式为:

当前的估计值=上一次估计值+权重∗(当前测量值−上一次估计值)当前的估计值=上一次估计值+权重*(当前测量值-上一次估计值)当前的估计值=上一次估计值+权重(当前测量值上一次估计值)

所以,递归次数越多,测量值的作用越小,其估计值越接近真实值。如下例子:

假设A的真实值为50,经过上述公式计算后,结果波形如下:
在这里插入图片描述
所谓的数据融合,其实就是通过计算增益值K使得测量值的方差Σ\SigmaΣ最小,使得数据为最优解。

使用卡尔曼滤波器的步骤:
(1)建立系统的状态空间方程和测量方程

例如:二维的位置P、速度V恒定速度系统,测量值为P,无控制量

Pk=Pk−1+Vk∗Δt+Wp,kP_k = P_{k-1}+V_k*\Delta{t}+W_{p,k}Pk=Pk1+VkΔt+Wp,k

Vk=Vk−1+Wv,kV_k=V_{k-1}+W_{v,k}Vk=Vk1+Wv,k

Zp,k=Xp,k+Vp,kZ_{p,k}=X_{p,k}+V_{p,k}Zp,k=Xp,k+Vp,k

Zv,k=0Z_{v,k}=0Zv,k=0

WWWVVV为过程噪声和测量噪声。

设状态向量Xk^=∣PkVk∣T\hat{X_k} = \begin{vmatrix}P_k&V_k\end{vmatrix}^TXk^=PkVkT

所以用矩阵表示为:

∣PkVk∣=∣1Δt01∣∣Pk−1Vk−1∣+∣Qp00Qv∣∣Wp,kWv,k∣\begin{vmatrix}P_k\\V_k\end{vmatrix}=\begin{vmatrix}1&\Delta{t}\\0&1\end{vmatrix}\begin{vmatrix}P_{k-1}\\V_{k-1}\end{vmatrix}+\begin{vmatrix}Q_p&0\\0&Q_v\end{vmatrix}\begin{vmatrix}W_{p,k}\\W_{v,k}\end{vmatrix}PkVk=10Δt1Pk1Vk1+Qp00QvWp,kWv,k

Zk=∣10∣∣Xp,k−1Xv,k−1∣+∣Rp0∣∣Vp,k−1Vv,k−1∣Z_k=\begin{vmatrix}1&0\end{vmatrix}\begin{vmatrix}X_{p,k-1}\\X_{v,k-1}\end{vmatrix}+\begin{vmatrix}R_p&0\end{vmatrix}\begin{vmatrix}V_{p,k-1}\\V_{v,k-1}\end{vmatrix}Zk=10Xp,k1Xv,k1+Rp0Vp,k1Vv,k1

(2)将矩阵代入公式计算

这里状态转移矩阵F=∣1Δt01∣F=\begin{vmatrix}1&\Delta{t}\\0&1\end{vmatrix}F=10Δt1

由于没有控制量,所以B=0B=0B=0

过程噪声协方差矩阵QQQ其实就是前面的∣Qp00Qv∣\begin{vmatrix}Q_p&0\\0&Q_v\end{vmatrix}Qp00Qv

测量噪声协方差矩阵RRR其实就是前面的∣Rp0∣\begin{vmatrix}R_p&0\end{vmatrix}Rp0

由于状态协方差矩阵只在初始阶段产生影响,且位置速度噪声相互独立,所以一般可以给定矩阵初始值P0=∣σp2σpσvσvσpσv2∣=∣1001∣P_0=\begin{vmatrix}\sigma{_p}^2&\sigma{_p}\sigma{_v}\\\sigma{_v}\sigma{p}&\sigma{_v}^2\end{vmatrix}=\begin{vmatrix}1&0\\0&1\end{vmatrix}P0=σp2σvσpσpσvσv2=1001

系统转换矩阵H=∣10∣H=\begin{vmatrix}1&0\end{vmatrix}H=10

扩展卡尔曼滤波器

扩展卡尔曼应用于非线性程度不高的系统。扩展卡尔曼其实与卡尔曼很类似,只是扩展卡尔曼是利用泰勒级数展开对k−1k-1k1时刻求f(x)f(x)f(x)xxx的偏导。所以两者最大的区别是状态转移矩阵FFF和系统转换矩阵HHH用雅各比矩阵表示。

即扩展卡尔曼先验估算公式为:

X^k=f(x^k−1,u^k−1,0)\hat X_{k}=f(\hat{x}_{k-1},\hat{u}_{k-1},0)X^k=f(x^k1,u^k1,0)

后验估算公式为:

X^k′=X^k+K(Zk−h(X^k))\hat{X}'_{k}=\hat{X}_k+K(Z_k-h(\hat{X}_k))X^k=X^k+K(Zkh(X^k))

例如:

某系统的状态空间方程为:

X1=X1+SIN(X2)=f1(x)X_1=X_1+SIN(X_2)=f_1(x)X1=X1+SIN(X2)=f1(x)

X2=X12=f2(x)X_2=X^2_1=f_2(x)X2=X12=f2(x)

Z1=12COS(X1)=h1(x)Z_1=\frac{1}{2}COS(X_1)=h_1(x)Z1=21COS(X1)=h1(x)

Z2=0=h2(x)Z_2=0=h_2(x)Z2=0=h2(x)

所以:

F=∣∂f1∂x1∂f1∂x2∂f2∂x1∂f2∂x2∣x1k−1,x2k−1=∣1cos(x2k−1)2x1k−10∣F=\begin{vmatrix}\frac{\partial{f_1}}{\partial{x_1}}&\frac{\partial{f_1}}{\partial{x_2}}\\\\\frac{\partial{f_2}}{\partial{x_1}}&\frac{\partial{f_2}}{\partial{x_2}}\end{vmatrix}_{x_{1k-1},x_{2k-1}}=\begin{vmatrix}1&cos(x_{2k-1})\\2x_{1k-1}&0\end{vmatrix}F=x1f1x1f2x2f1x2f2x1k1,x2k1=12x1k1cos(x2k1)0

H=∣∂h1∂x1∂h1∂x2∂h2∂x1∂h2∂x2∣x1k−1,x2k−1=∣−12sin(x1k−1)0∣H=\begin{vmatrix}\frac{\partial{h_1}}{\partial{x_1}}&\frac{\partial{h_1}}{\partial{x_2}}\\\\\frac{\partial{h_2}}{\partial{x_1}}&\frac{\partial{h_2}}{\partial{x_2}}\end{vmatrix}_{x_{1k-1},x_{2k-1}}=\begin{vmatrix}-\frac{1}{2}sin(x_{1k-1})&0\end{vmatrix}H=x1h1x1h2x2h1x2h2x1k1,x2k1=21sin(x1k1)0

由此可以看出FFFHHH随着kkk的变化而变化。

其余公式与卡尔曼滤波公式一致,将这两个雅各比矩阵代入重新计算即可。

总结

如上所说,即可完成将卡尔曼滤波器改写成扩展卡尔曼滤波器。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值