卡尔曼滤波(Kalman Filter)状态估计、五个重要公式,看这一文即可,【非常详细推导,认真推理,包你看得懂】 下

本文详细介绍了卡尔曼滤波的基本原理,包括状态空间模型、预测与更新步骤、卡尔曼增益计算以及误差协方差矩阵的处理。通过一个实例演示了如何应用这些概念进行状态估计和数据融合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是对卡尔曼滤波学习的记录,主要参照了DR_CAN老师的视频进行学习,文章末尾有链接!(相关式子的定义见上文:详细推导卡尔曼滤波(Kalman Filter)状态估计、协方差矩阵、数据融合【非常详细推导,认真推理,包你看得懂】 上)

卡尔曼滤波

卡尔曼滤波(Kalman Filtering) 是一种用于估计系统状态的数学方法,它结合了传感器测量和系统模型的信息,以获得对系统状态的最佳估计。卡尔曼滤波最初是由Rudolf E. Kálmán在1960年代提出的,用于航空航天领域的导航和控制问题。自那时以来,它已经在许多领域得到了广泛应用,包括工程、经济学、生物学等。

卡尔曼滤波的主要思想是通过融合系统的动态模型(通常是线性系统)和实际测量值来估计系统的状态。它基于两个主要假设:
(1) 系统的动态行为可以用线性动态方程描述。
(2) 测量噪声和过程噪声都是高斯分布的,并且彼此独立。

卡尔曼滤波的过程可以概括为以下几个步骤:
(1) 预测(Predict):根据系统的动态模型,使用先前的状态估计来预测下一个时刻的状态,并估计状态的不确定性。
(2) 更新(Update):将新的测量值与预测值进行比较,根据它们的不确定性,更新状态的估计值和不确定性。这一步使用贝叶斯推断来融合测量和预测信息。

误差协方差矩阵

假设有离散系统的状态空间方程为:
X k = A X k − 1 + B U k − 1 + W k − 1 Z k = H X k + V k \begin{gather} \begin{aligned} &X_{k}=A X_{k-1}+B U_{k-1} +W_{k-1}\\ &Z_k=HX_{k}+V_k \end{aligned}\end{gather} Xk=AXk1+BUk1+Wk1Zk=HXk+Vk先验估计:
X k − ^ = A X ^ k − 1 + B U k − 1      ( 已知可求 ) \begin{gather}\hat{X_{k}^-} = A \hat{X}_{k-1}+B U_{k-1} \ \ \ \ (已知可求) \end{gather} Xk^=AX^k1+BUk1    (已知可求)后验估计: X ^ k = X ^ k − + k k ( Z k − H X ^ k − )         ( 仅卡尔曼增益 k k 未知 ) \begin{gather}\begin{array}{ll} \hat{X}_k=\hat{X}_{k}^{-}+k_k(Z_k-H\hat{X}_k^{-}) \ \ \ \ \ \ \ (仅卡尔曼增益k_k未知) \end{array}\end{gather} X^k=X^k+kk(ZkHX^k)       (仅卡尔曼增益kk未知)卡尔曼增益: k k = P k − H T H P k − H T + R         ( 仅先验协方差 P k − 未知 ) 求   P k − = E [ e k −    e k − T ] \begin{gather}k_k =\frac{P_k^-H^T}{HP_k^-H^T+R} \ \ \ \ \ \ \ (仅先验协方差P_k^-未知) \\ 求 \ \ P_k^-=E[e_k^- \ \ {e_k^-}^T]\end{gather} kk=HPkHT+RPkHT       (仅先验协方差Pk未知)  Pk=E[ek  ekT]先验误差 e k − e_k^- ek , 将公式(1)(2)代入得: e k − = X k − X k − ^ = A X k − 1 + B U k − 1 + W k − 1 − A X ^ k − 1 − B U k − 1 = A ( X k − 1 − X ^ k − 1 ) + W k − 1 = A e k − 1 + W k − 1 \begin{gather} \begin{aligned}e_k^-=X_k-\hat{X_{k}^-} =&A X_{k-1}+B U_{k-1} +W_{k-1}-A \hat{X}_{k-1}-B U_{k-1}\\ =&A (X_{k-1}-\hat{X}_{k-1})+W_{k-1}\\ =&Ae_{k-1}+W_{k-1}\end{aligned}\end{gather} ek=XkXk^===AXk1+BUk1+Wk1AX^k1BUk1A(Xk1X^k1)+Wk1Aek1+Wk1将(6)代入(5)得: P k − = E [ ( A e k − 1 + W k − 1 ) ( A e k − 1 + W k − 1 ) T ] = E [ ( A e k − 1 + W k − 1 ) ( e k − 1 T A T + W k − 1 T ) ] = E [ A e k − 1 e k − 1 T A T ] + E [ W k − 1 W k − 1 T ] = A P k − 1 A T + Q      ( 注:误差协方差矩阵 P k − 1 和过程噪声协方差 Q 在上文有定义 ) \begin{gather} \begin{aligned}P_k^-&=E[(Ae_{k-1}+W_{k-1})(Ae_{k-1}+W_{k-1})^T]\\&=E[(Ae_{k-1}+W_{k-1})(e_{k-1}^TA^T+W_{k-1}^T)]\\&=E[Ae_{k-1}e_{k-1}^TA^T]+E[W_{k-1}W_{k-1}^T]\\&=AP_{k-1}A^T+Q \ \ \ \ (注:误差协方差矩阵P_{k-1}和过程噪声协方差 Q在上文有定义)\end{aligned}\end{gather} Pk=E[(Aek1+Wk1)(Aek1+Wk1)T]=E[(Aek1+Wk1)(ek1TAT+Wk1T)]=E[Aek1ek1TAT]+E[Wk1Wk1T]=APk1AT+Q    (注:误差协方差矩阵Pk1和过程噪声协方差Q在上文有定义)至此,将(7)代入(4) 得后验估计所有项均已知: X ^ k = X ^ k − + k k ( Z k − H X ^ k − ) \begin{gather}\begin{array}{ll} \hat{X}_k=\hat{X}_{k}^{-}+k_k(Z_k-H\hat{X}_k^{-}) \end{array}\end{gather} X^k=X^k+kk(ZkHX^k)注:完成后验估计后,需要更新上一时刻的误差协方差矩阵 P k − 1 P_{k-1} Pk1为本时刻 P k P_{k} Pk为: P k = ( I − k k H ) P k − \begin{gather}\begin{array}{ll} P_{k}=(I-k_kH)P_k^- \end{array}\end{gather} Pk=(IkkH)Pk
自此,卡尔曼滤波的五个重要公式分别为:
1、预测:先验估计(2)、先验误差协方差矩阵(7);
2、校正:卡尔曼增益(4)、后验估计(8)以及更新误差协方差(5).

