常见滤波算法及其优缺点

2024-12-24


‌滤波算法‌是一种用于减少或消除信号中不需要的成分(如噪声、干扰等)的技术。常见的滤波算法包括限幅滤波法、中位值滤波法、算术平均滤波法、递推平均滤波法、中位值平均滤波法等。每种算法都有其特定的应用场景和优缺点。滤波是指通过某种方法将信号中的某些频率成分增强或抑制,达到去除噪声、改善信号质量、分离信号等目的的过程。滤波器是实现滤波功能的关键组件,它可以改变信号的频谱特性,对不同频率区域的信号进行处理。

滤波算法是一种数字信号处理技术,其目的是通过特定的数学模型和方法,从原始信号中去除或减轻不需要的成分(如噪声、高频干扰等),提取或增强有用的信息。它广泛应用于各个领域,包括通信、语音处理、图像处理、物理测量等。

使用场景:

(1)频域滤波:FFT允许将时域信号转换到频域,然后可以轻松地应用各种滤波器,如低通、高通、带通和带阻滤波器。

(2)信号分析:FFT常用于分析信号的频率成分,识别信号中的周期性成分或检测特定频率的信号。

(3)图像处理:在图像处理中,FFT可以用于频域滤波,如锐化、模糊、边缘检测等。

常见滤波算法及其优缺点

‌限幅滤波法(又称程序判断滤波法)‌:

‌方法‌:根据经验判断,确定两次采样允许的最大偏差值(设为A),每次检测到新值时判断:如果本次值与上次值之差<=A,则本次值有效;如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值。

‌优点‌:能有效克服因偶然因素引起的脉冲干扰。

‌缺点‌:无法抑制周期性的干扰,平滑度差‌12。

‌中位值滤波法‌:

‌方法‌:连续采样N次(N取奇数),把N次采样值按大小排列,取中间值为本次有效值。

‌优点‌:能有效克服因偶然因素引起的波动干扰,对温度、液位的变化缓慢的被测参数有良好的滤波效果。

‌缺点‌:对流量、速度等快速变化的参数不宜‌13。

‌算术平均滤波法‌:

‌方法‌:连续取N个采样值进行算术平均运算。N值较大时,信号平滑度较高,但灵敏度较低;N值较小时,信号平滑度较低,但灵敏度较高。

‌优点‌:适用于对一般具有随机干扰的信号进行滤波。

‌缺点‌:对测量速度较慢或要求数据计算速度较快的实时控制不适用‌13。

‌递推平均滤波法(又称滑动平均滤波法)‌:

‌方法‌:把连续取N个采样值看成一个队列,每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据(先进先出原则),把队列中的N个数据进行算术平均运算。

‌优点‌:对周期性干扰有良好的抑制作用,平滑度高。

‌缺点‌:灵敏度低,对偶然出现的脉冲性干扰抑制作用较差‌13。

‌中位值平均滤波法(又称防脉冲干扰平均滤波法)‌:

‌方法‌:连续采样N个数据,去掉一个最大值和一个最小值,然后计算N-2个数据的算术平均值。

‌优点‌:融合了中位值滤波法和算术平均滤波法的优点,能有效消除由于脉冲干扰所引起的采样值偏差。

‌缺点‌:比较浪费RAM‌13。

在对物体进行跟踪的过程中,我们需要对物体下一时刻的位置,运动状态进行预测. 预测总是基于一定的规则, 对于车辆而言, 运动模型有CV(constant
velocity), CA(constant acceleration), CTRV(constant turn rate and velocity)
,IMM(Interacting Multiple Model)等等.
每次预测之后,我们需要使用合适的

滤波算法


,用测量值对预测值进行更新,获得一个更为精确的运动信息。常用的滤波算法包括卡尔曼滤波,粒子滤波、贝叶斯滤波等等。其中卡尔曼滤波包括线性卡尔曼,非线性的扩展卡尔曼(EKF)以及无损卡尔曼(UKF)等等。




卡尔曼滤波算法是对线性高斯系统(线性系统且噪声服从高斯分布)的最优无偏估计,而实际工程中大部分是非线性非高斯系统,因此有了各种变体解决非线性非高斯系统的最优估计问题:

