概述
本文对上文的卡尔曼滤波知识进行些许补充,并简单说明扩展卡尔曼的知识及用法。
正文
对卡尔曼滤波的补充
卡尔曼是一种多数据递归融合算法,同时也可以理解为一个权重在变化的低通滤波器。
其思想公式为:
当前的估计值=上一次估计值+权重∗(当前测量值−上一次估计值)当前的估计值=上一次估计值+权重*(当前测量值-上一次估计值)当前的估计值=上一次估计值+权重∗(当前测量值−上一次估计值)
所以,递归次数越多,测量值的作用越小,其估计值越接近真实值。如下例子:
假设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=Pk−1+Vk∗Δt+Wp,k
Vk=Vk−1+Wv,kV_k=V_{k-1}+W_{v,k}Vk=Vk−1+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
WWW、VVV为过程噪声和测量噪声。
设状态向量Xk^=∣PkVk∣T\hat{X_k} = \begin{vmatrix}P_k&V_k\end{vmatrix}^TXk^=∣∣PkVk∣∣T
所以用矩阵表示为:
∣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Δt1∣∣∣∣Pk−1Vk−1∣∣+∣∣Qp00Qv∣∣∣∣Wp,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=∣∣10∣∣∣∣Xp,k−1Xv,k−1∣∣+∣∣Rp0∣∣∣∣Vp,k−1Vv,k−1∣∣
(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-1k−1时刻求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^k−1,u^k−1,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(Zk−h(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=∣∣∂x1∂f1∂x1∂f2∂x2∂f1∂x2∂f2∣∣x1k−1,x2k−1=∣∣12x1k−1cos(x2k−1)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=∣∣∂x1∂h1∂x1∂h2∂x2∂h1∂x2∂h2∣∣x1k−1,x2k−1=∣∣−21sin(x1k−1)0∣∣
由此可以看出FFF、HHH随着kkk的变化而变化。
其余公式与卡尔曼滤波公式一致,将这两个雅各比矩阵代入重新计算即可。
总结
如上所说,即可完成将卡尔曼滤波器改写成扩展卡尔曼滤波器。
1388

被折叠的 条评论
为什么被折叠?



