基于自适应Backstepping的飞机重心变化稳定控制律设计
2019-12-02
(西北工业大学 自动化学院, 西安 710072)
0 引言
飞机在飞行过程中,由于燃油消耗、武器投掷等因素影响,机体的重心和重量都会随之发生变化。其变化程度直接影响到所设计控制律的控制性能,这一变化轻则使得飞机飞行品质下降,重则使得飞机坠毁。例如,2013年美军波音747货机因军车没有固定好,使得重心改变,最终导致飞机坠毁;2010年,刚果飞机一架A330飞机因客舱出现鳄鱼导致人员恐慌,最终飞机因失去平衡而坠毁。从以上空难实例能看出,飞机重心的变化对飞机飞行影响极为严重,因此要求控制工作者在设计飞机飞行控制律的过程中必须要考虑重心变化对飞机的影响。飞机在飞行时很难实时测量出飞机重心的变化,因此,飞机重心变化带给飞机的不利影响通常情况下是由所设计控制律的鲁棒性和自适应能力来克服,可以通过提高控制律的鲁棒性来进一步减小飞机在飞行过程中重心对飞机造成的影响。
Backstepping是近年来发展起来的处理飞机非线性控制律设计的方法,可以很好进行飞机参数不确定条件下的自适应控制。其控制思想是采用代数运算选择反馈函数的方法来用期望的动态去消除系统中不期望的动态。由于Backstepping方法采用代数求逆的方式来消除模型中不期望动态,因此需要提前获取被控对象精确的数学模型,针对飞机重心变化对模型参数的影响,需要原有Backstepping控制方法具有鲁棒性或者自适应能力,使得所设计的控制器达到期望性能的同时降低控制器对飞机模型的依赖。文献[1-3]介绍了Backstepping在无人机上的应用;文献[4]介绍了带神经网络Backstepping的控制方法在编队飞行中的应用;文献[5]介绍了自适应Backstepping在带推力矢量发动机的F16模型上的应用;文献[6]利用自适应增量Backstepping通过消除对模型的依赖,从而解决高性能飞机上的不确定性问题;文献[7]介绍了基于F18飞机的Backstepping控制方法的鲁棒控制器设计,主要为使用自适应Backstepping设计控制律,然后使用鲁棒控制分配方法进行解算,并对比了鲁棒控制分配与最小二乘控制分配。文献[8]介绍了自适应Backstepping在纵向通道的应用。
考虑到飞机在飞行过程中燃油消耗、武器投掷等因素对飞机重心的影响,本文主要在Backstepping控制的基础上,结合自适应控制方法的思想,针对重心变化对飞机产生的建模误差和干扰,完成自适应Backstepping控制律的设计,从而提高飞机飞行控制律的自适应能力。
1 考虑重心变化的F16飞机模型
飞机角速率回路动力学模型如下所示:
(1)
M=Ma+Mc
N=Na+Nc
(2)
(3)
其中:
(4)
式中,α、β分别为迎角、侧滑角,CD、CY、CL分别为阻力系数、侧力系数和升力系数,CT、CC、CN分别为气动力在机体坐标轴系下沿x、y、z轴上的分力系数。
对于F16飞机,其纵向通道俯仰力矩M无法写成仿射形式,例如Cm=f(α,β,δe),无法写成Cm=f(α,β)δe,针对这类问题,本文使用牛顿迭代法来避开原本需要的仿射形式。
(5)
而对于纵向通道,用下式表示:
(6)
设gδe(δe)为:
gδe(δe)=Cm+Cz(xcgr-xcg)
(7)
u=[gδe(δe),δa,δr]T
(8)
可以将(1)改成成下面形式:
(9)
其中:
x=[p,q,r]T
(10)
u=[gδe(δe),δa,δr]T
(11)
f2(x)=
(12)
(13)
当飞机重量或者重心发生变化的时候,影响到飞机的气动力矩系数,可以在控制律设计中通过自适应估计完成对参数扰动的消除。
2 自适应Backstepping控制律设计
Backstepping方法是一种通过Lyapunov稳定性理论反推出控制律的一种方法。该方法在非线性系统中有着独特的优势,能够保证系统的稳定性,同时系统的性能也十分优秀。但缺点是,第一,backstepping方法需要知道被控对象的精确的运动模型;第二backstepping在通常情况下需要系统可以写成仿射形式。本文通过设计了系统建模误差的自适应律,同时使用牛顿迭代法求解控制律来规避了上述的两个缺点。
常规Backstepping控制律对模型的精度有比较高的要求。然而实际情况中,重量或者重心位置变化时会产生偏差,这些偏差累积起来可能会对飞机模型产生较大的偏差,进而会影响到系统的动态性能,甚至导致系统发散。
自适应Backstepping控制律在设计过程中,就已经考虑到了系统模型的偏差,通过自适应律对这些偏差进行估计,并修正控制律,以达到减小这些建模误差带来的影响。
2.1 控制律设计
首先由重心位置变化引起的模型的不确定误差对原模型(9)进行修正得:
(14)
其中:δ(t)为各个干扰和建模误差的总和,包含重心变化导致的模型不确定引起的误差和外界干扰等。
首先可设:
(15)
其中:xref为欧拉角速率的指令信号,则可以设Lyapunov函数为:
(16)
则可以看出该Lyapunov函数满足V≥0,两边求导得:
(17)
将(14)带入上式得:
(18)
要想系统稳定,则需要使Lyapunov函数的导数小于0,则可以设K为对角阵,且对角线上的每个元素都大于0,使得下式成立:
(19)
(20)
2.2 自适应律设计
(21)
(22)
其中:Γ为3×3对角阵,且各元素大于零,为自适应律增益系数,Γ每个元素越大,相应通道的自适应律跟踪得越快。
将(22)对时间求导得:
(23)
(24)
通过前面控制律和自适应律设计过程,可以总结成下面框图。
图1 角速率自适应Backstepping控制结构框图
2.3 指令滤波器
由(20)可知控制律中有指令信号的导数这一项。在指令的导数在某时刻很大时,比如阶跃信号,会导致此时的控制律解算溢出,进而影响系统的稳定性。因此通常在指令信号后加一个临界阻尼的二阶滤波器。这里我们可以取阻尼比为1,无阻尼自然频率为5 rad/s,滤波器传递函数为:
(25)
3 基于牛顿迭代法的纵向力矩解算
对于解一元函数的数值解的方法有牛顿迭代法,割线法[9],二分法等,其中这些方法有着各自的优势和局限性。对于割线法,在一定程度上可视为牛顿迭代的弱化版,收敛条件和牛顿法相同,但收敛速度会比牛顿法要弱;牛顿法在收敛速度上比其他方法更快,在精度上,比重新对气动插值的精度更高。牛顿法在解算过程中基本上一到两次迭代就能够达到精度要求,而且牛顿法中导数可以用差分近似代替,因此运算量较小。
由式(8)和式(20)可以看出,在滚转和偏航通道上,控制律解算出的结果是舵面输入;在俯仰通道上,控制律解算的结果还不是最终的舵面输入,而是关于升降舵输入δe的一个函数gδe(δe),其定义由(7)给出。因此需要解一元方程,求出δe。下面给出牛顿迭代法的算法过程。
首先直接给出牛顿迭代法的基本公式:
(26)
因为牛顿迭代法是求解f(x)的零解,因此设f(x)=-u(1)+gδe(δe),自变量x为δe。
1)给定迭代初值δe0,即飞机上一时刻升降舵偏转角度。根据(7)中对gδe(δe)的定义,设f(δe)=-u(1)+Cm+Cz(xcgr-xcg),并计算出f(δe0)。
2)判断f(δei)<ε,i=0,1,…是否成立,其中ε表示精度,比如0.000 000 1。如果不等式成立,则ui为所得解,如果不成立,进行3)。
4 仿真验证
仿真验证中,飞机高度为3 000 m,速度为150 m/s,给到的每个角速率指令信号具体如下:
(27)
其中:ph=3,pl=-3,qh=3,ql=-3,rh=1,rl=-1,单位°/s,并且指令信号经过一个二阶的指令滤波器。取控制器增益K=diag(10,10,10),自适应律增益为Γ=diag(20,20,20),仿真结果如下。
4.1 正常条件下仿真结果
在正常条件下仿真的重心位置保持不变,仿真结果如图2~5。
图2 正常情况下常规Backstepping与自适应Backstepping滚转角速率比较
图3 正常情况下常规Backstepping与自适应Backstepping俯仰角速率比较
图4 正常情况下常规Backstepping与自适应Backstepping偏航角速率比较
图5 正常情况下常规Backstepping与自适应Backstepping舵面输出比较
从仿真结果可以看出,在正常情况下,常规Backstepping与自适应Backstepping的动态性能性能和稳态性能都十分良好。两种控制律的舵面输出量也基本一致。
4.2 重心位置偏移仿真结果
4.2.1 重心突变时
对于特定的飞机,在飞行过程中会投掷弹药或空投等负载,这样会导致重心发生突变,在这一条件下,我们在t≥3时,将模型重心位置加一个阶跃信号,仿真结果如图6~9。
图6 重心突变时常规Backstepping与自适应Backstepping滚转角速率比较
图7 重心突变时常规Backstepping与自适应Backstepping俯仰角速率比较
图8 重心突变时常规Backstepping与自适应Backstepping偏航角速率比较
图9 重心突变时常规Backstepping与自适应Backstepping舵面输出比较
在重心突变时,仿真这里只改变重心纵向的位置,因此滚转通道影响较小,偏航通道有一定的影响,俯仰通道影响最大。
从仿真结果可看出,对于常规Backstepping,滚转角速率表现良好,而俯仰和偏航角速率已经不能稳定了;对于自适应Backstepping,滚转角速率性能更好,而且俯仰角速率和升降舵在重心刚变化时,会有一定的偏差,后面很快稳定下来。两种控制律解算的舵面输出量也存在一定的偏差。由此可得出结论:自适应backstepping在解算过程中考虑了建模误差,并实时估计这类误差,因此在模型发生突变时,能够在后面的解算中抵消这类干扰,使得系统稳定。
4.2.2 重心渐变时
在飞行过程中,油耗会导致重心有一个缓慢的变化过程[10],在这一过程中,我们在t≥3时,将模型重心位置加一个斜坡信号,仿真结果如图10~13。
图10 重心渐变时常规Backstepping与自适应Backstepping滚转角速率比较
图11 重心渐变时常规Backstepping与自适应Backstepping俯仰角速率比较
图12 重心渐变时常规Backstepping与自适应Backstepping偏航角速率比较
图13 重心渐变时常规Backstepping与自适应Backstepping舵面输出比较
在重心渐变时,仿真这里只改变重心纵向的位置,因此滚转通道影响较小,偏航通道有一定的影响,俯仰通道影响最大。
从仿真结果可看出,即使是重心变化是渐变过程,常规backstepping仍然会受到模型不准确带来的影响,而自适应backstepping中,三轴角速率都能很好的跟踪上指令信号。两种控制律的舵面输出也存在较大的差异。
由以上3种仿真可以得出结论:
1)常规backstepping在模型很精确时,有着很好的性能。但是模型不准确后,性能表现较差。
2)自适应backstepping不管是在理想情况下,还是有各种干扰情况下,性能表现都比常规方法更好。
5 结论
本文针对于重心变化对飞机模型的影响,设计了自适应Backstepping控制律。在解算的过程中,首先根据李雅普诺夫稳定性设计出控制律构型,同时对模型中的建模误差进行自适应估计;然后设计了指令滤波器来解决控制律中指令微分项的问题;最后由于系统方程在纵向为非仿射形式,本文使用牛顿迭代法求得其数值解。
从仿真结果可以看出,在通常情况下,自适应Backstepping和常规Backstepping的效果近乎一样,二者的仿真效果良好;在重心发生变化时,自适应Backstepping的优势明显。常规Backstepping在模型出错的情况下,俯仰和偏航通道都不稳定,自适应Backstepping则会实时估计建模误差,并对控制律进行补偿,使得结果能够很好的跟踪上模型误差并加以抵消,有很强的抗干扰能力。仿真结果表明自适应Backstepping具有良好的鲁棒性能[11]。