概述
一般来说,我们希望我们的生活是线性的,就像这条线,这可能表示成功、收入或者幸福。但实际上,生活并不是线性的,它充满了起伏,有时甚至更复杂。
如果您是工程师,您经常会需要处理非线性系统,为了帮助您,我们将讨论非线性状态估算器。在之前的文章中,我们使用简化的线性汽车模型来讨论卡尔曼滤波器的状态估算。
但是,如果系统建模时考虑到非线性,比如道路摩擦,则状态转换函数变为非线性。在这里,噪声被线性地加入了系统,但也有可能噪声并非线性加进来。在一般系统中,无论状态转换函数还是观测函数,甚至两者都可能是非线性的。
对于所有这些情况,我们需要使用非线性状态估算器来替代卡尔曼滤波器。因为,卡尔曼滤波器仅针对线性系统。下面这个例子显示了使用卡尔曼滤波器对非线性系统进行状态估算出现的问题。卡尔曼滤波器假设高斯分布。如果状态转移函数是线性的, 在经历线性变换之后,分布保持其高斯特性。
虽然这里没有显示,但观测函数g(x)也是如此。但是,如果f(x)是非线性的,那么得到的状态分布可能不是高斯分布。
因此,卡尔曼滤波器算法可能会不收敛。在这种情况下,您可以使用扩展卡尔曼滤波器(EKF), 它把非线性函数在当前估算状态的平均值附近进行线性化。在每个时间步,执行线性化, 然后将得到的雅可比矩阵用于预测和更新卡尔曼滤波器算法的状态。
当系统是非线性,并且可以通过线性化很好地近似时,那么扩展卡尔曼滤波器是状态估算的一个很好的选择。然而,它有以下缺点: (1)由于复杂的导数,可能难以解析计算雅可比矩阵;(2)以数值方式计算它们则可能需要很高的计算成本;(3)扩展卡尔曼滤波器不适用于具有不连续模型的系统,因为系统不可微分时雅各比矩阵不存在;(4)高度非线性系统的线性化效果不好。
其中最后一种情况下线性化无效,因为非线性函数并不能通过线性函数很好的近似表达出来,描述不了系统动力学。
为了解决扩展卡尔曼滤波器的问题,您还可以使用另一种估算技术, 称为无迹卡尔曼滤波器(UKF)。你知道吗,过滤器的创建者注意到同事办公桌上的除臭剂才想出了这个名字(因为也有人称其无味卡尔曼滤波器)。现在回到滤波器,它并不像扩展卡尔曼滤波器那样近似非线性函数,无迹卡尔曼滤波器近似概率分布。我们的意思是:这是一个概率分布,无迹的卡尔曼滤波器选择一组最小的采样点,让它们的均值和协方差与该分布相同。
这些被称为西格玛点,并且围绕均值对称分布。然后,每个西格玛点通过非线性系统模型计算,并计算非线性变换后的输出点的均值和协方差,计算经验高斯分布,用来计算新的状态值。
注意,在线性卡尔曼滤波器算法中,在预测步骤中使用状态转移函数计算误差协方差P,然后使用测量量进行更新。然而,在无迹的卡尔曼滤波器中,我们不会以相同的方式计算它,因为我们以经验方式得到它。
基于相似原理的另一种非线性状态估计器是粒子滤波器(PF),它使用的样本点称为粒子。与无迹卡尔曼滤波器的显着差异在于,粒子滤波器近似任意分布,所以它不仅限于高斯假设。为了表示未明确知道的任意分布,粒子滤波器所需的粒子数远远大于无迹卡尔曼滤波器所需的粒子数。
作为比较,下表是我们到目前为止讨论过滤器的特性。卡尔曼滤波器仅适用于线性系统。对于非线性系统的状态估算,您可以使用 EKF ,UKF 或PF。注意,使用EKF 来精确估计状态,它需要非线性系统模型能很好的进行线性化,否则,滤波器得到的估算结果很差。粒子滤波器是唯一适用于任意分布的滤波器。我们看到,表格越往下计算成本越高。粒子滤波器所需要的运算量最大,因为它需要大量的粒子来近似任意分布。
本节,我们讨论了不同非线性状态估算器背后的基本概念。现在,如果您需要处理任何非线性问题,例如汽车案例中的道路摩擦,你已经知道如何估算非线性系统中感兴趣的状态值。
如果你想了解更多有关扩展卡尔曼滤波器(EKF)的知识,请观看以下视频:
【卡尔曼滤波器】6_扩展卡尔曼滤波器_Extended Kalman Filter_哔哩哔哩_bilibili
在Simulink中使用卡尔曼滤波器和扩展卡尔曼滤波器的例子请观看以下视频:
在 Simulink 中使用卡尔曼滤波器_哔哩哔哩_bilibili
在 Simulink 中使用扩展卡尔曼滤波器_哔哩哔哩_bilibili
文章内容的视频地址如下:
了解卡尔曼滤波器——非线性状态估算器_哔哩哔哩_bilibili
最后
以上就是寒冷钻石为你收集整理的了解卡尔曼滤波器4--非线性状态估算器(EKF,UKF,PF)的全部内容,希望文章能够帮你解决了解卡尔曼滤波器4--非线性状态估算器(EKF,UKF,PF)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复