首页 > 编程语言 >卡尔曼滤波算法综述(KF、EKF、UKF和IMM)

卡尔曼滤波算法综述(KF、EKF、UKF和IMM)

时间:2023-03-11 14:56:53浏览次数:37  
标签:KF kalman 滤波 EKF 卡尔曼滤波 噪声 算法 系统

  本篇博文是对之前学习的书籍《卡尔曼滤波原理及应用--------MATLAB仿真》里面的卡尔曼滤波知识做一个回顾,里面不会包含具体的公式推导,只是对里面的几种算法做一个综述,具体公式可以参考之前的博文。

一、线性卡尔曼滤波(KF)

  在许多工程实践中,往往不能直接得到所需要的状态变量的真实值。例如雷达在探测目标时,可以通过回波信号等计算出目标的距离、速度和角度等信息。但雷达探测过程中会存在干扰(系统噪声、地杂波和非目标信号等)的问题,这些干扰会导致回波信号中夹杂有随机噪声。我们要在有随机噪声的回波信号中分离目标的运动状态量,准确的得到这个状态量往往是不可能的,只能根据观测信号估计这些状态变量。卡尔曼滤波就是这种通过估计或预测降低噪声影响的一种好的方法。特别是在线性系统中,卡尔曼滤波是最优的滤波算法。

  卡尔曼滤波原理这里就不做过多解释,我们看看kalman滤波的参数是怎么处理的。

  在学习这些参数之前,我们一起回顾一下卡尔曼滤波中得状态空间模型描述的动态方程。

  上式中,k为离散时间,系统在时刻k的状态为X(k)(假设是一个n维的变量,每一维对应可以是速度、角度、距离等信息),对应状态的观测信号Y(k)(假设是一个m维的变量),输入白噪声W(k)(一个r维的变量),观测噪声V(k)(一个m维的变量)。

  公式1为状态方程,公式2为观测方程,Φ为状态转移矩阵,Γ为噪声驱动矩阵,H为观测矩阵。

  1、噪声矩阵的处理

  W(k)和V(k)分别代表过程噪声和量测噪声,一般认为是高斯白噪声,他们的方差分别为Q和R(一般假设它们不随系统状态变化而变化)。

  在实际测量过程中,如何知道系统的过程噪声Q和量测噪声R呢?

  量测噪声是跟传感器的测量精度息息相关的。比如一个天平的测量误差为±1g,卷尺的测量误差为±0.1cm等等。根据上述这些信息,可以大概知道测量噪声的大小。通常情况下,量测噪声R是一个统计量。例如在测量100次体重,这100次的数据方差为R',这就与真实方差R非常接近。

  同样的,对于过程噪声Q,他是过程噪声的方差,例如在目标跟踪过程中,过程噪声往往是路面摩擦力、空气阻力等造成的,要准确获取Q是非常困难的。但可以通过对比测试来获得。例如机器人在光滑的玻璃上行驶和在粗糙的路面行驶,二者对比就能获得路面的阻力因子,从而测得阻力噪声方差Q。

  2、特殊情况的处理

  现在假设我们已知系统(1)和(2)中得滤波递推方法,对于一些与该系统形式不一致的特殊情况,需要讨论怎样转化为式1和2的最优滤波的问题。

  (1)Φ和H不确定。线性kalman滤波是严格要求系统为线性系统,噪声模型为高斯模型。对于不同系统,它的系统模型Φ、H,状态变量X(k),噪声Q、R都是不一样的,要利用kalman滤波处理噪声,首先要建立好系统的数学模型。当考虑到某些系统中Φ、H不确定,并且噪声W(k)、V(k)的统计特性也不知道(即Q、R),这时就要估计变化的参数,从而调整滤波器的增益阵。在这种情况下,一般应用自适应滤波。

  (2)含有控制量的系统描述。考虑如下系统

  式中U(k)为控制量,这种情况与式1和式2处理方法相同,需要将控制量BU(k)加到预测式中,增益阵和误差阵的递推式相同。

  (3)与1、2两式相同,但系统噪声为有色噪声,即有:

  式中ε(k)为白噪声。处理的方法是将W(k)也列为状态,则增广后的状态为:

   增广后的系统方程和量测方程为:

   可简写成

  这就与公式1、2所描述的一般形式所符合了。

   3、kalman滤波算法的特点

  (1)由于kalman滤波算法是将被估计信号看作在白噪声作用下一个随机线性系统的输出,并且它的输入/输出是由状态方程和输出方程在时间域上给出的,因此这种滤波方法不仅适用于平稳随机过程的滤波,而且特别适用于 非平稳或平稳马尔科夫序列或高斯-马尔科夫序列的滤波,因此应用范围非常广泛。

  (2)kalman滤波算法是一种时间域滤波方法,采用状态空间描述系统。系统的过程噪声和量测噪声不是需要滤除的对象,他们的统计特性正是估计过程中要用到的信息,而被估计量和观测量在不同时刻的一、二阶矩是不需要知道的。

  (3)由于kalman滤波的基本方程是时间域内的递推形式,其计算过程是一个不断“预测-修正”的过程,在求解时不需要存储大量数据,同时一旦观测到新的数据,便可以算得新的滤波值,因此这种滤波方法非常适用于实时处理、计算机实现。

  (4)由于滤波器的增益矩阵与观测无关,因此它可预先离线算出,从而可以减少实时计算量。求滤波器增益矩阵时,要求一个矩阵的逆,它的阶数只是取决于观测方程的维数,而该维数通常很小,因此求逆运算是比较方便的。另外,在求解滤波器增益的过程中,随时可以算得滤波器的精度指标P,其对角线上的元素就是滤波误差向量各个分量的方差。

