卡尔曼滤波公式的推导,learning

一、状态量的理解

        做工程都是从问题入手找到对应解决的方案。那么我们用卡尔曼滤波的目的肯定是要求解一些变量。所以怎么求解这么变量呢?

        我们一般是要建立方程式来求解变量,因此就出现了状态方程,比如运动方程,\small s = vt+\frac{1}{2}at^{2}。如果要求方程式中的位置s和对应的速度v,就将[s,v]作为状态量。注意两点,第一,就是需要求什么变量就用什么作为状态量;第二,状态量之间需要有关系,因为卡尔曼是一个推算的过程,如果没有关系,靠什么推算呢?有了方程,就开始解算方程式

二、两个过程的理解,也是卡尔曼的理论框架

理解自kalman滤波理解一:理论框架_JK-CSDN博客,可以先看完第二节再去理解

第一个是预测过程,我自己的理解是推算过程,比如从A点推算到B点,这个过程符合全概率法则。(开始不理解什么是全概率法则)

        全概率法则的概念:它将对一复杂事件A的概率求解问题转化为了在不同情况下发生的简单事件的概率的求和问题。(还是不能完全理解这句话,学渣是如此的)

        实际理解为:本来在A点,然后经过速度和时间,到达B点,也就是推算过程,那么有先后关系,B点 = A + 过程,所以是全概率事件是概率的和。那么这个概率是什么?也就是卡尔曼里面的P矩阵和Q矩阵。

        P矩阵概念:状态估计与真值间偏差平方的期望值。对角线是各个状态估计的方差,开方表示不确定度,不确定度也是一个概念,表示不信任度,不确定度越小,则表示可信度越高,反之,不可信。也就是越小越可靠吧。然后方差越小,在定义上也可以理解为在均值附近变动的范围越窄,也就是大概率在均值附近。非对角线上表示协方差,不同状态估计误差之间的相关性。(忘记在哪里看到说初始协方差可以设置为0,忘记理由了)

        在A点时,状态量的方差就是P矩阵,而过程中时存在噪声的,比如路不平的抖动,轮胎打滑等会产生误差,表示这个噪声的方差就是Q矩阵,所以B点的方差就是P' = P + Q(这个也就是卡尔曼的公式2)。这里可以去看上面引用的博客。(补充一句,这里其实就是先验概率,因为完全独立进行的,没有任何观测修正)

也就是上述引文中的图表示的意思,可以理解为A方差为P = 4,噪声的方差0.5,则B点的方差就变为4.5,也就是波动范围变大了,均值为累加值。

 

第二个是观测过程,也就是A到B的过程中,不仅有推算而且还有观测,可以认为是传感器测量的距离,这个过程符合贝叶斯法则。(所以什么是贝叶斯法则?)

        贝叶斯法则:是指当分析样本大到接近总体数时,样本中事件发生的概率将接近于总体中事件发生的概率。(好吧,还是不能理解怎么在工程用这个概念。。。。百度例子)

        实际的理解:首先观察外表,没有任何的行为动作,也就是没有观测,只有状态时,用主观判断,也就是以前的经验对状态得到的结论,就是先验判断;然后有了动作或者行为,也就是观测,对以前的经验产生的判断进行修正,得到的结论就是后验判断

        先验概率,就是A不考虑B的因素发生的概率,也就是用经验判断的结果。

        后验概率,就是A在B发生的情况下发生的概率,用实时行为修正后的结果。

        实际应用的话,就是说,我在状态推算的时候,观测也是同时在进行的,而同时发生的两个概率就是方差的乘积,方差的乘积可以看

