卡尔曼滤波算法(Kalman Filter, KF)深入推导

卡尔曼滤波是一种基于贝叶斯估计最小均方误差(MMSE)的最优状态估计算法。它适用于线性高斯系统 ,其核心思想是对状态进行递归估计,在预测和测量之间动态调整,最小化估计误差。


1. 线性系统建模

考虑离散时间线性动态系统:

x k = F k − 1 x k − 1 + B k − 1 u k − 1 + w k − 1 \mathbf{x}k = \mathbf{F}{k-1} \mathbf{x}{k-1} + \mathbf{B}{k-1} \mathbf{u}{k-1} + \mathbf{w}{k-1} xk=Fk−1xk−1+Bk−1uk−1+wk−1

z k = H k x k + v k \mathbf{z}_k = \mathbf{H}_k \mathbf{x}_k + \mathbf{v}_k zk=Hkxk+vk

其中:

  • x k ∈ R n \mathbf{x}_k \in \mathbb{R}^n xk∈Rn 是系统的状态向量(例如物体位置、速度等)。
  • F k \mathbf{F}_k Fk 是状态转移矩阵 ,描述状态如何从 k − 1 k-1 k−1 时刻演化到 k k k 时刻。
  • B k \mathbf{B}_k Bk 是控制矩阵 ,映射外部控制输入 u k \mathbf{u}_k uk 到状态空间。
  • w k ∼ N ( 0 , Q k ) \mathbf{w}_k \sim \mathcal{N}(0, \mathbf{Q}_k) wk∼N(0,Qk) 是过程噪声 ,其协方差矩阵为 Q k \mathbf{Q}_k Qk。
  • z k ∈ R m \mathbf{z}_k \in \mathbb{R}^m zk∈Rm 是测量值 ,通过测量矩阵 H k \mathbf{H}_k Hk 从状态 x k \mathbf{x}_k xk 映射而来。
  • v k ∼ N ( 0 , R k ) \mathbf{v}_k \sim \mathcal{N}(0, \mathbf{R}_k) vk∼N(0,Rk) 是测量噪声 ,其协方差矩阵为 R k \mathbf{R}_k Rk。

假设:

  1. 状态噪声 w k \mathbf{w}_k wk 和测量噪声 v k \mathbf{v}_k vk 互不相关
    E w i v j T = 0 , ∀ i , j \mathbb{E}\\mathbf{w}_i \\mathbf{v}_j\^T = 0, \quad \forall i,j EwivjT=0,∀i,j
  2. 初始状态 x 0 \mathbf{x}_0 x0 服从高斯分布:
    x 0 ∼ N ( x ^ 0 , P 0 ) \mathbf{x}_0 \sim \mathcal{N}(\hat{\mathbf{x}}_0, \mathbf{P}_0) x0∼N(x^0,P0)

2. 预测步骤(先验估计)

我们希望根据 k − 1 k-1 k−1 时刻的状态估计 x ^ k − 1 \hat{\mathbf{x}}{k-1} x^k−1 和协方差 P k − 1 \mathbf{P}{k-1} Pk−1,预测当前状态 x k \mathbf{x}_k xk 的分布。

状态预测(State Prediction)

x ^ k ∣ k − 1 = F k − 1 x ^ k − 1 + B k − 1 u k − 1 \hat{\mathbf{x}}{k|k-1} = \mathbf{F}{k-1} \hat{\mathbf{x}}{k-1} + \mathbf{B}{k-1} \mathbf{u}_{k-1} x^k∣k−1=Fk−1x^k−1+Bk−1uk−1

协方差预测(Covariance Prediction)

P k ∣ k − 1 = F k − 1 P k − 1 F k − 1 T + Q k − 1 \mathbf{P}{k|k-1} = \mathbf{F}{k-1} \mathbf{P}{k-1} \mathbf{F}{k-1}^T + \mathbf{Q}_{k-1} Pk∣k−1=Fk−1Pk−1Fk−1T+Qk−1


3. 更新步骤(后验估计)

当新的测量 z k \mathbf{z}k zk 到来后,我们需要结合预测值 x ^ k ∣ k − 1 \hat{\mathbf{x}}{k|k-1} x^k∣k−1 和测量值 z k \mathbf{z}_k zk 进行修正,使最终估计更加准确。

计算创新(Innovation)

y ~ k = z k − H k x ^ k ∣ k − 1 \tilde{\mathbf{y}}_k = \mathbf{z}_k - \mathbf{H}k \hat{\mathbf{x}}{k|k-1} y~k=zk−Hkx^k∣k−1

