非参数滤波可以模拟非线性情况,主要介绍两种滤波,直方图滤波和粒子滤波,后者被广泛应用于机器人学中。
离散贝叶斯滤波
可以对比一下连续贝叶斯滤波,我在连续贝叶斯滤波中就是按照离散来讲的,离散应该更好理解。
直方图滤波
将先验概率用直方图分段,利用积分求出每个分段平均值和概率代表一个离散的状态,利用离散贝叶斯滤波和转移方程,求出后验概率。
动态分解与静态分解
动态分解就是概率越高,分的越密
粒子滤波
用无数粒子表示状态,概率越密集,采样越密集
直接看伪代码
- 输入分别是上一时刻的粒子群,控制数据,观测数据,X就代表了bel
- 3-7计算后验概率 b e l ‾ \overline{bel} bel,也就是新的粒子分布。先通过之前的粒子加上运动计算出新的粒子群,然后计算出粒子的重要性(符合目前观测的粒子重要性大),将新的粒子以及其重要性作为 b e l ‾ \overline{bel} bel
- 8-10行进行的是重采样,一些重要性非常低的粒子可以适当抛弃,减少运算量;(后面不是一般粒子滤波做的)重要性非常高但是位置非常近的粒子也可以用更少的粒子去表示,减少计算量;还有存在粒子平均重要性很低,说明之前可能抛弃了真正的粒子,需要在全局再撒一些粒子补充,让后面的迭代能准确收敛。
PS:带权粒子数才是概率,所以有些权很低的粒子也会非常密集,所以要根据权重采样。