面向对象与应用框架的飞行仿真软件开发方法

2013-12-01 02:12李小民郑宗贵
探测与控制学报 2013年4期
关键词:面向对象框架对象

云 超,李小民,郑宗贵,刘 品

(1.解放军军械工程学院无人机工程系,河北 石家庄 050003;2.第二炮兵研究院,北京 100085;3.西安军代局驻203所军代室,陕西 西安 710065)

0 引言

无人机(Unmanned Aerial Vehicles)是一种由动力驱动、机上无人驾驶、可重复使用的航空器[1]。飞行模拟训练器具有节能、经济、安全、不受场地和气象条件的限制、缩短训练周期、提高训练效率并且可以节省大量的经费等突出优点,尤其是一些真实飞机难以实现的危险训练科目以及不易处理的飞行故障,在飞行模拟器中均可实现[2]。无人机已经广泛地应用于各种军事行动并已经装备部队,为减少平时训练时频繁实飞装备带来的风险和不必要的损失,可以采用飞行仿真系统(飞行模拟训练器)替代真实装备进行训练,飞行仿真系统的逼真度直接影响模拟训练的效果。

飞行仿真软件作为整个飞行仿真系统的核心部分,其设计优劣直接影响到仿真系统的模拟真实程度。飞行仿真软件主要涉及数学建模和软件编程的工作。目前,传统的飞行仿真软件的开发方法在很大程度上已不能适应于复杂软件系统的开发,从而难以使软件的质量到以保证。为解决传统面向过程的飞行仿真软件在开发过程中面临的开发效率低、可重复利用率差、可维护性不高等缺点,需要将新的开发方法引入到飞行仿真软件的开发过程中[2-3]。

飞行仿真系统由多个子系统组成。各个子系统之间还存在着复杂的关联关系。因此,构建一个合理、高效的仿真平台显得更为重要。传统的面向过程的飞行仿真软件的开发则缺少统一的标准,开发仿真软件和使用仿真软件的不是相同的人,即一部分人开发飞行仿真软件提供给另一部分人使用。由于飞行仿真系统在硬件、软件和接口上的差别,需要仿真开发人员从头去消化理解源程序,并依据新的需求与环境重新设计仿真软件,这样会耗费大量的精力和时间。因此,需要采用新方法、新手段研究飞行仿真系统的组成结构与关联关系,为飞行仿真软件的开发和实现提供技术支撑。

1 飞行仿真软件开发方式

1.1 面向过程的软件开发方法

传统飞行仿真软件的开发都是采用面向过程的汇编语言、Fortran语言和C语言,仿真软件主要运行在专用的计算机上,这些软件虽然简练,但其维护性和可扩展性缺很差。随着飞机系统的复杂度越来越高,飞行仿真软件的复杂度也越来越高。例如,一台D级的模拟训练器其内部的软件代码就有几百万行,传统的软件开发方法编写这样的软件已变得越来越困难。要解决此问题,就需要对飞行仿真软件的构造及实现方法进行深入的研究。

FlightGear是开放源代码的飞行仿真游戏,它为飞行仿真软件提供了先进的飞行模拟框架。Eric F.Sorton等人[4]使用FlightGear进行无人机的研究;LaSRS++[5-6]采用C++开发的面向对象的飞行仿真框架,但由于其源代码不对外公开,所以无法进行研究和借鉴。JSBSim[7]是FlightGear内部的动力学仿真模块,它本身也可以单独运行。JSBSim是由Jon Berndt进行维护并通过互联网向全世界分发。

1.2 面向对象技术

面向对象技术是当今飞行仿真软件开发领域中最引人注意的研究方向之一,面向对象技术是当前开发大型、复杂软件的主流技术,随着应用的广泛和深入,其也在不断地完善。面向对象建模运用人类习惯的思维方式、认知方法对复杂系统进行面向对象的分析和模块化的分解,识别出问题域内的实体,提取它们之间的关系,建立问题域的精确、可理解的描述模型,从而达到复杂问题简单化、大型系统精细化的目的。

