刘一超1,李慧2
(1.空军石家庄飞行学院 司令部,河北 石家庄 050000;2.河北经贸大学 人文学院,河北 石家庄 050000)
摘要:采用模块化设计方法,构建了基于高层体系结构/运行支撑环境(HLA/RTI)分布式协议的分布式机载武器仿真系统框架,具体介绍了各个模块的功能、工作流程以及实现方法,形成了一套较为完整实用的系统开发解决方案。
关键词:分布式;机载武器;仿真系统
中图分类号:V411.8文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.04.026
引用格式:刘一超,李慧.基于HLA的机载武器仿真系统框架设计及实现[J].微型机与应用,2017,36(4):87-89,93.
0引言
现代空中作战对协同配合提出了更高的要求。单个的仿真系统很难再满足实战化模拟训练的各种需求,因此,分布式仿真成为当前计算机仿真领域发展的一个热点方向。从实用化角度开展对分布式仿真系统的应用研究并进行验证,有着更为重要的意义。为了提高飞行射击训练的实战化训练水平,结合在研项目,本文基于高层体系结构(High Level Architecture,HLA)仿真标准,通过运行支撑环境(RunTime Infrastructure,RTI),提出了分布式机载武器仿真系统的设计框架,并就其各模块的功能和实现进行了分析研究和验证,形成了一套比较完整的解决方案,供同仁研究探讨。
1环境平台简介
1.1HLA/RTI
HLA是一种支持互操作和仿真模型重用的分布交互仿真标准,它在整个系统中负责消息的分发和时间的同步推进,是系统实现分布式交互操作的基础。HLA通过RTI提供通用的、相对独立的支撑服务程序,将仿真应用同底层的支撑环境分开,即将具体的仿真功能实现、仿真运行管理和底层通信传输三者分离,各自的实现细节被隐藏,也就是说,开发者可以只专注于顶层的功能实现[1]。
RTI是HLA接口规范的具体实现,它是基于HLA仿真的核心部件。RTI的功能与分布式操作系统类似,是HLA仿真应用程序设计和运行的基础。RTI的主要作用是为仿真应用提供运行管理功能,如仿真过程的开始、暂停、回复、时间同步、仿真时钟推进等;提供底层通信传输服务,是具体的仿真功能实现、仿真运行管理和底层通信传输三者分离的基础[2]。RTI的原型系统由DMSO于1995年开发,目前有不同组织开发的多种版本的RTI。
BH RTI是北京航空航天大学研发的分布交互仿真开发与运行平台中的运行平台部分。该平台支持HLA 1.3和IEEE 1516标准,是支持分布交互仿真应用开发和高效运行的软件系统平台,可应用于视景仿真、模拟训练、城市仿真、工业设计、交互式游戏等应用领域。BH RTI的接口功能涵盖标准中定义的六类管理服务(联盟管理、声明管理、对象管理、数据分发管理、所有权管理、时间管理) [3]、支撑服务以及管理对象模型(MOM)。
1.2Multigen Creator和VegaPrime
Multigen Creator是Multigen-Paradigm公司针对可视化仿真的应用特点开发的可视化三维建模软件系统,整个系统中所有3D物体模型都是由它建立的。Creator实现了运行于高端SGI工作站和低端PC平台的不同版本,因此可以适应不同的硬件资源,给用户提供一个“所见即所得”的交互式可视建模软件环境。
Multigen Vega Prime是Multigen-Paradigm公司用于虚拟现实、实时视景仿真等可视化领域的应用软件工具,整个系统通过对其进行二次开发实现了仿真视景,模拟空中射击训练的真实环境。它包括不同平台下统一的图形环境界面、完整的基于C++的应用程序接口API、丰富的相关实用库函数和一批可选的功能模块[4]。Vega Prime是基于线程的,模块接口通过模块类调用,并且采用基于XML的ADF/ACF文件,因此执行效率更高。
1.3基于DirectX 的下一代跨平台体系结构 XNA
XNA(DirectX and Xbox Next-generation Architecture)是微软开发的三维图形程序设计开发平台,本项目中主要用于飞机座舱仪表的实现。它以DirectX作底层支持,提供内容导入、数据库、输入获取、音视频播放、网络连接等常用工具。XNA是DirectX的替代者,相比后者,XNA的特点包括:运行在.NET环境下;图形程序设计、声音效果、输入设备、网络编程等所有功能集为一体;可编程流水线;通过素材管线(Content Pipeline)加载资源等。
以上三个技术平台既相互依赖关联又具有独立性。HLA/RTI作为本项目核心的技术支撑,用于底层消息交互和时间同步推进模块的研发,它主要适用于构建分布式交互仿真环境;Multigen Creator和Vega Prime则适用于三维仿真视景的构建,通过接收、设置参数模拟空中射击训练的真实环境;XNA基于DirectX且更加易用,因此适用于本系统飞机座舱仪表的仿真。三个技术平台既可以专注于系统独立模块开发,也可以通过数据联动成为一个有机整体。由于易于开发、易于扩展、性能稳定,它们构成了分布式仿真应用系统的核心技术平台。
2系统框架
为了实现分布式机载武器仿真系统,开展射击训练和对抗演练,提升训练的效益和安全性,设计了基于HLA/RTI分布式机载武器仿真系统框架。该系统框架由HLA/RTI分布式仿真平台和盟员程序两部分组成,如图1所示。
本系统中,HLA/RTI采用结合中心服务节点的分布式交互体系结构。其中,多个RTI系统作为RTI节点独立运行,同时有一个独立运行的中心服务节点。RTI节点负责接收和转发盟员程序交互所需要的数据,主要是目标机的位置、姿态等信息,它是系统最基本的数据交互管理单位。RTI节点之间使用RTIRTI交互协议进行通信,它们的关系是平等的。中心服务节点管理多个RTI节点,负责分布式系统中全局数据的处理,是底层数据通信的协调中心,它通过RTICS交互协议与RTI节点进行通信[5]。各主机上独立运行的RTI节点对于盟员程序来说像一个集中服务器一样,同时各盟员程序之间可以实现互操作。
基于该框架实现的仿真系统不仅可以实现单机对空对地射击训练、成绩评定,而且可以通过联网将分布于不同空间的多台单机融合到一个场景中,实现不同飞行员之间联网对抗,模拟实战。
2.1联邦的设计与开发
联邦是指参与信息交互的实体和它们所处的同一场景环境构成的集合体。每架战机作为一个参与信息交互的实体,是一个联邦成员。本机订阅并动态接收其他战机的名称和实时坐标、姿态,进而显示在本机的视景中进行瞄准射击,同时本机更新发布自身的名称和实时坐标、姿态。这些交互的数据既可以通过更新/反映对象类属性值来完成,也可以通过发送/接收交互实例来实现[6]。由于交互类不具有持续性,本系统选用对象类进行成员间的互操作。HLA/RTI在一个通用的联盟对象模型文件(FED文件)中定义了对象类和交互类,以下是FED文件片段。
user object classes here
(class Aircraft
(attribute Name reliable timestamp)
(attribute Poszd reliable timestamp)
(attribute Poshp reliable timestamp)
(attribute Posxd reliable timestamp)
(attribute Thet reliable timestamp)
(attribute Psi reliable timestamp)
(attribute Gama reliable timestamp)
)
联邦成员的底层拥有相同的运行流程,如图2所示。
通过以上实现,每个单机实体可以首先作为一个成员加入到联邦中,然后声明自己要接收和发送的数据,在将这些感兴趣的数据集合为一个对象并在联邦环境中注册后,图2运行流程图就可以进行消息循环了。随着时间推进,每个单机实体实时发布数据、接收订阅信息并据此更新状态。即每个单机实体可以同步地推进时间和交互信息,它们感知的是同一个世界。
2.2飞行子系统
飞行子系统对飞机空气动力特性进行仿真,解算飞机的六自由度非线性全量运动方程,获取飞机的位置、姿态、角速度、速度等飞行参数[7],并将这些参数通过网络输出到其他子系统。
本系统首先使用数据采集模块采集输入座舱控制电门的开关状态,操纵系统的操纵面位置(即舵偏角)、液压系统的襟翼、起落架状态和油门杆的位置。通过判断座舱电门的开关状态,发动机决定启动或者停车。若发动机启动成功,发动机模块根据采集的油门杆位置查表插值得到发动机的转速、推力以及耗油率,气动系数模块则根据舵偏角、襟翼和起落架的状态以及运动方程模块反馈的飞行参数(马赫数、高度、迎角、侧滑角等)查表插值取得飞机的气动系数、气动力和力矩。另外,起落架力和力矩模块根据飞机飞行状态和姿态、刹车压力等计算起落架力和力矩。最终,运动方程模块根据发动机推力、启动力/力矩、自身质量特性、反馈的起落架力/力矩以及系统接收的控制台设定的环境参数(紊流、风和大气等)积分解算六自由度非线性全量运动方程。解算得到的飞机运动参数通过网络发送到视景子系统、火控子系统、仪表音响子系统以及订阅了这些值的其他盟员程序。
为了满足方程解算实时性的要求(本系统设定每个循环周期为10 ms),使用了多媒体计时器服务。使用该服务,可以满足系统高分辨率计时的需求,最小分辨率为1 ms。多功能USB数据采集卡的采集周期超过了10 ms,本系统为数据采集创建了新的线程。主要代码如下。
timeGetDevCaps(tmcap,sizeof(LPTIMECAPS));
timeBeginPeriod(1);
timeEndPeriod(1);
…
HANDLE hThread=::CreateThread(NULL,0,RWdatacard,NULL,0,NULL);
CloseHandle(hThread);
飞行方程解算属于计算密集型的应用,实时性要求高。对于Windows系统,一般每个线程的时间片耗时是不稳定的,在15 ms左右变动,这难以满足时间要求。通过使用多媒体定时器,能够保证每个计算周期的耗时恒定为10 ms。解算时间的恒定可控使飞机在视景中的运动更为平滑。
2.3视景子系统
视景子系统提供仿真系统外部动态视觉
景观的模拟,为使用者建立一个逼真的视觉环境。视景子系统根据飞行子系统和火控子系统传递的数据,精确模拟飞行区域天空(太阳、月亮、云层)、地物地貌、飞行区域景观、射击作战对象、瞄准具以及射击效果显示等视景,提供动态视觉场景,使能够通过视景判断飞行状态(正常或非正常)、位置、姿态、战术信息、目标信息等。
视景子系统的开发流程主要包括三步。首先,使用Creator或者其他3D模型软件制作视景数据库,如机场模型库、目标模型库(每种目标模型建有静态、动态、毁损状态)、地形数据库以及特殊效果库(燃烧、粉尘、碎片等效果)等;第二步,在LynX Prime中调入.flt模型,完成基本环境设置、特效设置,从而完成.acf文件的配置;最后,在Visual Stdio 2005编程环境中设计视景仿真程序,直接调用Vega Prime的API函数,利用接收的仿真数据驱动整个场景。
VP的工作流程为初始化—定义—配置—帧循环—关闭,可以划分为静态工作和动态循环两个阶段。如图3所示。
系统初始化vp::initialize()完成的工作包括检查许可证和初始化静态变量、单模式类、内存分配器、渲染函数库、ACF解析器、模块接口、核图3视景子系统的开发流程心类等。接着,通过代码或者将ACF文件传递给define()方法在系统定义中创建类实例并进行初始化。系统定义后,在配置阶段设置多线程模式、线程优先和分配器分配等,同时建立基于附加消息的类实例之间的关系。在帧循环阶段,动态循环场景的刷新和渲染。最后关闭系统,需要使用核心类分配的内存、调用模块的关闭方法清理内存、结束同步线
程以及向许可证服务器返回许可证。
2.4火控子系统
火控子系统负责火控工作状态解算、瞄准解算、外挂处理、武器弹道解算等,模拟武器使用的控制流程,并对武器的攻击效果进行效能评估,分为7个模块,如图4所示。
中央解算模块负责火控系统工作状态的处理,对瞄准具、军械综合显示器的状态进行控制,进行武器的瞄准解算,确定瞄准光环的位置。弹道解算模块分别建立航炮、火箭和炸弹的弹道方程,解算出炮弹的弹道轨迹。武器外挂处理模块负责武器挂点选择逻辑状态的分析,确定所选武器的工作状态,根据采集的武器装配数据和发射状态计算武器发射类型及数量。效能分析模块对放射/投放武器的毁伤效果进行分析处理,进行效能评估,其结果传输至控制台显示。数据交互处理模块负责火控子系统与其他子系统的信息交互,包括对火控相关电门的数据采集和飞行参数的接收。显示模块负责瞄准具显示器和军械综合显示器的信息显示。多功能逻辑分析模块完成火控配置状态判断,并结合中央解算模块的解算结果控制结果信息的显示。
2.5仪表与音响子系统
仪表与音响子系统应用XNA框架,在计算机屏幕上显示飞机座舱的虚拟仪表,并模拟飞行设计训练中的各种音响特效。仪表与音响子系统接收飞行子系统发送的相关运动参数,进而控制仪表指针的转动,并发出声音。本子系统的难点在于实物建模的准确性。另外,为了模拟真实机械仪表指针转动时的惯性作用,采用了累加求和取平均值的方法。
3结论
基于HLA/RTI分布式协议的分布式机载武器仿真系统框架,采用了模块化设计方法,明晰了设计思路,给出了具体的设计方法,实现了各技术平台之间的数据无缝连接,构成了一个相对完整的分布式仿真系统的实用解决方案。该方案在本项目的研发过程中进行了多次优化,并通过了实践验证,为类似系统的研发提供了一个具体的成功范例,也为今后项目拓展打下了坚实的基础。
参考文献
[1] 刘瑕,郑建华,张皓.基于HLA的小卫星编队飞行分布式仿真[J]. 计算机仿真,2010,27(5):66-70.
[2] 马云龙,王坚.基于RTI的交通态势实时仿真技术研究[J].系统仿真学报,2008,20(22):6129-6132.
[3] 刘寒冰,刘琳,周忠,等.面向HLA的交叉检验自动化测试方法研究[J].系统仿真学报,2009,21(17):54405444.
[4] 马超,陈灿,吴彦军.河流水环境可视化仿真系统开发[J].计算机仿真,2011,28(12):310313.
[5] 杜鹃. RTI运行支撑环境规范化测试与分析[D].西安:西安电子科技大学,2013.
[6] 张贵生. HLA中数据分发管理算法的研究[D].太原:山西大学,2007.
[7] 李鹏.轻型飞行模拟器飞行仿真建模研究[D].南京:南京航空航天大学,2008.