5.无迹卡尔曼滤波

  无迹卡尔曼滤波 (Unscented Kalman Filter, UKF) 是一种高效的非线性滤波算法,由Julier和Uhlmann于1997年提出。它通过无迹变换 (Unscented Transform) 来处理非线性系统的状态估计问题,克服了扩展卡尔曼滤波 (EKF) 在强非线性系统中精度不足的问题。

基本原理

无迹变化

  无迹变换的核心思想是:近似概率分布比近似非线性函数更容易,通过选择一组代表性的点(如sigma点),这些点捕获了输入分布的均值和协方差,然后将这些点通过非线性函数传播,最后从传播后的点计算输出分布的统计量(均值、协方差等)

  UKF通过对称的点阵生成方式,采用球面-径向规则选择sigma点。对于n维随机变量x,其均值为\(\bar{x}\),协方差为\(P_{xx}\),UKF生成\(2n\)个sigma点,\(\sqrt{P_{xx}}\)是一个下三角矩阵,满足\(\sqrt{P_{xx}} (\sqrt{P_{xx}})^T=P_{xx}\)。

\[
\begin{aligned}
\chi_i &= \bar{x} + \sqrt{P_{xx}} \xi_i, \quad i=1,\dots,2n \\
\xi_i &= \sqrt{n} \mathbf{e}_i ,\quad i=1,\dots,n\\
\xi_{i+n} &= -\sqrt{n} \mathbf{e}_i ,\quad i=1,\dots,n
\end{aligned}
\]

  这里 \(\mathbf{e}_i\) 是n维单位向量在第i个方向上的向量。当维度为4时,\(\mathbf{e}_1=\begin{bmatrix}1 & 0 & 0 & 0\end{bmatrix}^T\),\(\mathbf{e}_2=\begin{bmatrix}0 & 1 & 0 & 0\end{bmatrix}^T\)。

  所有sigma点具有相同的权重:

\[
W_i = \frac{1}{2n}, \quad i=1,\dots,2n
\]

  这种对称的权重分配保证了数值稳定性和计算效率。

UKF算法步骤

  

1. 初始化

\[
\begin{aligned}
\hat{x}_0 &= E[x_0] \\
P_0 &= E[(x_0-\hat{x}_0)(x_0-\hat{x}_0)^T]
\end{aligned}
\]

2. 时间更新(预测步骤)

  
  基于状态向量生成sigma点:

\[
\chi_{k-1} = [\hat{x}_{k-1} + \sqrt{P_{k-1}} \xi_1, \dots, \hat{x}_{k-1} + \sqrt{P_{k-1}} \xi_{2n}]
\]

  状态预测:
  
\[
\begin{aligned}
\chi_{k|k-1}^* &= f(\chi_{k-1}, u_{k-1}) \\
\hat{x}_k^- &= \frac{1}{2n} \sum_{i=1}^{2n} \chi_{i,k|k-1}^* \\
P_k^- &= \frac{1}{2n} \sum_{i=1}^{2n} [\chi_{i,k|k-1}^* – \hat{x}_k^-][\chi_{i,k|k-1}^* – \hat{x}_k^-]^T + Q_k
\end{aligned}
\]

3. 测量更新

  
  重新生成sigma点进行观测预测,基于预测状态重新生成sigma点:

\[
\chi_{k|k-1} = [\hat{x}_k^- + \sqrt{P_k^-} \xi_1, \dots, \hat{x}_k^- + \sqrt{P_k^-} \xi_{2n}]
\]

  观测预测:

\[
\begin{aligned}
\mathcal{Z}_{k|k-1} &= h(\chi_{k|k-1}) \\
\hat{z}_k^- &= \frac{1}{2n} \sum_{i=1}^{2n} \mathcal{Z}_{i,k|k-1} \\
P_{z_k z_k} &= \frac{1}{2n} \sum_{i=1}^{2n} [\mathcal{Z}_{i,k|k-1} – \hat{z}_k^-][\mathcal{Z}_{i,k|k-1} – \hat{z}_k^-]^T + R_k \\
P_{x_k z_k} &= \frac{1}{2n} \sum_{i=1}^{2n} [\chi_{i,k|k-1} – \hat{x}_k^-][\mathcal{Z}_{i,k|k-1} – \hat{z}_k^-]^T
\end{aligned}
\]

  卡尔曼增益和状态更新:

\[
\begin{aligned}
K_k &= P_{x_k z_k} P_{z_k z_k}^{-1} \\
\hat{x}_k &= \hat{x}_k^- + K_k(z_k – \hat{z}_k^-) \\
P_k &= P_k^- – K_k P_{z_k z_k} K_k^T
\end{aligned}
\]

总结

  
  UKF通过对称的sigma点采样和重新生成策略,在保持计算效率的同时显著提高了非线性系统的估计精度。其数值稳定性和实现简便性使其在机器人导航、目标跟踪、金融建模等领域的实际应用中表现出色,是现代非线性估计理论中的重要进展。

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注