十一、滤波器基本原理

1. 概述

滤波器是组合导航的核心,是把惯性导航的解算结果和其他传感器输出的观测结果连接在一起的纽带,只有借助它,才能使二者优势互补,

得到一个精确、稳定的导航系统。组合导航中使用的滤波器有很多,常见的有 卡尔曼滤波(KF)、扩展卡尔曼滤波(EKF)、迭代扩展卡尔曼滤波(IEKF)、

无迹卡尔曼滤波(UKF)、粒子滤波(PF),本篇文章会一一介绍他们的原理,只是在这之前,我们需要回忆一下以前学过的一些参数估计的基础知识。

 

2. 参数估计思想

理解参数估计思想,重点要区分的是三个方法:极大似然估计、最大后验估计、贝叶斯估计

1) 极大似然估计

我们以最常见的抛硬币的场景来举例子。假设抛硬币抛了10次,6次为正面,4次为反面(正正反正正正反反正反)。

现在我们想问,单次抛硬币正面朝上的概率是多少,才最有可能出现这样的结果,这即是 最大似然的含义

                                                                    举的例子很好,深入理解呀

数学问题还是要先用数学语言描述一下,记总的样本为,它包含每个样本的结果,即正面还是反面,用

表示单次抛硬币时结果为正面的概率, 表示 取不同值时,当前样本结果出现的概率,最大似然问题就是求取多少时,

可以取到最大值。由于样本之间是独立观测的,因此

 

2) 最大后验估计

面对这个抛硬币的问题,总是忍不住会问,正面朝上的概率为什么不是0.5,因为经验告诉我们它应该是这样的。

但是反过来想,如果它一定是0.5,那么还抛硬币干什么,直接取不就行了。之所以不能这样做,是因为我们认为0.5只是一个 "最可能" 的值,

而不是 "一定是",因为硬币可能真不是正反面均匀的。那么现在我们的问题就变成了,我猜测它最可能是0.5,但样本告诉我它最可能是0.6,

应该信谁的问题,不如折中一下,把它俩都考虑在内,做个加权,用数学表示就是原来 取最大时对应的,而现在要求

取最大值时对应的值,其中表示的就是 在 0 到1 区间的概率分布。我们可以假设

3) 贝叶斯估计

虽然最大后验估计在极大似然估计的基础上考虑了先验猜测,但是我们仍然还有疑问,既然不能保证硬币一定是正反面均匀的,

0.5只是一个最可能的值,那么在当前观测样本下, 就可能为0到1中间的任何值,而我们只取了一个最可能后验估计值,其他值呢?

如果我们能够给出所有可能值的概率,那应该是对后验最全面的描述了,贝叶斯估计就是为了解决这个问题。

贝叶斯估计使用的是著名的贝叶斯公式。

4) 三者之间的联系

 

3. 滤波器估计原理

组合导航中,先验是imu解算的值,观测是gps等传感器给出的值,融合的目的是找到概率最大的那个值。上面介绍的三种方法都是对先验和观测的融合,

由于极大似然要求先验为平均分布,而组合导航中,先验和观测都假设为高斯,导致只能用最大后验估计和贝叶斯估计又由于贝叶斯估计要求观测的

全概率(即上面贝叶斯公式里的P(X)),带来了很大的复杂性,因此往往都是使用最大后验估计。Kalman就是最大后验的一种典型实现形式,当然,

在线性高斯情况下它和贝叶斯估计是等价的,使用贝叶斯方法同样能推导出kalman,只是在非线性情况下二者不再等价。

在这里如果要把kalman所有的推导过程全部列出来,会显得有点啰嗦,我们换一个角度理解这个问题。在上面扔硬币的例子里,我们已经能够理解,

融合就是加权。具体到高斯的假设下,就是需要知道各自的均值、方差,并计算一个加权系数。

假设有高斯分布的状态x和观测z

则把这二者融合在一起形成的新的高斯分布`$N(\mu,\sigma)$`满足

稍加整理一下可以得到这样的形式

其中

这三个式子已经比较像kalman里面的状态更新方程、协方差更新方程和增益计算方程了。但是还差两个式子,

这是因为x和`$\mu_x$`其实是预测值,我们并没有把“预测”体现在式子里,如果把它加进来,就有

kalman公式里面的各个符号应该不用解释,想必各位都是熟悉的。

 

4. 滤波器改进

以上所有的推导都是在线性高斯假设下进行的,当传递函数为非线性时,这个更新过程便无法进行。这里给出《概率机器人》里面的一张图,

对比说明线性和非线性之间的差异。

除了经典kalman以外,其他kalman的改进形式基本都是为了解决这个问题。主要包括这样几种:

1) 扩展kalman(EKF)

面对非线性问题,EKF采用了一种最简单的解决办法,就是把非线性近似成线性,采用的是泰勒展开的方法。

由于这种线性只是近似出来的,它的结果自然是有偏的,而且泰勒展开的点是当前估计值,即便是在滤波收敛之前,估计值和真值还有很大差异,