https://www.zhihu.com/question/46458824#:~:text=%E7%BB%93%E8%AE%BA%EF%BC%9A%20%E4%B8%A4%E4%B8%AA%E5%88%86%E5%88%AB%E6%9C%8D%E4%BB%8E%20%E5%92%8C%20%E7%9A%84%E6%AD%A3%E6%80%81%E5%88%86%E5%B8%83%E7%9A%84%E6%A6%82%E7%8E%87%E5%AF%86%E5%BA%A6%E5%87%BD%E6%95%B0%E7%9B%B8%E4%B9%98%E5%90%8E%EF%BC%8C%E6%96%B0%E5%87%BD%E6%95%B0%E7%AD%89%E4%BB%B7%E4%BA%8E%E6%AD%A3%E6%80%81%E5%88%86%E5%B8%83%20%E7%9A%84%E6%A6%82%E7%8E%87%E5%AF%86%E5%BA%A6%E5%87%BD%E6%95%B0%E4%B9%98%E4%BB%A5%E7%BC%A9%E6%94%BE%E5%9B%A0%E5%AD%90,%E3%80%82%20%E5%85%B6%E4%B8%AD%EF%BC%8C%E7%BC%A9%E6%94%BE%E5%9B%A0%E5%AD%90%20%EF%BC%8C%E6%AD%A3%E6%80%81%E5%88%86%E5%B8%83%E7%9A%84%E5%9D%87%E5%80%BC%20%EF%BC%8C%E6%AD%A3%E6%80%81%E5%88%86%E5%B8%83%E7%9A%84%E6%96%B9%E5%B7%AE%20%E3%80%82

          最后就是通过对这个公式进行分解,得到卡尔曼剩余的三个公式,也就是引文1的公式。

 

三、参数的调整

P矩阵可以根据状态方差估计,不用太最求准确度,这个的估计也没摸到门路,学习中

Q矩阵是状态转移预测过程由于外部干扰产生,这个需要找一些关系式,来计算方差,挺难的

R矩阵在使用时一般传感器都会给出精度指标,该指标就可以直接转化到矩阵R中,传感器误差。

四、体悟

1、感觉重点就是一个贝叶斯法则的推导过程吧,用经验+观测然后权重分配的问题

2、目前掌握的不到位的就是状态量的选择,P矩阵的定义,Q矩阵的定义

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
卡尔曼滤波是一种用于估计系统状态的递归滤波器。它通过结合系统动态模型和观测数据来提供对状态的最优估计。下面是卡尔曼滤波公式推导过程: 1. 系统模型: 状态方程:x_k = F_k * x_{k-1} + B_k * u_k + w_k 观测方程:z_k = H_k * x_k + v_k 其,x_k表示系统在时间步k时的状态向量,u_k表示控制输入,z_k表示观测向量。 F_k是状态转移矩阵,描述系统状态从时间步k-1到时间步k的演化关系。 B_k是控制输入矩阵,描述控制输入对系统状态的影响。 w_k是系统过程噪声,假设其均值为0,协方差矩阵为Q_k。 H_k是观测矩阵,描述观测向量与系统状态之间的关系。 v_k是观测噪声,假设其均值为0,协方差矩阵为R_k。 2. 预测步骤(时间更新): 根据上一时刻的状态估计x_{k-1}和控制输入u_{k-1},通过状态转移矩阵F_k和控制输入矩阵B_k进行状态预测: x_{k}^- = F_k * x_{k-1} + B_k * u_{k-1} 同时,计算预测误差协方差矩阵P_{k}^-: P_{k}^- = F_k * P_{k-1} * F_k^T + Q_k 3. 更新步骤(测量更新): 根据当前观测向量z_k,通过观测矩阵H_k对预测状态进行观测估计: y_k = z_k - H_k * x_{k}^- 计算观测残差协方差矩阵S_k: S_k = H_k * P_{k}^- * H_k^T + R_k 计算卡尔曼增益K_k: K_k = P_{k}^- * H_k^T * S_k^{-1} 更新状态估计值: x_{k} = x_{k}^- + K_k * y_k 更新误差协方差矩阵: P_{k} = (I - K_k * H_k) * P_{k}^- 其,^-表示预测值,而没有^-表示更新值。 以上就是卡尔曼滤波公式推导过程。通过递归地进行预测和更新步骤,卡尔曼滤波能够对系统状态进行最优估计。请注意,以上推导过程是基于线性系统和高斯噪声的情况,对于非线性系统还需要进行扩展,例如使用扩展卡尔曼滤波(Extended Kalman Filter)或无迹卡尔曼滤波(Unscented Kalman Filter)等方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值