计算创新协方差(Innovation Covariance)

S k = H k P k ∣ k − 1 H k T + R k \mathbf{S}_k = \mathbf{H}k \mathbf{P}{k|k-1} \mathbf{H}_k^T + \mathbf{R}_k Sk=HkPk∣k−1HkT+Rk

计算卡尔曼增益(Kalman Gain)

K k = P k ∣ k − 1 H k T S k − 1 \mathbf{K}k = \mathbf{P}{k|k-1} \mathbf{H}_k^T \mathbf{S}_k^{-1} Kk=Pk∣k−1HkTSk−1

更新状态估计

x ^ k = x ^ k ∣ k − 1 + K k y ~ k \hat{\mathbf{x}}k = \hat{\mathbf{x}}{k|k-1} + \mathbf{K}_k \tilde{\mathbf{y}}_k x^k=x^k∣k−1+Kky~k

更新协方差估计

P k = ( I − K k H k ) P k ∣ k − 1 \mathbf{P}_k = (\mathbf{I} - \mathbf{K}_k \mathbf{H}k) \mathbf{P}{k|k-1} Pk=(I−KkHk)Pk∣k−1

3.1 卡尔曼增益的推导过程

  1. 创新(创新):

    创新是观测值与预测值之间的差异,表示为:
    y k = z k − H k x ^ k − \mathbf{y}_k = \mathbf{z}_k - \mathbf{H}_k \hat{\mathbf{x}}^-_k yk=zk−Hkx^k−

    创新反映了新观测对当前估计的修正。

  2. 后验协方差的计算:

    后验协方差矩阵 ( P k ) (\mathbf{P}_k) (Pk)是基于预测协方差矩阵 ( P k − ) (\mathbf{P}^-_k) (Pk−)、卡尔曼增益 ( K k ) (\mathbf{K}_k) (Kk) 和观测模型 ( H k ) (\mathbf{H}_k) (Hk) 计算的。根据误差传递公式,后验协方差矩阵为:
    P k = ( I − K k H k ) P k − \mathbf{P}_k = (I - \mathbf{K}_k \mathbf{H}_k) \mathbf{P}^-_k Pk=(I−KkHk)Pk−

  3. 卡尔曼增益的推导:

    为了最小化后验误差的协方差,我们要求 ( P k ) (\mathbf{P}_k) (Pk) 最小化,因此需要对卡尔曼增益进行选择。通过最小化估计误差协方差,可以得到最优的卡尔曼增益 ( K k ) (\mathbf{K}_k) (Kk)。

    从最小化后验估计误差协方差的角度出发,我们要解决以下优化问题:
    K k = arg ⁡ min ⁡ K k E ( x k − x \^ k ) ( x k − x \^ k ) ⊤ \mathbf{K}k = \arg\min{\mathbf{K}_k} \mathbb{E}(\\mathbf{x}_k - \\hat{\\mathbf{x}}_k)(\\mathbf{x}_k - \\hat{\\mathbf{x}}_k)\^\\top Kk=argKkminE(xk−x\^k)(xk−x\^k)⊤

    经过推导,卡尔曼增益的表达式为:
    K k = P k − H k ⊤ ( H k P k − H k ⊤ + R k ) − 1 \mathbf{K}_k = \mathbf{P}^-_k \mathbf{H}_k^\top (\mathbf{H}_k \mathbf{P}^-_k \mathbf{H}_k^\top + \mathbf{R}_k)^{-1} Kk=Pk−Hk⊤(HkPk−Hk⊤+Rk)−1

3.2. 卡尔曼增益的含义

  • ( P k − ) (\mathbf{P}^-_k) (Pk−): 预测的协方差矩阵,表示了预测状态的不确定性。
  • ( H k ) (\mathbf{H}_k) (Hk): 观测矩阵,表示如何从状态向量生成观测值。
  • ( R k ) (\mathbf{R}_k) (Rk): 观测噪声的协方差矩阵,表示观测噪声的大小。

卡尔曼增益 ( K k ) (\mathbf{K}_k) (Kk) 的作用是平衡预测误差和观测误差的贡献。在更新过程中,卡尔曼增益越大,表明观测对状态估计的修正作用越大;反之,卡尔曼增益越小,则表示系统对预测的依赖越强。


4. Python 实现示例

以下是一个一维位置估计的卡尔曼滤波示例:

python 复制代码
import numpy as np

