摘要:在高炮火控系统开发模拟训练系统过程中,开发人员工作量大,系统开发效率低和效果不理想等问题,提出了一种基于Virtools与高层体系结构(HLA分布式)相结合的解决方案。该方方案用HLA分布式的模块化建模的思想,将整个仿真系统的功能划分成若干个联邦成员,进行分布式系统仿真。从设计系统的体系结构入手,划分联邦成员功能、建立FOM文件,并针对仿真平台开发中的分布交互行为模块的开发、解算行为模块的开发、坐标系变换、分布交互行为模块与解算行为模块数据传输速率不同步等问题进行了深入的研究,并提出了解决方案。最后基于此方法设计了一个某型高炮火控系统的操纵仿真平台,实践表明系统的开发效率有了较大的提升,结果显示在实时性及逼真度方面均达到了较好的效果。
Virtools是一套整合软件,可以将现有常用的档案格式整合在一起,如3D的模型、2D图形或是音效等。Virtools是一套具备丰富的互动行为模块的实时3D环境虚拟实境编辑软件,可以制作出许多不同用途的3D产品,如网际网络、计算机游戏、多媒体、建筑设计、交互式电视、教育训练、仿真与产品展示等 。
2005年7月份达索系统集团宣布达索公司以大约 1200 万欧元,收购 3D / VR 整合开发平台的领导厂商法国 Virtools公司。把该款产品纳入其产品虚拟设计和全周期管理系列当中。
1 引言
高炮火控系统是高炮中最具发展潜力和至关重要的系统,高炮火控系统的快速发展使高炮的整体战技性能得到大幅提升。我国早期的武器火控仿真系统多采用Socket通讯或DIS标准,如某型火控系统操作训练仿真平台[1]、基于DIS的坦克火控系统[2]等。为适应军事仿真发展的需求,火控系统的分布式仿真迅速地由DIS标准向HLA分布式[3]标准升级。利用本地化技术、包装技术、转换器技术进行两种标准地过渡。HLA分布式是比DIS更高一级的计算机仿真标准,有着更多的优点。DIS采用广播的数据传输方式,而HLA分布式采用有选择性地在联邦成员之间进行数据传输的方式,这样就能够更好地控制网络流量,有效地防止在仿真运行过程中因网络负载过大而导致使用HLA分布式标准开发的火控仿真系统不能正常运行。利用HLA分布式开发的分布式系统离不开三维视景生成,当前在仿真系统设计中所使用的软件资源在3D建模方面没有什么区别,大都选取Creator、3DMax和GL Studio等,且各种建模软件之间格式转换也已不是问题。使用这些软件既离不开对OpenGL底层技术的了解,也离不开编辑环境如VC++等的支持。鉴于此,本文引入一种新的3D建模软件Virtools[4],Virtools将相关底层技术封装入行为模块,使开发者不需要了解或直接利用底层的OpenGL或Direx技术等进行开发应用,使资源的重用性大大增强。为此本文提出了基于Virtools与HLA分布式的结合的火控系统操纵仿真平台设计方法。
1 高炮火控系统操纵仿真平台的体系结构
1.1 基于HLA的分布式仿真系统体系结构
HLA(High Level ARChitecture)是美国国防部1995年提出的分布式交互仿真的高层体系结构,它的基本思想是采用面向对象的方法来设计、开发和实现仿真系统的对象模型,以获得仿真联邦高层次的互操作和重用。运行支撑系统(RTI)是按照HLA分布式接口规范开发的仿真支撑软件,它提供了一系列用于仿真互联的服务,是HLA分布式仿真系统进行分层管理控制、实现分布仿真可扩展性的基础,也是进行HLA分布式其他关键技术研究的立足点。基于HLA分布式的分布式系统的标准体系结构如图1所示:
1.2 Virtools与HLA分布式的互操作
由于HLA分布式具有开放性、支持面向对象、仿真应用和底层通讯相分离的特点,所以分布式的火控系统仿真平台采用HLA分布式的标准设计。分布式仿真系统离不开三维视景生成,由于Creator、3DMax和GL Studio等在3D建模方面的复杂性,所以本文引入Virtools 3D建模软件。Virtools采用的是模块化的设计思想,对于对象的脚本编排都是基于行为模块(Building Block,简称BB)进行。Virtools dev提供给开发者十分方便易用的拖拉模块式构建方法,使得整个开发过程流畅自然。它自带了数百个Building Block,供开发者自由调配灵活使用。但对于一些特定的处理过程,Virtools自身的BB模块不能满足需求,此时需要开发一些BB模块。为适应程序员们更广泛的需求,Virtools dev还提供了编程SDK给广大的程序员,以便于程序员能根据不同的应用需求,开发出更适台具体情况需求的解决方案。
基于此,本文为了使HLA分布式/RTI能够和Virtools相兼容,对HLA分布式/RTI的相关功能进行二次封装,并通过Virtools SDK将其功能封装进Virtools特有的BB中,这样当联邦成员要与联邦或其它成员进行信息交互时,只需调用相应的HLA分布式/RTI BB就可实现相关功能,不同的联邦成员只需修改相关的输入参数就可使用相同的HLA分布式/RTI BB,这样也使模块重用性得到较大的增强。开发RTI BB的步骤如下:首先将RTI Ambassador和Federate Ambassador相关的功能服务封装成Win32形式的dll,然后将Win32 dll在VS2003.net环境下封装成RTI BB模块,封装原理如图2所示:
1.3 基于RTI BB的火控系统操纵仿真平台体系结构
根据HLA分布式的体系结构、Virtools特点和火控系统仿真的一般过程及研究需要,考虑系统的通用性、可扩展性和可移植性,设计基于Virtools/HLA分布式的火控系统仿真平台的体系结构如图3所示。
各个节点的功能如下:
目标仿真成员:根据收到的导演台关于目标设定初始化的信息,生成符合要求的空情;
雷达仿真成员:搜索空中目标,并在发现目标的情况下给出目标的导引信息:
电视跟踪仿真成员:根据雷达传递的目标导引信息,继续对目标进行搜索。在跟踪上目标的同时,并测定目标的坐标;
仿真导演台:通过人机交互界面,对各节点进行初始化。同时控制整个仿真过程,包括启动、暂停、停止和控制仿真。
推进的快慢;并显示火控系统解算过程中的一些中间信息、提前点信息及射击诸元信息;
仿真数据库:实时接收所有联邦成员发布的数据,并将所有数据存储在数据库,以便事后进行分析;
火控解算仿真成员:根据收到的目标现在点信息对目标坐标信息进行滤波,并实时进行解命中,求取火炮的射击提前点和射击诸元;
三维视景显示成员:利用Virtools软件进行视景编程,实时显示整个三维仿真场景。
2 火控系统操纵仿真平台的开发
2.1火控系统操纵仿真平台开发流程[5]
基于HLA分布式的仿真系统开发过程十分复杂。尽管不同应用领域的用户在建立HLA分布式应用时,所采用的步骤可能各不相同,但从高层看,HLA分布式联邦开发和执行的过程可以抽象为几个必须遵循的基本步骤。在本系统的开发过程中,参考了DMSO的FEDFP模型,通过有限的步骤将用户的需求从抽象的逻辑概念初步转化为具体的物理实现。参考FEDFP模型,按如下过程进行联邦开发:
1)根据火控系统仿真模型开发了各个联邦成员的仿真对象模型SOM;
2)通过对联邦执行过程中的交互数据和联邦概念模型进行优化合并,得到系统的联邦对象模型(FOM),确定了仿真联邦FOM中的对象类和交互类以及它们的属性和参数。
表1
表1 给出了开发本系统时设计的部分交互类和对象类;
3)根据FOM表和SOM表,生成了联邦执行时的联邦执行文件(*.FED);
4)开发各个联邦成员,并将开发好的联邦成员进行系统集成,调试并解决系统中的问题。
2.2 火控系统操纵仿真平台的工作流程
根据HLA分布式的体系框架,基于Virtools的联邦成员的程序结构,在程序设计时我们采用双线程:一个是Virtools界面线程,主要用于管理用户和界面的交互;另一个是仿真线程,主要用于完成仿真模型的执行和联邦的交互。这种双线程的程序结构如图4所示。
3平台开发关键技术
3.1分布交互BB模块的开发
由图3可以看出,火控系统操纵仿真平台的分布互联是通过RTI BB实现的,因此RTI BB模块的开发是仿真平台实现的基础。本文设计的RTI BB在具体实现时,通过将HLA分布式/RTI中与本地联邦成员相关的本地RTI大使(RTI Ambassador)和联邦成员大使(Federate Ambassador)的相关服务进行封装调用,使得基于Virtools设计的脚本在驱动RTI BB时,就可执行联邦成员相应的创建联邦、加入联邦、公布订购、时间推进、更新成员信息、获取联邦或其它成员的信息等相应功能。对于RTI BB的设计主要包含了输入输出参数和输入输出端口的设计。
3.1.1输入输出参数
对于输入输出参数,根据参数的通用性,分为一般参数和特殊参数,其中一般参数的主要包括:创建联邦执行、加入联邦执行、初始化时间管理、公布与订购、时间推进等。游离于一般输入输出参数之外,还有一些是不同的联邦成员需求各异的,对于这部分参数主要有如下几种:
1)启动RTI进程。负责启动RTI运行环境。需要在bIn中创建一字符串类型接口,用以输入RTI执行文件的完整文件名。该端口通常只为安装有RTI主程序的用户终端所对应的RTI BB所拥有;
2)需更新的信息。更新信息由于涉及到的种类有多种多样,如数组、字符串、整形值、浮点值等,在设计上不能够通用,需要根据不同的成员以及数据种类,在bOut中创建数据阵列进行相应的设定;
3)需接收的信息。与更新的信息相类似,接收信息也需要根据不同的成员以及数据种类,在bIn中创建各种参数输入端口接收相关信息;
4)控制标志。这里的控制标志指的是bIn中的一些布尔设置,主要是为了定义信息发送或接收的状态许可。对于这些标志需要根据不同的联邦成员的仿真应用需求来进行相关的设定。
3.1.2 输入输出端口
输入输出端负责BB的启动和执行信息的承接。对于输入端,从执行顺序上划分,可分为初始化、执行仿真应用和退出联邦执行输入端三个部分。
1)初始化输入端。该输入端主要负责启动联邦成员创建联邦、加入联邦执行、初始化时间管理、公布订购、创建对象实例等功能。对于该端口,在实际应用时只需启动一次。
2)执行仿真应用输入端。该输入端主要负责启动仿真应用、更新信息、接收信息、所有权转移和申请时间推进等相应功能。由于仿真执行具有时间上的延续性,因此本端口在仿真过程中需循环启动。
3)退出联邦执行输入端。该端口主要负责当联邦成员退出联邦执行后,启动联邦成员取消公布与订购、删除对象实例、退出联邦执行、撤销联邦执行和关闭RTI等功能,该端口在实际应用时也只启动一次。对于输出端口,为了使RTI BB更具灵活性,本文根据其输入端设计了一一对应的三个输出端口。系统中开发的RTI BB如图5所示:
3.2 解算BB模块的开发
火控解算模型的主要功能包括目标运动参数求取、滤波、解算提前点和解算射击诸元,可以将整个火控系统的解算模型封装为一个BB模块,也可以将各部分的功能分别封装成BB模块。考虑可重用性的要求,将火控系统的各功能模块分别封装成BB模块。BB模块的设计主要包括两方面的内容:BB模块输入输出端口的设计和BB模块功能的实现。
3.2.1 解算BB输入输出端口的设计
BB模块的输入输出参数和函数的输入输出参数类似,但由于解算模型中涉及的函数参数都非常复杂以及BB模块输入输出类型的相对单一等问题,不能简单的实现解算模型参数和BB模块输入输出端口的一一对应。为了解决上述问题,在解算BB模块开发过程中我们遵循以下准则:1)复杂参数分解为简单参数。BB模块输入输出端口支持的数据类型较少,因此对于解算函数中涉及到的复杂的函数参数必须先将其分解为一些基本的、能为BB模块所接受的参数,才能为各个参数在BB模块设计相应的端口。2)输入参数和输出参数分离。仅将复杂参数分解为简单参数还不一定能满足要求,因为在一些面向对象设计语言中对于一些参数来讲它既是输入又是输出,但是在BB模块中,输入输出严格分离不能混用,因此必须增加端口实现输入和输出的严格分离
3)首次输入和首次以后输入分离。对解算BB中的滤波B而言,滤波BB模块的部分输入参数是通过外部初始化的方式来获取初值的,还有部分输入参数是通过获取一些输出参数的值来得到的,因此必须再增加一些输入端口,以实现首次输入和首次以后输入的分离。
3.2.2 解算BB模块功能实现
解算模块的主要功能包括目标运动参数求取、滤波、解算提前点和解算射击诸元。目标运动参数的求取主要由两种方法:一是将球坐标下的测量值转换为直角坐标下的测量值,然后进行微分,再转换为大地坐标系下运动参数值;二是将球坐标下的测量值转换为直角坐标下的测量值,再转换为大地坐标系下的值,最后进行微分求取运动参数值。可见无论使用何种方法都必须进行微分操作。如果测量量中不含有测量误差,经过上述处理后,就可以准确地求出目标运动参数值。但实际测量过程中不可避免地存在着测量误差,导致计算的目标运动参数也将含有误差,而且经微分运算后误差会变得更大,因此必须首先对测量结果进行滤波处理,然后再求取目标运动参数。火控系统中滤波常用的方法是卡尔曼滤波和α-β滤波,具体的实现步骤参见文献[7]。再求取目标运动参数的基础上,火控系统求解解命中问题方程组从而获取射击提前点和射击诸元。解命中问题方程组可以归结为一个非线性隐含方程t f =f (tf),对于该方程的求解主要有以下方法:牛顿迭代法、弦截法和抛物线法等,具体选择何种方法需要根据武器系统中火控系统的解算原理来决定。再求得提前点的基础上,根据提前点和射击诸元的关系很容易求得火控系统的射击诸元。实现解算BB模块的功能有两种方法:一种是直接将解算模块对应的功能在解算BB模块函数里实现;另一种方法是将解算模块的功能先使用一些常用面向对象语言对其进行封装(如封装成DLL、COM等),然后再由解算BB模块的函数进行调用。后一种方法有效实现了应用和功能的分离,提升了BB模块的可重用性。
3.3 坐标系的转换
构建virtools下的分布式火控系统仿真平台,各个节点之间需要交互大量的数据,而这些数据分别是在不同的坐标系下定义的。主要涉及到三个坐标系:virtools中的世界坐标系,vitools中的车体坐标系,virtools中的航迹坐标系。
3.3.1 坐标系的建立原则
Virtools中的世界坐标系:以炮重心所在位置为坐标原点,X轴指向右侧,Y轴和X轴垂直且向上,Z轴垂直XOY平面,且符合右手定则。
Virtools中的车体坐标系:以炮重心所在位置为坐标原点,车头方向为Z轴方向,向上且和车体底盘垂直方向为Y方向,X方向和YOZ平面垂直,且符合右手定则。
Virtools航迹坐标系:以飞机起飞点为坐标原点,X轴方向为Virtools中世界坐标系的X轴指向,Y轴方向为Virtools中世界坐标系的Z轴指向的负方向,Z轴和XOY平面垂直,且符合右手定则。
3.3.2 坐标系的旋转和平移
坐标系的变换关系主要是两种:旋转和平移。火控系统原理中已经给出了实现方法。以大地坐标系和载体坐标系的变换为例,已知载体的姿态角,即航向角K、纵摇角Ψ、侧倾角θ,设大地坐标系下的坐标为(X ,Y ,H),载体坐标系下的坐标为(Xt ,Yt ,Ht),坐标变换(坐标旋转)关系为式(1)。
对于原点不重合的情况,还要先进行坐标的平移,设载体的原点为(JX ,JY ,JH),则坐标变换(坐标平移)关系为式(2)
关系式
3.3.3 Virtools中坐标系的变换
由3.3.2可知坐标的变换主要是确定坐标系之间的相对关系,火控系统仿真平台中涉及到三个坐标系,由于VT世界坐标系和VT航迹坐标系之间原点不重合且坐标轴也不平行,坐标轴之间的相对关系也不易确定,因此直接进行坐标系的转换非常困难,因此我们构造VT大地坐标系,VT中坐标系之间进行变换时,先转换为VT大地坐标系下的坐标,然后由VT大地坐标系变换为其他坐标系。VT大地坐标系的建立原则如下:以炮重心所在位置为坐标原点,X轴方向为Virtools中世界坐标系的X轴指向,Y轴方向为Virtools中世界坐标系的Z轴指向的负方向,Z轴和XOY平面垂直,且符合右手定则。VT中世界坐标系下表征车体方向的三个参数为(K,Ψ,θ),且VT航迹坐标系原点在VT大地坐标系下的坐标为(JX ,JY ,JH),则火控系统各坐标系的变换关系如下图所示:
3.4 RTI BB和解算BB速率不同步
使用该平台来模拟火控系统的功能时,发现对于目标的运动参数进行滤波时,滤波结果严重偏离目标的实际参数。经研究发现,该现象是由于在VT下模块互联时RTI BB模块传输数据的速率和解算BB模块的解算的速率不同步造成的,准确的讲是由于解算BB采样速率高而RTI BB传输数据速率低造成的。图7是RTI BB和解算BB的连接关系示意图。
由图7可以看出,A点的数据作为RTI BB的输出由RTIBB反复更新,同时A点的数据又作为解算模块的输入,正常的处理过程应该是A点的数据更新一次,解算BB模块解算一次。可由于以下原因造成处理流程混乱:1)BB模块的输入锁存保持,即输入端口数据没有更新前,输出端口会始终保持最后一次的输出值;2)部分解算BB的输入参数值是解算BB模块的前一次输出参数值。以上原因造成解算BB对于一个恒定的输入值进行多次解算,导致每次解算的结果都不相同。
解决该问题关键是设法让RTI BB传输数据的速率和解算BB的解算速率同步,主要有两种思路:提升RTI BB的传输速率或是降低解算BB的解算速率。提升RTI BB的速率比较困难,因此我们采用后一种思路,即降低解算BB的速率。为了降低解算BB的速率,我们设计了一个更新判断BB,该BB的作用主要是判断RTI BB的特定输出端口输出是否更新,如果是则标志位置1,否则置0;同时,我们对解算BB模块中的部分BB模块也进行了改进,即添加输入更新标志位,该标志位的输入从更新判断BB标志位获取。如果该标志位为1,则进行一次解算,否则不解算。通过以上措施我们有效的降低了解算BB的解算速率。改进后的连接关系如图8所示:
4 火控系统仿真平台应用实例
基于上文提出的设计方法,本文设计了局域网内的结构如图3所示的某自行高炮单炮车的联邦系统,现给出一个具体的应用实例。假定有空中目标出现,火控系统发现目标并解算诸元。首先,导演台设定目标的参数并启动仿真,目标仿真成员生成空中目标。雷达仿真成员搜索空中目标,发现目标后将目标的方位导引信息传递给电视跟踪仿真成员。电视跟踪仿真成员搜4火控系统仿真平台应用实例基于上文提出的设计方法,本文设计了局域网内的结构如图3所示的某自行高炮单炮车的联邦系统,现给出一个具体的应用实例。假定有空中目标出现,火控系统发现目标并解算诸元。首先,导演台设定目标的参数并启动仿真,目标仿真成员生成空中目标。雷达仿真成员搜索空中目标,发现目标后将目标的方位导引信息传递给电视跟踪仿真成员。电视跟踪仿真成员搜索跟踪目标,求取目标的参数,并传递给火控解算仿真成员。火控解算仿真成员解算射击提前点和射击诸元,并将解算过程参数及解算结果在导演台进行显示,同时,在三维视景仿真节点显示整个过程。仿真中某时刻三维视景截屏如图9所示。可见,该仿真平台能够模拟火控系统工作过程的整个场景,实现了比较逼真的火控系统工作过程的场景模拟,使用户有了较强的沉浸感。
5 结论
本文将Virtools与HLA分布式相结合,提出了一种新的仿真平台设计方法,针对平台开发中的关键技术进行了研究,并给出了解决的办法。经过我们开发的某高炮火控系统示教系统的应用证明,该方法开发效率较高,开发项目的效果较好。实用性很强,具有很好的参考价值。
参考文献:
[1]杨建文,黄金波,陈俊.某型火控系统操作训练仿真平台设计[J].火炮发射与控制学报,2007,12(4):39-42.
[2]周启煌,于谅,刘志高.分布式结构的坦克火控仿真系统研究[J].装甲兵工程学院学报,1999,13(1):40-44.
[3]张家祥.HLA分布式仿真技术应用教程[M].北京:国防工业出版社,2007:31-33.
[4]王乐.基于Virtools的分布式VR的网络技术研究[D].武汉理工大学,2006.
[5]张宇宏,胡亚海,彭晓源,等.基于HLA分布式的防空导弹武器系统仿真平台研究[J].北京航空航天大学学报,2003,29(1):1-4.
[6]王元慧,边信黔,王宏健,等.基于HLA分布式的舰船操纵综合仿真平台的设计[J].系统仿真学报,2009,21(2):385-388.(WANGYuan-hui,BIAN Xin-qian,WANG Hong-jian,et al.Design of ShipOperation Integrated Simulation Platform Based on HLA分布式[J].Journalof System Simulation(S1004-731X),2009,21(2):385-388.)
[7]何友,修建娟,关欣,等.雷达数据处理及应用[M].北京:电子工业出版社,2006:21-25.