高斯滤波知识点总结——KF、EKF、UKF以及IF、EIF等

2023-05-16

高斯滤波知识点总结——KF、EKF、UKF以及IF、EIF等

1 引言

本文是我在学习《Probabilistic Robotics 》这本书中第三章——高斯滤波过程中的一些知识总结。本文主要是整理高斯滤波算法的知识点和一些讨论,具体算法推导步骤请查阅上面所提到的这本书《Probabilistic Robotics 》,里面有非常详细的推导过程。
本章内容主要描述了一个重要的递归状态估计器家族,统称为高斯滤波(Gaussian filter)。所有的高斯技术共享了基本思想,即置信度用多元正态分布表示。因为高斯函数是单峰的,有单一的极大值,这样的后验概率是机器人学中很多跟踪问题的特点,后验以小的不确定性狙聚集在真实状态周围。对很多全局估计问题,由于许多很不同的假设存在,每一个假设都形成其自己的后验模式,因此高斯后验匹配性并不好。
下文主要总结两种最基本的高斯滤波算法,即卡尔曼滤波(KF)和信息滤波(IF)。KF和IF都是针对线性高斯系统的,在此基础上,将KF扩展到非线性问题中,从而得到扩展卡尔曼滤波(EKF)和无迹卡尔曼滤波(UKF)等;后者则得到扩展信息滤波(EIF)等。

2 线性高斯系统

这里首先介绍一下线性高斯系统。KF是由Swerling(1958)和Kalman(1960)作为线性高斯系统(linear Gaussian system)中预测和滤波技术而发明的,是用矩来定义的。KF实现了对连续状态的置信度计算,它不适用于离散或者混合状态空间。
KF 用矩参数表示置信度(置信度反映了机器人有关环境状态的内部信息。因为状态是不能直接测量的。概率机器人通过条件概率分布表示置信度):在时刻t, 置信度用均值μ, 和方差Σ_t表达。如果除了贝叶斯滤波的马尔可夫假设以外,还具有如下三个特性,则后验就是高斯(Gaussian) 的:

  • 状态转移概率P(x_t | u_t,x_t-1)必须是带有随机高斯噪声的参数的线性函数,可由下式表示:
    在这里插入图片描述
  • 测量概率P(Z_t | x_t)也与带有高斯噪声的自变量呈线性关系:
    在这里插入图片描述
  • 最后,初始置信度bel(x_0)必须是正态分布的。这里用μ_0表示置信度的均值,用Σ_0表示方差:
    在这里插入图片描述
    这三个假设足以确保后验bel(x_t) 在任何时刻t 总符合高斯分布.

3 卡尔曼滤波

3.1 卡尔曼滤波算法

卡尔曼滤波主要分为两部分:第一部分——预测;第二部分:量测更新
在这里插入图片描述

3.2 卡尔曼滤波算法的讨论

  • 卡尔曼滤波算法的输入为t-1时刻的置信度,其均值和协方差用μ_t-1 和Σ_t-1 表示。首先由2和3式通过运动方程计算t时刻的预测的置信度;然后通过综合观测方程,用4、5、6式将置信度顺序地转换成t时刻期望的置信度;最后输出t时刻的置信度,其均值和协方差用μ_t和Σ_t表示。
  • 对于高斯噪声的线性系统,卡尔曼滤波器是最优线性无偏估计(best linear unbiased estimate,BLUE)。这意味着它给出的解的协方差矩阵正位于克拉美罗下界(CRLB)(克拉美罗下界是衡量一个无偏估计器是否有效的重要工具,也就是说,给定一个无偏估计器,我们可以利用克拉美-罗下界去判断这个估计器是否是最优的)处。
  • 卡尔曼滤波必须要有初始状态。
  • 卡尔曼滤波计算是相当高效的。

最后给出KF算法的图例是一个简单的一维定位案例。
在这里插入图片描述

4 扩展卡尔曼滤波

4.1 扩展卡尔曼滤波算法

扩展卡尔曼滤波(Extended Kalman Filter, EKF)利用**(一阶)泰勒展开(Taylor expansion) 实现线性化方法**。泰勒展开根据g和h 的值和斜率构造一个函数g 和h的线性近似函数。
在这里插入图片描述

