KY-RTI分布仿真技术:第一章 简介

2023-05-16

第一章 简介

       高层体系结构(High Level Architecture,HLA)是美国国防部为了解决美军在各个领域开发出来的多种模型和各类仿真系统的互联和互操作问题而提出的一种分布式仿真标准,而按照HLA接口规范实现的软件则被称之为运行支撑平台(Run Time Infrastructure,RTI)。HLA定义了一个通用的、灵活的、可伸缩的、可重用的仿真软件体系结构,实现了基于组件“即插即用”的分布式仿真思想。

       1996年8月,美国国防部建模和仿真办公室(Defense Modeling & Simulation Office,DMSO)颁布了第一个HLA标准HLA 1.0,DMSO的最新标准为1998年2月颁布的HLA 1.3。1997年12月,HLA 1.3被仿真互操作标准化委员会SISC(Simulation Interoperability Standards Committee)接纳为IEEE标准草案,并在2000年9月被正式接纳为IEEE 1516标准。当前的IEEE1516标准由瑞典Pitch公司主导,该公司实现的RTI软件为pRTI。

       HLA极大地丰富和促进了各国仿真事业的发展,并已发展成为分布式仿真领域的前沿和热点技术。

1.1 KY-RTI遵循的标准

       KY-RTI旨在为国产操作系统提供全方位支持。KY-RTI遵循HLA1.3标准,采用HLA1.3标准实现KY-RTI主要基于以下几点理由。

       (1)HLA1.3简单实用,编程方便。与之相对,IEEE1516标准则更加规范化,但编程相对复杂。以参数类型来说,IEEE 1516对参数类型进行了更复杂的封装。逻辑时间一般用浮点数就可以实现了,通过“+”、“-”、“<”、“>”等运算符进行逻辑时间的运算和比较操作;但在IEEE1516标准中却无法做到,逻辑时间必须实例化,再通过调用对象类中的方法来进行运算和比较。再看字符串类型,在C++中常用的char数组、string、Qt中的QString、VC++中的CString等,这些类型相互之间转换也比较容易,但在IEEE 1516中被定义为wstring,平时有多少用户使用wstring呢?与之相关的数据类型wchar_t、_bstr_t等又有多少用户熟悉呢?IEEE 1516这种封装看似比HLA1.3更加标准化了,但使用起来却不方便。

       (2)美军几乎都在使用DMSO自己定义的HLA1.3标准,而不是一个由他国公司主导的仿真标准。

       (3)遵循HLA1.3标准,可以更好地兼容原有仿真系统。像10多年以前的仿真系统,一般都是基于HLA1.3标准开发,但这些仿真程序现在一般很难运行在最新的操作系统和CPU上;但通过KY-RTI可以方便地移植到最新的操作系统和CPU上。

