唐 强,雷志荣,史 龙
(航空工业西安飞行自动控制研究所 飞行器控制一体化技术国家重点实验室,西安 710076)
众所周知,对控制系统而言,传感器信号质量直接关系到系统的最终性能。在飞行控制系统中,常用的传感器如加速度计、陀螺、大气传感器等,其输出的数字或模拟信号上都有不同程度的噪声叠加。这些噪声的来源各不相同,除了传感器内部自身实现机理引入的信号噪声外,外部环境变化如电磁干扰、振动等也会带来有害的信号噪声。在噪声严重的情况下,甚至会达到不可接受的程度,如果不经处理,直接经控制律计算传导至执行机构,不仅会对飞行器机体造成损害,而且将无法获取期望的控制效果。
为减少传感器噪声对系统带来的危害,可通过物理和数学上的各种措施进行降噪处理。常用的物理手段包括电磁兼容设计、滤波电路设计、减振隔振等措施;数学上则可采用数字滤波等信号处理手段对噪声进行抑制,例如飞行控制律设计工程中通常采用的前置滤波和后置滤波等。
本文提出了一种基于L1趋势滤波的传感器在线降噪处理方法,采用真实飞行数据进行了仿真试验,并与小波阈值降噪方法进行了初步比较,验证了该方法的可行性。
简而言之,趋势滤波就是从时间序列信号中提取其内在的趋势项。其数学描述如下[1]:
给出一个时间序列yt,t=1,…,n,假设该时间序列由一个缓慢变化的基本趋势项xt以及一个快速变化的波动项zt(亦被称为估计剩余项)组成。即有
yt=xt+zt,t=1,…,n
(1)
将时间序列yt中内含的趋势项xt充分估计出来,尽可能使趋势项xt平滑,并使zt尽可能小,这一信号平滑或滤波过程就是所谓的趋势滤波。
常见的趋势滤波方法包括:L1趋势滤波[1]、H-P(Hodrick-Prescott)滤波[2](即L2滤波)、滑动平均滤波、指数平滑滤波、样条平滑、带通滤波、中值滤波、小波变换分析等,在各领域应用广泛。
L1趋势滤波由Kim等于2009年提出,是H-P滤波的一种变形,用于估计和预测时间序列数据中的潜在趋势,主要研究和应用集中于经济和统计领域[3-7],近年来,在工程领域也开始陆续有少量的应用研究[8-10]。
在L1趋势滤波中,趋势项xt的估计通过最小化以下加权目标函数获得
(2)
式(2)中目标函数第一项表征估计剩余项的大小;第二项表征估计趋势的平滑程度;λ≥0为加权系数,用来调节控制该目标函数中两部分组成项的侧重,λ的取值越大,估计出的趋势越平滑,λ的取值越小,结果越逼近原始数据。
L1趋势滤波无法求出解析解,文献[1]提供了一种有效的原问题和对偶问题的内点解法,并基于该方法给出了相应的C语言和Matlab工具箱。本文后续基于Matlab的仿真研究即调用了文献[1]所提供的工具箱。
L1趋势滤波是一种批处理方法,需要用到之前所有的历史数据。而实际在进行传感器信号降噪过程中,需要在线进行处理。因此在L1趋势滤波的基础上,构造了一个长度固定的滑动数据处理窗口来实现实时滤波降噪,具体方法步骤如下:
1)建立一个长度固定为N的数组,用来存储传感器采样得到的数据;
2)依次将新采集的传感器数据存入该数组,未存满数据时,不做计算处理,滤波结果输出为传感器的采集值;
3)当该数组首次采集满N个数据时,基于批处理,对该数组进行第1次L1趋势滤波,滤波结果输出为L1趋势滤波的最后1位;
4)滤波运算完成后,该数组循环位移1次,即去掉第1个元素,其他元素依次前移1位,并用最新采样值作为数组最后1个元素;
5)随着新数据的到来,对更新后的数组再进行L1趋势滤波处理,滤波结果输出为L1趋势滤波的最后1位;
6)依次滑动更新处理。
采用上述方法,只要在每一个传感器采样周期内,能够完成固定窗口长度数组的L1趋势滤波处理,通过滑动递推就可以实现传感器信号的在线实时降噪过程。
为了验证文中提出的方法,以某气压计所采集的信号为例进行了仿真研究与验证。
该气压计搭载于小型无人直升机上进行飞行数据采集,数据的采样频率为50Hz。由于直升机的振动相对较大,所以采集到的气压信号的噪声较大,无法直接用于气压高度的解算。某飞行起落所采集的气压传感器原始数据如图1所示,本文后续部分的仿真及分析都以该数据为例。
图1 气压计所采集的原始信号数据Fig.1 The raw signal data from the barometer
首先,采用L1趋势滤波对该数据进行离线批处理,在仿真分析中采用试凑法,可将加权系数λ取值为1,处理结果如图2和图3所示。图2为叠加有原始信号的整体处理结果,图3为图2的局部放大。从图2和图3中不难看出,采用L1趋势滤波进行离线降噪处理的效果是非常理想的,几乎完美滤除了信号中的噪声,还原了信号的真实变化趋势。
图2 离线L1趋势滤波结果Fig.2 The offline results of L1 trend filtering
图3 离线L1趋势滤波结果(局部放大)Fig.3 The offline results of L1 trend filtering(Partial enlargement)
采用L1趋势滤波进行在线降噪处理时,要确定2个主要参数,除了目标函数中的加权系数λ之外,还需要确定滑动数据处理窗口的大小,即前文定义的数组长度N。N的取值越大,每次参与运算的数据越多,滤波处理效果越好,但是所需要的计算资源越多,耗费的时间也越长。所以为了满足实际应用的实时性要求,要结合系统实际计算资源进行折中考虑。在本文的试验中,N取为30,其仿真结果如图4和图5所示,图5为图4的局部放大。图4和图5中的绿色曲线是原始的气压数据,红色曲线是采用L1趋势滤波进行离线批处理获得的数据,蓝色曲线是在线实时处理的仿真结果。
图4 在线L1趋势滤波结果Fig.4 The online results of L1 trend filtering
图5 在线L1趋势滤波结果(局部放大)Fig.5 The online results of L1 trend filtering(Partial enlargement)
通过以上仿真结果可以看出,本文采用的实时在线降噪处理方法是有效可行的。尽管与离线批处理结果相比其效果要差一些,但仍然大幅降低了信号中的噪声,而且并未引入过多的延迟。
为进一步评估本文所提出方法,选取有代表性的小波降噪算法进行初步对比研究。
基于小波技术的信号降噪相关研究、应用和可参考的文献非常多[11-14],其中最常见的小波降噪方法是小波阈值滤波。小波阈值滤波降噪的基本原理如下:首先基于选取的小波函数将含噪信号进行离散小波变换,将信号进行小波分解;然后对小波分解后的各层系数进行阈值处理,保留大于阈值的小波系数,将小于阈值的小波系数置零,以抑制信号中的噪声;最后进行小波逆变换,重构出降噪处理后的信号。其核心在于阈值函数的选取或构造。
与L1趋势滤波类似,基于小波阈值滤波的信号降噪处理也是一种批处理算法,适用于离线分析及处理。调用Matlab自带的小波工具箱,采用db3小波,分解层数为5层,采用软阈值处理,仿真结果如图6和图7所示,图7为图6的局部放大。图中红色曲线是离线小波滤波的处理结果,蓝色部分是离线L1趋势滤波的处理结果。
图6 离线L1与离线小波滤波结果比较Fig.6 The offline filtering results comparison between L1 and wavelet
图7 离线L1与离线小波滤波结果比较(局部放大)Fig.7 The offline filtering results comparison between L1 and wavelet(Partial enlargement)
不难看出,针对所采用的气压计原始数据,二者离线滤波的降噪结果基本相当。但是在细节处理上,例如上述数据40s信号尖峰处,L1趋势滤波的结果更真实地反映了信号的变化趋势,效果更好。为实现基于小波的在线滤波,类似前文L1趋势滤波的处理,同样引入了滑动的数据处理窗口[11],并针对离散小波变换中存在的边界问题,采用边界值重复的双向对称周期延拓来予以解决[12]。其仿真结果与在线L1趋势滤波的结果对比如图8和图9所示,图9为图8的局部放大。图中红色曲线是在线小波滤波的处理结果,蓝色部分是在线L1趋势滤波的处理结果。
图8 在线L1与在线小波滤波结果比较Fig.8 The online filtering results comparison between L1 and wavelet
图9 在线L1与在线小波滤波结果比较(局部放大)Fig.9 The online filtering results comparison between L1 and wavelet(Partial enlargement)
从图8可以明显看出,所采用在线L1趋势滤波方法的降噪能力要优于在线小波降噪方法。从图9可以看出,与所采用在线小波降噪方法相比,在线L1趋势滤波所引入的延迟要小,且滤波后曲线整体更光滑。
因此,通过将以上L1趋势滤波与小波阈值降噪两种方法分别进行离线批处理以及在线滑动窗口处理的仿真结果进行简单对比,至少可以说明,在信号降噪方面,L1趋势滤波方法具有不弱于小波阈值降噪方法的能力,其潜力有待进一步挖掘,具有较好的应用前景。
本文采用L1趋势滤波方法对飞行控制系统传感器信号进行降噪处理,经仿真试验验证表明:
1)基于滑动数据窗口处理的L1趋势滤波算法,可以实现对传感器信号的在线实时降噪;
2)实时L1趋势滤波降噪算法虽然比离线L1趋势滤波降噪算法的降噪效果差, 但依然能显著地降低数据信号中的噪声水平;
3)与经典的小波阈值降噪方法相比,L1趋势滤波方法至少具有相当的信号降噪能力。
此外,该方法也可以方便地推广应用至陀螺、加速度计等其他传感器信号的降噪处理过程中,是一种很有潜力的信号处理方法。