它仍然只能采用这种不准确的值去近似。这就造成了一个问题,如果状态模型收敛性很好,就可以形成一个良性循环“当前值处泰勒展开->估计得到更精确值->更精确值处展开->估计进一步精确”,

但是如果收敛性不好,状态量的波动比较大,那么良性循环则可能变成恶性循环,导致滤波器发散。

2) 迭代扩展kalman(IEKF)

它比扩展卡尔曼多了个“迭代”,这个“迭代”是在同样也是按照"当前值处展开->估计->估计值处展开->再估计"的循环进行的,它和EKF的那个良性循环的区别在于,

这是 在一个kalman更新周期内进行的。这样做比单纯的EKF的好处在于,每次的精度损失会更小。

3) 粒子滤波(PF)

粒子滤波强行回避了非线性问题,既然非线性无论怎么近似都有误差,无法根据先验用表达式给出预测的分布的解析表达,那么就回归分布的本源,用统计来做。

按照先验的分布随机给出一定数量的值,把这些值按照传递函数运算得到观测的预测,那么我们就可以得到同样数量的预测值,直接对这些值进行概率统计,

不就可以得到它的分布了吗。这些值就是粒子,这种用粒子解决估计问题的方法就是粒子滤波。通过原理可以看出,粒子滤波属于贝叶斯估计,而不是最大后验估计,

粒子滤波也是这些滤波算法中唯一的一个贝叶斯估计。当然粒子滤波也有它自己的问题,为了得到精确的分布,粒子的数量必须足够多,而且非线性越强,

对数量的要求就越高,这意味着计算量的增加。除了计算量以外,更严重的是粒子退化问题,基本上大部分粒子滤波的研究都是为了解决这个问题。

4)无迹kalman(UKF)

UKF既不想做线性化,又不想采取像PF那样暴力的做法,而是采取了一种中庸的思想,只使用少量粒子来找出预测的分布,既然数量比较少,就不能浪费,

于是在均值和均值两侧按照一定距离去设计点的位置。

5. 怎么选

有了多种方法,必然会面临怎么选的问题。面对实际问题,很少有绝对的线性,也很少有绝对的高斯,一切只是接近,是否要把它当做非高斯来处理,

要看这种接近能达到什么程度。

1) 什么时候用KF

当有高精度惯导时,虽然它的完整模型时非线性的,而且是强非线性,但是由于惯导精度高,可以把状态量都当成小量,这时候就可以把矩阵中的一些三角函数简化,

比如 ,除此之外,还可以把小量之间的相乘直接消掉,即 ,所以大家看到的高精度惯性导航的状态方程都是线性的,

除了一些还未完成初始对准,即失准角比较大的情况。

2) 什么时候用EKF和IEKF

首先是状态误差无法用小量来近似,必须用非线性形式来表达的时候。其次则是在无人机里场出现的,直接用全量而不是误差量进行建模的情况,

比如直接用姿态的四元数做状态量,而不再是失准角。同样的,能用EKF的地方都可以用IEKF。

3) 什么时候用PF

首先是状态模型的非线性非常强,但这种在多传感器融合定位中其实还比较少见,多数是能够用雅克比进行展开的。在实际工程中使用PF更多地是因为它的另一个优点,

即它不要求噪声是高斯的。在低成本的多传感器融合中,这一点太重要了,如果你仔细看过低精度mems的实验数据,会发现它和高斯真的离得太远了,

低成本的观测也是同样问题。由于影响滤波器精度和稳定性的除了模型,还要噪声,因此在这种情况下,优先采用PF有时候会是更合理的选择。

4) 什么时候用UKF

UKF其实用的比较少,这是它的特性决定的,当非线性不强的时候,EKF已经够用,当非线性和非高斯性强的时候,精度又不如PF,

所以除非你正好有一定的非线性,但是对运算量的要求又很高,则可以用UKF。Cartographer的早期版本用的就是UKF,只不过现在的新版本已经用图优化来做融合了

 