二、扩展卡尔曼滤波(EKF)

  第一部分说了用于线性的卡尔曼滤波,接着再说一下用于非线性的扩展卡尔曼滤波。

  kalman滤波能够在线性高斯模型的条件下,对目标的状态做出最优的估计,可以有一个较好的跟踪效果。但是,在实际应用中往往会有很多不同程度的非线性,其中非线性函数比较典型的几个分别是平方、对数、指数、三角函数等,有些非线性系统可以近似看成线性系统,但为了精确估计系统的状态,大多数系统不能仅用线性微分来描述。例如飞机的飞行、导弹的制导等,其中的非线性因素不能忽略,必须建立适用于非线性系统的滤波算法。

  对于非线性系统的滤波问题,最常用的方法是利用现行换技巧将其转化为一个近似的线性滤波问题,其中最广泛的方法是扩展kalman滤波方法(Extended kalman Filter , EKF)。扩展kalman滤波建立在线性kalman滤波的基础上,它的核心思想就是,对与一般的非线性系统,首先围绕滤波值将非线性函数f(*)和h(*)展开成泰勒级数,然后省略二阶及以上的项,得到一个近似的线性化模型,然后再用kalman滤波完成对目标的滤波估计等处理。

  EKF的优点在于不用预先计算过程噪声W(k)和量测噪声V(k)均为零的时候的解,但它只能在滤波误差以及一步预测误差比较小的时候才能用。

三、无迹卡尔曼滤波(UKF)

  第二部分讨论的扩展kalman滤波算法是对非线性的系统方程或者观测方程进行泰勒展开并保留其中一阶近似项,这样不可避免地引入了线性化误差。如果线性化假设不成立,采用这种算法则会导致滤波器性能下降以至于造成发散。如果线性化假设不成立,采用这种算法则会导致滤波器性能下降以至于造成发散。另外,在一般情况下计算系统状态方程和观测方程的jacobian矩阵是不易实现的,增加了算法的计算复杂度。

  无迹卡尔曼滤波(Unscented Kalman Filter,UKF)摒弃了对非线性函数进行线性化的传统做法,采用kalman线性滤波框架,对用于预测方程,使用无迹变换(Unscented Transform,UT)来处理均值和协方差的非线性传递问题。UKF算法是对非线性函数的概率密度分布进行了近似,用一系列确定样本来逼近状态的后验概率密度,而不是对非线性函数进行近似,不需要对雅可比矩阵进行求导。同时,UKF没有把高阶项忽略,因此对于非线性分布的统计量有较高的计算精度,有效地克服了EKF的估计精度低、稳定性差的问题。

四、交互多模型卡尔曼滤波

  在kalman滤波算法中用到了状态转移方程和量测方程,被估计量随着时间的变化,呈现的是一个动态估计。在目标跟踪中,不需要知道目标的运动模型就能实时的修正目标的状态变量(速度、距离等),具有良好的适应性。但是当目标实施机动变化(突然加、减速或急转弯等),仅仅采用基本的kalman滤波算法往往得不到理想的结果。这时就需要采用自适应算法。交互多模型(IMM)就应用而生。

  目标交互多模型kalman滤波算法在机动目标跟踪领域得到广泛应用。IMM算法使用两个或者多个模型来描述工作过程中可能出现的状态,最后通过有效的加权融合进行系统状态估计,很好的克服了单个模型估计误差较大的问题。

五、总结

  以上对KF、EKF、UKF以及IMM做了简单的综述,主要讲一下这些算法的应用环境以及其优缺点。具体原理和公式可参考之前对应的相关博客。

六、参考文献

  《卡尔曼滤波原理及应用------MATLAB仿真》 黄小平 王岩(如有侵权,请联系删除)

标签:KF,kalman,滤波,EKF,卡尔曼滤波,噪声,算法,系统
From: https://www.cnblogs.com/sbb-first-blog/p/17178998.html

相关文章