参考资料
文章大部分内容主要来自参考资料,旨在于更方便学习记忆查找,不作其他用途。
在上一篇整理总结了扩展卡尔曼滤波。扩展卡尔曼滤波通过一阶泰勒展开得到近似的线性状态转移矩阵与观测矩阵。EKF的一个最大的问题就是求解雅可比矩阵计算量比较大,因此这里再介绍另一种可用于非线性系统的卡尔曼滤波——无迹卡尔曼滤波(Unscented Kalman Filter,UKF)。
1. 无迹变换
在应用KF时面临的主要问题就是非线性过程模型和观测模型的处理。
对于我们想要估计的状态,在k时刻满足均值为,方差为的一个高斯分布,KF能够使用的前提就是所处理的状态是满足高斯分布的,对于非线性的情况下,EKF是寻找一个线性函数来近似这个非线性函数,而UKF就是去找一个与真实分布近似的高斯分布。
UKF的基本思路就是: 近似非线性函数的概率分布要比近似非线性函数本身要容易
如何去找一个与真实分布近似的高斯分布呢?——找一个与真实分布有着相同的均值和协方差的高斯分布。
如何去找这样的均值和方差呢?——无迹变换。
1.1 无迹变换基本概念
无迹变换的核心理念:
- 近似概率分布比近似任意的非线性函数或变换要相对容易。
无迹变换要解决的问题是:已知某随机变量(多维情形下是随机向量)的概率分布(均值和方差),求其经过某非线性函数 变换后的概率分布。
基于上述思想,无迹变换的主要步骤为:
-
根据某种规则对随机变量的概率分布进行确定性采样,并为采样点分配权重(均值权重和方差权重),采样点我们通常称之为
sigma
点; -
将每一个
sigma
点进行非线性变换,得到新的sigma
点; -
对非线性变换后的新的
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代码仓库。
文章出处登录后可见!