卡尔曼滤波算法的学习总结

本文为作者学习卡尔曼滤波算法后的学习总结,如有错误请指正,万分感谢!


前言

本文学自B站up主华南小虎队,原视频讲得很好,推荐去观看。原视频卡尔曼滤波讲解

一、简介

(1)作用

在学习卡尔曼滤波之前,我们首先要明白在使用该滤波器后,可以给我们带来什么好处?

在此给读者举出一个例子,方便更加直观地理解。

假若这是一个超声波测距输出的距离信号与时间关系的坐标轴。

红色波浪线代表为滤波的信号,可以看到未滤波前的信号起伏较大,导致其所产生的误差会对我们的信号采集产生影响。

为了得到一个相对稳定的信号,我们需要对信号进行滤波,图中的紫色波浪线就是滤波后的信号,可以看到数据平稳了很多,能够更好的被我们使用。

(2)应用系统

卡尔曼滤波适用于线性高斯系统。

1.线性

线性指的是输入对输出造成影响,例如 y = kx+b。x的改变会对输出 y 的结果进行改变。

2.高斯 

信号的噪声满足高斯分布,即在均值的某一方差范围内,噪声出现的概率普遍较高。

(3)原理

从宏观意义上来看,卡尔曼滤波的本质是对数据权重的调整

在卡尔曼中,有一个估计值和观测值,我们通过对两个值的权重调整,得到最优结果

二、状态空间表达式

在上文的简介中,我们初步了解了卡尔曼滤波的概念,此时我们需要引入两个方程来进一步学习。

(1)状态方程

X_{k}  =  AX_{k-1} + Bu_{k} + W_{k}

  • X_{k} 是当前状态的当前值
  • AX_{k-1}就是 A * 上一个时刻的值,A 是某种关系,可以理解成一个系数。
  • Bu_{k} 是 B * 当前状态的输入值,同理,B也可以理解成一个系数。
  • W_{k}是过程中产生的噪声,指外界条件(非人为)对当前状态产生影响。

(2)观测方程

Y_{k} = C*X_{k} + v_{k}

  • X_{k} 就是状态方程的输出结果。
  • v_{k} 是观测噪声,与观测仪器的误差有关。
  • C 是一个系数。

从状态方程和观测方程的表达式中,我们可以得到以下框图

(3)示例

这里用一个对水壶加热的例子来进行理解加深

在这个例子中

我们可以对状态方程的表达式进行拆解   X_{k}  =  AX_{k-1} + Bu_{k} + W_{k}

AX_{k-1} 是上一时刻的水温。

Bu_{k} 是在这一时段内,水上升的温度。

W_{k} 是外界条件造成的噪声影响

由此我们可得出 X_{k} 的值

再将其带入观测方程表达式,加上 v_{k} 观测器的误差,即可获得 Y_{k} 的值。

三、参数分析

(1)高斯白分布

W_{k} (过程噪声)和 v_{k}(观测噪声) 都符合高斯白分布,即均值为0的高斯分布

(2)参数定义

因为 v_{k} 符合 正态分布,所以可以设它的均值为0,方差为R_{k}

例:我们可以根据 GPS 来定位一个物体的位置,此时可以确定该物体在 1000m处,误差在8米之内,那么此时8米就是 v_{k}(观测噪声), 方差R_{k}可以是1m。

同理,可以设W_{k} 的均值为0,方差为Q_{k}

例:若现有一个滑板以 5m/s 的速度在运动,此时可能有一股8m/s的顺风来加快滑板的运动,那么8m/s就是 W_{k}(过程噪声),方差 Q_{k} 可以是1m/s。

(3)超参数

使用卡尔曼滤波时需要调节Q、R这两个参数的值,也就是过程噪声的方差和观测噪声的方差。

如果运动状态很理想,几乎没有噪声,那么Q就可以调小,反之则调大。

若观测器精度较高,那么R就可以调小,反之则调大。

四、卡尔曼公式理解

(1)汇总

先分析公式之前,我们首先需要先知道卡尔曼滤波的实现过程,简单来说,该过程就是使⽤上⼀次 的最优结果预测当前的值,同时使⽤观测值修正当前值,得到最优结果。 

(2)先验估计

这个公式左边的值被称为先验估计值。

右边的第一个部分为 F * 上一个时刻的最优估计值(最终滤波结果),F为状态转移矩阵。

第二部分则是控制输入部分,B为控制矩阵。

(3)先验估计协方差

这个公式的左边是先验估计值的协方差,并且它是由先验估计值推算而来的。

 在进行推算之前,我先引入两种协方差的表达公式,如下图所示

由于这个公式是求的先验估计值的协方差,所以我们可以直接将式子的左边替换,具体推算过程如下图。 

 

(4)修正估计

 

这个公式的左边部分是卡尔曼滤波的最终结果。

右边部分是先验估计值 加上 K_{t}(卡尔曼增益)*(观测值 - 先验估计值)。

如果状态模型很理想,几乎没有误差,那么先验估计值就为可信, K_{t}可以调小。

如果观测器更为精准,则调大 K_{t},增加观测值的权重。

 (5)更新卡尔曼增益

 

可以根据先验估计协方差的结果来对这里进行推导。 由于只需要求一个状态量,所以H矩阵可以简化成 1。

 

(6)更新后验估计协方差 

 

这个公式的左边部分是最优估计值的协方差,右边部分是 先验估计值协方差 * 一个矩阵关系。

I 是一个单位矩阵。

(7)小结

在分析完这五个公式后,我们可以得知这是一个循环的过程,使得最终滤波结果会越来越精准。 

简单来说,可以理解为:

  • 先验估计值 = 上一时刻的最优估计值*矩阵 + 控制输入
  • 先验估计协方差 = 上一时刻的最优估计值*矩阵 + 过程噪声协方差
  • 卡尔曼增益 可以看似与 Q和R有关的表达式
  • 最优估计值 = 先验估计值 + 卡尔曼增益*(测量值 - 先验估计值)
  • 最优估计协方差 = (单位矩阵 - 卡尔曼增益)*先验估计协方差 

五、卡尔曼滤波的使用

  1. 选择状态量、观测量
  2. 根据状态模型、观测模型构建方程
  3. 初始化参数(Q、R、P等等)
  4. 代入公式迭代
  5. 调节超参数

总结

本文简单分析了卡尔曼滤波的原理和公式,希望对各位读者有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值