1.2 KY-RTI的特点

       KY-RTI的特点概括如下:

       (1)与DMSO RTI-1.3NGv6完全兼容

       DMSO RTI-1.3NGv6是DMSO开发的一个RTI软件。KY-RTI采用了与DMSO RTI-1.3NGv6完全一样的.h文件和库文件名,因此与DMSO RTI-1.3NGv6完全兼容。采用DMSO RTI-1.3NGv6编写的程序几乎不需要修改任何代码即可移植到KY-RTI,包括Windows程序和Linux程序。

       (2)支持Linux和Windows操作系统

       除了支持Windows,KY-RTI为Linux和各种国产操作系统和国产CPU提供全面支持。当前,KY-RTI在x86、飞腾、龙芯、申威等CPU,在RedHat、CentOS、Ubuntu、银河麒麟、中标麒麟、优麒麟、深度等操作系统上都运行良好,并且能够很好地移植到其他国产操作系统和CPU。

       (3)支持GNU C++、Qt、Java、Visual C++、Visual C#

       KY-RTI支持多种程序设计语言,包括GNU C++、Qt、Java、Visual C++、Visual C#。Java支持OpenJDK和Oracle JDK、JRE。Visual C++版本包括VC6.0、VC2005、VC2008、VC2010、VC2013等。

       KY-RTI支持基于不同操作系统、不同CPU、不同程序设计语言开发的仿真成员之间实现透明通信,就好像这些仿真成员在同一台计算机上使用同一种程序设计语言毫无障碍地进行数据通信。

       (4)坚持“大道至简”的设计原则

       对于C++接口而言,KY-RTI采用了与DMSO RTI-1.3NGv6完全一样的.h文件和库文件名。但对于Java和Visual C#来说,则采用了能简单则尽量简单的原则,所有Handle(例如仿真成员句柄、对象类句柄、对象实例句柄、交互类句柄、参数句柄等)都用int表示,所有时间都用double表示。从而有效地提高用户的编程效率。

       (5)融合IEEE1516标准的优点,支持使用tick和不使用tick两种程序设计方法

       在基于HLA1.3标准开发时间管理服务的程序时,仿真成员需要不断调用tick服务来接收来自RTI的回调消息;否则将收不到消息。KY-RTI对此进行了功能增强,既可以按照HLA1.3标准,采用tick服务来接收回调消息;也可以不采用tick服务而直接接收回调消息。

       当仿真程序第一次运行时,会在当前目录产生1个叫做“RTI.rid”的文件。RTI.rid是遵循HLA1.3标准实现的RTI所采用的文件。KY-RTI对其功能进行了扩展,如图1.1所示,该文件定义了RTI服务器的IP地址和端口号;另一方面还定义了一个tick开关标识。图中的IP地址为127.0.0.1,即为本机;端口号为10000,可在configure.rti中修改。“;; UsingTickSwitch On”为tick开关标识,该标识以“;;”开头,其他RTI会把该行作为注释行而忽略;KY-RTI会根据该标识确定仿真成员是否使用tick服务;设置为“;; UsingTickSwitch On”表示使用tick服务;设置为“;; UsingTickSwitch Off”表示不使用tick服务。如果没有这一行,则默认表示使用tick服务;因此,基于DMSO RTI-1.3NGv6开发的程序,其RTI.rid文件中并没有这一行,但同样可以在KY-RTI上运行。

                                                                       图1.1 自动生成的RTI.rid

1.3 章节说明

       本文主要围绕KY-RTI在GNU C++、Qt、Java、Visual C++、Visual C#等多个程序设计语言的仿真成员开发方法进行介绍。前三种语言分别针对KY-RTI在Linux软件包中的聊天程序和时间管理程序进行介绍;后两种语言通过KY-RTI在Windows软件包中的ping、pong程序进行介绍。通过相近程序的比较,用户可以迅速地掌握基于KY-RTI开发仿真系统的方法。

       第一章,本章介绍了KY-RTI遵循HLA1.3标准的原因、KY-RTI自身的优点。对于用户而言,需要重点关注图1.1,在程序设计中会经常用到。

       第二章,本章介绍了KY-RTI在Linux和Windows系统下的安装方法。

       第三章,本章介绍了对象模型模板的概念,再次探讨了将对象类和交互类作用于数据交换时,在很多情况下是等价的。另外,介绍了基于KY-OMT工具建立fed文件的方法。

       第四章,本章介绍了基于GNU C++开发两个示例程序的方法,包括聊天程序和时间管理程序。

       第五章,本章介绍了使用Qt Creator开发聊天程序和时间管理程序的方法。聊天程序是一个控制台Qt程序,而时间管理程序则是一个图形界面的Qt程序。时间管理程序是一个接近真实仿真系统的典型用例。

       第六章,本章介绍了基于Java开发两个示例程序的方法,包括聊天程序和时间管理程序。用户应主要关注Java程序的接口和调用形式,用例程序的逻辑在前面章节中已有多次介绍。另外,Java程序的使用方式与Visual C#较为相似,两者可参照查看。

       第七章,本章介绍了基于Visual C++开发ping、pong示例程序的方法。

       第八章,本章介绍了基于Visual C#开发ping、pong示例程序的方法。另外,Visual C#程序的使用方式与Java较为相似,两者可参照查看。

       第九章,本章介绍了3个演示系统。一是基于银河麒麟操作系统实现了GNU C++、Qt、Java三种程序的互操作;二是基于Windows 7实现了Visual C++和Visual C#两种程序的ping-pong测试;三是在飞腾和x86两种CPU型号的机器上,基于银河麒麟操作系统和Windows 7实现了GNU C++、Qt、Java、Visual C++和Visual C#等各种程序的互操作功能。在这些程序中,有些使用了tick服务,有些则没有使用tick服务。结果表明KY-RTI具有很好的集成性,能够把基于不同CPU、不同操作系统、不同程序设计语言、不同HLA服务调用方式开发的仿真程序完美地集成在一起。本章以银河麒麟操作系统和飞腾CPU为主进行测试,同样的测试也适用中标麒麟操作系统和龙芯CPU,以及深度操作系统和申威CPUKY-RTI支持x86、飞腾、龙芯、申威等机器的互联互通,实现各类程序的集成。

