基于深度学习的无人机故障诊断方法研究∗
2019-06-01崔佳佳
李 炜 崔佳佳
(1.兰州理工大学电气工程与信息工程学院 兰州 730050)
(2.甘肃省工业过程先进控制重点实验室 兰州 730050)
(3.兰州理工大学电气与控制工程国家级实验教学示范中心 兰州 730050)
1 引言
Quadrotor UAV是基于自身传感器或通过远程遥控实现自主飞行的智能装备,在实际飞行中因受多种因素影响极易发生故障[1]。为确保无人机的安全飞行,可靠的故障机制显得尤为重要,同时,无人机安全运行必须依靠及时且准确的故障诊断。
近年来,在无人机的故障诊断领域,有不少的研究成果[2~5],但主要以基于模型的方法为主,此类方法一方面对模型依赖过强,建模误差与内外不确定性都会影响故障诊断的精度,同时,无人机的系统耦合性较高,以至于系统模型不易建立;另一方面对数据的利用不足也增加了故障诊断的难度。这些因素导致故障诊断难以达到理想的效果。
2006年,Hinton教授提出了深度学习(Deep Learning)的思想,开辟了深度学习在学术界和工业界应用的浪潮[6]。深度学习模拟大脑的学习过程,构建深层次的网络模型,结合大量数据,自发学习数据中隐含的特征关系,不需人为提取特征,最终提升故障分类或预测精度[7]。
堆栈自编码器 SAE[8~9](Stacked Auto-Encoder,SAE)是深度学习方法中的一种,通过构建具有多隐含层的机器学习模型对训练样本进行逐层特征变换,将训练样本在原空间的特征表示转换到一个新的特征空间,致使分类更加容易,最终提升分类的准确性[8]。该方法能够自主深入地刻画数据的内在联系信息,减少人为提取特征造成的主观性影响,并降低因人为主观特征提取而造成故障诊断错误率等问题。
但由于无人机不可能在完全理想的状态下运行,势必有噪音和元器件的相互影响,使得SAE的实际故障诊断中鲁棒性不足,因此,诊断效果不理想,针对这个问题,本文采用SDA的故障诊断方法。将带有噪声的数据训练深度网络,使其具有较优的泛化性,并有较好的鲁棒性,最终提升无人机执行器故障诊断的准确率。
鉴于quadrotor UAV由四个旋翼作为执行器,并发故障的可能性较小,因此本文仅考虑单旋翼故障问题,将SDA与系统性能容忍度结合,提出一种基于SDA的无人机故障诊断方法。以提升无人机故障诊断的准确性,致使系统安全可靠的工作。
2 栈式降噪自编码原理
栈式降噪自编码SDA是以自编码器AE堆叠而成的网络。结构上与传统多层神经网络没有区别,训练时采用逐层训练的方法,将前一层的输出作为下一层的输入依次训练。
AE有别于其他深度学习方法在于AE的输入数据和输出目标一致,通过编码网络将输入数据x转换为编码矢量h,通过解码网络将编码矢量h重构回原来的输入数据[10~12]。因此,编码矢量成为输入数据的一种特征表示。如果编码矢量h可以很好的重构输入数据x,那么认为它保留了训练样本中的重要信息。SDA的训练分为预训练和微调2个阶段。
1)预训练
预训练的过程实质就是网络参数初始化的过程,采用逐层无监督特征优化算法,训练层与层之间的连接权值及各层神经元的偏置值得到相应的初始值。以1层AE为例,其网络结构如图1所示。1个基本的AE可视为由输入层、隐含层和输出层构成的神经网络。从输入层到隐含层是编码过程,如式(1)所示;从隐含层到输出层是解码过程,如式(2)所示。
图1 AE结构
式中,f和g分别表示编码和解码函数;sf和sg为激活函数;W和WT分别为输入层与隐含层、隐含层与输出层之间的权值矩阵;p和q分别为隐含层、输出层上的偏置向量。本文中将AE的参数记
然后利用梯度下降法对损失函数极小化处理,得到该层的参数θ,损失函数如式(4)所示:
上层AE训练完成之后,将其隐含层的输出向量作为下一层的输入,采用相同的进行训练下一层AE,依次迭代,直至最终完成整个栈式降噪自编码器SDA的训练。
但由于样本数据不可能在理想状态下得到,且系统运行也处于复杂的环境,因此用干净理想状态的样本数据S进行网络训练,得到的深度网络的泛化性能不足以在实时系统运行中,得到很好的诊断结果,因此将含有高斯白噪声的数据S′作为样本数据进行训练,使得SDA从含有噪声的样本中学到具有良好鲁棒性的特征,降低对微小扰动的敏感性。
2)微调
完成预训练后,再以监督学习方法利用有标签的无人机数据集S2反向微调SDA参数,使得整个网络的参数以达到全局最优。为了判断无人机执行器的故障类型,在SDA网络顶层需添加具有分类作用的输出层,结构如图2。
图2 SDA模型
3 基于SDA的无人机故障诊断
3.1 执行器故障的四旋翼无人机模型
由于quadrotor UAV飞控系统执行器常发生的故障类型有恒偏差、恒增益、卡死故障,建立如下统一的故障模型[13]:
当α=0,Δ=0且β=1时,执行器正常运行;当Δ=0,β=1且α≠0时,执行器发生恒偏差故障;当α=0,Δ=0且β≠1时,执行器发生恒增益故障;当α=0,β=0且Δ≠0时,执行器发生卡死故障。
3.2 基于SDA的无人机执行器故障诊断方法
针对上述三类执行器故障问题,考虑到SDA对故障有效分类的优势,于是本文将SDA引入系统监控机制,其基本思路是:首先利用UAV执行器三类故障数据(含高斯白噪声)离线训练SDA网络(如图3所示),将训练好的网络放到系统监控决策模块中;无人机飞行时,实时依据系统性能容忍度指标检测执行器是否发生故障,若发生故障,利用SDA在线识别执行器故障类型,输出故障诊断结果;否则系统正常运行(如图4所示)。
图3 离线训练SDA网络
图4 系统监控决策流程图
图中系统性能容忍度指标Qc依据文献[14~15]方法计算,且需提前设置系统性能容忍度指标阈值QcT。
4 仿真实验与结果分析
4.1 SDA的建立与故障诊断结果分析
本实验中,UAV的三个地坐标系下的坐标值和无人机的横滚角θ,俯仰角ϕ,偏航角φ为数据样本,在Simulink无人机实验平台获得三类执行器故障数据样本,具体参数见表1[13]。
针对UAV三类执行器故障问题,每种执行器故障均取2000个故障数据,同时还需取2000个正常情况下的数据,则共取8000个数据作为样本,故障类型对应的标签见表2。实验中,随机选择30%作为测试样本集,剩下的样本作为训练样本。
设SDA参数θ初始化服从高斯分布随机值,其他参数见表3。为了得到合适的的SDA网络,进行以下测试。
表1 四旋翼无人机相关参数表
表2 无人机执行器3种故障类型状态
1)SDA层数的确定
设定迭代次数均为25,分别测试网络层数为0~6时的故障诊断的准确率,结果如图5。可看出层数为4时,故障分类准确率达到96%,此后随层数的增长,正确率增长缓慢,但网络训练的时间增长的更快,因此选取4层SDA网络。
2)SAE迭代次数的确定
设定SDA的网络层数为4,同时分别测试迭代次数为5、10、…、30时,SDA网络故障诊断准确率如图6。可以看出,随着迭代次数的增加其准确率逐渐增长,当迭代次数为20时,其准确率已达到97%,之后随迭代次数的增加,故障诊断的准确率已无明显改善,但训练时间会增长,因此确定SAE迭代次数为20。
由此可初步确定用于无人机执行器故障诊断的SDA为迭代20次的4层网络。
图6 4层网络在不同迭代次数下的故障准确率
为了减少随机因素的影响,反复训练网络20次,其准确率如图7,20次实验的平均准确率为97%,充分表明迭代20次的4层SDA网络,可准确诊断无人机执行器故障。
图7 20次试验中执行器故障类型识别准确率
4.2 基于SDA无人机故障诊断仿真与结果分析
为验证基于SDA无人机执行器故障诊断方法的有效性,在Simulink仿真平台上进行实验,对无人机执行器人为施加故障,进行仿真实验。
4.2.1 仿真实验
系统性能容忍度指标QcT取0.2,故障类型所对应的标签依然和表2保持一致,每秒采样50次。
假设t=1.2s时发生β=0.3的恒增益故障(标签1),t=2s系统恢复;t=2.5s时发生α=0.2的恒偏差故障(标签2),t=3s系统恢复;t=3.5s时发生Δ=0.4的卡死故障(标签3),t=4s系统恢复。同时为了验证本文方法的优势,与传统的BP神经网络和堆栈自编码器SAE进行对比实验(数据样本保持一致)。仿真实验结果如图8。
4.2.2 仿真结果分析
当执行器依次发生3类故障时,如图8所示,本文的方法故障判断结果与实际故障类型一致,准确率为100%,说明本文的方法可以排除外界和系统内部的影响,准确地识别无人机执行器的故障类型。
同时,也可从图中看出,基于SAE的方法在识别故障时均出现误判,将故障1判断为故障2,将故障2误判为故障1,其故障识别率为96%,低于本文的方法;基于BP神经网络的方法出现的误判次数更多,出现将正常状态误判为故障1等较为严重的现象,其准确率仅为85%,均低于前两者。
综上可得:当无人机执行器发生故障时,基于SDA的无人机执行器故障诊断的方法泛化性较强,针对无人机执行器的故障判断有明显的优势,可准确地识别执行器故障类型,更有利于系统安全可靠的运行。
图8 故障分类结果
5 结语
本文针对无人机执行器的故障诊断的快速可靠性需求,考虑深度SDA网络的优点,提出了一种基于深度学习的无人机故障诊断方法。其巧妙之处在于将噪声数据作为样本进行训练,有效地解决了网络泛化性能不足问题。仿真表明基于SDA故障诊断方法其准确性更优,泛化性能更好,为系统安全可靠的运行提供了保障。同时无人机执行器并发故障的诊断将是下一步值得研究的工作。