卡尔曼滤波器及其扩展:原理、应用与局限
1. 卡尔曼滤波器基础
卡尔曼滤波器是一种用于估计系统状态的强大工具。通过对协方差项的处理,我们可以得到一些重要的结论。利用矩阵求逆引理,可将((Φ^T Σ_mΦ + Σ_+^{-1})^{-1})进行变换:
((Φ^T Σ_mΦ + Σ_+^{-1})^{-1} = Σ_+ - Σ_+Φ^T (ΦΣ_+Φ^T + Σ_m)^{-1}ΦΣ_+)
(= Σ_+ - KΦΣ_+)
(= (I - KΦ)Σ_+)
这里的(K = Σ_+Φ^T (Σ_m + ΦΣ_+Φ^T )^{-1})。这表明后验协方差等于先验协方差减去一个依赖于卡尔曼增益的项。当测量更可靠时,卡尔曼增益高,协方差减小得更多。
卡尔曼滤波器的推理过程可以总结为以下几个步骤:
-
状态预测
:(\mu_+ = \mu_p + Ψ\mu_{t - 1})
-
协方差预测
:(\Sigma_+ = \Sigma_p + Ψ\Sigma_{t - 1}Ψ^T)
-
状态更新
:(\mu_t = \mu_+ + K(x_t - \mu_m - Φ\mu_+))
-
协方差更新
:(\Sigma_t = (I - KΦ)\Sigma_+)
在(t = 1)且缺乏先验信息时,通常将先验均值(\mu_0)初始化为合理值,协方差(\Sigma_0)初始化为一个较大的单位矩阵的倍数,以表示我们的不确定性。
2. 卡尔曼滤波器示例
为了更好地理解卡尔曼滤波器的特性,我们来看两个示例。
2.1 示例1:二维圆周运动
考虑一个在二维平面上近似绕中心点做圆周运动的物体。假设我们没有一个很好的时间模型来描述这种运动,而是采用最简单的布朗运动模型:
(Pr(w_t|w_{t - 1}) = Norm_{w_t}[w_{t - 1}, \sigma_p^2I])
同时,假设观测是真实二维状态的有噪实现:
(Pr(x_t|w_t) = Norm_{x_t}[w_t, \Sigma_m])
其中(\Sigma_m)是对角矩阵。通过运行卡尔曼递归,我们可以得到状态的后验概率序列(Pr(w_t|x_1…t))。结果表明,即使时间模型选择不当,卡尔曼滤波器的估计也比仅基于测量的估计更准确、更确定,后验协方差更小,后验均值更接近真实状态。
2.2 示例2:非平稳测量模型
在这个示例中,设置与示例1相同,但观测方程在交替时间步不同。在偶数时间步,我们观测状态(w)的第一维的有噪估计;在奇数时间步,我们观测第二维的有噪估计。测量方程如下:
(Pr(x_t|w_t) = Norm_{x_t}\begin{bmatrix}1 \ 0\end{bmatrix}w_t, \sigma_m^2),(t = 1, 3, 5…)
(Pr(x_t|w_t) = Norm_{x_t}\begin{bmatrix}0 \ 1\end{bmatrix}w_t, \sigma_m^2),(t = 2, 4, 6....)
这是一个非平稳模型,模型随时间变化。卡尔曼滤波器在每个时间步只有一维测量的情况下,仍能很好地估计二维状态。在奇数时间步,第一维的方差减小,第二维的方差增加;在偶数时间步,情况相反。
3. 卡尔曼滤波器的平滑方法
前面的推理过程适用于实时应用,仅基于过去和现在的测量来估计状态。但有时我们希望利用未来的测量来推断状态,这就是所谓的平滑。
3.1 固定滞后平滑器
固定滞后平滑器用于在线估计,但会将状态决策延迟固定的时间步数。为了估计延迟(\tau)个时间步的状态,我们将状态向量扩充为包含前(\tau)个时间的延迟估计。时间更新方程为:
(\begin{bmatrix}w_t \ w_{t}^{[1]} \ w_{t}^{[2]} \… \ w_{t}^{[\tau]}\end{bmatrix} = \begin{bmatrix}Ψ & 0 &… & 0 \ 0 & I & 0 &… & 0 \ 0 & 0 & I &… & 0 \… &… &… &… &… \ 0 & 0 &… & I & 0\end{bmatrix}\begin{bmatrix}w_{t - 1} \ w_{t - 1}^{[1]} \ w_{t - 1}^{[2]} \… \ w_{t - 1}^{[\tau]}\end{bmatrix} + \begin{bmatrix}\epsilon_p \ 0 \ 0 \… \ 0\end{bmatrix})
相关的测量方程为:
(x_t = \begin{bmatrix}Φ & 0 & 0 &… & 0\end{bmatrix}\begin{bmatrix}w_t \ w_{t}^{[1]} \ w_{t}^{[2]} \… \ w_{t}^{[\tau]}\end{bmatrix} + \epsilon_m)
应用卡尔曼递归可以计算当前状态估计和时间延迟估计。
3.2 固定区间平滑器
固定区间平滑器通过一组反向递归估计每个时间步状态的边际后验分布(Pr(w_t|x_1…T)),考虑了所有测量(x_1…T)。我们使用以下方程更新:
(\mu_{t|T} = \mu_t + C_t(\mu_{t + 1|T} - \mu_{+|t}))
(\Sigma_{t|T} = \Sigma_t + C_t(\Sigma_{t + 1|T} - \Sigma_{+|t})C_t^T)
其中(C_t = \Sigma_{t|t}Ψ^T \Sigma_{+|t}^{-1})。
4. 时间和测量模型
卡尔曼滤波器的时间模型选择限于线性,由矩阵(Ψ)决定。以下是一些常见的时间模型示例:
| 模型类型 | 描述 | 方程 |
| ---- | ---- | ---- |
| 布朗运动 | 状态由单位矩阵作用,随机扰动 | (w_t = w_{t - 1} + \epsilon_p) |
| 几何变换 | 如旋转、拉伸和剪切等线性变换 | 例如,选择(Ψ)使得(Ψ^T Ψ = I)且(\vert Ψ\vert = 1)实现绕原点旋转 |
| 速度和加速度 | 扩展布朗运动模型,加入恒定速度或可变速度 | (w_t = v + w_{t - 1} + \epsilon_p);(\begin{bmatrix}w_t \ \dot{w}
t\end{bmatrix} = \begin{bmatrix}I & I \ 0 & I\end{bmatrix}\begin{bmatrix}w
{t - 1} \ \dot{w}_{t - 1}\end{bmatrix} + \epsilon_p) |
| 振荡数据 | 用于描述振荡数据 | (x_t = \begin{bmatrix}\cos[2\pi\omega t] & \sin[2\pi\omega t]\end{bmatrix}w_t + \epsilon_m) |
5. 卡尔曼滤波器的问题
尽管卡尔曼滤波器是一个灵活的工具,但它也有一些缺点:
- 要求时间和测量方程是线性的。
- 假设边际后验是单峰的,只能用均值和协方差很好地描述,因此只能对物体的位置有一个假设。
为了解决这些问题,我们可以使用扩展卡尔曼滤波器和无迹卡尔曼滤波器。
6. 扩展卡尔曼滤波器
扩展卡尔曼滤波器(EKF)用于处理更一般的时间模型和状态与测量之间的非线性关系。时间更新方程为(w_t = f[w_{t - 1}, \epsilon_p]),测量方程为(x_t = g[w_t, \epsilon_m])。
EKF通过在当前估计的峰值(\mu_t)处使用泰勒展开对非线性函数进行线性近似。定义雅可比矩阵:
(Ψ = \frac{\partial f[w_{t - 1}, \epsilon_p]}{\partial w_{t - 1}}\big|
{\mu
{t - 1}, 0})
(\Upsilon_p = \frac{\partial f[w_{t - 1}, \epsilon_p]}{\partial \epsilon_p}\big|
{\mu
{t - 1}, 0})
(Φ = \frac{\partial g[w_t, \epsilon_m]}{\partial w_t}\big|
{\mu
+, 0})
(\Upsilon_m = \frac{\partial g[w_t, \epsilon_m]}{\partial \epsilon_m}\big|
{\mu
+, 0})
EKF的更新方程如下:
-
状态预测
:(\mu_+ = f[\mu_{t - 1}, 0])
-
协方差预测
:(\Sigma_+ = Ψ\Sigma_{t - 1}Ψ^T + \Upsilon_p\Sigma_p\Upsilon_p^T)
-
状态更新
:(\mu_t = \mu_+ + K(x_t - g[\mu_+, 0]))
-
协方差更新
:(\Sigma_t = (I - KΦ)\Sigma_+)
其中(K = \Sigma_+Φ^T (\Upsilon_m\Sigma_m\Upsilon_m^T + Φ\Sigma_+Φ^T )^{-1})。
以下是一个EKF的示例:
时间更新模型为(w_t = f[w_{t - 1}, \epsilon_p]),观测模型为(x_t = w + \epsilon_m),其中(f[w, \epsilon_p] = \begin{bmatrix}w_1 \ w_1 \sin[w_1] + \epsilon_p\end{bmatrix})。雅可比矩阵(Ψ = \begin{bmatrix}1 & 0 \ \sin[w_1] + w_1 \cos[w_1] & 0\end{bmatrix}),(\Upsilon_p)、(Φ)和(\Upsilon_m)都等于单位矩阵。结果表明,EKF能成功跟踪这个非线性模型,比仅基于测量的估计更准确、更确定。
7. 无迹卡尔曼滤波器
扩展卡尔曼滤波器只有在线性近似能很好描述函数时才可靠。无迹卡尔曼滤波器(UKF)是一种无导数的方法,部分解决了这个问题。它适用于具有加性正态分布噪声的非线性模型,时间和测量方程为:
(w_t = f[w_{t - 1}] + \epsilon_p)
(x_t = g[w_t] + \epsilon_m)
UKF的工作原理如下:
1. 用一组确定性选择的点质量近似正态分布的后验(Pr(w_{t - 1}|x_1…t - 1)),使其具有与原始分布相同的均值(\mu_{t - 1})和协方差(\Sigma_{t - 1})。
2. 将每个点质量通过非线性函数。
3. 将时间(t)的预测分布(Pr(w_t|x_1…t - 1))设置为具有变换后点质量的均值和协方差的正态分布。
通过上述内容,我们对卡尔曼滤波器及其扩展有了更深入的了解。卡尔曼滤波器在许多领域都有广泛的应用,但也有其局限性。扩展卡尔曼滤波器和无迹卡尔曼滤波器为处理非线性问题提供了有效的解决方案。
下面是卡尔曼滤波器推理过程的mermaid流程图:
graph TD
A[开始] --> B[初始化\(\mu_0\)和\(\Sigma_0\)]
B --> C[状态预测\(\mu_+\)和\(\Sigma_+\)]
C --> D[获取测量值\(x_t\)]
D --> E[计算卡尔曼增益\(K\)]
E --> F[状态更新\(\mu_t\)和\(\Sigma_t\)]
F --> G{是否还有新测量值}
G -- 是 --> C
G -- 否 --> H[结束]
卡尔曼滤波器及其扩展:原理、应用与局限(续)
8. 卡尔曼滤波器及其扩展的对比分析
为了更清晰地了解卡尔曼滤波器、扩展卡尔曼滤波器和无迹卡尔曼滤波器的特点,我们对它们进行详细的对比分析,如下表所示:
| 滤波器类型 | 线性要求 | 处理非线性能力 | 计算复杂度 | 适用场景 |
| ---- | ---- | ---- | ---- | ---- |
| 卡尔曼滤波器 | 要求时间和测量方程线性 | 无法处理非线性 | 低 | 线性系统状态估计 |
| 扩展卡尔曼滤波器 | 可处理一定程度非线性 | 通过线性近似处理,对非线性程度要求较高 | 适中 | 非线性程度相对较低的系统 |
| 无迹卡尔曼滤波器 | 可处理非线性 | 无需线性近似,对强非线性处理较好 | 较高 | 强非线性系统 |
从表中可以看出,不同的滤波器适用于不同的场景。卡尔曼滤波器由于其线性要求,在处理线性系统时具有简单高效的优势;扩展卡尔曼滤波器通过线性近似在一定程度上解决了非线性问题,但对非线性程度有一定限制;无迹卡尔曼滤波器则能更好地处理强非线性系统,但计算复杂度相对较高。
9. 实际应用中的考虑因素
在实际应用中,选择合适的滤波器需要考虑多个因素,以下是一些关键的考虑点:
-
系统的线性程度
:如果系统的时间和测量方程是线性的,那么卡尔曼滤波器是首选,因为它计算简单且性能良好。例如,在一些简单的物理系统中,如匀速直线运动的物体跟踪,卡尔曼滤波器可以准确地估计物体的状态。
-
非线性的强度
:当系统存在非线性时,需要评估非线性的强度。如果非线性较弱,扩展卡尔曼滤波器可能是一个不错的选择。例如,在一些缓慢变化的非线性系统中,如温度控制系统,扩展卡尔曼滤波器可以通过线性近似来处理。如果非线性较强,无迹卡尔曼滤波器可能更合适。例如,在机器人的运动控制中,机器人的运动可能涉及复杂的非线性动力学,无迹卡尔曼滤波器可以更好地处理这种情况。
-
计算资源
:不同的滤波器计算复杂度不同,需要根据实际的计算资源来选择。如果计算资源有限,如在一些嵌入式系统中,卡尔曼滤波器或扩展卡尔曼滤波器可能更适合。如果计算资源充足,无迹卡尔曼滤波器可以提供更准确的估计。
-
实时性要求
:对于实时性要求较高的应用,如自动驾驶中的目标跟踪,需要选择计算速度快的滤波器。卡尔曼滤波器和扩展卡尔曼滤波器通常具有较快的计算速度,而无迹卡尔曼滤波器由于计算复杂度较高,可能会影响实时性。
10. 应用案例分析
为了更好地理解不同滤波器在实际应用中的表现,我们来看几个具体的应用案例。
10.1 无人机定位
在无人机定位中,需要实时准确地估计无人机的位置和姿态。由于无人机的运动可能涉及复杂的非线性动力学,如在飞行过程中受到气流的影响,因此需要选择合适的滤波器来处理。
- 如果无人机的飞行环境相对简单,运动近似线性,如在室内平稳飞行,卡尔曼滤波器可以提供准确的定位估计。
- 如果无人机的飞行环境存在一定的非线性,如在室外受到风向变化的影响,扩展卡尔曼滤波器可以通过线性近似来处理。
- 如果无人机的飞行环境复杂,非线性程度较高,如在山区飞行,无迹卡尔曼滤波器可以更好地处理这种情况。
10.2 金融市场预测
在金融市场预测中,需要根据历史数据来预测未来的价格走势。金融市场的价格变化通常具有较强的非线性,因此需要选择能够处理非线性的滤波器。
- 扩展卡尔曼滤波器可以在一定程度上处理金融市场的非线性,但由于其线性近似的局限性,可能无法准确捕捉市场的复杂变化。
- 无迹卡尔曼滤波器可以更好地处理金融市场的强非线性,提供更准确的预测。
11. 总结与展望
卡尔曼滤波器及其扩展在许多领域都有广泛的应用,如机器人、自动驾驶、金融市场等。卡尔曼滤波器作为一种经典的线性滤波器,具有简单高效的优点,但对非线性系统的处理能力有限。扩展卡尔曼滤波器和无迹卡尔曼滤波器通过不同的方法解决了非线性问题,但也各自存在一定的局限性。
在未来的研究中,我们可以进一步探索如何提高滤波器的性能,如开发更有效的线性近似方法、降低无迹卡尔曼滤波器的计算复杂度等。同时,随着人工智能和机器学习的发展,我们可以将这些技术与卡尔曼滤波器相结合,开发出更智能、更强大的滤波器。
下面是选择滤波器的mermaid流程图:
graph TD
A[开始] --> B{系统是否线性}
B -- 是 --> C[选择卡尔曼滤波器]
B -- 否 --> D{非线性强度}
D -- 弱 --> E[选择扩展卡尔曼滤波器]
D -- 强 --> F{计算资源是否充足}
F -- 是 --> G[选择无迹卡尔曼滤波器]
F -- 否 --> H[考虑扩展卡尔曼滤波器或优化计算]
C --> I[应用滤波器进行估计]
E --> I
G --> I
H --> I
I --> J[结束]
通过以上内容,我们对卡尔曼滤波器及其扩展有了全面的了解,希望能帮助读者在实际应用中选择合适的滤波器。
超级会员免费看
462

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



