【滤波算法】KF及其衍生

2023-05-16

1. KF家族(和优化的比较)

卡尔曼滤波器是1958年卡尔曼等人提出的对系统状态进行最优估计的算法。随后基于此衍生了各种变体算法,比较常用的有扩展卡尔曼滤波EKF、迭代扩展卡尔曼滤波IEKF、误差状态卡尔曼滤波ESKF、无损卡尔曼滤波UKF、粒子滤波PF等等。述算法的详细描述以及它们相对于KF算法的改进,以及它们的优缺点和适用范围总结。

  1. 扩展卡尔曼滤波(EKF):

EKF是一种基于泰勒级数展开的近似线性化方法,适用于状态变量和测量变量之间存在非线性关系的情况。具体来说,EKF通过将非线性函数在当前状态的一阶泰勒级数展开,将问题转化为一个线性卡尔曼滤波问题。这样可以利用卡尔曼滤波的优势来处理具有非线性关系的系统。

相对于KF算法的改进:EKF能够处理非线性系统,而KF只适用于线性系统。

优点:计算简单、易于实现;能够处理非线性系统,对多数非线性问题的解决效果很好。

缺点:由于该方法是基于一次泰勒级数展开进行近似的,因此对于高度非线性的系统,可能会导致精度下降。

适用范围:适用于小幅度非线性问题,在一定程度上也可用于中等幅度非线性问题。

  1. 迭代扩展卡尔曼滤波(IEKF):

IEKF是一种对EKF进行迭代求解的方法,通过多次迭代使得估计结果更加准确,但是计算量相应地增加了。它采用的是迭代线性化技术,即在每个迭代步骤中,都使用当前状态下的最优估计来近似非线性函数,并更新系统的状态和协方差矩阵。

相对于KF算法的改进:能够处理非线性系统,精度比EKF更高。

优点:相对于EKF,精度更高。

缺点:计算量大,需要反复迭代。

适用范围:适用于中等幅度非线性问题,在一定程度上也可用于较大幅度非线性问题。

  1. 误差状态卡尔曼滤波(ESKF):

ESKF是一种将状态向量分解成状态值和状态偏差两部分,并分别进行滤波的方法,能够有效地避免非线性问题带来的精度下降。具体来说,ESKF先将状态向量表示为真实状态值与状态偏差的和,然后对两者进行分别滤波,最终根据滤波结果计算出估计状态。ESKF通常需要先进行一次EKF或UKF来初始化状态向量的协方差矩阵。

相对于KF算法的改进:能够处理非线性系统,精度比EKF更高。

优点:相对于EKF,精度更高;能够处理非线性系统,并且不需要进行近似,计算效率较高。

缺点:需要进行初始化,而且初值的选取对结果有影响。

适用范围:适用于小到中等幅度非线性问题。

  1. 无损卡尔曼滤波(UKF):

UKF是一种基于权值采样的非参数滤波方法,不需要对非线性函数进行任何近似,因此适用于高度非线性的系统。UKF通过对状态向量进行采样,然后利用这些样本点来逼近系统的状态分布,并根据重要性权值对这些采样点进行加权,以得到对系统状态的估计结果。相比EKF和IEKF等方法,UKF不需要对非线性函数进行泰勒级数展开或迭代近似,能够更好地处理高度非线性的系统。

相对于KF算法的改进:能够处理非线性系统,精度比EKF更高。

优点:能够处理高度非线性的系统,并且不需要对非线性函数进行任何近似;相比于EKF和IEKF等方法,精度更高。

缺点:计算量大,需要大量的随机采样;由于采样数目有限,可能会导致估计误差较大。

适用范围:适用于高度非线性的问题,但是需要注意计算效率和求解精度之间的平衡。

  1. 粒子滤波(PF):
    PF是一种基于粒子的蒙特卡罗方法,通过从状态空间中抽样一组代表性的粒子,并根据重要性权值对它们进行加权,来估计系统的状态。具体来说,PF首先根据先验概率分布从状态空间中抽取一定数量的粒子,然后利用粒子在状态转移方程和观测方程下的演化来更新粒子的状态,并计算每个粒子的权值,最终根据这些权值来计算系统状态的估计结果。