第l章 数字信号处理引言 1.1 引言 1.2 数字信号处理起源 1.3 信号域 1.4 信号分类 1.5 DSP:一个学科 第2章 采样原理 2.1 引言 2.2 香农采样原理 2.3 信号重构 2.4 香农插值 2.5 采样方法 2.6 多通道采样 2.7 MATLAB音频选项 第3章 混叠 3.1 引言 3.2 混叠 3.3 圆判据 3.4 IF采样 第4章 数据转换和量化 4.1 域的转换 4.2 ADC分类 4.3 ADC增强技术 4.4 DSP数据表示方法 4.5 量化误差 4.6 MAC单元 4.7 MATLAB支持工具 第5章 z变换 5.1 引言 5.2 z变换 5.3 原始信号 5.4 线性系统的z变换 5.5 z变换特性 5.6 MATLAB z变换设计工具 5.7 系统稳定性 5.8 逆z变换 5.9 赫维赛德展开法 5.10 逆z变换MATLAB设计工具 第6章 有限冲激响应滤波器 6.1 引言 6.2 FIR滤波器 6.3 理想低通FIR滤波器 6.4 FIR滤波器设计 6.5 稳定性 6.6 线性相位 6.7 群延迟 6.8 FIR滤波器零点位置 6.9 零相位FIR滤波器 6.10 最小相位滤波器 第7章 窗函数设计法 7.1 有限冲激响应综述 7.2 基于窗函数的FIR滤波器设计 7.3 确定性设计 7.4 数据窗 7.5 基于MATLAB窗函数的FIR滤波器设计 7.6 Kaiser窗函数 7.7 截尾型傅里叶变换设计方法 7.8 频率采样设计法 第8章 最小均方设计方法 8.1 有限冲激响应综述 8.2 最小二乘法 8.3 最小二乘FIR滤波器设计 8.4 MATIAB最小均方设计 8.5 MATLAB设计对比 8.6 PRONY方法 第9章 等波纹设计方法 9.1 等波纹准则 9.2 雷米兹交换算法 9.3 加权等波纹FIR滤波器设计 9.4 希尔伯特等波纹FIR滤波器 9.5 等波纹滤波器阶次估计 9.6 MATLAB等波纹FIR滤波器实现 9.7 LpFIR滤波器设计 9.8 基于Lp范数的MATLAB滤波器设计 第10章 FIR滤波器特例 10.1 引言 10.2 滑动平均FIR滤波器 10.3 梳状FIR滤波器 10.4 L波段FIR滤波器 10.5 镜像FIR滤波器 10.6 补码FIR滤波器 10.7 频率抽样滤波器组 10.8 卷积平滑FIR滤波器 10.9 非线性相位FIR滤波器 10.10 Farrow FIR滤波器 第11章 FIR的实现 11.1 概述 11.2 直接型FIR滤波器 11.3 转置结构 11.4 对称FIR滤波器结构 11.5 格型FIR滤波器结构 11.6 分布式算法 11.7 正则符号数 11.8 简化加法器图 11.9 FIR有限字长效应 11.10 计算误差 11.11 缩放 11.12 多重MAC结构 第12章 经典滤波器设计 12.1 引言 12.2 经典模拟滤波器 12.3 模拟原型滤波器 12.4 巴特沃斯原型滤波器 12.5 切比雪夫原型滤波器 12.6 椭圆原型滤波器 12.7 原型滤波器到最终形式的转换 12.8 其他IIR滤波器形式 12.9 PRONY(PADE)法 12.10 尤尔—沃尔 第13章 无限冲激响应滤波器设计 13.1 引言 13.2 冲激响应不变法 13.3 冲激响应不变滤波器设计 13.4 双线性z变换法 13.5 翘曲 13.6 MATLAB IIR滤波器设计 13.7 冲激响应不变与双线性z变换IIR对比 13.8 最优化 第14章 状态变量滤波器模型 14.1 状态空间系统 14.2 状态变量 14.3 模拟仿真 14.4 MATLAB仿真 14.5 状态变量模型 14.6 基变换 14.7 MATLAB状态空间 14.8 转置系统 14.9 MATLAB状态空间算法结构 第15章 数字滤波器结构 15.1 滤波器结构 15.2 直Ⅰ、Ⅱ型结构 15.3 直Ⅰ、Ⅱ型IIR滤波器的MATLAB相关函数 15.4 直Ⅰ、Ⅱ型结构的MATLAB实现 15.5 级联型结构 15.6 一阶、二阶子滤波器 15.7 一阶、二阶子滤波器的MATLAB实现 15.8 并联型结构 15.9 级联/并联型结构的MATLAB实现 15.10 梯型/格型IIR滤波器 第16章 定点效应 16.1 背景 16.2 定点系统 16.3 溢出(饱和)效应 16.4 算法误差 16.5 系数敏感度 16.6 二阶子滤波器 16.7 标准IIR滤波器 16.8 缩放 16.9 极限环振荡 第17章 IIR结构分析 17.1 溢出防范 17.2 Lp范数界 17.3 L2溢出预防 17.4 L2范数测定 17.5 L2范数的附加说明 17.6 L∞范数界 17.7 L1范数界 17.8 噪声功率增益 17.9 基于状态空间的噪声分析 17.10 相似变换 第18章 多采样率系统简介 18.1 背景 18.2 抽取 18.3 插值 18.4 采样率转换 18.5 多相表示法 18.6 子带滤波器 18.7 MATLAB 第19章 多采样率滤波器 19.1 引言 19.2 离散傅里叶变换(DFI)滤波器组 19.3 L波段滤波器 19.4 正交镜像滤波器 19.5 多相表达式 19.6 掩频滤波器 19.7 级联积分梳状滤波器(CIC) 附录一 MATLAB 附录二 词汇表 附录三 中英文对照 参考文献
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值