# 初始化变量
x = 0  # 初始状态
P = 1  # 初始不确定性
F = 1  # 状态转移矩阵
H = 1  # 观测矩阵
R = 1  # 观测噪声
Q = 0.1  # 过程噪声

# 测量值
measurements = [1, 2, 3]

for z in measurements:
    # 预测
    x = F * x
    P = F * P * F + Q
    
    # 计算卡尔曼增益
    K = P * H / (H * P * H + R)
    
    # 更新
    x = x + K * (z - H * x)
    P = (1 - K * H) * P
    
    print(f'Updated State: {x}, Updated Covariance: {P}')

5. 卡尔曼滤波的优缺点

5.1 优点

  • 最优性: 在满足线性系统模型和高斯噪声假设时,卡尔曼滤波可以提供最优的状态估计。
  • 实时性: 卡尔曼滤波是一种递推算法,能够实时更新估计,不需要存储所有历史数据。
  • 计算效率高: 卡尔曼滤波不需要复杂的计算,且可以通过简单的矩阵运算实现。

5.2 缺点

  • 线性假设: 卡尔曼滤波假设系统是线性的,无法直接应用于非线性系统。如果系统具有非线性特征,需要使用扩展卡尔曼滤波(EKF)或无迹卡尔曼滤波(UKF)。
  • 高斯噪声假设: 卡尔曼滤波假设噪声是高斯分布的,在实际应用中,噪声可能不符合该假设,导致滤波效果不理想。
  • 参数选择: 卡尔曼滤波的性能对过程噪声
  • ( Q ) (\mathbf{Q}) (Q) 和观测噪声 ( R ) (\mathbf{R}) (R) 的选择非常敏感,需要根据具体问题进行调节。

6. 卡尔曼滤波的应用

卡尔曼滤波在实际中有广泛的应用,尤其是在动态系统、自动控制和传感器融合等领域:

  • 导航与定位: 在航天、汽车导航中,卡尔曼滤波用于GPS与惯性测量单元(IMU)融合,提供精确的位置信息。
  • 自动驾驶: 在自动驾驶系统中,卡尔曼滤波常用于多传感器融合(如雷达、激光雷达和摄像头),实现精确的物体检测与路径规划。
  • 机器人定位与路径规划: 卡尔曼滤波用于机器人中的定位、地图构建和自主导航。
  • 金融工程: 在金融市场中,卡尔曼滤波用于时间序列预测和模型估计,处理金融数据中的噪声和不确定性。

7. 扩展卡尔曼滤波(EKF)与无迹卡尔曼滤波(UKF)

7.1 扩展卡尔曼滤波(EKF)

对于非线性系统,扩展卡尔曼滤波(EKF)通过对非线性系统进行泰勒展开,将系统线性化,从而应用卡尔曼滤波方法。EKF的核心在于计算系统状态和观测方程的雅可比矩阵。

7.2 无迹卡尔曼滤波(UKF)

无迹卡尔曼滤波(UKF)是一种更为精确的卡尔曼滤波扩展方法,不需要对非线性方程进行线性化,而是通过采样点(Sigma Points)来传播状态的不确定性,从而提高估计精度。

通过这些方法,卡尔曼滤波能够在复杂的动态系统中提供有效的状态估计,尤其是在系统模型和观测数据具有非线性特征时。

相关推荐
小雨下雨的雨11 小时前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
xieliyu.14 小时前
Java算法精讲:双指针(三)
java·开发语言·算法
我没胡说八道14 小时前
高校论文AI检测优化工具对比研究与实测分析(2026)
人工智能·深度学习·机器学习·计算机视觉·aigc·论文
秦亚伟14 小时前
AI浪潮重塑融资租赁行业新格局
人工智能
love530love14 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
元启数宇14 小时前
喷淋AI布点实战:8小时人工布点→20分钟自动出图
人工智能
哈哈,柳暗花明14 小时前
人工智能专业术语详解(H)
人工智能·专业术语
圣殿骑士-Khtangc14 小时前
AI 编程工具 2026 实战横评:Cursor 3 vs Claude Code vs Copilot,开发者选型完全指南
人工智能·copilot
云器科技14 小时前
云器Lakehouse 2026年5月版本发布:拥抱 AI Agent,重塑数据智能开发新范式
人工智能
小鹰-上海鹰谷-电子实验记录本14 小时前
第六届党建引领科创生态座谈会 | 邓光辉博士出席分享AI赋能创新药科研新范式
人工智能·ai·电子实验记录本·药企合规