KY-RTI的Linux、Windows版本和源码请联系作者:walt_lbq@163.com 

   

KY-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分布仿真技术:附录1 分组聊天(HLA数据分发管理的应用)

KY-RTI分布仿真技术:附录2 大联邦(构建1000个成员的HLA/RTI仿真系统)

KY-RTI分布仿真技术:附录3 国产化(操作系统+CPUs)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KY-RTI分布仿真技术:第一章 简介 的相关文章

随机推荐

  • Spring

    IOC与快速入门 Bean的创建 IOC注解 AOP简介与注解 事务控制 IOC原理 AOP原理 IOC容器的初始化过程 BeanFactory如何创建bean xff1f Spring Bean的创建过程 Spring的事务有了解吗 Sp
  • linux 在shell下如何 将字符串写入 文件?

    用重定向即可 echo 34 aaa 34 gt a txt 追问 中间可以加路径么 xff1f 比如 echo 34 aaa gt home root a txt 可以么 回答 可以 xff0c 绝对路径和相对路径都可以
  • shell将脚本输出结果记录到日志文件

    使用tee命令 xff1a sh portal main sh tee log txt 获取脚本父类路径 cmddir 61 34 96 dirname 0 96 34
  • Linux下Intel集成显卡驱动安装

    在http intellinuxgraphics org 中下载最新的驱动包 xf86 video intel 2 15 0 Debian的源中有安装包xserver xorg video intel xff0c 其实就是基于xf86 vi
  • Qt Creator中添加菜单栏实例

    Qt Creator中添加菜单栏 nbsp 实例是本文介绍的内容 内容不多 很丰富的实现 先来看内容 Qt中的菜单栏添加相对VC比较简单 今天找了一天的槽函数如何添加 到了下午的时候终于有些眉目 现在我们来看一下在Qt中如何添加菜单栏 1
  • 使用 OBS 进行区域录制

    1 OBS 与区域录屏 实际上 OBS 的使用场景可谓是与区域录屏格格不入的 虽然我们依旧有一些办法在 OBS 中达到区域录屏的目的 xff0c 但其操作实在过于繁琐 xff0c 还不如直接使用 QQ 或者 Windows 最新的自带截屏录
  • Linux驱动与一般应用的区别【Linux驱动之路一】

    Linux驱动和一般应用的区别 xff0c 大致可以归类为以下几点 xff1a 一 Linux驱动 属于内核级 xff0c 驱动程序的崩溃会导致整个系统的崩溃 xff0c 例如在驱动程序中出现了非法指针的应用 xff0c 就会导致系统的崩溃
  • Docker 初学者指南 — 如何使用 Docker-Compose 创建客户端/服务器端

    您是一名开发人员并且想探索 docker compose xff1f 这篇文章是为你而写的 在对 Docker Compose 进行简短介绍后 xff0c 您将能够使用 Docker 创建您的第一个客户端 服务器端应用程序 注意 xff1a
  • WSTOOL中止下载后的错误。{ROS}

    运行wstool init j8 src hydro desktop full wet rosinstall时 xff0c 由于网络原因中止 xff0c 再开的时候会报错 错误提示 xff1a Error There already is
  • FreeRTOS 启动流程浅析 vTaskStartScheduler --待续

    1 Scheduler status xff1a 全局标志 xff1a static volatile BaseType t xSchedulerRunning 61 pdFALSE 取值 xff1a define taskSCHEDULE
  • Windows的linux子系统无法使用NFS

    需求 xff1a 不能装双系统 xff0c 虚拟机本地文件共享又不方便 xff0c 所以想要用win10商店的linux子系统 xff08 ubuntu18 04 xff09 配合NFS实现本地的linux环境编程测试 xff0c 再同步到
  • Docker

    文章目录 Docker1 Docker简介1 1 什么是虚拟化1 2 什么是Docker1 3 容器与虚拟机比较1 4 Docker 组件1 4 1 Docker服务器与客户端1 4 2 Docker镜像与容器1 4 3 Registry
  • tensorflow图优化详解

    一 运行时优化 Grappler是TensorFlow提供的运行时优化功能 xff0c 图1为Grappler模块主要功能的UML关系图 其中tensorflow grappler GrapplerItem 表示待优化的TensforFlo
  • 理解一维数组中 buf、buf[0]、&buf[0]、&buf 四个符号的含义

    本文内容摘自 C语言内核深度解析 一书的深入学习数组部分 以 int buf 100 61 0 为例 xff0c 集中讨论 buf buf 0 amp buf 0 amp buf 四个字符含义的内涵 1 buf xff1a 有两层含义 xf
  • 无人机航线规划软件[航线通]

    无人机航线规划软件 航线通 xff08 RoutePlan xff09 是数据禾 xff08 databox store xff09 研发的具有自主知识产权的无人机航线规划及飞行的移动端控制软件 xff0c 主要适用于大疆无人机 xff0c
  • Ubuntu20.04安装Cartographer_ros,conda环境X11问题

    absl的解决 conda 环境的 X11 问题 xff1a conda span class token function install span c conda forge xorg libx11
  • 单目视觉定位测距的两种方式

    单目定位和双目定位的选择 xff0c 我觉得主要还是成本和时间的考虑 之前也尝试过双目定位 xff0c 感觉要更精准些 xff0c 但双目测距需要对两幅图像进行图像变换和极线匹配 xff0c 稍微耗时了一些 这几天尝试了一下单摄像头进行测距
  • KY-RTI分布仿真技术:附录3 国产化(操作系统+CPUs)

    以操作系统和CPU为代表的国产化是当前仿真系统实现的必然趋势 本章以聊天程序为例 xff0c 展示了KY RTI在多种国产操作系统和国产CPU上的运行结果 聊天程序是一个入门程序 xff0c 本身比较简单 xff0c 不追求界面的美观 相信
  • KY-RTI分布仿真技术:前言

    前 言 自从美国国防部建模与仿真办公室 xff08 DMSO xff09 首次提出高层体系结构 xff08 High Level Architecture xff0c HLA xff09 概念以来 xff0c HLA仿真技术得到了迅猛发展
  • KY-RTI分布仿真技术:第一章 简介

    第一章 简介 高层体系结构 xff08 High Level Architecture xff0c HLA xff09 是美国国防部为了解决美军在各个领域开发出来的多种模型和各类仿真系统的互联和互操作问题而提出的一种分布式仿真标准 xff0