读《概率机器人》第3章
§ 1 卡尔曼滤波KF
概述
自己总结:基础的卡尔曼滤波完成了这样的一件事:在一系列线性的前提条件下,在状态转移模型具有正态分布、测量模型具有正态分布的情况下,给出了一个满足正态分布的估计。
前提条件
满足以下条件,则卡尔曼滤波给出的后验状态估计满足正态分布:
-
下次状态是上状态的线性变换再加上一个满足正态分布的随机误差,这也称为运动模型。下式中的是满足均值为0的正态分布的噪声。
-
测量结果是状态的线性变换加上一个满足正态分布的随机误差。同上,也是一个满足均值为0的正态分布的噪声。
-
初始的估计满足正态分布。
算法内容
满足以上条件时,卡尔曼滤波按照以下步骤给出满足正态分布的新估计的均值与方差。
输入:
输出:
-
根据控制量与上一次的状态做出估计
-
使用测量结果更新估计
推导过程一览
-
首先明确一下要推导的是什么:采用下列估计方法
则可以满足。
这俩就是第二章的贝叶斯滤波器,看来卡尔曼滤波可以认为是贝叶斯滤波在高斯分布下的特例?
-
证明过程也即是将等号右端的各项带入并化简为标准正态分布的形式,最终得到算法内容中描述的的解析表达式。过程中涉及不少关于矩阵微分、求逆的操作。
b站DR_CAN的视频中介绍了另一种得到卡尔曼增益的推导思路。该思路从另一个角度切入,寻求使用不太准的模型预测结果与测量结果反推的线性组合来得到更准确的估计,于是就有了下式:
一个准确的估计的方差应该尽可能小,选择合适的使得的方差达到最小,恰好就可以发现\(\alpha C_t^{-1=K_t\)。
§ 2 扩展卡尔曼滤波EKF
概述
在卡尔曼滤波基础之上,扩展卡尔曼滤波尝试放宽前提条件中的1和2,也它在即尝试处理状态转移模型和测量模型不是线性的情况。扩展卡尔曼滤波面对非线性时所采取的的方法是比较简单的:在上一次估计的均值处进行一阶近似,然后用所得的线性模型代替非线性模型,剩余内容就和卡尔曼滤波相同了。
算法内容
假设现在的运动模型和测量模型为
定义和为
则扩展卡尔曼滤波表示为
-
根据控制量与上一次的状态做出估计
-
使用测量结果更新估计
影响近似好坏的因素
-
上一次估计的不确定性,不确定性越小,近似越准。
-
模型在上一次估计均值附近的线性程度,越接近线性,近似越准。
下边这两张图就分别说明了不确定性和线性程度对估计精度的影响,其中每一个子图的左上角的图中,虚线是扩展卡尔曼滤波的结果,未涂成灰色的实线是蒙特卡罗法的结果。
§ 3 无迹卡尔曼滤波UKF
前边两个卡尔曼中的先验估计的方差和测量模型的方差(KF)/(EKF)都是基于上一次的估计与状态转移模型计算的,而无迹卡尔曼滤波的方差则使用上一次的估计结合若干转移后的采样点直接计算。
书上给出了一种固定的取点方式,但对其合理性并未做太多说明。另外书中还有提到在不少的应用场景中UKF和EKF表现差不多,不过UKF在计算雅可比矩阵困难时会更有优势。
§ 4 信息滤波IF
各种KF中均使用均值和方差来描述正态分布,信息滤波则相当于是换了一组描述正态分布的参数的KF,其使用的信息矩阵与信息向量定义如下:
书上有提到相对的一些优缺点,暂时太理解。
本文作者:Harold_Lu
本文链接:https://www.cnblogs.com/harold-lu/p/16704440.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步