4.2 扩展卡尔曼滤波算法的讨论

  • EKF放宽了一个假设:线性化假设。这里假设状态转移概率和测量概率均为非线性函数。线性化的主要优点在于于既简单又有较高的计算效率。
  • EKF 计算真实置信度的高斯近似值。EKF 从KF 继承了基本的置信度表示,但是它又不同,因为这个置信度只是一个近似值,而不如KF 情况下的精确。因此, EKF 的目标就从计算精确的后验概率转变为有效地估计其均值和方差。
  • EKF适用于各种传感器形式,易于做多传感器融合。
  • EKF的缺点也较为明显:(1)一阶马尔可夫假设过于简单(2)要求数据不能有外点,否则可能会发散;(3)对于非线性较强的情况,线性化误差较大。
    下图给出了这个通过泰勒展开的线性化基本概念。(线性化通过一个在高斯函数的均值处与非线性函数g 相切的线性函数去近似g (右上图虚线所示)。将高斯通过这个线性近似映射成一个高斯密度,如左上图虚线所示。左上图的实线表示蒙特卡罗近似的均值和方差。这两个高斯函数之间的不匹配是由g 的线性近似而引起的误差。)
    在这里插入图片描述

5 无迹卡尔曼滤波

5.1 无迹卡尔曼滤波算法

无迹卡尔曼滤波(Unscented Kalman Filter, UKF) , 它通过使用加权统计线性回归过程实现随机线性化在这里插入图片描述

5.2 无迹卡尔曼滤波算法的讨论

  • UKF 算法的渐近复杂性与EKF 的相同。实际上, EKF 往往比UKF 稍快一些。即使被常数因子减缓, UKF 仍然是非常高效的。并且, UKF 继承了线性无迹变换的优点。对于纯线性系统,由UKF 产生的估计与由卡尔曼滤波产生的估计是相同的。对于非线性系统, UKF 的结果与EKF 的结果相同或者比后者要好,EKF 的改进依赖非线性和先验状态不确定性的范围。在许多实际应用中, EKF和UKF 之间的差异不大。
  • UKF 的另一个优点是,它不需要计算雅可比矩阵,而雅可比矩阵在某些领域是很难确定的。因此UKF 也经常被认为是免求导滤波器(derivative-free filter) 。

下图给出了UKF的线性化示例。
在这里插入图片描述
下图给出了UKF 和EKF 近似之间的对比,依据的是函数g 的非线性特性。正如这里看到的,无迹变换比由EKF 采用的泰勒级数一阶展开要精确。事实上,可以证明无迹变换与泰勒级数展开的前两项精度相同,但EKF 只取了前一项。但是,应该注意, EKF 和UKF 都可以通过采用更高阶项进行修正。
在这里插入图片描述

6 信息滤波

6.1 信息滤波算法

在这里插入图片描述

6.2 信息滤波算法的讨论

  • 卡尔曼滤波(KF) 的对偶滤波算法就是信息滤波(Information Filter, IF)。标 准的IF 具有和KF 相同的假设。KF 和IF 之间的主要不同源于高斯置信度表示的方式。对于一系列KF 算法,高斯分布都由它们的矩(均值、协方差)表示, IF以正则参数表示高斯分布,该正则参数由一个信息矩阵和信息向量组成。参数的不同导致了不同的更新等式。具体来说,对一个参数计算是复杂的,而对另一个参数的计算可能是简单的(反之亦然)。正则参数和矩参数经常被认为是对偶的, IF 和KF 也是如此。

7 扩展信息滤波

7.1 扩展信息滤波算法

在这里插入图片描述

7.2 扩展信息滤波算法的讨论

  • 扩展信息滤波(Extended Information Filter, EIF) 将信息滤波扩展到非线性情况。与EKF 一样,它也是信息滤波的非线性扩展。

总结

本章介绍了高效的贝叶斯滤波算法,它用多元高斯分布表示后验。
在这里插入图片描述