DR_CAN老师给出个例子: 密码是6.66(时间允许建议自己算一下,卡尔曼滤波(Kalman Filter)状态估计、协方差矩阵、数据融合,看这一文即可,【非常详细推导,认真推理,包你看得懂】 上,轻松解决)
链接: DR_CAN卡尔曼滤波例子

敲公式不易,麻烦各位看官一键三连!感谢!欢迎收藏以便后续用到的时候查公式!

卡尔曼滤波是一种用来估计系统状态的递归滤波算法,适用于线性系统且满足高斯分布的噪声。该滤波器是由R. E. Kalman提出的。 卡尔曼滤波的原理是基于两个假设:系统动态方程能由线性方程描述,测量方程能由线性方程描述。在每个时间步,卡尔曼滤波器通过两个步骤进行估计和更新:预测步骤和校正步骤。预测步骤是根据系统动态方程和上一个时间步的估计状态预测当前状态的均值和方差。校正步骤是根据测量方程和当前观测得到的测量值以及预测的状态,利用贝叶斯定理更新状态的均值和方差,得到最终的估计值。 推导卡尔曼滤波算法公式如下: 预测步骤: 预测状态: $ x^- = A \cdot x + B \cdot u $ 预测状态协方差矩阵: $ P^- = A \cdot P \cdot A^T + Q $ 校正步骤: 卡尔曼增益: $ K = P^- \cdot H^T \cdot (H \cdot P^- \cdot H^T + R)^{-1} $ 修正后的状态: $ x = x^- + K \cdot (z - H \cdot x^-) $ 修正后的状态协方差矩阵: $ P = (I - K \cdot H) \cdot P^- $ 其中,x是系统状态向量,A是状态转移矩阵,B是输入矩阵,u是输入向量,P是后验状态的误差协方差矩阵,Q是预测误差协方差矩阵,H是测量矩阵,R是测量误差的协方差矩阵,z是观测向量。 通过上述公式的迭代,卡尔曼滤波器可以递归地估计系统的状态,并通过校正步骤利用最新的观测值来更新估计值。这种算法估计方差较大的实时系统中具有优势,可以去除噪声和不确定性,提高系统的估计精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值