几种经典非线性滤波算法概括(EKF,UKF,CKF,PF)

上一篇文章阐述了Kalman滤波算法,该算法是在线性高斯下的最优滤波估计算法。但是在实际控制系统中,系统的动态过程和测量过程很多情况都是非线性的,所以非线性滤波算法变得尤为重要。

注: 本文仅就几种经典的滤波算法进行简单的介绍,详细的算法及仿真会在后面的文章中更新

非线性滤波可以分为两大类:点估计概率密度估计

点估计

直接估计随机状态值及其相关二阶统计量,并不需要估计其概率密度函数
从非线性逼近技术上可分为三类:

  • 非线性函数估计
  • 矩逼近
  • 随机模型逼近

代表算法:

  • 扩展卡尔曼算法(EKF)
    EKF算法是将非线性函数以泰勒级数展开的方式,保留一阶项实现对非线性函数线性化,用雅可比矩阵代替卡尔曼滤波方程中的状态转移矩阵,然后以卡尔曼滤波算法为框架计算系统的状态估计值和方差。
  • 无迹卡尔曼算法(UKF)
    UKF算法是利用UT变换获取Sigma点集,然后通过非线性函数传递,将非线性函数线性化问题转换成系统状态量概率密度分布的近似,然后基于Kalman算法框架实现滤波问题。
    UT变换,通过一定的采样策略,获取一组Sigma采样点,并设定相应的均值权值和方差权值,来近似非线性函数的后验均值和方差。
  • 容积卡尔曼算法(CKF)
    CKF算法是基于三阶球面-径向容积准则,使用一组容积点来逼近具有加性高斯白噪声的非线性系统的状态均值和协方差。
    三阶球面-径向容积规则是依据先验均值和协方差,通过容积规则选取容积点,再将这些容积点经过非线性函数的传递,再将非线性函数传递后的容积点加权处理近似状态后验均值和协方差。
    三种算法对比:

算法

优点

缺点

EKF

结构简单,适用于非线性程度不高的系统

由于忽略了高阶项,当非线性程度高或初始误差较大时,会大大降低滤波精度甚至发散 。

UKF

不会引入线性化误差,精度可以达到泰勒级数展开的二阶精度,无需计算雅克比矩阵,适合于不可或不连续的情况

当维数大于3时会损失掉部分Sigma点对非线性函数后验分布的统计特性,会使系统的估计精度有所下降。

CKF

实现简单,滤波精度高,收敛性好。

CKF算法对非线性系统估计时舍去了部分近似化误差, 会造成滤波不满足拟一致性, 从而无法对状态真值进行准确估计。有时也会出现开方失败的问题。

注:上述几种算法都是针对非线性高斯系统,都是为了解决非线性高斯滤波中高斯加权积分难以获取精确解析解这一问题

概率密度估计:

基于先验信息和在线数据估计状态的后验概率。

代表:粒子滤波(PF)

粒子滤波算法的基本思想是利用蒙特卡洛方法产生大量随机粒子去近似状态的后验分布从而实现状态估计,粒子滤波算法在预测、更新过程中,只对其中的粒子进行更新,再加权求和得到状态估计,不用计算状态的后验协方差。这种方法可应用于非线性、非高斯分布的情况。

蒙特卡洛思想:利用状态空间中大量的随机采样样本近似逼近所求变量的后验概率分布函数。

下图为粒子滤波示意图:

nlp非线性处理器是什么 非线性算法有哪些_nlp非线性处理器是什么


粒子滤波存在的问题:

  1. 退化问题,在实际计算中,经过数次粒子传播后,只有少数粒子具有较大权值,其余粒子的权值均忽略不计,导致粒子集不能有效表达系统状态后验概率分布,从而引起滤波性能下降甚至发散。
  2. 贫化问题,通过重采样虽然可以避免粒子的退化现象,但是大量粒子由相同的大权值粒子复制而来,会使粒子类型大幅度下降,甚至最后只剩下一个权值为1的粒子,不能再对概率分布进行正确的近似。