KF与IF的对比讨论

  • 在IF 中表示全局不确定性是很简单的:简单地设置n =0。当使用矩参数时,这样的全局不确定性意味着无限大的方差。当传感器测量携带的信息是有关所有状态变量的一个严格子集时,这就很成间题,而这种情况在机器人学中是要经常面对的。各种EKF 是做了特殊规定来处理此类情况。IF 往往比KF 更稳定。
  • IF 及其几种扩展方法使机器人能够进行信息整合,而不是立即将信息转化成概率。这在涉及成百甚至更多变量的复杂估计问题时具有很大的优势。对这样的大间题, KF 的整合引出几个计算问题,因为任何新的信息流都需要通过大系统的变最来传播。对IF 进行适当的修改,通过简单地将新的信息局部地添加到系统可避开这个问题。
  • IF 相对KF 的另一个优点源于它对多机器人间题的自然适应性。多机器人问题经常涉及将分散采集的传感器数据进行融合。这样的融合通常由贝叶斯准则完成。当用对数形式表示时,贝叶斯准则变成了加法。如上文所述, IF 的正则参数将概率以对数形式表示。因此,信息融合通过将多机器人的信息相加来获得。因此, IF 经常能以完全分散的形式,以任意时延、任意顺序进行信息融合。虽然利用矩参数也可能做到-毕竟它们表示同样的信息,但这样做必要的开销要高得多。尽管有这样的优势,但IF 在多机器人系统的应用仍有很多未开发的部分。
  • IF 的优势被某些重要的局限性所抵消。EIF 的主要缺点就是应用于非线性系统时,在更新这一步骤中需要重新获得状态估计。如果如此实现的话,需要信息 矩阵的逆。在IF 的预测步骤需要更多的矩阵求逆。在许多机器入问题中, EKF不涉及同等规模的矩阵求逆。对高维状态空间,一般认为在计算上IF 逊色于KF 。这就是为什么EKF 比EIF 更受欢迎的原因之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高斯滤波知识点总结——KF、EKF、UKF以及IF、EIF等 的相关文章

  • 扩展卡尔曼滤波算法 EKF

    扩展卡尔曼滤波的仿真案例 xff0c 参考书为北航宇航学院王可东老师的Kalman滤波基础及Matlab仿真 一 状态模型 xff1a 二 测量模型 xff1a 状态方程和测量方程中的噪声均为期望为零的白噪声 三 状态模型和测量模型的线性化
  • 滤波学习理解----EKF(一)

    最近回到slam方向了 xff0c 所以有时间整理一下最近的收获 最复杂也是最简单的模块 滤波 引入 那么滤波是什么呢 xff1f 滤波就是由于观测observation xff08 OB xff09 天生具备的误差和噪声 当有多个信号源观
  • EKF之雅克比矩阵(一)

    扩展卡尔曼滤波 EKF EKF之雅克比矩阵 文章目录 扩展卡尔曼滤波 EKF 前言一 什么是线性化 xff1f 二 雅克比矩阵1 矩阵的几何含义2 非线性矩阵与基底的关系3 雅克比矩阵 三 工程中雅克比矩阵如何应用总结 前言 一般的卡尔曼滤
  • EKF(扩展卡尔曼滤波)也需要调参 ,也是Q和R这两个参数。

    结合我这篇博文来看 https blog csdn net sinat 16643223 article details 106297150 ZN无人机课程里面也说到了EKF xff08 扩展卡尔曼滤波 xff09 需要调参 xff0c 也
  • 任何的卡尔曼滤波器的研究都要紧紧围绕状态与方差的传播特性。 让我想起MSCKF是误差状态的EKF模型。

    任何的卡尔曼滤波器的研究都要紧紧围绕状态与方差的传播特性 让我想起MSCKF是误差状态的EKF模型 传播特性应该就是指预测方差或者递推方程 xff1f https blog csdn net sinat 16643223 article d
  • 高斯滤波知识点总结——KF、EKF、UKF以及IF、EIF等

    高斯滤波知识点总结 KF EKF UKF以及IF EIF等 1 引言 本文是我在学习 Probabilistic Robotics 这本书中第三章 高斯滤波过程中的一些知识总结 本文主要是整理高斯滤波算法的知识点和一些讨论 xff0c 具体
  • PX4 EKF模块解读含matlab代码

    这里主要介绍px4里面的定位模块 xff0c 即EKF库 1 状态向量与协方差的预测 1 Px4的状态向量为24维 xff0c 其如下所示 xff1a x 61
  • PX4利用matlab推导生成 EKF中雅可比矩阵的方法

    文章目录 一 Matlab的Symbolic Maths Toolbox是什么二 PX4 EKF中需要的雅可比矩阵三 Matlab脚本解析参考来源 PX4实际使用了Matlab的Symbolic Maths Toolbox来进行雅可比矩阵的
  • px4 EKF中Q、R阵设置的思考

    关于Q R的讨论 Q阵 xff0c 状态转移误差矩阵 xff0c 代表从Xt 1到Xt过程中 xff0c 状态转移和真实过程之间的误差 xff0c 具体其中变量可能是对状态转移有影响的变量 xff0c 比如在有一些场景下 xff0c 可能为
  • 扩展卡尔曼滤波(EKF)

    本篇文章是看完http blog csdn net adamshan article details 78265754这篇文章后再加上自己的理解写的 xff0c 如果侵权可以联系我删除 xff0c 如果有不对的地方请您不啬赐教 xff01
  • 扩展卡尔曼滤波EKF与多传感器融合

    Extended Kalman Filter xff08 扩展卡尔曼滤波 xff09 是卡尔曼滤波的非线性版本 在状态转移方程确定的情况下 xff0c EKF已经成为了非线性系统状态估计的事实标准 本文将简要介绍EKF xff0c 并介绍其
  • 关于EKF和ErKF的理解

    EKF和ErKF的区别 大概6 20写完 快捷键 加粗 Ctrl 43 B 斜体 Ctrl 43 I 引用 Ctrl 43 Q插入链接 Ctrl 43 L插入代码 Ctrl 43 K插入图片 Ctrl 43 G提升标题 Ctrl 43 H有
  • Pixhawk之姿态解算篇(5)_ECF/EKF/GD介绍

    一 开篇 很久没更新blog了 xff0c 最近研究的东西比较杂乱 xff0c 也整理了很多东西 xff0c 没有来的及更新 xff0c 最近发现很多小伙伴都开始写blog了 xff0c 在不更新就要 被落后了 兄弟们 xff0c 等等我啊
  • PX4_ECL_EKF代码分析2

    写在前面 源码版本 xff1a 1 6 0rc1 源码位置1 xff1a Firmware 1 6 0rc1 src modules ekf2 main cpp 源码位置2 xff1a Firmware 1 6 0rc1 src lib e
  • 了解卡尔曼滤波器4--非线性状态估算器(EKF,UKF,PF)

    一般来说 xff0c 我们希望我们的生活是线性的 xff0c 就像这条线 xff0c 这可能表示成功 收入或者幸福 但实际上 xff0c 生活并不是线性的 xff0c 它充满了起伏 xff0c 有时甚至更复杂 如果您是工程师 xff0c 您
  • 滤波学习理解----EKF(一)

    最近回到slam方向了 xff0c 所以有时间整理一下最近的收获 最复杂也是最简单的模块 滤波 引入 那么滤波是什么呢 xff1f 滤波就是由于观测observation xff08 OB xff09 天生具备的误差和噪声 当有多个信号源观
  • ekf pose使用方法 ros_【ROS-Gazebo】为什么选择SDF?

    前言 这是一个系列小文章 xff0c 主要介绍在ROS Gazebo中如何更好地使用SDF格式建模与仿真 众所周知 xff0c URDF是ROS的原生支持格式 xff0c 但在某些情况下 xff08 尤其是Gazebo仿真时 xff09 x
  • CKF MCSCKF UKF EKF滤波性能对比

    CKF MCSCKF UKF EKF滤波性能对比 在非线性滤波中 比较了CKF MCSCKF UKF EKF 几种非线性滤波的性能 用MATLAB进行仿真 八维非线性滤波中 CKF MCSCKF 比较稳定 EKF UKF 表现不好 MATL
  • EKF SLAM

    EKF 方法是解决 SLAM 问题的一种经典方法 xff0c 其应用依赖于运动模型和观测模型的高斯噪声假设 在 SLAM 问题首次提出不久后 xff0c Smith 和 Cheesman 及 Durrant Whyte对机器人和路标间的几何
  • robot_pose_ekf 使用说明

    协方差参数的设置 主要确定mpu6050和odom编码器协方差参数的设置 参考 xff1a turtlebot node协方差的设置 mpu605参数的设置 参考 xff1a https github com Arkapravo turtl

