学习卡尔曼滤波(三)——无迹卡尔曼滤波

参考资料

文章大部分内容主要来自参考资料,旨在于更方便学习记忆查找,不作其他用途。

上一篇整理总结了扩展卡尔曼滤波。扩展卡尔曼滤波通过一阶泰勒展开得到近似的线性状态转移矩阵与观测矩阵。EKF的一个最大的问题就是求解雅可比矩阵计算量比较大,因此这里再介绍另一种可用于非线性系统的卡尔曼滤波——无迹卡尔曼滤波(Unscented Kalman Filter,UKF)。

1. 无迹变换

在应用KF时面临的主要问题就是非线性过程模型和观测模型的处理。

对于我们想要估计的状态,在k时刻满足均值为学习卡尔曼滤波(三)——无迹卡尔曼滤波,方差为学习卡尔曼滤波(三)——无迹卡尔曼滤波的一个高斯分布,KF能够使用的前提就是所处理的状态是满足高斯分布的,对于非线性的情况下,EKF是寻找一个线性函数来近似这个非线性函数,而UKF就是去找一个与真实分布近似的高斯分布。

UKF的基本思路就是: 近似非线性函数的概率分布要比近似非线性函数本身要容易

如何去找一个与真实分布近似的高斯分布呢?——找一个与真实分布有着相同的均值和协方差的高斯分布

如何去找这样的均值和方差呢?——无迹变换

1.1 无迹变换基本概念

无迹变换的核心理念:

  • 近似概率分布比近似任意的非线性函数或变换要相对容易。

无迹变换要解决的问题是:已知某随机变量(多维情形下是随机向量)的概率分布(均值和方差),求其经过某非线性函数 学习卡尔曼滤波(三)——无迹卡尔曼滤波变换后的概率分布。

基于上述思想,无迹变换的主要步骤为:

  1. 根据某种规则对随机变量的概率分布进行确定性采样,并为采样点分配权重(均值权重和方差权重),采样点我们通常称之为 sigma 点;

  2. 将每一个 sigma 点进行非线性变换,得到新的 sigma 点;

  3. 对非线性变换后的新的 sigma 点进行加权求和,分别计算加权均值加权方差,用加权均值和加权方差近似表征随机变量经非线性变换后的概率分布。

无迹变换主要包括两种形式:一般形式的无迹变换比例无迹变换。两种无迹变换的区别主要体现在采样规则和权重计算上。比例无迹变换是对前者做出的改进。

1.2 一般形式的无迹变换

假设存在学习卡尔曼滤波(三)——无迹卡尔曼滤波维随机向量 学习卡尔曼滤波(三)——无迹卡尔曼滤波,其服从均值 学习卡尔曼滤波(三)——无迹卡尔曼滤波 和协方差 学习卡尔曼滤波(三)——无迹卡尔曼滤波的正态分布:
学习卡尔曼滤波(三)——无迹卡尔曼滤波
学习卡尔曼滤波(三)——无迹卡尔曼滤波 经过非线性函数 学习卡尔曼滤波(三)——无迹卡尔曼滤波 进行变换,得到随机向量 学习卡尔曼滤波(三)——无迹卡尔曼滤波,我们使用一般形式的无迹变换估计 学习卡尔曼滤波(三)——无迹卡尔曼滤波 的概率分布。一般形式的无迹变换最早由 Julier 等人提出,其主要操作流程如下所述:

  • 步骤一:参数选择与权重计算

    一般形式的无迹变换只涉及一个外部引入参数学习卡尔曼滤波(三)——无迹卡尔曼滤波,各 sigma 点(共学习卡尔曼滤波(三)——无迹卡尔曼滤波 个)的权重分配如下:
    学习卡尔曼滤波(三)——无迹卡尔曼滤波

    其中, 学习卡尔曼滤波(三)——无迹卡尔曼滤波, 表征了 sigma 点相对均值的散布程度, 学习卡尔曼滤波(三)——无迹卡尔曼滤波 越大,非均值处的 sigma 点距离均值越远,且所占权重越小, 而均值处 sigma 点所占权重则相对越 大。对于高斯问题, 学习卡尔曼滤波(三)——无迹卡尔曼滤波 是一个比较好的选择,对于非高斯问题(无迹变换也适用于非高斯问题), 学习卡尔曼滤波(三)——无迹卡尔曼滤波 应该选择其它更恰当的值。

  • 步骤二:确定性采样

    通常情况下, sigma 点位于均值处及对称分布于主轴的协方差处(每维两个)。按照如下方法采样得到 学习卡尔曼滤波(三)——无迹卡尔曼滤波sigma 点, 构成 学习卡尔曼滤波(三)——无迹卡尔曼滤波 的点集矩阵 学习卡尔曼滤波(三)——无迹卡尔曼滤波 :
    学习卡尔曼滤波(三)——无迹卡尔曼滤波
    其中, 学习卡尔曼滤波(三)——无迹卡尔曼滤波 表示矩阵 学习卡尔曼滤波(三)——无迹卡尔曼滤波Cholesky分解后下三角矩阵的第 学习卡尔曼滤波(三)——无迹卡尔曼滤波 列, 学习卡尔曼滤波(三)——无迹卡尔曼滤波 同理。

    Cholesky分解
    这里是引用

  • 步骤三:sigma 点非线性变换

    将每个 sigma 点(即 学习卡尔曼滤波(三)——无迹卡尔曼滤波 的每一列)进行 学习卡尔曼滤波(三)——无迹卡尔曼滤波 的非线性变换,得到变换后的新的点集矩阵 学习卡尔曼滤波(三)——无迹卡尔曼滤波 :
    学习卡尔曼滤波(三)——无迹卡尔曼滤波

  • 步骤四:加权计算近似均值与近似协方差
    学习卡尔曼滤波(三)——无迹卡尔曼滤波

