ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

KY-RTI分布仿真技术:第三章 KY-OMT对象模型模板工具

KY-RTI分布仿真技术:第三章 KY-OMT对象模型模板工具 本章介绍了对象模型模板的相关知识以及如何使用KY-OMT对象模型模板工具创建对象模型文件。KY-RTI为HLA1.3设计了一个Java程序KY-OMT13为IEEE 1516-2025设计了一个Java程序KY-OMT1516两个程序都能应用于Linux和Windows。3.1对象模型模板HLA包含3个标准第一个是描述整个联邦和联邦成员必须遵循的10条规则的标准第二个是用于实现RTI的100多个服务的标准这些服务分为仿真成员调用RTI和RTI调用仿真成员回调两类服务第三个就是对象模型模板Object Model TemplateOMT标准。从本质上说HLA是一个仿真成员之间数据交换的标准数据交换有一个专门的词语“互操作”因此HLA是关于仿真成员互操作的标准。当多人共同设计一个大型仿真系统时应该如何描述仿真成员之间交换的数据格式就成为一个关键问题。当数据格式描述清楚后不同的仿真开发人员就可以按照统一的格式各自开发相应的模块。对象模型模板就是这样的一个数据格式描述规范。对象模型分为三类联邦对象模型FOMFederation Object Model、成员对象模型SOMSimulation Object Model、管理对象模型MOMManagement Object Model。联邦对象模型描述整个仿真系统中需要交换的对象类、对象属性、交互类、交互参数等成员对象模型则描述一个仿真成员自己对外公布和订购的数据信息管理对象模型则用于管理仿真系统。虽然用户未必有FOM和SOM的概念但在一个大型仿真系统开发之前一般需要采用文字或表格的形式将整个仿真系统FOM和各个子系统或模块SOM需要交换的数据定义清楚哪些是全局的哪些是属于子系统或模块的。以HLA1.3为例对象模型模板提供了9个表格帮助用户建立仿真对象模型。当然用户未必一定需要按照这样的方法进行操作这些表格只是辅助用户开发而已具体到RTI仿真只需要为RTI提供一个文本格式的fed文件即可在fed文件中并没有标识FOM和SOM。对象模型模板提供的9个表格如下。1对象模型鉴别表。记录与HLA对象模型相关的重要标识信息包括名称、开发者、开发日期等。2对象类结构表。记录所有FOM和SOM中的对象类的名称以及类与子类的关系。3交互类结构表。记录所有FOM和SOM中的交互类的名称以及类与子类的关系。4属性表。记录FOM和SOM中的对象属性的特性。5参数表。记录FOM和SOM中的交互参数的特性。6枚举数据类型表。用来对属性表或参数表中的枚举数据类型进行说明。7复杂数据类型表。用来对出现在属性表或参数表中的复杂数据类型进行说明。8路由空间表。用来指定联邦中对象类属性和交互类的路由空间。9FOM/SOM词典。用来记录上述各表中使用的所有术语的定义。在上述9个表格中与fed文件密切相关的有“2、3、4、5、8”。以“7复杂数据类型表”为例它与fed文件没有什么关系实际上所有数据类型都与fed文件没有关系具体可参见后面的fed文件示例。如果两个仿真成员之间需要传输比较复杂的数据结构那么两个仿真成员的开发人员需要将这种协商一致的复杂数据结构记录在案便于开发和日后查阅但在RTI中传输时RTI并不知道数据是何种格式在它看来所传输的只是一个字符串而已字符串所代表的意义由两个仿真开发人员去理解并体现在自己的仿真程序中。IEEE 1516-2025与HLA1.3在对象模型模版的概念上类似但从程序设计的角度有一点区别。HLA1.3只需要提供一个文本格式的fed文件而IEEE 1516-2025可以提供一个或多个xml文件每个文件称之为一个FOM模块。从FOM模块的角度可以更好地理解SOM概念一个仿真系统可以分为多个子系统每个子系统可以使用独立的FOM模块即建立自己的SOM文件。3.2对象类和交互类对象类和交互类都是对象模型中的概念是HLA标准的重要概念让我们再来探讨一下这两个术语。实例1由1个飞机和雷达组成的仿真系统。飞机在飞行过程中将其xPos和yPos二维坐标位置信息发送到RTI再由RTI将其发送到订购者“雷达”。实例2由2个人组成的发报系统。一个人给上级发送电报每次发送2个数然后把这两个数发送到RTI再由RTI将其发送到订购者“上级”。在实例1的HLA仿真系统中通常使用对象类将需要传输的信息进行封装。譬如将对象类定义为plane该类有2个整型属性xPos和yPos。在HLA标准中对象类中的变量依照面向对象的概念仍然叫做“属性Attribute”。classplane{ //对象类int xPos; //属性int yPos; //属性}在实例2的HLA仿真系统中通常使用交互类将需要传输的信息进行封装。譬如将交互类定义为chat该类有2个整型参数first和second。在HLA标准中交互类中的变量叫做“参数Parameter”。classchat{ //交互类int first; //参数int second; //参数}从面向对象的角度来看这两个类并没有本质的区别只是现实世界中的语义有所不同从HLA的角度来看一个代表对象类一个代表交互类在公布、订购、发送和接收数据时所采用的HLA服务并不相同。然而HLA是一个关于数据交换的标准实例1中的飞机和雷达除了可以使用对象类交换数据外还能使用交互类进行数据交换吗反之实例2中的人和上级除了可以使用交互类交换数据外还能使用对象类进行数据交换吗答案显然是肯定的当把交互类chat用于实例1而把对象类plane用于实例2是完全可行的只是chat和plane这两个英文单词比较别扭如果把这两个单词改成xxx和yyy那就好看多了。顺便说一句在用户程序中并不要求用户定义plane和chat类这两个类只是定义在fed文件中另外类中变量的类型int不会出现在fed文件中它不影响RTI的数据传输。在后面的章节中你会看到示例程序中并没有按照面向对象的概念定义这两个类。再举1个简单例子如果程序A向程序B传送文件则既可以采用对象类也可以采用交互类来传送只是采用的HLA服务不同而已。总之对象类和交互类都为HLA仿真中的数据交换提供支持但在实际使用时不要太拘泥于这两个概念的固有含义。3.3基于KY-OMT13开发对象模型KY-OMT13是用Java开发的一个HLA1.3对象模型模板开发工具位于KY-RTI的bin目录。通过该工具创建的对象模型在保存时会同时生成后缀为“.fed”和“.xml”的两个文件。前者应保存到KY-RTI服务器程序所在目录即bin目录在客户端则不需要保存。后者比前者记录了更多的信息譬如一些注释信息等。KY-OMT可打开这两种格式的文件但“.fed”会比“.xml”少一些信息。3.3.1 基本功能KY-OMT13启动后的界面如下图所示在Linux下可以设置KY-OMT13.sh中的比例因子来改变图形界面大小可以在终端中执行KY-OMT13.sh或双击KY-OMT13在Windows中直接双击KY-OMT13。通过“File”菜单可新建、打开、保存一个后缀为.xml或.fed的文件通过“Edit”子菜单“Insert MOM”可在fed文件中插入与MOM相关的对象类和交互类这样仿真成员就可以通过MOM服务对仿真系统进行管理通过“Help”菜单可查看帮助信息。图1 KY-OMT13的启动界面3.3.2 对象类的创建在KY-RTI的bin目录下有1个tracer.fed文件该文件仅含有一个如下的对象类可理解为一架飞机在飞行过程中所发布的xPos和yPos二维态势信息只要订购了该对象类的属性信息的仿真成员都能够接收到该飞机的态势信息飞机本身不需要关注有哪些仿真成员订购了自己的态势信息。(class plane(attribute xPos reliable timestamp)(attribute yPos best_effort timestamp))在上述定义中reliable表示使用可靠数据传输机制best_effort则表示RTI尽可能地把数据传输到目的地。timestamp表示在传输过程中使用HLA的时间管理机制一个TSO(Time Stamp Order)消息会受到HLA时间的制约与timestamp相对receive则表示一个消息不受HLA时间管理机制的制约通常发送者一发送接收方就能接收到该消息。另外可以看出在fed文件中并没有定义xPos和yPos的数据类型或者说如果使用对象模板工具创建fed文件时指定了xPos和yPos的数据类型该数据类型只有程序员关心最终并不会出现在fed文件中。下面是tracer.fed文件的生成过程。第1步选择“ObjectRoot”节点按右键选择“Add object class”图2 添加子对象类第2步输入“plane”对象类名图3 输入子对象类名第3步选择“plane”节点按右键选择“Add attribute”图4 添加一个属性第4步输入“xPos”属性名图5 添加xPos属性下图设置xPos属性的其他特性点击“Apply”保存。图6 添加xPos属性的各个字段的含义第5步按照xPos属性方法添加yPos属性并设置其他特性图7 添加yPos属性的各个字段的含义第6步将文件保存为tracer.xml同时生成tracer.fed。图8 tracer.fed文件内容3.3.3交互类的创建在KY-RTI的bin目录下有1个chat.fed文件该文件仅含有一个如下的交互类可理解为大家通过RTI进行聊天发送给RTI的信息包括发送者名字和说的一句话它们被封装为chat交互类。(class chat reliable receive(parameter name)(parameter sentence))下面是chat.fed文件的生成过程。第1步新建一个文件选择“InteractionRoot”节点按右键选择“Add interaction class”图9 添加子交互类第2步输入“chat”交互类名图10 输入子交互类名第3步选择“chat”节点按右键选择“Add parameter”图11 添加一个参数第4步输入“name”参数名图12 添加name参数下图设置name参数的其他特性点击“Apply”保存。实际上只能设置该参数的数据类型可从下拉框中选择但该类型只会保存到.xml文件不会保存到.fed文件。假设选择了一个数据类型则公布方程序和订购方程序按照约定在编程中使用该数据类型。图13 设置name参数特性第5步按照name参数方法添加sentence参数并设置其他特性图14 添加sentence参数第6步将文件保存为chat.xml同时生成chat.fed。下图是chat.fed文件内容。图15 chat.fed文件内容3.3.4路由空间的创建如果采用HLA的数据分发管理服务则需要定义路由空间Space。图6用于定义一个属性的特性其中有1项“Space”用于选择路由空间图11在新建一个交互类时也要求确认是否使用路由空间表中的“NA”表示不使用。要使用路由空间必须事先进行定义然后才能够在“Space”处进行选择。一个路由空间由多个维dimension组成。创建1个路由空间的过程如下。第1步选择“spaces”节点按右键选择“Add space”图16 新建路由空间第2步输入路由空间名称S1图17 输入路由空间名称第3步选择“S1”节点按右键选择“Add dimension”图18 新建一个维第4步输入“length”维名图19 输入维名第5步为S1路由空间再添加2个维width、height。图20 S1路由空间3.4 基于KY-OMT1516开发对象模型3.4.1 基本功能KY-OMT1516启动后的界面如下图所示在Linux下可以设置KY-OMT1516.sh中的比例因子来改变图形界面大小可以在终端中执行KY-OMT1516.sh或双击KY-OMT1516在Windows中直接双击KY-OMT1516。通过“File”菜单可新建、打开、保存一个后缀为.xml文件通过“MIM”子菜单“Save HLAstandardMIM-2025.xml”可生成一个IEEE 1516-2025标准规定的HLAstandardMIM-2025.xml文件。与HLA1.3的单个fed文件不同IEEE 1516-2025标准可以为仿真提供多个不同的xml文件每个文件称之为一个FOM模块。HLAstandardMIM-2025.xml就是其中一个不可缺少的模块用户还可以通过本工具生成其他文件通过“Help”菜单可查看帮助信息。图21 KY-OMT1516的启动界面3.4.2对象类的创建在KY-RTI的bin目录下有1个Tracer.xml文件该文件仅含有一个如下的对象类可理解为一架飞机在飞行过程中所发布的xPos和yPos二维态势信息只要订购了该对象类的属性信息的仿真成员都能够接收到该飞机的态势信息飞机本身不需要关注有哪些仿真成员订购了自己的态势信息。objectClassnameplane/namesharingPublishSubscribe/sharingsemanticsExample object class from tracer.fed/semanticsattributenamexPos/namedataTypeHLAunicodeString/dataTypeupdateTypeConditional/updateTypeupdateConditionOn change/updateConditionvalueRequiredtrue/valueRequiredownershipDivestAcquire/ownershipsharingPublishSubscribe/sharingtransportationHLAreliable/transportationorderTimeStamp/order/attributeattributenameyPos/namedataTypeHLAunicodeString/dataTypeupdateTypeConditional/updateTypeupdateConditionOn change/updateConditionvalueRequiredtrue/valueRequiredownershipDivestAcquire/ownershipsharingPublishSubscribe/sharingtransportationHLAreliable/transportationorderTimeStamp/order/attribute/objectClass下面是Tracer.xml文件的生成过程。第1步选择“HLAobjectRoot”节点按右键选择“Add object class”图22 添加子对象类第2步输入“plane”对象类名图23 输入子对象类名第3步选择“plane”节点按右键选择“Add attribute”图24 添加一个属性第4步输入“xPos”属性名图25 添加xPos属性下图设置xPos属性的其他特性点击“Apply”保存。图26 添加xPos属性的各个字段的含义第5步按照xPos属性方法添加yPos属性并设置其他特性图27 添加yPos属性的各个字段的含义第6步将文件保存为Tracer.xml。​​​​​​​3.4.3交互类的创建在KY-RTI的bin目录下有1个Chat.xml文件该文件仅含有一个如下的交互类可理解为大家通过RTI进行聊天发送给RTI的信息包括发送者名字和说的一句话它们被封装为chat交互类。interactionClassnamechat/namesharingPublishSubscribe/sharingtransportationHLAreliable/transportationorderReceive/ordersemanticsChat message: sender name and sentence/semanticsparameternamename/namedataTypeHLAunicodeString/dataType/parameterparameternamesentence/namedataTypeHLAunicodeString/dataType/parameter/interactionClass下面是Chat.xml文件的生成过程。第1步新建一个文件选择“HLAinteractionRoot”节点按右键选择“Add interaction class”图28 添加子交互类第2步输入“chat”交互类名图29 输入子交互类名第3步选择“chat”节点按右键选择“Add parameter”图30 添加一个参数第4步输入“name”参数名图31 添加name参数下图设置name参数的其他特性点击“Apply”保存。可以从下拉框中选择该参数的数据类型添加Semantics注释。假设选择了一个数据类型则公布方程序和订购方程序按照约定在编程中使用该数据类型。图32 设置name参数特性第5步按照name参数方法添加sentence参数并设置其他特性图33 添加sentence参数6步将文件保存为Chat.xml。​​​​​​​3.4.4维的创建如果采用HLA的数据分发管理服务则需要定义维。路由空间Space是HLA1.3的概念在IEEE 1516-2025中直接创建维在程序中再创建由多个维构成的区域Region。图24、图30都显示了“Dimensions”但因为那时没有定义所以不可用如果定义了多个维则可以操作。这里在Chat.xml基础上继续操作。创建1个维的过程如下。第1步选择“dimensions”节点按右键选择“Add dimension”图34 新建length维第2步输入维名length图35 输入维名第3步按相同的方法再创建width、height维图36 新建width和height维第4步选择chat交互类使用的维图30维不可用现在维定义后可用。图37 选择交互类使用的维​​​​​​​3.4.5开关IEEE 1516-2025中有10多个开关选择“switches”节点设置开关的缺省值。图38 选择开关KY-RTI的Linux、Windows版本和源码请联系作者:walt_lbq163.comKY-RTI分布仿真技术前 言KY-RTI分布仿真技术第一章 简介KY-RTI分布仿真技术第二章 系统安装KY-RTI分布仿真技术第三章 KY-OMT对象模型模板工具KY-RTI分布仿真技术第四章 C程序设计KY-RTI分布仿真技术第五章 Qt程序设计KY-RTI分布仿真技术第六章 Java程序设计KY-RTI分布仿真技术第七章 Visual C程序设计KY-RTI分布仿真技术第八章 Visual C#程序设计KY-RTI分布仿真技术第九章 综合演示KY-RTI分布仿真技术第十章 Python程序设计KY-RTI分布仿真技术第十一章 人工智能大模型仿真--低空无人机巡逻实战示例KY-RTI分布仿真技术第十二章 HLA联邦保存与恢复--仿真中的热恢复与冷恢复KY-RTI分布仿真技术第十三章 基于Unity的多语言三维态势仿真--以Island Assault夺岛突击想定为例KY-RTI分布仿真技术第十四章 Go程序设计KY-RTI分布仿真技术第十五章 Rust程序设计KY-RTI分布仿真技术附录1 分组聊天HLA数据分发管理的应用KY-RTI分布仿真技术附录2 大联邦构建1000个成员的HLA/RTI仿真系统KY-RTI分布仿真技术附录3 国产化操作系统CPUs
返回列表