博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CDKF、UKF和EKF滤波算法
阅读量:4082 次
发布时间:2019-05-25

本文共 897 字,大约阅读时间需要 2 分钟。

转载自:

CDKF、UKF和EKF滤波算法

凌拓智能TBUS 今天

之前一直和大家探讨在TSLAM室内定位算法中,我们tiny_EKF与CDKF滤波算法的运用,这次就和大家唠唠CDKF、UKF、EKF这几种滤波算法。

 

    大家都知道,EKF即扩展卡尔曼滤波,是一种高效率的递归滤波器(自回归滤波器),这也是大家平时经常接触到的。优点在此我就不多说了,这里说一下在实际应用中的不足:

 

  • 需要计算非线性模型的雅克比矩阵,计算大,易出错,难得到;

  • 忽略高阶项,估计精度大受影响;

  • 模型不确定性的鲁棒性很差;

  • 在系统达到平稳状态时,将丧失对突变状态的跟踪能力;

  • 如果系统的误差传播函数不能很好的用线性函数来逼近,可能会导致滤波器发散。

 

    针对EKF的不足,出现了一套全新的非线性滤波方法,即Sigma-Point卡尔曼滤波(sigma point kalman filter),其利用加权统计线性化回归技术(WSLR),通过一组确定性采样点(Sigma点)来捕获系统的相关统计参量。根据Sigma点选取的不同,其主要分为Unscented卡尔曼滤波(UKF)和中心差分卡尔曼滤波(CDKF)。

 

    UKF:即无迹卡尔曼滤波。是无损变换(UT) 和标准Kalman滤波体系的结合,它是利用无损变换使线性假设下的卡尔曼滤波应用于非线性系统。但是,如果你google其实你会发现,ukf只适合处理1-3维变量的问题,大于3维非常不稳定,但是由于C国写论文做验证的,一般都只拿1维变量做测试。但是,在实际工程中是不可能小于3维变量的。

 

    CDKF:即中心差分卡尔曼滤波。CDKF滤波算法的优势在于它克服了EKF方法的缺点,滤波时不需要系统模型的具体解析形式,并充分考虑了随机变量的噪声统计特性,具有比EKF更小的线性化误差和更高的定位精度,它对状态协方差的敏感性要低得多,且逼近速度快于UKF。CDKF的出发点是借助sterling插值公式,用多项式逼近非线性方程的导数,从而避免复杂的求导运算,它采用中心差分代替Talor展开中的一阶和二阶导数。

 

由此,TSLAM9.0的这次升级中,我们才选用了CDKF为可选的滤波方案。

你可能感兴趣的文章
C++ STL标准库与泛型编程(一)概述
查看>>
C++ STL标准库与泛型编程(四)Deque、Queue、Stack 深度探索
查看>>
C++ STL标准库 算法
查看>>
JVM内存模型_Minor GC笔记
查看>>
SpringCloud学习之PassCloud——(一)PassCloud源代码下载
查看>>
Linux下安装Python环境并部署NLP项目
查看>>
Nginx篇-springCloud配置Gateway+Nginx进行反向代理和负载均衡
查看>>
Nginx篇-Nginx配置动静分离
查看>>
缓存篇-Redis缓存失效以及解决方案
查看>>
缓存篇-使用Redis进行分布式锁应用
查看>>
缓存篇-Redisson的使用
查看>>
phpquery抓取网站内容简单介绍
查看>>
找工作准备的方向(4月22日写的)
查看>>
关于fwrite写入文件后打开查看是乱码的问题
查看>>
用结构体指针前必须要用malloc,不然会出现段错误
查看>>
Linux系统中的美
查看>>
一些实战项目(linux应用层编程,多线程编程,网络编程)
查看>>
我觉得专注于去学东西就好了,与世无争。
查看>>
原来k8s docker是用go语言写的,和现在所讲的go是一个东西!
查看>>
STM32CubeMX 真的不要太好用
查看>>