关于卡尔曼滤波KF与粒子滤波的一点理解,刚刚接触,求指点。

来源:互联网 发布:我要投诉淘宝小二 编辑:程序博客网 时间:2024/05/17 03:49

首先,滤波通俗来讲,就是过滤掉噪声(干扰信号),尽量复原真实的结果(也就是系统状态)。那么为什么还会有测量方程和状态方程两个方程尼?我的理解是因为一些状态是无法直接测量出来的,只能通过公式推导出来。比如我们说想知道温度这个状态量,我们拿来水银温度计来测量,然后读数,得到现在是37摄氏度。好像没有问题,但是值得注意的是,我们所读取的温度值,是通过水银预热膨胀后,再与温度计上的刻度来进行比对得出的结果,并不是直接测量而得。这个过程中有两种误差介入,一种是系统误差,一种是测量误差。个人理解,系统误差是说从原理出发进行定义的,比如说水银与温度成正比,水银的高度表现了温度的高低,但是这个比例是否真的是严格的正比例的,线性的呢?这其中存在误差,原理性的误差。第二个是测量误差,可以理解为读数误差,或者其他影响到测量结果(读数)的误差。由于有了这两种误差, 导致我们开始怀疑我们得到的温度是否真正的温度呢?“真的”温度是多少呢?其实这就是滤波要做的,得到一个尽量接近于“真值”的值,因为绝对的正确的值是不存在的。

第二,卡尔曼滤波。卡尔曼滤波的五个方程就不说了,随便百度就可以找到。只写着一些理解,说白了,卡尔曼滤波就是分两步:A,预测,通过前一时刻的值去“合理”预测后一时刻的状态值X1(k+1),这里的“合理推测”的依据就是状态方程!B、更新,通过测量值来换算出(比如通过水银高度换算出温度),状态值X2(k+1),而这里换算计算的依据就是观测方程啦。那么现在我们得到了两个状态值X1(K+1)和X2(K+1),究竟哪个是k+1时刻X的近似真值呢?卡尔曼是这么做的,看看X1(K+1)和X2(K+1)加权求和,就是给两个通过不同渠道取到的“真值”分别乘以一个系数,再加到一起作为X(k+1))的最后的结果。而系数的大小也就反应了我们更加相信A和B。那么看来决定系数很重要了,怎么衡量呢?这个不用咱们想了,卡尔曼已经给出了计算方法。见卡尔曼滤波的五个方程。推荐一篇博客:http://blog.csdn.net/passball/article/details/44621457,通俗易懂。


第三,粒子滤波。粒子滤波算法源于Montecarlo的思想,即以某事件出现的频率来指代该事件的概率。因此在滤波过程中,需要用到概率如P(x)的地方,一概对变量x采样,以大量采样的分布近似来表示P(x)。因此,采用此一思想,在滤波过程中粒子滤波可以处理任意形式的概率,而不像Kalman滤波只能处理高斯分布的概率问题。他的一大优势也在于此。

  x(t)=f(x(t-1),u(t),w(t)) (1)     状态转移方程,u(t)为控制量,w(t) 为模型噪声

y(t)=h(x(t),e(t)) (2)                  观测方程,e(t)为观测噪声

转自http://blog.sina.com.cn/s/blog_400d94220101bkc1.html。
下面是我自己的一点通俗理解:羊毛出在羊身上,以大量的局部采样结果,代表整体结果。主要分三步:第一步,生成粒子,即采样。在时刻T-1时,采样n次,每次都是一个粒子,记为Xi(t-1)。第二步:预测。利用状态方程计算每个粒子下一个时刻的状态Xi(t),带入上面(1)式即可。第三步,加权求和得到X(t)!因为采样了n个粒子,对于每个粒子都赋予一个权重,即比例系数,代表我们有多相信这个粒子。那么这个权重怎么确定呢?主要分两小步:3.1初始权重就是条件概率条件概率P(y|xi),直白的说,这个条件概率代表了假设真实状态X(t)取第i个粒子Xi(t)时获得观测y(t)的概率。(站在不同的地方能看到不同的风景,现在有一副风景,反推一下是站在哪里看到)。3.2初始的权重值求出来了,还要做个优化处理,防止“退化”(至于为啥这样我还没参悟透彻)。这个优化的方法就是重采样算法。直白理解就是:去掉权重小的,复制大的。ok,优化后的权重求完了,再乘上对应的粒子Xi(t),最后求和,就是我们要的t时刻的状态量X(t)了!

(没有仔细研究数学推导过程,大体理解了意思,如果错误,劳烦指正)
0 0