飞行控制系统可视化仿真平台设计
2012-06-07陈力威
陈力威, 朱 凡, 刘 希, 杨 楠
(空军工程大学工程学院,西安 710038)
0 引言
现代飞机,尤其是战斗机,为了完成预定的任务和改善飞机的飞行品质,都在飞机上安装各种类型的飞行控制系统。飞机的动力学特性因为其所安装的飞控系统可能会发生彻底的改变,因此在飞行仿真时必须要考虑到飞控系统的动力学特性[1]。同时,提高仿真系统的通用性、执行效率、仿真建模易行性和系统可扩展性也具有重要意义。本文按照并行计算模型的思想[2]设计了仿真平台框架。首先从总体上设计了飞控系统的并行仿真结构,然后再将飞控系统分成发动机推力、升降舵、副翼和方向舵4个并行通道。这样可以充分利用多核处理器的优势,大大提高了仿真效率,经检验,仿真解算速度可以达到实时仿真的要求。最后利用视景仿真软件VegaPrime实现战场环境三维显示,并将其应用于飞机在预定航路飞行的实时显示过程中。
1 系统框架设计
依据提高运行效率和易于维护、扩展的原则,设计平台系统的总体框架结构如图1所示。
该平台主要包括飞行动力学仿真类、视景仿真类和Matlab后台服务3个部分。由图可见,应用多核编程技术,可以并行同步执行整个系统的仿真解算。本文通过OpenMP并行编程方法实现了飞行动力学系统和飞控系统的并行解算。
对于任何飞机来说,六自由度飞行动力学方程及飞行方位角、气动角、过载等飞行状态信息的解算都是相同的,为公共属性部分。而飞机气动力和力矩的解算、物理参数因机型而异,为私有属性部分。因此在共有属性和私有属性之间建立标准化接口,易于扩展各种机型模型。如图1所示,灰色标识的模块为公共属性部分,白色标识的模块为私有属性部分。
图1 仿真平台总体框架Fig.1 Framework of simulation platform
本文借鉴RTW实时仿真的单步推进机理建立飞行动力学通用仿真类框架。该类不包含发动机模型,只接收发动机推力和力矩。我们将发动机模型纳入飞行控制系统,这也是基于综合飞行控制系统的考虑。本文将气动参数的解算部分设计成该类的成员函数,解算得到气动力和力矩。因此只需要一个类就实现了飞行动力学系统模型的构建,这样就便于采用内存共享的方式实现模块间的通信。从而克服了传统通用飞行动力学类库模块因划分过细而导致接口复杂的问题,提高了仿真效率。用户只要按照接口标准,添加具体机型的气动力、力矩解算的成员函数,就可以很方便地扩展并实现各种机型的动力学解算。
飞行控制部分一般是复杂的高阶系统,且没有统一的格式。为了方便用户搭建或加载各种控制器,本文将飞行控制系统在Simulink中实现,利用其良好的可视化建模环境,方便了各种控制器的搭建或导入。借助Matlab并行计算工具箱的SPMD多线程并行计算方法在4个Matlab工作间并行解算飞控系统的发动机推力、升降舵、副翼和方向舵4个通道。
本文将OpenGL直接引入VegaPrime中,通过添加不同格式数字地图的读取成员函数,将数字地图转变成内部标准的地图格式存储,再在此基础上执行各种操作,最后将真实场景在屏幕上显示。
2 仿真平台软件开发的关键技术
飞行控制系统可视化仿真平台的软件部分主要包括:飞控系统仿真设计、静态航迹规划、动态航迹规划、OpenMP工作分区编码和SPMD多工作间并行解算方法等部分。静态航迹规划是指在预先已知突防地区地形地貌的基础上规划好的突防航迹,而动态航迹规划是指在突防过程中突然出现一个威胁目标(如高炮、雷达车等),实时地调整突防航迹。另外还包括了飞机的动力学模型、控制台软件、视景软件和操纵系统软件等,这些是构成仿真平台的基础软件模块,但不是本文的研究重点,将不再赘述。
2.1 飞控系统仿真设计
本文动力学仿真模型是单步推进的,完全可以用定时器驱动进行实时仿真。然而Simulink模型无法通过命令行来实现单步仿真。尽管通过Simulink命令行可以执行指定时间段的仿真,但仿真实际上还是从零时刻开始的,只是仅输出指定时间段的仿真结果。如果仅通过指定仿真时间段来仿真,每推进一步都要从头开始,这显然无法满足实时仿真的需要。由于Simulink命令行仿真能返回系统的内部状态,所以本文通过记录控制系统每次仿真结束时的内部状态作为下一次仿真的初始状态,将每次仿真的起始时刻都设为零,结束时刻和仿真步长都设为单步仿真推进步长,从而实现了Simulink仿真模型的单步推进。这样就完全可以使用定时器驱动控制器单步仿真,从而实现了整个系统的同步并行闭环仿真。以升降舵通道为例,单步推进Simulink仿真模型的伪代码如下:
2.2 基于改进A*算法的静态航迹规划
近年来,研究用于航迹规划的人工智能方法较多,其中包括无信息和有信息搜索算法、遗传算法[3]、粒子群算法[4]、神经网络算法[5]等。但后几种方法的计算原理一般复杂且计算量比较大,目前仅限于理论的研究。目前,研究人员对A*算法进行了很多改进。文献[6]采用一种称为稀疏A*搜索(SAS)的技术进行航迹规划,该算法结合路径约束有效地削减了搜索空间;文献[7]的LPA*(Lifelong Planning A*)是一种递增式搜索的A*算法;文献[8]提出了一种结合飞行器简化运动方程的A*算法。这些方法均在一定程度上提高了搜索效率。但通过改进算法流程和优化算法的数据结构,挖掘算法潜力,来用于工程实现的研究却并不多见。
2.2.1 改进 A*算法
设计了新的数据结构来管理OPEN表和CLOSED表,大大提高了A*系列算法的搜索效率。将A*算法中的OPEN表映射到CLOSED表中,设计了嵌套二叉树来管理CLOSED表,一方面提高了重复节点的查找效率,另一方面解决了A*系列算法并行搜索时维护CLOSED时存在的数据访问冲突问题,使得算法更加适用于并行多核编程。提出最小二叉树的方式管理OPEN表,克服了采用传统链表排序耗时,二叉堆数组容量有上界的缺点。
二叉树是一种很好的排序和索引应用模式。因为在建立二叉树的同时数据已经过初步的比较判断并依照二叉树的建立规则存放。规则如下:
1)第一个输入的数据作为此二叉树的树根;
2)其后的数据以回溯的方式与树根进行比较,小于树根的放置于左子树,大于树根的放置于右子树。
从上面的规则可以知道,左子树内的值一定小于树根,右子树内的值一定大于树根。因此在索引的时候只要从树根往下依次比较,比树根值小往左子树查找,反之则往右子树查找。这样的索引方式比顺序遍历查找的效率要高很多。
2.2.2 嵌套二叉树的CLOSED表
因为航路节点可以用(x,y,φ)来唯一标识,所以建立如图2所示的三层嵌套二叉树。顶层树以φ的大小为依据建立,记为φ_Tree。φ_Tree的每个单元内嵌一个以x大小为依据建立的子树x_Tree。x_Tree每个单元再内嵌一个以y大小为依据建立的子树y_Tree。
图2 CLOSED表结构图Fig.2 The structure graphics of CLOSED table
这样在查找某待扩展节点是否是重复节点的时候,首先根据节点φ值索引φ_Tree,如果φ_Tree中存在对应φ的单元,再依据节点的x值,索引该单元内嵌的x_Tree,同理,再索引y_Tree直到找到节点或无法找到返回。这样,通过有序的嵌套二叉树管理,大大提高了索引效率。
在并行计算中,3个方向同时扩展时,扩展节点的当前航向φ显然是不同的。因此,只要在初始化时建立所有方向的φ_Tree,并将其内嵌的x_Tree置空,这样在同时压入3个方向的新的节点时,不会存在数据竞争和访问冲突。这样就可以免去并行计算的互斥锁机制,充分发挥并行计算的效能。
2.2.3 最小二叉树的OPEN表
OPEN表可以采用以节点当前代价值g的大小为依据建立二叉树,并在二叉树内设置一个指向最左子树的指针Pleftest。由二叉树的基本思想,最左子树节点的代价值最小,即为最优待扩展节点。因此在每一次压入新的节点和弹出最左子树的节点作为最优待扩展节点时,只要维护Pleftest,保证其始终指向最左子树,即指向具有最小代价值g的节点,在索引最佳扩展节点的时候,通过Pleftest就可以直接索引到最佳待扩展节点。以这种方式维护OPEN表,解决了传统的数组最小二叉堆方式维护OPEN表容量有界和单向链表索引效率低下的缺点。虽然这样仍然没有解决并行计算访问OPEN表数据时的冲突和竞争问题,但是经过实际检验,并行计算时同时操纵OPEN表的机会很少,采用互锁机制解决访问冲突的问题,基本不会影响搜索速度。
2.2.4 仿真算例
实验使用10800×14400的真实数字地图和模拟生成的威胁数据。本文在配置处理器为英特尔酷睿4核处理器 Q6600、主频2.4 GHz、内存2 G的 Windows操作系统的计算机上进行仿真。规划算法在Visual Studio 2008编程环境下采用OpenMP多线程编程技术实现。在如表1所示仿真参数下,威胁信息如图,分别用普通稀疏A*算法和本文提出的改进算法进行规划仿真搜索,不考虑后续航路优化和删减,得到了如图3所示的规划结果,其耗时对比见表2。
图3 静态航迹规划Fig.3 Static flight path planning
由仿真结果可知,改进A*算法的流程和数据结构后搜索效率提高了8~10倍。并行搜索时相对搜索效率更高。
表1 仿真参数Table 1 Simulation parameter
表2 搜索耗时对比Table 2 The comparison of searching time
2.3 基于电荷法的动态航迹规划
动态航迹优化就是飞机在任务执行阶段,以参考飞行航线为基准,根据实时威胁,动态计算飞行航迹,修正参考航线,实现威胁的有效回避[9]。本文使用电荷法来处理突发威胁:飞行器探测到新的威胁信息后,如果发现还没有进入该威胁工作区间,则及早地改变参考航线;如果发现已经进入该威胁范围之中,规划的航迹要能够使飞行器最快撤离危险区。采用电荷法处理突发威胁的思想来源于库仑定律,即同性电荷之间相互排斥。结合飞行器的飞行性能约束条件,确定下一航路点的位置,从而满足飞行过程中的安全要求。利用电荷法处理突发情况有以下两种典型情况:
1)飞行器探测到威胁时尚未进入该威胁的工作区间,并且有足够的时间和距离使得飞行器能够平稳地回避威胁,由于飞行器距离威胁区还有一定的距离,进行实时航迹规划以改变参考航线,回避该威胁;
2)飞行器探测到威胁时已经进入该威胁的工作区间,或者由于时间短或距离近使得飞行器无法及时调整飞离威胁。此时需要通过调节规划控制量来限定轨迹树的生成方向:根据父节点来选定相应的控制量,使生成的下一节点尽量远离威胁区域[10];并对生成的新节点,判断其位置是否已经远离威胁区域;一旦飞出威胁区域,则改用第一种处理方法生成新的节点,替换原有参考航迹节点。动态规划航迹的三维图形如图4所示。
应该指出的是,在静态和动态航迹规划中,利用上述方法生成的只是水平参考航线。在应用中还需根据地形状况和飞行器机动性能限制,利用地形跟随技术中比较成熟的TF算法产生垂直航迹 。当然,为了飞行安全,还需在生成的垂直航迹基础上加上安全间隙高度。
图4 动态航迹规划Fig.4 Dynamic flight path planning
2.4 OpenMP工作分区编码
OpenMP是一种面向共享内存以及分布式共享内存的多处理器多线程并行编程语言,由一些具有国际影响力的大规模软件和硬件厂商共同定义的标准。由于Microsoft VisualStudio.Net2008已经支持OpenMP的编程,这给我们带来了很大的方便。下面是本文工作分区的伪代码实现。
2.5 SPMD多工作间并行解算方法
Matlab并行计算工具箱提供了SPMD并行计算工具,它可以先将Matlab初始化成多个工作间,在不同的工作间执行不同的任务,然后将结果返回到主工作间中。具体到本文,我们将Matlab区分成4个工作间,分别解算飞控系统的发动机推力、升降舵、副翼和方向舵4个通道。其伪代码为
3 软件界面及视景仿真实现
该平台可以在二维数字地图上用鼠标指定飞行初始位置和航路,如图5所示。
图5 二维航路指定Fig.5 Two-dimensional path designation
实现导航仿真飞行。运行,开始仿真,点击平台主界面的三维动画显示按钮可以看到飞机实时飞行状态三维视景显示,如图6所示。
图6 三维动画显示Fig.6 Three-dimensional animation display
该平台Matlab后台Simulink控制器模型可以按照接口标准,直接搭建或加载。由于控制器较为复杂,本文对各控制模态进行了封装,其中纵向俯仰姿态保持控制模态界面,如图7所示。
图7 纵向俯仰姿态保持控制模态Fig.7 The remain pitch elevator of control mode
根据变量约定,可以在Matlab命令行窗口用画图命令方便画出各种飞行仿真曲线图。以等高飞行控制为例,如图8所示为高度、速度、迎角和侧滑角随时间变化的曲线。
图8 仿真结果曲线Fig.8 The simulation result
4 结论
本文根据多核编程的思想设计了飞行控制系统仿真平台框架;借鉴RTW单步仿真推进的仿真机理,设计了通用飞行动力学解算类框架;通过Matlab引擎,实现了飞控系统Simulink环境可视化建模及其与C++编程实现的飞行动力学仿真的同步通信;该平台通过三维视景仿真、数字和曲线的方式显示仿真结果,便于科学研究和理论分析。使用者可以很方便地在该平台上进行功能扩展和仿真分析。使用户更加直观地了解飞机在预定航路上的飞行情况,协助完成飞行方案的设计、验证、论证、筛选和确定。本仿真平台已经实现了“Beaver”多模态自动驾驶仪的实时仿真验证。在以后的研究中,将进一步考虑加入各种干扰,以及数字地图纹理渲染技术,增强战场环境真实感。
[1]商重阳,刘艳.基于面向对象技术的飞行控制系统仿真框架[J].系统仿真学报,2006,18(2):472-474.
[2]许立军,鲜勇,杨其,等.基于A*算法的多线程并行航迹规划方法研究[J].电光与控制,2009,16(9):33-36.
[3]何珮,屈香菊.应用自适应遗传算法进行参考航迹规划[J].航空学报,2003,24(6):499-502.
[4]唐强,王建元,朱志强,等.基于粒子群优化的三维突防航迹规划仿真研究[J].系统仿真学报,2004,16(9):2033-2036.
[5]YANG S X.System,Man,and Cybernetics[C]//IEEE Internatronal Conference,2002:515-520.
[6]SZCZERBA R J,GALKOWSKI P,GLICKTEIN I S,et al.Robust algorithm for real-time route planning[J].IEEE Transactions on Aerospace and Electronic System,2000,36(3):869-878.
[7]KOENIG S,LIKHCHEV M,FURCY D.Lifelong planning A*[J].Artificial Intelligence,2004,155(3):93-146.
[8]李季,孙秀霞.基于改进A-star算法的无人机航迹规划算法研究[J].兵工学报,2008,29(7):788-792.
[9]欧杰,曹祺,刘超.低空突防可视化仿真平台开发[J].计算机测量与控制,2010,18(7):1572-1575.
[10]ASSEO S J.Terrain following terrain avoidance path optimization using the method of steepest descent[C]//NAECON,1988(3):1128-1136.