算法推导——卡尔曼滤波

什么是卡尔曼滤波?

  你可以在任何含有不确定信息的动态系统中使用卡尔曼滤波,对系统下一步的走向做出有根据的预测,即使伴随着各种干扰,卡尔曼滤波总是能指出真实发生的情况。
  在连续变化的系统中使用卡尔曼滤波是非常理想的,它具有占用内存小的优点(除了前一个状态量外,不需要保留其他历史数据),并且速度很快,很适合应用于实时问题和嵌入式系统。

卡尔曼滤波五大公式

定义变量
状态预测值: x ^ k − \hat{x}_{k}^{-} x^k,维度 n × 1 n\times 1 n×1
状态估计值: x ^ k \hat{x}_{k} x^k
实际观测值: y k y_{k} yk,维度 m × 1 m\times 1 m×1
输入量: u k u_{k} uk,维度 l × 1 l\times 1 l×1
状态转移矩阵: F F F,维度 n × n n\times n n×n
测量矩阵: H H H,维度 m × n m\times n m×n
输入量到状态的转换矩阵: B B B,维度 n × l n\times l n×l
状态噪声: Q Q Q
观测噪声: R R R
状态预测值的状态协方差矩阵: P ^ k − \hat{P}_{k}^{-} P^k,表示状态预测值与状态真实值之间的误差协方差矩阵;
状态估计值的状态协方差矩阵: P ^ k \hat{P}_{k} P^k,表示状态估计值与状态真实值之间的误差协方差矩阵;
卡尔曼滤波增益: K k K_{k} Kk

时间更新
x ^ k − = F x ^ k − 1 + B k u k − 1 ( 式 1 ) \hat{x}_{k}^{-} = F\hat{x}_{k-1} + B_{k}u_{k-1} (式1) x^k=Fx^k1+Bkuk11 P ^ k − = F P ^ k − 1 F T + Q ( 式 2 ) \hat{P}_{k}^{-} = F\hat{P}_{k-1}F^{T} + Q(式2) P^k=FP^k1FT+Q2
状态更新
K k = P ^ k − H T ( H P ^ k − H T + R ) − 1 ( 式 3 ) K_{k} = \hat{P}_{k}^{-} H^T(H\hat{P}_{k}^{-}H^T + R)^{-1}(式3) Kk=P^kHT(HP^kHT+R)13 x ^ k = x ^ k − + K k ( y k − H x ^ k − ) ( 式 4 ) \hat{x}_{k} = \hat{x}_{k}^{-} + K_{k}(y_{k} - H\hat{x}_{k}^{-})(式4) x^k=x^k+Kk(ykHx^k)4 P ^ k = ( I − K k H ) P ^ k − ( 式 5 ) \hat{P}_{k} = (I - K_{k}H)\hat{P}_{k}^{-}(式5) P^k=(IKkH)P^k5
预测过程是利用系统模型(状态方程)预测状态的先验概率密度,也就是通过已有的先验知识对未来的状态进行猜测,即 p ( x ( k ) ∣ x ( k − 1 ) ) p(x(k)|x(k-1)) p(x(k)x(k1))。更新过程则利用最新的测量值对先验概率密度进行修正,得到后验概率密度,也就是对之前的猜测进行修正。
在这里插入图片描述

卡尔曼滤波推导过程

1、在k时刻,卡尔曼滤波的目的是得到估计值: x ^ k \hat{x}_{k} x^k,通过(式4:通过观测值与状态预测值的误差,修正状态预测值,得到状态估计值,此为后验),已知:观测矩阵 H H H以及观测量 y k y_{k} yk,需要确定k时刻的状态预测值 x ^ k − \hat{x}_{k}^{-} x^k和k时刻卡尔曼增益 K k K_{k} Kk
2、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值