1.3 比例无迹变换

当参数 学习卡尔曼滤波(三)——无迹卡尔曼滤波 时, 权重 学习卡尔曼滤波(三)——无迹卡尔曼滤波, 加权算得 的近似协方差可能存在非半正定的情况。为应对该问题, Julier 等人后来提出无迹变换的改进形式一一比例无迹变换,并由 Merwe 等人对其进行了简化。

比例无迹变换与一般形 式的无迹变换的主要区别体现在参数选取与 sigma 点权重计算上,其主要操作流程如下所述:

  • 步骤一:参数选择与权重计算

    比例无迹变换引入了四个外部参数: 学习卡尔曼滤波(三)——无迹卡尔曼滤波学习卡尔曼滤波(三)——无迹卡尔曼滤波, 各 sigma 点 学习卡尔曼滤波(三)——无迹卡尔曼滤波学习卡尔曼滤波(三)——无迹卡尔曼滤波 的权重 分配如下:
    学习卡尔曼滤波(三)——无迹卡尔曼滤波
    其中, 学习卡尔曼滤波(三)——无迹卡尔曼滤波 表示计算近似均值时 sigma 点的权重, 学习卡尔曼滤波(三)——无迹卡尔曼滤波 表示计算近似协方差时 sigma 点的权重。参数 学习卡尔曼滤波(三)——无迹卡尔曼滤波 满足:
    学习卡尔曼滤波(三)——无迹卡尔曼滤波

    参数学习卡尔曼滤波(三)——无迹卡尔曼滤波用于引入随机变量概率分布的高阶矩信息,如果分布是精确的高斯分布,则 学习卡尔曼滤波(三)——无迹卡尔曼滤波 是最优选择。

    参数 学习卡尔曼滤波(三)——无迹卡尔曼滤波学习卡尔曼滤波(三)——无迹卡尔曼滤波 为确定 sigma 点分布在均值多远的范围内的比例参数。 学习卡尔曼滤波(三)——无迹卡尔曼滤波 满足 学习卡尔曼滤波(三)——无迹卡尔曼滤波, 为避免强非线性系统中的非局部效应问题, 学习卡尔曼滤波(三)——无迹卡尔曼滤波 通常取一个较小值; 学习卡尔曼滤波(三)——无迹卡尔曼滤波 满 足 学习卡尔曼滤波(三)——无迹卡尔曼滤波 ,通常取 学习卡尔曼滤波(三)——无迹卡尔曼滤波学习卡尔曼滤波(三)——无迹卡尔曼滤波

    下图呈现了当 学习卡尔曼滤波(三)——无迹卡尔曼滤波 取值分别为 学习卡尔曼滤波(三)——无迹卡尔曼滤波 和 1 时, sigma 点的分布情况,从图中可以发现, 学习卡尔曼滤波(三)——无迹卡尔曼滤波 取值越大,非均值处的 sigma 点距离均值越远。

  • 步骤三:sigma 点非线性变换

    将每个 sigma 点(即 学习卡尔曼滤波(三)——无迹卡尔曼滤波 的每一列)进行 学习卡尔曼滤波(三)——无迹卡尔曼滤波 的非线性变换, 得到变换后的新的点集矩 阵 学习卡尔曼滤波(三)——无迹卡尔曼滤波 :
    学习卡尔曼滤波(三)——无迹卡尔曼滤波

  • 步骤四:加权计算近似均值与近似协方差
    学习卡尔曼滤波(三)——无迹卡尔曼滤波