相对于KF算法的改进:能够处理非线性系统,精度比EKF更高。

优点:能够处理非线性系统,并且不需要进行近似;能够有效地利用先验信息和观测数据,提高估计精度。

缺点:计算量大,需要大量的粒子采样;由于采样数目有限,可能会导致估计误差较大。

适用范围:适用于高度非线性的问题,但是需要注意求解精度和计算效率之间的平衡。

  1. 非线性优化:非线性优化是将当前时刻所有状态构建代价函数,进行迭代优化(剃度下降:牛顿法、高斯牛顿法、列文伯格-马夸尔特法等),每次迭代会把上一次迭代的结果作为新的工作点进行优化。因此可以考虑到整个系统所有约束,精度高,但是速度就慢,因此也有提出一些加速方法,例如:滑动窗口等。

异同:优化和滤波都是解决非线性最小二乘问题,只是方式不同,对精度和速度的取舍不同,也有证明IEKF和高斯牛顿针对同一个问题的求解能力是一样的,可以参考文章:(Bell, Bradley M., and Frederick W. Cathey. “The iterated Kalman filter update as a Gauss-Newton method.” IEEE Transactions on Automatic Control 38.2 (1993): 294-297.)

下面是对上述算法的总结表格:

算法名称优点缺点适用范围
EKF计算简单、易于实现;能够处理小幅度非线性问题对高度非线性问题精度可能下降小幅度非线性问题
IEKF相比于EKF,精度更高计算量大,需要反复迭代中等幅度非线性问题
ESKF相比于EKF,精度更高;能够处理非线性系统,计算效率较高需要进行初始化,初值选取对结果影响较大小到中等幅度非线性问题
UKF能够处理高度非线性的系统,并且不需要进行近似;相比于EKF和IEKF等方法,精度更高计算量大,采样数目有限,可能会导致估计误差较大高度非线性问题
PF能够处理非线性系统,并且不需要进行近似;能够有效地利用先验信息和观测数据,提高估计精度计算量大,需要大量的粒子采样,采样数目有限,可能会导致估计误差较大高度非线性问题

2. 算法实例