面向对象建模可以把客观世界的实体以及实体彼此间的关系映射为封装了自己的静态特征和动态行为的对象集合以及对象之间的关系集合,使用规定的一组运行规律和行为准则实现对象状态的动态改变,通过不同对象之间的交互协作从而实现模拟系统的所有功能。面向对象技术与应用框架技术为大型、复杂系统的分析与建模提供了可靠的技术支持和有效的工具支撑。它能够为某一特定领域提供基本功能的一组类,应用系统通过对这组类的使用、修改和扩充,从而达到框架重用的目的。

1.3 应用框架技术

应用框架技术是为某一特定领域提供基本功能的一组类,应用系统通过对这组类的使用、修改和扩充达到应用框架的重用。应用框架技术是以面向对象技术为基础,它是以软件复用为核心,用一组抽象类及其之间的相互作用关系来表达应用软件的体系结构的新型框架复用技术。应用框架是对某一特定应用领域的应用系统的整体或部分的可重用设计,它给出了描述应用系统在总体构造上公共或相似的功能,进而在具体的应用中依据实际需求进行功能定制或扩展。应用框架是一个能够被开发人员实例化的系统构架。基于框架的系统开发,不仅可以充分利用已有的资源和经验,缩短开发周期,提高开发质量,而且能够保证系统体系结构的统一、稳定、清晰,便于理解,扩展方便、易于维护,这正是大型、复杂系统开发过程中需要重点解决的问题。面向对象应用框架采用面向对象的风格规定应用软件的体系结构。

2 无人机飞行仿真软件开发方法

飞行模拟训练系统(也称飞行仿真系统)是一个复杂的仿真系统,它通常包含大量的数学模型,仿真模型必须能尽可能反应系统的本质特性,即反应飞行器飞行运动的本质特性,在此基础上再考虑系统的完备性。所以飞行仿真系统中完备的仿真模型不可能一步建立,它应该是一个不断改进与深入的过程。这就要求模型的可重配置、可变更。使用程序语言表达数学模型并实现仿真功能是仿真系统实现的关键。以往模拟训练系统中的仿真软件一般都是面向过程的,这对仿真软件的开发和维护提出了更高的要求。在具体建模时,应采用条理清晰的模块化、层次化的设计方法。合理的划分系统的组成模块,分别进行建模。同时还应建立共性的通用模型,并为各个子系统调用。

飞行仿真系统包含飞行器系统模型和机载设备仿真模型,这些系统模型必须在实时仿真环境下运行,因此被统称为实时仿真模型。实时仿真模型是模拟训练系统的核心,它的设计优劣直接决定着整个实时仿真系统的性能,实时飞行仿真软件的构建重点研究两方面的内容:一方面是仿真模型类属结构的设计,类层次结构的合理化是实时仿真系统能否具有重用性、扩展性的关键;另一方面是仿真模型的运行机制,合理的运行机制能够有效的组织管理使整个仿真系统实时、高效的运行[8-9]。

2.1 面向对象的飞行仿真软件类库结构

面向对象技术具有抽象、封装、继承和多态等特点,因而可以使面向对象技术开发的仿真软件具有更优良的模块化、可重用性、灵活性和可维护性等。整个系统在飞行仿真软件设计采用面向对象的模块化、层次化的思想,利用C++语言中类的封装性将每个功能模块封装成一个类,各个类在的实现形式如图1所示。将每个模块需要保护的功能函数和变量声明为内部函数和变量,将输入输出端口函数声名为公共函数,作为和其他类通信的端口。

它包含的主要模块类:运动方程模块(CFlyDynFunc);动力系统模块(或称发动机系统模块)(CUAVEngine);气动力/力矩系数模块:该模块包括六个类,阻力系数类(CplaneCx)、升力系数类(CPlaneCy)、侧力系数类(CPlaneCz)、横滚力矩系数类(CPlaneMx)、偏航力矩系数类(CPlaneMy)和俯仰力矩系数类(CPlaneMz);质量和转动惯量模块类 (CUAVMandI);标 准 大 气 模 块 类 (CstandardAir)。

图1 无人机仿真软件中各个模型类Fig.1 Model type of UAV simulation software

2.2 应用框架的飞行仿真软件运行机制

无人机飞行仿真软件中包含许多仿真模型,每个模型又是由位于不同等级和层次的多个类组成,通过众多类对象的实例化,并有条理的组织、管理各个仿真模型实时有序的运行是实时飞行仿真有序、协调运行的重要保证。