2. 无迹卡尔曼滤波

只介绍可加性噪声条件下的无迹卡尔曼滤波算法。

UKF同样也分为预测更新

假设系统的状态方程和观测方程为:

假设有如下已知条件:

2.1 初始化

  • 选定滤波初值
    根据观测量初值 学习卡尔曼滤波(三)——无迹卡尔曼滤波 及观测函数 学习卡尔曼滤波(三)——无迹卡尔曼滤波 计算对应的状态量初始均值 学习卡尔曼滤波(三)——无迹卡尔曼滤波, 设定状态量协方差 初值 学习卡尔曼滤波(三)——无迹卡尔曼滤波

  • 选定无迹变换参数
    设定比例无迹变换参数 学习卡尔曼滤波(三)——无迹卡尔曼滤波学习卡尔曼滤波(三)——无迹卡尔曼滤波 的参数值, 若使用一般形式的无迹变换, 仅需设定 学习卡尔曼滤波(三)——无迹卡尔曼滤波 的取值。

  • sigma 点权重计算
    根据无迹变换参数取值及权重计算公式计算各 sigma 点权重。
    学习卡尔曼滤波(三)——无迹卡尔曼滤波
    学习卡尔曼滤波(三)——无迹卡尔曼滤波, 执行——

2.2 sigma采样

学习卡尔曼滤波(三)——无迹卡尔曼滤波 时刻状态量 学习卡尔曼滤波(三)——无迹卡尔曼滤波 的后验概率分布进行 sigma 采样
学习卡尔曼滤波(三)——无迹卡尔曼滤波
其中, 学习卡尔曼滤波(三)——无迹卡尔曼滤波

2.3 预测步

1. 状态转移非线性变换

学习卡尔曼滤波(三)——无迹卡尔曼滤波

2. 加权计算 k 时刻状态量的先验概率分布

学习卡尔曼滤波(三)——无迹卡尔曼滤波

由于过程噪声是线性可加的,所以此处学习卡尔曼滤波(三)——无迹卡尔曼滤波 直接加在了加权协方差的末尾。

2.4 对 k 时刻状态量的先验概率分布进行 sigma 采样

学习卡尔曼滤波(三)——无迹卡尔曼滤波
某些时候,为降低运算量会省略此步, 而在下一步骤中直接使用2.2节中的 sigma 点集 学习卡尔曼滤波(三)——无迹卡尔曼滤波, 这样做在一定程度上会降低精度。

更新步

1. 观测非线性变换

学习卡尔曼滤波(三)——无迹卡尔曼滤波

2. 加权计算 学习卡尔曼滤波(三)——无迹卡尔曼滤波 时刻观测量 学习卡尔曼滤波(三)——无迹卡尔曼滤波 的概率分布

学习卡尔曼滤波(三)——无迹卡尔曼滤波
由于观测噪声是线性可加的,所以此处 学习卡尔曼滤波(三)——无迹卡尔曼滤波 直接加在了加权协方差的末尾。

3. 计算状态量与观测量的互协方差

学习卡尔曼滤波(三)——无迹卡尔曼滤波

4. 计算卡尔曼增益

学习卡尔曼滤波(三)——无迹卡尔曼滤波

5. 计算 k 时刻状态量的后验概率分布

学习卡尔曼滤波(三)——无迹卡尔曼滤波

可加性噪声条件下的无迹卡尔曼滤波算法流程可总结为:

3. 应用——移动机器人应用

该部分介绍与前文一致。也可以参考这个文档

python实现——见于github代码仓库

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2022年5月13日
下一篇 2022年5月13日

相关推荐