1. 状态估计与卡尔曼滤波概述
状态估计是工程领域中的一项基础技术,它通过观测数据来推断系统内部不可直接测量的状态变量。在实际应用中,系统往往受到噪声干扰,观测也存在不确定性,这就需要采用概率统计的方法来处理。卡尔曼滤波(Kalman Filter)正是解决这类问题的最经典算法之一。
我最初接触卡尔曼滤波是在自动驾驶项目中,当时需要精确估计车辆的位置和速度。传统方法在噪声环境下表现不佳,而卡尔曼滤波通过融合预测和观测,显著提高了状态估计的准确性。这种算法由Rudolf E. Kalman在1960年提出,最初用于航天器的导航系统,现在已经广泛应用于机器人、自动驾驶、金融预测等多个领域。
卡尔曼滤波的核心思想可以概括为"预测-更新"循环:
- 预测阶段:基于系统模型预测当前状态
- 更新阶段:利用实际观测值修正预测结果
这种递归处理方式使得卡尔曼滤波计算效率高,适合实时应用。更重要的是,它提供了最优线性无偏估计(在满足高斯噪声假设条件下)。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 卡尔曼滤波家族解析
2.1 经典卡尔曼滤波(KF)
经典卡尔曼滤波适用于线性系统,其数学模型由两个方程组成:
状态方程:
x_k = F_k x_{k-1} + B_k u_k + w_k
观测方程:
z_k = H_k x_k + v_k
其中:
- x_k 是状态向量
- F_k 是状态转移矩阵
- B_k 是控制输入矩阵
- u_k 是控制输入
- w_k 是过程噪声(假设为高斯白噪声)
- z_k 是观测向量
- H_k 是观测矩阵
- v_k 是观测噪声(假设为高斯白噪声)
卡尔曼滤波的五个核心公式构成了完整的预测-更新流程:
-
状态预测:
x̂_k^- = F_k x̂_{k-1} + B_k u_k -
协方差预测:
P_k^- = F_k P_{k-1} F_k^T + Q_k -
卡尔曼增益计算:
K_k = P_k^- H_k^T (H_k P_k^- H_k^T + R_k)^ -
状态更新:
x̂_k = x̂_k^- + K_k (z_k - H_k x̂_k^-) -
协方差更新:
P_k = (I - K_k H_k) P_k^-
提示:在实际实现中,数值稳定性是个常见问题。我建议使用