通过一个高度的抽象类CUAVModel为仿真系统提供统一的运行框架,采用不同层次和等级的派生类对象过程中,首先进行CUAVModel的初始化,由其提供的重载构造函数来完成。由于组成每个仿真模型的整体类负责各个模型(子系统)之间通讯的输入接口,在模型运行前要完成其输入接口变量的更新,因此在实例化整体类对象的同时调用CUAVModel的标准构造函数来记录整体类对象所对应仿真模型的输入函数地址,通过抽象类CUAV Model提供的链表操作PushIntoLinkedList(CUAVModel*)为每个整体类对象动态的分配存储空间,每个仿真模型的整体类对象均作为链表中的一个结点,共同维护着抽象类CUAVModel的静态数据成员——指向链首的指针m_pRoot和指向链尾的指针m_pTail,并通过指向下一对象的指针m_pNext将各个整体类对象链接起来,仿真软件中类对象的链表结构如图2所示。

组成每个仿真模型的部件类被封装在整体类中,部件类对象作为整体类的成员对象,需要在整体类对象构建的同时完成部件类对象的实例化,部件类对象实例化前调用CUAVModel的默认构造函数进行抽象类的初始化。当由CUAVModel派生的整体类和部件类都被实例化之后,就实现了各个仿真模型的串联,然后使用递归或循环方式控制仿真模型按顺序执行。

图2 无人机仿真软件整体类对象链表结构Fig.2 Construction of UAV simalation softwave whole objectclass list

CUAVModel提供了各个系统仿真模型的运行框架,其派生类按照统一的框架各自独立封装,派生类之间通过接口交互,这样使得仿真模型呈现出高内聚、低耦合的特征。CUAVModel采用链表记录各个仿真模型的地址,这种方法不仅能够有效的对各个仿真模型进行调度、管理,而且增加了整个仿真系统的灵活性,新开发的仿真模型模块可以很方便的链接到链表中并以相同的方式组织、调用和运行。

3 应用实例

飞行仿真软件是通过系统仿真模型的程序语言实现的,系统仿真模型是建立在对系统进行正确、合理分析的基础之上的。首先需要对实际系统特征进行清楚的描述,即识别、抽象、组织、表示系统相关信息,确定系统的基本组成以及它们之间的关系,进而建立层次化、模块化的对象模型。根据面向对象的建模原则,采用先整体后局部的建模路线,构建了无人机飞行仿真模型,并且定制了仿真模型的运行框架,最后通过运行飞行仿真模型的实时程序来实现无人机系统的运行机理与数据流程。

3.1 无人机飞行仿真系统

通过对无人机飞行仿真系统自上而下的分析,可以描述出不同粒度的子系统的特点和功能,使无人机飞行仿真系统的面向对象模型具备了模块化、层次化和精细化等特征,并可以成为扩展对象的模型库,即能够随着应用的不同构建不同粒度的仿真模型,无人机飞行仿真系统主要对象的层次结构如图3所示。

无人机飞行仿真系统按照功能部件和模型等级进行分解,其主要部件包括三部分:飞行环境模型、无人机飞机系统模型和任务设备半物理仿真模型。飞行环境的实时变化影响无人机飞机系统的飞行姿态,而无人机飞机系统则能够实时控制任务设备半物理仿真模型(机载任务设备)。在仿真系统模型中,层次越高的类对象(无人机飞行仿真系统类对象)具有的职责性越强,它可以负责较低层次对象的组织和管理,层位越低的对象具有的功能性越强,即完成具体功能模块的解算。无人机飞机系统模型模块是仿真系统的核心部分,它主要包括:飞控计算机模型、动力系统模型、运动方程模型、机载传感器模型、机载数据链模型等。每个部件模型都被封装成具有各自特征、而且能完成特定功能的类,每个子系统都可以被映射成反映本系统特征的对象模型。

图3 无人机仿真系统层次结构图Fig.3 Construction block diagrana of USA simulation system

3.2 仿真结果分析

为了方便无人机飞行仿真软调试工作,系统设计初期在Visual C++环境下编写了用户操作界面,通过前台界面的控制输入达到人机交互的目的,启动主机可以进入无人机模拟训练系统设置面,如图4所示。

图4 系统初始化界面图Fig.4 Interface of system initialization