EKF滤波:是KF算法在非线性非高斯系统的直接扩展,首先对系统进行了线性化(注:其线性化工作点是预测状态的均值)其次,假设在线性系统近似下,系统状态和噪声都是高斯分布,因此经过这样处理后可以直接套用KF方法。IEKF迭代滤波:为了解决EKF滤波中每次线性化的工作点不是真实的输入状态的均值,因此计算出来的结果肯定也不是最好的,所以IEKF将其线性化的工作点设置为上一次迭代的后验均值(对应的EKF线性化工作点是预测状态均值),更加接近真实状态,以此提高精度。ESKF滤波:估计值和真实值之间差的是一个误差,而我们ESKF的设计思想就是利用卡尔曼滤波来实时估计这个误差,而且通常,系统状态都是比较大的值,其非线性比较强的值,而系统误差相对来说是个小量,相对来说线性程度很可能比较高,因此再对其进行线性化的误差更小,精度也就更高。UKF滤波:是为了能更逼近输出结果的分布,其基本思想就是用一个高斯分布近似系统输出的分布,其方法是多选几个采样点(EKF只有一个线性化工作点)一般对于维数为N的分布,需要选2N+1个点。这样的好处是,不用求解雅可比,计算量降低。粒子滤波PF:粒子滤波直接舍弃了高斯分布的假设,因此就需要一个新的方式去描述输出函数的分布,PF基本思想基于蒙特卡洛方法,用大量采样点去描述这个分布,做法就是不断采样,计算权重,重采样。优点是精度肯定更高了,缺点就是采样所需的粒子数量,随分布是指数增长的,对于高维问题计算量猛增。非线性优化:非线性优化是将当前时刻所有状态构建代价函数,进行迭代优化(剃度下降:牛顿法、高斯牛顿法、列文伯格-马夸尔特法等),每次迭代会把上一次迭代的结果作为新的工作点进行优化。因此可以考虑到整个系统所有约束,精度高,但是速度就慢,因此也有提出一些加速方法,例如:滑动窗口等。


▲ 平衡双轮自行车


01惯性传感器


在车模直立控制中被广泛使用的惯性传感器通常是由加速度计和陀螺仪组成。价格比较便宜的惯性测量传感器,输出的信号往往包含有各种噪声。陀螺仪输出车模倾角
的变化率(角速度) 信号。它通常包括缓慢变化的偏移量 和高斯白噪声 。


其中偏移量 的导数是随机的,通常描述为一个白噪声信号: 。


在重力场中,加速度传感器正交的两个输出,通过求反正切可以传感器相对于重力加速度的倾角。但传感器的运动所产生的加速度也会叠加在输出信号中,进而产生干扰信号。$$\theta
_M = \theta T + n\theta$$


▲ 采集数据及其显示


通过滤波器算法将陀螺仪和加速度计所得到的角度信息进行融合,最大限度抑制噪声对测量角度的影响。


前面提问中所提到的三种滤波算法,分别利用传感器噪声不同特点来抑制噪声的影响。看似这些方法原理相差很大,借助于以下条件,能够便于我们进行分析和比较:


这三种算法都属于线性滤波算法;


在稳态下,可以借助于输入输出之间的传递函数来比较算法的特性;


针对车模直立控制,所涉及到的角度只有一个;


02三种滤波算法


1.参考滤波方案


在2012年


直立车


模组别首次引入智能车竞赛的,竞赛秘书处给出了一个 参考设计方案[1]
。它是在对陀螺仪信号进行积分的基础上,使用加速度计得到的角度信号对输出进行负反馈调节,从而抑制积分中存在的发散问题。下图是参考设计方案中相应的原理框图和程序实现。


▲ 参考滤波方案软件实现


加速度传感器的Z周输出电压,经过偏移量,比率调整之后,形成算法的输入:


陀螺仪的输出电压经过偏移量,比率调整之后,形成算法输入:


算法的输出为角度: (g_fCarAngle)。


▲ 参考滤波方案的核心算法


根据参考程序代码,算法可以使用迭代方程描述为:


输出角度


通过上面的化简公式可以看出,实际上角度输出信号是陀螺仪和加速度计信号经过一级低通滤波后叠加在一起,所以陀螺仪和加速度计输出信号中如果存在直流分量的漂移,都会引起输出角度信号的零点漂移。


2. 互补滤波器


互补滤波器的基本结构如下图所示。假设两个测量信号 都包含了实际信号 以及噪声。在信号 中的噪声主要分布在高频,而在信号 中的噪声主要分布在低频。


代表着低通滤波器,那么对应的 就是互补的高通滤波器。它们分别提取 中的低频和高频成分,然后叠加在一起。


▲ 左:基本互补滤波器的结构。右:基本结构的变形,只对噪声进行低通滤波


