张家铭 钟鸿豪 白文艳 孙 友 曹玉腾
北京航天自动控制研究所,北京 100854
由于飞行器风洞试验的局限性以及理论计算受限于不完善的理论研究,所以应用气动参数辨识技术从飞行试验数据中获得飞行器模型的各个气动参数,已成为飞行器设计和研究中不可分割的一部分[1]。
在气动参数辨识相关研究方面,国外的起步很早,主要包括美国、俄罗斯(前苏联)、欧洲和以色列等传统航空强国。其中美国从上世纪中旬开始,研究了从低空亚声速、高空超声速到临近空间高超声速的、不同构型的飞行器空气动力学现象和气动力参数,形成了系统全面的研究成果。早在70年代,经典的系统辨识方法如极大似然法和最小二乘法刚刚被提出的时候[2],就在气动数据的辨识研究中发挥了关键作用。例如文献[3]中,Klein系统研究了最小二乘法在飞行器气动参数辨识中的应用,分析了辨识算法、估计的准确性、可辨识性以及模型验证等系统辨识的基本问题,并结合了多种机型的例子进行了说明。文献[4-5]介绍了使用极大似然法、最小二乘法以及最小二乘法的变形来估计气动参数。在文献[6]中,德国航空航天中心DLR的Ravindra Jategaonkar博士系统总结了二十世纪的飞行器系统辨识的发展历程和所应用的各种方法,例如方程误差法、输出误差法、滤波器误差法以及频域方法、基于滤波的方法、神经网络方法等等。文献[7]介绍了飞行器参数估计中的输出误差方法。文献[8-9]研究了应用在气动力参数辨识的滤波方法,包括卡尔曼滤波、拓展卡尔曼滤波以及无迹卡尔曼滤波方法。文献[10]总结了迭代计算的几种系统辨识方法。文献[11]介绍了一种频域上的方法。同时,欧美以及AIAA协会也建立了适用于气动参数辨识的集成工具集和软件方法库,并且收集了大量的理论计算、风洞试验和试飞的一手数据,形成了较为全面的数据集。ESTIMA就是这样一款著名的气动辨识集成软件工具[12]。在数据集方面,文献[13]总结了各国无翼的载人航天不同气动外形的返回舱、各种类型的再入弹头、有翼的航天飞机、翼身融合体和升力体等不同型号飞行器的气动力数据。
实际工程中的飞行试验数据往往包含气动参数的重要信息,但却未被好好利用。本文将利用气动参数辨识方法,充分挖掘已有飞行试验数据中的气动参数信息,对气动表进行修正。随着飞行数据的增多,准确性得到不断提高。然而传统的气动参数辨识方法如最小二乘法、极大似然法、拓展卡尔曼滤波法等多基于线性回归模型,或者对非线性模型进行线性化,略去高阶非线性项,因此传统辨识方法多用于线性化较强的模型,一旦模型非线性较强或时变性较快时,传统辨识方法的稳定性将难以保证[14-15]。另外,传统的气动参数辨识方法直接对气动参数和飞行状态的关系进行建模。对于一些复杂的飞行器构型,由于气动参数的模型阶次较高,其本身绘制出的曲线可能较为复杂或存在剧烈波动及跳变的存在,所以会严重影响气动参数的辨识结果[16]。而BP神经网络具有逼近任意非线性函数的功能,其学习算法属于全局逼近算法,具有较强的泛化能力,可以用于气动参数的辨识。
在德国RLV Phoenix飞行器研究[17]中发现,对真实气动数据与标称气动数据的偏差建模,并将其用于气动参数的修正,将简化气动参数修正过程,避免上述问题的发生。
本文提出的基于机器学习的气动参数智能修正方法,利用BP神经网络对气动数据的偏差模型进行拟合,根据拟合后的神经网络以及标称气动表,即可得到修正后的气动表,并且可以进一步得到任意状态的气动参数,实现离线对网络模型进行训练,并利用历史飞行数据进行模型修正的目的。在本文的第四部分,针对公开的CAV(Common Aero Vehicle)系统的气动参数进行了辨识,验证了方法的有效性。
使用公开的CAV系统的标称飞行气动参数表和纵向飞行的弹道[18]作为研究对象。本项目使用的CAV飞行器为类似美国HTV-2高超声速飞行器的升力体气动外形,外形具体见图1。
此CAV飞行器只在尾部有两个水平可控舵面,依靠同步偏转实现升降舵偏,利用差动偏转进行飞行器的滚转控制,并无方向舵。其纵向运动模型为[19]:
(1)
式中:m为飞行器的质量,m为地球引力常量,Jz为飞行器绕弹体系 z 轴的转动惯量,V为飞行器的速度,H为飞行高度,α、q、wz分别为攻角、航迹角和俯仰角速率,T为发动机推力;L、D分别为飞行器所受升力和阻力、推力,Mz为俯仰力矩,且有:
(2)
式中:CL、CD和Cm分别为升力系数、阻力系数和俯仰力矩系数及偏航力矩系数,ρ为该垂直高度下的大气密度,S为飞行器的横截面积,bA飞行器平均气动弦长,S和bA可以认为是常数。
气动系数函数可表示为:
[CL,CD,Cm]=f(H,Ma,α,δe)
(3)
式中:Ma为马赫数,δe为升降舵偏。
针对弹道数据,求取气动参数CL、CD和Cm。
为了求取气动参数,对真实气动表和标称气动表间的偏差进行建模:
C真实=C标称+E
(4)
式中:E代表真实气动表和标称气动表间的偏差。对偏差进行建模时,偏差模型的阶数可由经验确定或在相关文献中查找。
可以定义修正后的气动数据表与标称气动表之间的偏差函数为:
Δ(H,Ma,α,δe)=
f修正(H,Ma,α,δe)-f标称(H,Ma,α,δe)
(5)
偏差模型拟合修正法就是将拟合气动数据表,改为拟合这个偏差函数。我们选取偏差模型为:
Δ(H,Ma,α,δe)=a1+a2H+a3Ma+a4α+a5δe
(6)
修正后的气动数据表为标称气动表加上使用偏差模型计算出的偏差,即:
f修正(H,Ma,α,δe)=
(7)
BP神经网络法是一种被广泛使用的经典非线性系统辨识方法也是最常用最流行最成熟的人工神经网络之一。在网络中,各神经元接受上一级输入,输出到下一级,在理论上可以逼近任意连续非线性函数。BP网络是一种2层或2层以上的阶层型神经网络,即输入层、隐含层(也称中间层)和输出层,其原理和过程如图2所示[19]。
图2 BP神经网络结构
BP算法的主要思想是把学习过程分为信号的正向传播与误差的反向传播2个阶段。在正向传播阶段,输入信息从输入层经隐含层传向输出层,在输出端产生输出信号。在信号的向前传递过程中网络的权值固定不变,每一层神经元的状态只影响下一层神经元的状态。如果在输出层不能得到期望的输出,则转入误差信号反向传播。在反向传播阶段,未能满足精度要求的误差信号由输出端开始,以某种方式逐层向前传播,并将误差分摊给各层的所有单元,依据误差信号动态地调整各单元层的连接权重。通过周而复始的正向传播与反向调节,神经元间的权值得到不断修正。当输出信号的误差满足精度要求时,停止学习。
气动表的非线性函数关系可能非常复杂,使用神经网络模型对其进行拟合可以得到较好的效果。
本文的修正算法思路为:为根据式(5)计算得到偏差函数,利用神经网络对偏差函数进行拟合,偏差模型为式(6)的形式,然后根据拟合得到的偏差模型神经网络以及标称气动表,即可得到修正后的气动表。
该算法的示意图如图3 所示。
图3 基于BP神经网络的气动参数修正算法示意图
基于BP神经网络的气动表修正算法的设计流程如下:
步骤1:偏差函数的构建。
利用弹道气动数据以及标称气动表数据,根据式(5)构建偏差函数。
步骤2:BP神经网络构建。
根据拟合非线性函数特点确定BP神经网络结构。本文研究对象的气动表非线性函数有4个输入参数:高度H,马赫数Ma,攻角α,升降舵偏δe;3个输出参数:升力系数CL,阻力系数CD,俯仰力矩系数Cm。
对于神经网络来说,隐含层的节点数过少,网络会欠拟合,即对数据的拟合程度不高,网络没有很好地捕捉到数据特征。节点数过多时,网络会过拟合。因此,为了确定神经网络隐含层的层数和节点数,做出如下的规定:
在单隐含层中,单层测试节点数的上限为75,在双隐含层中,遵循以下原则:
1) 第一隐含层节点数不小于第二隐含层节点数。
2) 第一隐含层和第二隐含层的节点数之和上限为60。
采用等间隔取样法,从节点数为5开始,以5为单位,进行单隐含层网络和双隐含层网络的测试。基于隐含层节点信息约束条件获取不同隐含层层数以及不同节点数下的均方误差(Mean squared error, MSE),并将其作为神经网络结构的选取指标,选择网络的超参数。MSE的值越大,表明网络的预测效果越差,因此可以将其当作网络结构的选取依据。
之后,根据不同气动参数所对应的每组结构,选择出不同气动参数所对应的MSE较小的几组神经网络结构作为最优神经网络结构集合,缩小最优神经网络结构的选取范围。
根据训练结果的MSE,对于气动参数CL,选择双层网络结构(20,15)作为最优网络结构;CD和Cm均选择双层网络结构(30,5)作为最优网络结构。(注:这些结构仅为取用等间隔采样法下的最优网络配置,并非在所有可能的网络下的最优网络配置,缩小间隔可以获取更准确的配置信息,但同时,计算量也会增大。)
步骤3:偏差模型神经网络训练。
利用多组弹道气动数据,对所构建的BP神经网络进行训练。为了避免训练过度拟合的问题,使用k-fold交叉验证的技术手段。把训练数据随机分成一定比例的训练集、验证集和测试集,采用交叉验证的方式训练k次,每次随机选数据进行训练,剩余的验证集作为验证,边训练,边验证,从而找出最优解,得到偏差模型神经网络。取k=7。
图4 k-fold交叉验证示意图
步骤4:修正后气动表构建
根据标称气动表以及拟合得到的偏差模型神经网络,构建修正后的气动表。
根据得到的修正后的气动表,可以进一步计算出气动参数。
为了验证所提方法的有效性,针对CAV系统的标称飞行气动参数表和纵向飞行的弹道数据,使用本文的修正方法采用MATLAB R2017b中的神经网络工具箱Neural Network Toolbox 11.0中的Neural Net Fitting对其气动表进行了修正。试验中,选取风洞试验得到的标称气动参数,利用量测弹道数据求解得到的气动参数作为真实气动参数,得到气动偏差数据,利用插值生成1890组偏差气动数据,用于训练修正神经网络。
本文中BP神经网络隐含层的非线性环节选用“Sigmoid”非线性函数,输出层的神经元类型为线性输出神经元。本算法采用k-fold交叉验证法,选取70%的训练数据作为训练集,验证集和测试集各占15%的数据量。在训练前对训练数据进行归一化处理。反向传播的训练算法采用Levenberg-Marquardt反向传播算法。损失函数为均方误差(MSE)准则。
(8)
基于BP神经网络的气动表修正方法的气动参数修正结果见表1。
表1 算法的修正结果
其中俯仰力矩相对误差率曲线如图5所示,横坐标为俯仰力矩大小。
图5 俯仰力矩系数相对误差率随俯仰力矩系数变化
由表1可以看到,对于升力系数来说,该算法的最大误差率和平均误差率均小于1%;对于阻力系数来说,该算法的最大误差率和平均误差率均小于0.2%,取得了优良的修正效果。而对俯仰力矩系数来说,其最大误差率和平均误差率稍大,分别达到了2.955%和2.333%。根据图5分析可知,俯仰力矩系数本身的数量级较小,个别数据近似为0,所以误差率较大,但平均误差率均在3%以内,仍取得了良好的修正效果。
基于BP神经网络的气动表修正方法可以得到修正后的气动表,利用修正后的气动表,可以进一步得到修正后的弹道、俯仰角、俯仰角速度以及攻角曲线,将其与修正前以及真实的曲线进行对比,绘制如图6~9所示。
图6 弹道曲线对比图
图7 俯仰角曲线对比图
图8 俯仰角速度曲线对比图
图9 攻角随时间变化曲线对比图
根据图6可知,修正后的弹道飞行距离误差由16%降到小于3%;同样的,根据图7~9,可以看到,经过本论文的方法修正,修正后曲线与真实曲线的误差较小,证明了本论文方法的有效性。
将传统方法最小二乘方法与人工神经网络方法修正结果比较,以气动参数CL为例,假设CL=CL0+CLαα+CLδδ+CLωzωz,待辨识参数为θ={CLα,CLδ,CLωz,CL0},设:
(9)
用最小二乘辨识算法θ=(φTφ)-1φTCL得出:θ={0.116891747195653,-0.179589910444440,
-0.196493513367346,0.287336006156336}.代入待修正的气动参数,得到其修正平均相对误差为3.475%,远大于人工神经网络修正平均相对误差0.712%。
弹道数据对气动参数修正相对误差的影响如图10所示。
图10 弹道数量(数据量)对修正CL平均相对误差的影响
从图中可以看出,以气动参数CL为例,随着弹道数量的增多,修正误差越小。即数据量的增大,修正CL的平均相对误差是逐渐减少的。说明随着飞行数据的增多,气动数据修正得更精确,往后的发射就更精准。
提出了一种基于机器学习的气动参数智能修正方法,利用弹道数据和标称数据,拟合出较为准确的偏差模型网络,结合标称气动表得到修正后的气动参数。另外,结合公开的CAV纵向气动数据,计算了基于机器学习的气动参数智能修正方法的修正结果,验证了方法的有效性。该方法充分挖掘已有飞行试验数据中的气动参数信息,对气动参数表进行修正,得到较为准确的气动模型,并随着弹道数据量增多,气动修正精度越高,发射一发比一发更准确,在工程上具有实用价值。