数字图像处理与计算机视觉(python)

卡尔曼滤波

2020-02-19  本文已影响0人  殉道者之花火

概述

  卡尔曼滤波(Kalman filter)是一种高效率的递归滤波器自回归滤波器),它能够从一系列的不完全及包含杂讯测量中,估计动态系统的状态。卡尔曼滤波会根据各测量量在不同时间下的值,考虑各时间下的联合分布,再产生对未知变数的估计,因此会比只以单一测量量为基础的估计方式要准。卡尔曼滤波得名自主要贡献者之一的鲁道夫·卡尔曼,最早用于解决阿波罗计划的轨道预测问题。
  上面的定义摘自维基百科,是对卡尔曼滤波的专业阐述,为了便于理解通过下面两个例子来对卡尔曼滤波有个大致的了解。
  航天器的发动机能够在足够高的温度下燃烧燃料,为航天器提供足够的动力,航天器发动机燃烧室在燃烧时温度可以达到数千摄氏度,过高的温度可能会损坏发动机的机械部件,导致火箭发射失败,因此需要密切关注火箭燃烧室的内部温度,显然在燃烧室内部放置温度传感器会直接被融化。此时,无法直接测量燃烧室的内部温度,基于这种情况,可以在燃烧室外放置一个温度传感器测量燃烧室的外部温度,使用卡尔曼滤波器利用外部温度来估算燃烧室的内部温度。

  这是卡尔曼滤波器一种使用方式:

当系统的状态无法通过直接测量得到但是可以间接测量时,可以使用卡尔曼滤波通过间接测量值来估算系统的状态。

总所周知,汽车的导航系统使用车载传感器(Onboard sensors)得到汽车的当前位置并导航到目的地。常用的车载传感器有:惯性测量单元(Inertial measurement unit,IMU)使用加速度计和陀螺仪来测量汽车的加速度和角速度;里程表(Odometer)测量汽车的相对行驶距离;GPS接收器(GPS receiver)接收来自GPS卫星的信号,来确定汽车在地球表面的位置。IMU中的加速度计提供了汽车当前的加速度大小及方向,但是想要获得汽车的位置,需要对加速度进行两次积分(s =\iint a(t)dt)得到汽车的位置,数值积分算法在计算位置时会存在微小的误差并且会随着时间的累积会不断,最终产生积分漂移,完全偏离汽车的正确位置;里程表容易受到轮胎压力和道路状况的影响;而GPS位置跟新速度慢,而且会存在一定噪声,最大问题还是在车辆通过隧道或车库时,信号很差,甚至无法接收到信号。三种车载传感器各自有各自的局限和优势,只用单独一种传感器进行定位效果都不尽如人意,此时可以使用卡尔曼滤波融合三种传感器得到汽车位置的最优估计值。

  这是卡尔曼滤波的另一种使用方式:

组合各种可能受到噪声影响的传感器测量值,得到一个最优的估计值。

  卡尔曼滤波主要应用于高精度传感系统中,在时下大热的机器人、无人机、自动导航都有着应用,由于其递归的特性(即只要获知上一时刻状态的估计值以及当前状态的观测值就可以计算出当前状态的估计值),因此不需要记录观测或者估计的历史信息。与大多数滤波器不同之处,卡尔曼滤波器是一种纯粹的时域滤波器,它不需要像低通滤波器频域滤波器那样,需要在频域设计再转换到时域实现。下面我们一步步来解开卡尔曼滤波的神秘面纱。


隐马尔可夫

线形卡尔曼滤波

  卡尔曼滤波是一个递归滤波器,其算法本质是通过动态系统的有限个观测值,估计动态系统的隐藏状态。接下来,我们从动态系统的状态空间模型开始,一步步推导卡尔曼滤波算法。

离散线形卡尔曼滤波算法

  卡尔曼滤波器采用反馈控制的方法来估计过程状态:滤波器估计过程某一时刻的状态,然后以(含噪声的)观测变量的方式获得反馈。因此卡尔曼滤波器可分为两个部分:

​ 离散线形卡尔曼滤波器的递归计算过程如下图:

离散卡尔曼滤波的递归过程

​  时间更新方程将当前状态变量作为先验估计及时地向前投射到测量更新方程,测量更新方程校正先验估计以获得状态的后验估计。完成时间更新方程和测量更新方程的一轮更新之后,再次重复这个过程,将上一次计算得到的后验估计作为下一次计算的先验估计。

发散现象及平方根滤波

上一篇 下一篇

猜你喜欢

热点阅读