IMU+GPS
ESKF GPS+IMU

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【滤波算法】KF及其衍生 的相关文章

  • idea 2022.1 创建maven卡死解决

    1 关闭项目 2 新建maven项目 创建成功
  • FFmpeg 命令常见操作

    1 转码 ffmpeg i source mp4 ss 20 t 10 c copy my mp4 ffmpeg ss 10 t 15 accurate seek i test mp4 c a copy c v copy tt mp4 i
  • FFprobe查看&统计视频信息

    1 查看音视频信息 1 1 查看基本信息 ffprobe span class token number 1280 span x720 h264 8mbps 30fps span class token punctuation span m
  • Linux 查看文件夹大小,磁盘剩余空间(du/df)

    1 简介 du查看目录大小 xff0c df查看磁盘使用情况 2 du disk usage xff08 1 xff09 基本功能 递归查看文件夹下所有文件的大小 xff08 2 xff09 常用参数 xff1a h human reada
  • Python matplotlib高级绘图详解

    1 前言 前面我们介绍了使用matplotlib简单的绘图方法 xff08 见 xff1a Python应用matplotlib绘图简介 xff09 但是想要完全控制你的图形 xff0c 以及更高级的用法 xff0c 就需要使用 pyplo
  • ffmpeg视频精准剪切

    1 导言 ffmepg剪切视频 xff0c 很方便 xff0c 但是也有很大缺陷 xff1a xff08 1 xff09 剪切时间点不精确 xff08 2 xff09 有时剪切的视频开头有黑屏 造成这些问题的原因是ffmpeg无法seek到
  • 【python】6DOF analyse tool2

    result show 1 1 note 图1为3D X Y Z combination位置 xff0c 图4 xff0c 5 xff0c 6分别表示yaw pitch xff0c roll角随着时间的变化的波动 span class to
  • AudioChannelManipulation

    Manipulating audio channels with ffmpeg Contents stereo mono streamstereo 2 mono filesstereo 2 mono streamsmono stereo2
  • 音频节奏检测(Onset Detection)

    1 前言 最近市场上出现一些多个视频拼接而成MV xff0c 其原理是根据音频的节拍变换切换视频 我在这里讲述下如何进行音频节拍检测 2 音频检测一般流程 3 3 1 原始音频频谱 以1024为窗口 xff08 即每次读取1024个采样点
  • 金融时间序列分析:6. AR模型实例(R语言)

    0 目录 金融时间序列分析 xff1a 9 ARMA自回归移动平均模型 金融时间序列分析 xff1a 8 MA模型实例 xff08 Python xff09 金融时间序列分析 xff1a 7 MA滑动平均模型 金融时间序列分析 xff1a
  • 比特率,帧率,分辨率对视频画质的影响

    0 前言 前几天和别人讨论视频编码参数对视频清晰度影响 xff0c 今日查查文献在此记录总结下 对最终用户而言 xff0c 其只关心视频的文件大小和画面质量 其中画面质量包括 xff1a 分辨率 xff0c 清晰度和流畅度 流畅度 xff1
  • 搭建Android Camera项目工程

    0 前言 这块内容非常简单 xff0c 需要注意的有两个 xff1a 需要申请相机权限需要一个Surface用来预览 1 申请相机权限 1 1 申请Camera权限 span class hljs tag lt span class hlj
  • 获取webshell权限的45种方法

    1 到GoogLe 搜索一些关键字 edit asp 韩国肉鸡为多 多数为MSSQL数据库 2 到Google site cq cn inurl asp 3 利用挖掘鸡和一个ASP木马 文件名是login asp 路径组是 manage 关
  • EGLContext: eglMakeCurrent详解

    1 前言 在完成EGL的初始化之后 xff0c 需要通过eglMakeCurrent 函数来将当前的上下文切换 xff0c 这样opengl的函数才能启动作用 boolean eglMakeCurrent EGLDisplay displa
  • 关于root安装中出现的问题

    最近重装了系统fedora16 xff0c 重新安装了root xff0c 结果遇到了各种问题 xff0c 先是编译不通过 xff0c 在网上查了说是需要打个补丁 xff0c 那就打个补丁吧 xff0c 安装成功之后又出现了新的错误 Cou
  • fragment切换出现空白页

    近期遇到一个bug xff0c 找了好久的原因 xff0c 最后终于找到 xff0c 在此记录一下 app的大体框架是由tab 43 fragment来组成的 xff0c 就是类似于app 的底部有五个按钮 xff0c 没点击一个按钮就会切
  • Java 生产者消费者模型的三种实现过程

    Java 生产者消费者模型的三种实现过程 生产者一边在生产 xff0c 消费者一边消耗 当库存满的时候生产者暂停生产 xff0c 直到有空位 xff1b 当库存空的时候消费者暂停消费 xff0c 直到有产品 关键点 xff1a 生产者和消费
  • 【python】6DOF analyse tool3

    result show 1 1 note 图time and position x and add anotions check timestamps code span class token keyword import span ma
  • Ubuntu系统下MRIcroN、FSL6.0.5、Freesurfer7.1.1、ANTs、MRtrix3、AFNI的安装详解——核磁共振数据处理必备

    Ubuntu系统下MRIcroN FSL6 0 5 Freesurfer7 1 1 ANTs MRtrix3 AFNI的安装详解 一 安装MRIcroN 二 FSL6 0 5完整安装与FSLeyes等Not Found修复 Anaconda
  • 使用 ANTs 进行 MRI (结构、功能)图像配准——安装,配准详细解答

    使用 ANTs 进行 MRI 图像配准 安装 xff0c 配准详细解答 一 为什么要进行配准 xff1f 二 使用 ANTs 进行配准 xff08 1 xff09 使用 ANTs 进行结构像配准 2 xff09 使用 ANTs 进行功能像配

随机推荐