张梦典,高登巍,董诗萌,苗昊春
(西安现代控制技术研究所,陕西 西安 710065)
为了满足中近程导弹的适用范围广、精度高的作战任务需求,有必要对于在线规划弹道的方法进行研究。在线弹道规划,即在已知诸元信息的情况下,利用弹载计算机在线完成弹道的规划,得到满足各种约束的光滑弹道,使导弹按照在线计算的弹道飞行。与离线设计弹道的方法相比,在线规划方法一方面能够减小弹载计算机的存储需求,另一方面能够通过在线设计满足各种射程的任务需求,精度相比插值计算进一步提升。
目前,运动规划在机器人、飞行器、无人车等领域具有广泛的应用。其中,RRT[1]、A*算法[2-3]是路径规划中常用的搜索算法,随着应用场景复杂性的增加,满足微分约束的RRT*算法[4-5]、智能算法[6-7]等也得到了研究与应用。在轨迹规划中,多项式曲线[8-9]、样条曲线[10-12]经常被应用,以满足各种动力学约束。然而,这些方法在弹道规划中的应用较少,应用的可行性也未得到验证。
文中设计了一种在线弹道规划的方法,具体内容如下:1)根据少量离线设计的弹道,利用树形结构进行网格化存储,大幅减小存储量;2)用带约束的分段多项式曲线将网格化曲线还原为光滑弹道,获取控制指令的初值;3)根据控制指令的初值在线进行三自由度弹道的积分运算,并根据实际落点与期望落点的偏差,修正控制指令,重复上述步骤直至计算落点在目标点附近。利用MATLAB对提出的在线弹道规划方法进行仿真运算,验证了方法的可行性、快速性。
导弹在飞行过程中,在主动段发动机推力的作用显著,弹道的形式较为相似。文中将主要针对被动段的弹道进行设计。
对于中近程导弹而言,在被动段除了要考虑空气动力、引力、控制力之外,还需考虑科里奥利力(Coridis force)惯性力和离心惯性力的作用。为了保证描述时能更好地反映发射点和目标点的位置关系,导弹的位置用距发射点的地球弧线距离和海拔高度表示,包括发射方向上的弧线距离为d;海拔高度为h;侧向距离为z。此时导弹的三自由度运动方程可以描述为:
(1)
式中:m代表导弹质量;D,L,Z为导弹受到的气动力;GV为坐标系转换矩阵;g代表引力加速度;ωe代表地球自转角速度与导弹相对地心的角速度之和;r和v分别代表导弹的位置和速度。
文中针对中近程导弹的被动段展开在线弹道规划方法的设计,具体要求包括:1)导弹落点在目标附近;2)弹道平滑、连续且满足速度、加速度的连续;3)弹道满足微分约束以及攻角、侧滑角的范围约束。
在进行弹道在线规划需基于一定数量的离线设计的弹道展开。为了减小离线弹道带来的存储量,对弹道进行网格化,并利用树形结构对网格化后的弹道进行存储。分析表明,该存储方式可大幅减小数据存储量。
对弹道进行网格化时,针对原始弹道的射程和高度范围进行等间距划分。假设射程范围为[d1,dh],划分为nd个网格,高度范围为[h1,hh],划分为nh个网格。之后,对弹道上的每个点(di,hi)计算网格化后的标识符sd,i和sh,i,可表示为:
(2)
式中round(x)表示最接近x的整数,x的小数部分恰为0.5时取较大的数。
在网格化存储时,只对于标识符进行存储,因此,标识符完全相同且相邻的点可以看作一个点,只需存储一次。因此,网格化存储不仅减少了需要存储的点的数量,存储的数据类型也从浮点型变为整型,从而达到减小存储量的作用。
树形结构存储,则是借鉴了RRT算法生成的树形结构,进一步减小数据的存储量。RRT是一种路径规划的方法,在生成路径时采用树的结构形式,即:除根节点外,每个节点有且仅有一个父节点,且可以有多个子节点。RRT搜索的节点达到目标点附近后,从该节点开始,依次往前寻找父节点,由于每个节点的父节点唯一,因此可以得到一条从根节点到目标点附近的唯一确定的路径。
对于离线设计的弹道而言,当弹道的目标点相同时,弹道末端的形式非常接近。将网格化弹道转化为树形结构,具体步骤为:
1)根据弹道目标点的位置确定树的个数,每个目标点对应一棵树,目标点对应的网格化后的节点为这棵树的根节点;
2)对于每条网格化后的弹道,根据目标点找到其对应的树,分叉标志设置为0;
3)从根节点开始倒序存储弹道,每个节点的父节点为弹道上的后一个点。当分叉标志为0,且满足该节点在树中存在、树中父节点与自身父节点相同时,无需额外存储;否则,需将该节点确定为新节点,存储该节点及其父节点在树中的位置,并将分叉标志置为1。
通过上述步骤实现弹道的树形结构存储。树形结构一方面避免弹道重合度高的部分的重复存储,另一方面可在定位树的末节点后,通过查找父节点快速重建起网格化弹道。因此,树形结构可进一步减小存储量,且查找弹道时不存在大的计算量。
弹道网格化后,精度降低,且不满足连续性约束,无法用于计算控制指令。因此,需要将网格化后的弹道还原为光滑、连续、满足攻角约束的弹道。文中采用分段多项式对网格化弹道进行还原,将该问题转化为带约束的二次规划问题进行求解,得到高阶连续且满足约束的弹道,用于求取控制指令。
采用分段多项式,即将弹道分成多段对时间的参数不同的多项式。由于弹道是二维的,包含射程d和高度h,即需要对两个维度分别针对时间t进行分段,采用五阶多项式,第i段多项式的公式[9]为:
pi(t)=p0,i+p1,it+p2,it2+…+pn,itn
(3)
式中:p0,i,p1,it,…,pn,i为第i段多项式待确定的n+1个多项式系数。用二次规划的方式,将所有的多项式系数确定为待优化参数,将连续性条件、攻角约束等设置为等式约束和不等式约束,并根据需求设置目标,通过求解二次规划得到多项式系数。二次规划问题的基本形式[13]为:
(4)
式中:x为待求解变量;f(x)为目标函数,其中H和J分别代表二次目标项和线性目标项;Aeq和beq分别为矩阵和向量,组成等式约束;A和b分别为矩阵和向量,组成不等式约束。
该问题的等式约束包括:
1)初始点的位置、速度、加速度应与初始条件完全相同;
2)分段多项式所有连接点的位置、速度、加速度等的连续。
该问题的不等式约束包括:
1)弹道上每个点的位置(pd,i,ph,i)在由该点标识符确定的网格约束范围内,即:
(5)
2)弹道上每个点的加速度应在一定范围内,该范围与攻角的限制范围有关。
对于目标函数,可将其设置为分段多项式的n的导数的积分。例如,如果希望攻角的变化率较小,可将目标函数设置为多项式三阶导数的积分。
在利用二次规划形式完成对含约束的分段多项式弹道的问题描述后,求解二次规划问题,即可完成对分段多项式系数的求解。得到的分段多项式弹道在满足弹道平滑、连续的基础上,保证了高阶连续及攻角不超限。利用该多项式弹道,可计算出每个弹道点对应的攻角,给出可行、有效的控制指令。
由于离线的原始弹道是针对某一特定射程、海拔高度设计,如果实际飞行的条件没有覆盖到,采用设计的弹道无法使导弹命中目标,因此有必要对弹道进行在线调整,修正控制指令。在给出的控制指令的基础上,利用预测校正法,对弹道进行积分运算以预测弹道终点,并根据落点偏差修正控制指令,直至弹道落点能够到达目标点附近。
为了实现对控制指令的修正,再次通过二次规划问题进行求解。求解前的准备工作包括:
1)利用状态空间表示形式对导弹三自由度运动过程进行线性化描述,公式[14]为:
(6)
式中:A为系统矩阵;B为输入矩阵。
2)根据导弹动力学方程以及每个时刻的状态向量x(k)和控制向量u(k),对每个时刻状态空间表达式中的A(k)和B(k)进行推导。
3)利用每个时刻的A(k)和B(k),根据积分公式,建立起下个时刻的状态变量x(k+1)与当前时刻的x(k)、u(k)之间的关系[14]为:
x(k+1)=A1(k)x(k)+B1(k)u(k)
(7)
式中:A1(k)和B1(k)分别代表离散状态空间的系统矩阵和输入矩阵。
4)假设当前时刻的x(k)和u(k)分别产生大小为Δx(k)和Δu(k)的变化,当Δx(k)和Δu(k)较小时,下一时刻状态变量的变化近似为:
Δx(k+1)=A1(k)Δx(k)+B1(k)Δu(k)
(8)
记xn=[Δx(0)T,Δu(0)T,Δx(1)T,Δu(1)T,…,Δx(n-1)T,Δu(n-1)T,Δx(n)T]T,表示每个时刻状态向量和控制向量的变化量,将xn作为待优化参数,按照式(4)建立二次规划问题。
该问题的等式约束包括初始时刻状态向量固定,因此Δx(0)=0;不同时刻状态变量之间的关系,即式(8)。
该问题的不等式约束包括攻角、侧滑角变化的范围限制。
在设置目标函数时,为了使弹道终点在目标点附近,即希望Δx(n)尽可能接近期望的终端条件xf与x(n)的差,因此必须在目标函数中加入终端约束用于表示这两者的偏差,不同维度可采用不同权重。此外,如果期望弹道经过特定的点,可以在目标函数中加入航路点约束;如果希望向量中某一维度的变化较小,也可在H对角线对应位置上加入权重。
由于该二次规划问题将终端约束加入目标函数而非设置为约束,求解该二次规划问题只能使x(n)与xf更加接近。因此,如果这二者仍旧存在较大差距,需要在根据各个时刻的Δu计算得到的新的控制指令u的基础上,再次进行积分、修正控制指令的操作,完成多次迭代,直至弹道终点达到目标点附近。
在MATLAB平台上,对于设计的在线弹道规划的方法进行仿真验证。
采用弹道网格化与树形结构存储方法,对于离线设计的大量弹道进行存储。结果表明,树形结构的网格化弹道,存储时占用的空间约为原始弹道占用空间的4%,大大缓解了内存占用的问题。
将预计进行在线规划的发射点、目标点的条件设置如表1所示,进行在线弹道规划时所用到的离线基准弹道如表2所示。其中条件1、条件2采用基准弹道1,条件3、条件4采用基准弹道2,条件5、条件6采用基准弹道3。
表1 发射点、目标点条件设置Table 1 Conditions of launch points and target points
表2 基准弹道Table 2 Reference trajectories
利用存储的具有树形结构的网格化弹道,采用二次规划对分段多项式的基准弹道进行还原。还原后的弹道与离线设计的基准弹道的对比如图1所示。从图中可以看出,还原后的弹道在满足平滑、连续的基础上,与对应的基准弹道非常接近,较好地反映了原始弹道的形态。
图1 还原后弹道与基准弹道对比Fig.1 Comparison of restored trajectories and reference trajectories
利用还原得到的弹道,可以计算控制指令,并根据各个条件下弹道终点与目标点位置的差,建立二次规划问题,进行控制指令的修正,以完成弹道的在线优化。由于基准弹道的射程与期望射程具有一定的差距,一般需要多次迭代才能使弹道目标点附近。在MATLAB平台的仿真中,弹道的规划需用时间约为数十秒,且主要消耗在二次规划的求解过程。图2~图7为最终优化得到的不同条件下的弹道形式与攻角的变化情况。从图中可以看出,对于不同条件,控制指令的修正使攻角产生较大差距,弹道形式也发生较大变化,但都能到达对应的目标点附近,优化效果较好。
图2 条件1、条件2下优化后的弹道形式Fig.2 Optimized trajectories under condition 1 and condition 2
图3 条件1、条件2下优化后的攻角形式Fig.3 AOA after optimization under condition 1 and condition 2
图4 条件3、条件4下优化后的弹道形式Fig.4 Optimized trajectories under condition 3 and condition 4
图5 条件3、条件4下优化后的攻角形式Fig.5 AOA after optimization under condition 3 and condition 4
图6 条件5、条件6下优化后的弹道形式Fig.6 Optimized trajectories under condition 5 and condition 6
图7 条件5、条件6下优化后的攻角形式Fig.7 AOA after optimization under condition 5 and condition 6
文中设计了一种在线弹道规划的方法,以网格化、树形结构存储的离线设计的弹道为基础,通过构建并求解二次规划问题,利用分段多项式形式对弹道进行还原,并通过预测校正法,根据积分获得的弹道终点与目标点的偏差,并再次建立二次规划以求取控制量的修正量,利用多次迭代使弹道达到目标点附近。通过MATLAB平台上的仿真验证,得到如下结论:
1)树形结构存储的网格化弹道能够大大减小数据存储量;
2)分段多项式具有较强的拟合能力,对各种形式的弹道都有较好的拟合效果;
3)利用预测校正法,通过构建并求解二次规划问题,能够在满足攻角约束的情况下,获取平滑、具有高阶连续性的弹道,通过积分可进一步使弹道满足微分约束;
4)应用该方法时的计算量主要产生在二次规划问题的求解过程,且弹道终点与目标点越接近,求解需用时间越短。