在实际的无人机模拟训练系统中,这部分是由实装的无人机地面测控站代替,但用户操作界面却是开发调试阶段重要的组成分,该用户界面主要完成的功能:模拟飞行之前,进行无人机系统初始化设置(主要完成飞机机型选择和起飞前的参数设置),飞行仿真软件主要负责完成的任务:人机界面的交互、对整个系统的管理与功能设定等。

设置仿真时间为90s,无人机初始速度(Airspeed)为23m/s、初始俯仰角为0°。设置其速度(Airspeed)的稳定值为25m/s、俯仰角(θ)稳定值为1.7°。图5记录了飞机空速变化曲线,图6记录了飞机俯仰角变化曲线。

图5 空速仿真曲线图Fig.5 Airspeed simulation curve

在无人机飞行过程中加入了风干扰作用,即在空速和俯仰角控制率回路加入了随机的风干扰向量W[x,y,z],图5和图6中的上面仿真图中W[x,y,z]=[0,0,0]m/s,而下面仿真图中W[x,y,z]=[10,-10,0]m/s,加入风干扰因素能够再现复杂的空中环境,对无人机地面操控手的训练提供了相对真实的空中环境。

从典型参数的输出曲线图可以看出,在风干扰的环境下,无人机出现了不稳定现象(即飞行参数上下振动频率加快),这与无人机实际飞行状况非常接近。从仿真结果来看,基于面向对象与应用框架技术所开发的某型无人机飞行仿真软件能够满足系统的设计目标,且整个系统软件运行稳定。

图6 俯仰角仿真曲线图Fig.6 Elevation angle simulation curve

4 结论

本文针对无人机飞行仿真软件的开发设计进行了研究,提出了基于面向对象和应用框架技术的无人机飞行仿真软件开发方法。通过研究无人机系统的功能模块、层次结构和运行机制,提出了基于面向对象和应用框架技术的三层框架体系的无人机飞行仿真软件的开发方法,采用该方法开发了实例无人机飞行仿真软件,仿真结果表明:面向对象技术开发的程序的灵活性和可维护性,更加便于分析、设计和理解;应用框架能够为特定领域提供软件运行的基本类,并通过对这组类的使用、修改和扩充达到对应用框架的重用的目的。

[1]吴汉平.无人机系统导论[M].北京:电子工业出版社,2003.

[2]张京,李飞跃,郑显举,等.面向对象软件工程与UML[M].北京:人民邮电出版社,2008

[3]卢潇,孙璐,刘娟,等.软件工程[M].北京:北方交通大学出版社,2005.

[4]Eric F Sorton,Sonny Hammaker.Simulated Flight Testing of an Autonomous Unmanned Aerial Vehicle Using Flight Gear[R].Arlington,Virginia:AIAA US:2005.

[5]Michael M Madden.Examining Reuse in LaSRS+ +Based Projects[C]//AIAA Modeling and Simulation Technologies Conference and Exhibit.Montreal,Canada:AIAA,2001:2001-4119.

[6]Sean Kenney P.Rapid Prototyping of An aircraft Model in an Object oriented Simulation[R].US:Systems Devel-opment Branch NASA Langley Research Center,2001.

[7]Jon S Berndt.JSBSim:An Open Source Flight Dynamics Model in C++[C]//Rhode Island[C]//AIAA Modeling and Simulation Technologies Conference and Exhibit.US:AIAA,2004:4923.

[8]李英军,吕建,王宏琳.面向对象应用框架在油气勘探领域的应用研究[J].软件学报,1999,10(4):349-354.

[9]徐鲁兵.面向对象航空发动机性能仿真系统设计与实现[D].西安:西北工业大学,2007.

[10]周文祥.航空发动机及控制系统建模与面向对象的仿真研究[D].南京:南京航空航天大学,2006.

猜你喜欢
面向对象框架对象
GEE平台下利用物候特征进行面向对象的水稻种植分布提取
有机框架材料的后合成交换
框架
晒晒全国优秀县委书记拟推荐对象
判断电压表测量对象有妙招
面向对象方法在水蓄冷PLC编程中应用分析
面向对象的组合软件工程研究
攻略对象的心思好难猜
区间对象族的可镇定性分析
关于原点对称的不规则Gabor框架的构造