在上图右边给出了互补滤波器基本结构的恒等变形。将 与 相减之后,就剩下了高频噪声 与低频噪声 相减。再经过低通滤波器 ,就剩下 去抵消
中的低频噪声了。


只所以讨论这个变形,就是因为前面参考方案就是变形的互补滤波器。将陀螺仪信号 的积分看做带有低频噪声(积分漂移信号)的观察信号 。它与加速度计信号
(带有高频运动噪声)相减,后面有比例、积分组成的负反馈组成一个一阶低通滤波器 ,滤波之后与 叠加,形成最后的输出信号。


▲ 参考滤波方案本质上是变形后的互补滤波器


通过上面讨论可以看出,如果在互补滤波器中的低通滤波器的阶次为一阶的话,那么就和前面的参考方案是一致了。


在实际应用中,可以增加滤波器的阶次,来提高角度计算的精度。比如在陀螺仪输入信号中,再增加一级高通滤波,可以进一步抑制陀螺仪信号中的直流分量的漂移。


3. 卡尔曼滤波


使用卡尔曼滤波的方法来融合来自陀螺仪和加速度计的信号,不在频率范围内考虑它们各自噪声的特点,而是将这两个信号从功能上分为两类。陀螺仪信号
是过程驱动变量,它激动系统状态(车模倾角,角速度)发生变化;加速度计得到的角度 则是观察变量,是来修正系统状态。。


选择车模倾角 和陀螺仪偏变化量 作为系统状态变量,得到离散系统状态方程为:


则对应卡尔曼滤波方程为:


在这个过程中,如果系统噪声协方差矩阵 以及观测噪声方差 始终为常量。那么由上面方程2、3、5迭代之后,误差协方差矩阵 和卡尔曼增益矩阵
就会逐步收敛到一个常量。


在下面参数下,经过迭代1000次之后,卡尔曼增益矩阵参数 的变化曲线。可以看去它逐渐曲线与常数 。


当为常量的时候,对方程1、4再联立起来,就形成关于状态变量 的差分方程。考虑到 ,
都比较小,将化简过程中涉及到这些小量乘积(二阶小量)都省略掉,那么最终可以将输出角度 与输入 之间的差分方程化简为:


其中 分别是
的z变换。对照上面简化的输入输出之间的关系与前面参考方案中对应的方程,可以看到卡尔曼滤波器本质上和互补滤波器是相同的。如果不省略那些参数小的项数,


滤波算法


就变成二阶的互补滤波器的形式了。


观察噪声 来自于加速度计传感器,系统内部噪声 来自于陀螺仪。当 远远大于 的时候,所计算出的卡尔曼滤波增益
的数值比较小,这样才能够进行上述的算法简化。


03算法关系


可以看出。当所使用的惯性传感器,陀螺仪的噪声远远低于加速度传感器的噪声时,低通滤波器的阶次取一阶滤波器的情况下,三种滤波器的算法效果在平稳状态下是相同的。


从原理上,参考方案与互补滤波器比较接近,它们是利用不同传感器噪声在频率上的差别抑制噪声的。卡尔曼滤波器则根据传感器对倾角影响的机制不同,通过构造系统状态变量将信息进行融合。


在车模直立控制应用中,互补滤波器和参考方案所需要的计算量小,参数只有滤波时间常数
,调试相对比较简单。但该算法对于陀螺仪工作点的漂移无法抑制,使用时,可以对陀螺仪信号再通过一个高通滤波器,消除陀螺仪信号工作点变化对输出角度的影响。


卡尔曼滤波器计算量相对较大,需要MCU的算力强才行。由于卡尔曼滤波器内部变量包括有对陀螺仪工作点的估计,所以陀螺仪的工作点的缓慢变化不会影响计算角度的变化。


▲ RECORD1数据


在使用滤波器算法的时候,都会涉及到算法的初始状态的设置问题。对于互补滤波器相对比较简单,将内部积分累加变量初始化为0便可以适应大部分情况。对于卡尔曼滤波器,它的参数矩阵
则需要选择恰当的初始值,以使得算法尽快达到收敛的目的。比如可以将算法收敛后的 矩阵的值作为程序下一次运行的初始值,这样就可以更快使得算法进入稳定状态。


此外,需要根据传感器输出信号的实际情况,合理的确定卡尔曼滤波器中的 参数,这样才能够在算法的收敛以及滤波效果方面取得良好的平衡。


关于这三种算法在理论上的分析就到这里,它们在实际控制中的效果以后在给出。





文章推荐

相关推荐