随机推荐

  • Spring Boot 访问静态页面!

    SpringBoot访问静态页面 一 静态页面放在templates下面 xff08 多个页面可以添加相应的文件夹 xff0c 方便管理 xff09 xff1a 二 配置Controller 这里有两点值得注意 xff1a 其一 xff1a
  • Java动态代理的实现原理

    概述 AOP用到了两种动态代理来实现织入功能 xff1a jdk动态代理cglib动态代理比较 xff1a jdk动态代理是由java内部的反射机制来实现的 xff0c cglib动态代理底层则是借助asm来实现的 反射机制在生成类的过程中
  • MyBati 原理 - 【012】

    1 根据配置文件创建SQLSessionFactory 2 获取SQLSession的实现类DefaultSQLSession 3 getMapper返回接口代理对象 4 查询流程 5 查询流程总结 6 运行原理总结
  • JDK Tomcat MySQL一键安装

    文章目录 材料准备免安装版JDK免安装版Tomcat免安装版MySQL微软Visual C 43 43 运行库组件打包工具Inno Setup 统一目录创建所需文件 xff08 先创建好清楚整体流程 xff09 整体结构文件内容测试 打包步
  • SpringBoot2.1+WebSocket:详解及注意事项

    SpringBoot对WebSocket集成十分完美 xff0c 直接上步骤 引入Maven依赖 lt WebSocket gt lt dependency gt lt groupId gt org springframework boot
  • OVN入门

    参考链接 如何借助 OVN 来提高 OVS 在云计算环境中的性能 OVN简介 Open vSwitch Documentation OVSDB介绍及在OpenDaylight中的调用 OpenDaylight即将迈入 七年之痒 xff1f
  • 阿里智能运维平台的演进:从自动化到无人化(附PPT)

    差不多在两年前 xff0c 阿里内部出现了很多运维中台 研发中台等等 xff0c 那有没有后台呢 xff1f 不好意思 xff0c 我们只有中台 xff0c 没有后台 xff0c 会在中台上构建与业务相关的各个前台 目前阿里的业务几乎覆盖了
  • windows通过vnc远程连接ubuntu

    windows通过vnc远程连接ubuntu 实验室的电脑装好了ubuntu16 04的系统 xff0c 显卡比较好 xff0c 想要跑程序的话人太多了 xff0c 不能大家都排队来使用 xff0c 因此我想使用windows直接连接ubu
  • vscode如何连接gitlab代码库

    零 前期准备工作 1 已安装好vscode xff0c 如未安装 xff0c 按如下地址下载并且安装 xff08 或参考其他安装教程 xff09 xff1a https code visualstudio com Download 2 已安
  • 对rtthread系统的理解

    写这个的目的就是记录下自己对rtthread系统框架的理解 xff0c 并不会对相关的知识点做介绍 xff0c 因为官方文档介绍的比较详细 xff08 也有介绍不细致的地方 xff09 xff0c 我没必要去摘录一遍 在工作中用rtthre
  • performance API 中什么指标可以衡量首屏时间

    performance timing loadEventEnd 返回当前网页 load 事件的回调函数运行结束时的 Unix 毫秒时间戳 如果该事件还没有发生 返回 0 performance timing navigationStart
  • C++中的双冒号

    文章目录 https www cnblogs com kimmychul p 3951229 html 另外 xff0c 在ros中 xff0c 创建的xxx msg xxx srv等文件中定义的变量a xff0c 在使用时要写packag
  • Python使用ros的TF变换

    https www cnblogs com xialuobo p 6097806 html
  • CMakeList.txt文件详解

    1 整体结构 CMakeList txt文件必须遵循以下的格式 xff1a 所需的CMake版本 xff08 cmake minimum required xff09 软件包的名称 xff08 project xff09 查找构建所需要的其
  • centos7.5 + ryu+mininet+docker+wireshark+ovs

    1 安装pip 没有python pip包就执行命令 yum y install epel release 执行成功之后 xff0c 再次执行yum install python pip 2 安装ryu4 30 pip install ry
  • 【C++学习】——(五)数组

    C 43 43 学习 xff08 五 xff09 数组 开篇 上一篇讲解了类型 xff0c 通过类型来开始本篇的学习 xff1b int a 10 上述代码中的a是什么类型呢 xff1f 相信很多人都知道是一个数组类型 xff0c 具体来说
  • openstack中ipv6三种获取IP地址方式

    前言 openstack共有三种用于ipv6的寻址的模式 xff0c 分别是dhcpv6 stateful dhcp stateless以及slaac 1 xff09 slaac模式 Address discovered from an O
  • 华为S5720-52X-PWR-LI/S5720-52X-LI交互机堆叠和VLAN配置

    主要配置流程为 xff1a 交换机设备上电通过console线或网线连接到交换机后 xff0c 进行参数和堆叠配置断电 xff0c 连接好光纤重新上电 1 首次登录交换机 使用Putty软件 xff0c 通过串口 xff0c 连接到交换机
  • 配置Intel REALSENSE相机的一些坑

    最近入手了一个intel REALSENSE相机 xff0c 看别人都是直接使用配套的USB3的线连接电脑就安装好了 xff0c 但是我却要倒霉的配置了一个下午 xff0c 终于在今天晚上配置好了 xff0c 记录一下这个下午踩过的坑 xf
  • 高斯滤波知识点总结——KF、EKF、UKF以及IF、EIF等

    高斯滤波知识点总结 KF EKF UKF以及IF EIF等 1 引言 本文是我在学习 Probabilistic Robotics 这本书中第三章 高斯滤波过程中的一些知识总结 本文主要是整理高斯滤波算法的知识点和一些讨论 xff0c 具体