KY-RTI分布仿真技术教程

2023-05-16

已剪辑自: https://blog.csdn.net/sillysunny/article/details/84197424

第一章 简介

​ 高层体系结构(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上运行。

img

​ 图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,以及深度操作系统和申威CPU;KY-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分布仿真技术教程 的相关文章

  • 【Python全栈100天学习笔记】Day44 Web表单介绍及使用

    表单的应用 我们继续来完成上一章节中的项目 xff0c 实现 用户注册 和 用户登录 的功能 xff0c 并限制只有登录的用户才能为老师投票 Django框架中提供了对表单的封装 xff0c 而且提供了多种不同的使用方式 首先添加用户模型
  • 【Python全栈100天学习笔记】Day45 Cookie和Session介绍及使用

    Cookie和Session 实现用户跟踪 如今 xff0c 一个网站如果不通过某种方式记住你是谁以及你之前在网站的活动情况 xff0c 失去的就是网站的可用性和便利性 xff0c 继而很有可能导致网站用户的流式 xff0c 所以记住一个用
  • 【Python全栈100天学习笔记】Day46 导入导出Excel报表和配置日志

    报表和日志 导出Excel报表 报表就是用表格 图表等格式来动态显示数据 xff0c 所以有人用这样的公式来描述报表 xff1a 报表 61 多样的格式 43 动态的数据 有很多的三方库支持在Python程序中写Excel文件 xff0c
  • 【Python全栈100天学习笔记】Day47 Django中间件使用

    中间件的应用 实现登录验证 我们继续来完善投票应用 在上一个章节中 xff0c 我们在用户登录成功后通过session保留了用户信息 xff0c 接下来我们可以应用做一些调整 xff0c 要求在为老师投票时必须要先登录 xff0c 登录过的
  • 【Python全栈100天学习笔记】Day48 前后端分离开发入门

    前后端分离开发入门 在传统的Web应用开发中 xff0c 大多数的程序员会将浏览器作为前后端的分界线 将浏览器中为用户进行页面展示的部分称之为前端 xff0c 而将运行在服务器 xff0c 为前端提供业务逻辑和数据准备的所有代码统称为后端
  • 【Python深度学习之路】-3.1性能评价指标

    1 理解混淆矩阵 所谓混淆矩阵 xff0c 是指将模型对各个测试数据的预测结果分为真阳性 真阴性 假阳性和假阴性并对符合各个观点的预测结果的数量进行统计的一种表格 其中 xff0c 真阳性和真阴性表示机器学习模型的回答是正确的 xff0c
  • 【Python深度学习之路】-3.2PR曲线

    1 何谓PR曲线 所谓PR曲线是指用横轴表示召回率 xff0c 纵轴表示精确率 xff0c 将数据绘制成图表的形式所得到的曲线 召回率和准确率两个指标成反比关系 xff0c 所谓反比关系 xff0c 指的是当提升精确率时 xff0c 召回率
  • 【Python深度学习之路】产生随机数

    随机数的生成 1 设置种子 计算机是根据被称为 种子 seed 的数据来生成随机数的 所谓种子 xff0c 是指在生成随机数的过程中所使用的初始值 xff0c 如果种子的值固定不变 xff0c 生成的随机数序列也是不变的 通过使用相同的随机
  • 【Python深度学习之路】时间序列数据

    1 datetime类型 对于时间序列数据进行处理时 xff0c 需要使用表示时间的方法 在P樱桃红中提供了datetime数据类型来对日期和实践进行处理 指定datetime datetime 年 xff0c 月 xff0c 日 xff0
  • caffe学习笔记

    一 mnist例程 https blog csdn net bestrivern article details 85101303 二 cifar10例程 附录 xff1a caffe常见问题及注意事项 https blog csdn ne
  • 我的创作纪念日

    机缘 提示 xff1a 可以和大家分享最初成为创作者的初心 例如 xff1a 实战项目中的经验分享日常学习过程中的记录通过文章进行技术交流 收获 提示 xff1a 在创作的过程中都有哪些收获 例如 xff1a 获得了多少粉丝的关注获得了多少
  • Python数据分析常用30段优化代码

    1 重复元素判定 以下方法可以检查给定列表是不是存在重复元素 xff0c 它会使用 set 函数来移除所有重复元素 def all unique lst return len lst 61 61 len set lst x 61 1 1 2
  • Python妙用小工具:2行Python给图片加水印

    filestools库介绍 今天给大家介绍的Python库 xff0c 叫做filestools xff0c 由小小明开发 xff0c 直接使用如下命令 xff0c 安装后使用 pip install filestools index ur
  • 在Excel中调用Python脚本,实现数据自动化处理

    说起Excel xff0c 那绝对是数据处理领域王者般的存在 xff0c 尽管已经诞生三十多年了 xff0c 现在全球仍有7 5亿忠实用户 xff0c 而作为网红语言的Python xff0c 也仅仅只有700万的开发人员 Excel是全世
  • Python数据分析中常用的工具类和方法【持续更新系列】

    本文主要记录在工作和学习中 xff0c 做数据分析常用到的一些简单的工具函数和类 span class token comment 判断是否为浮点数 span span class token keyword def span span c
  • 【Python深度学习之路】-1 机器学习概论

    Python深度学习之路 1 机器学习概论 1 1 机器学习简介 机器学习火热的原因是 xff1a 人类无论如何也做不到在短时间内实现从大量数据中自动地计算出正确结果的操作 所谓机器学习 xff1a 通过对数据进行反复的学习 xff0c 来
  • 【Python深度学习之路】-2.1 机器学习的流程

    2 1 机器学习的流程简介 进行机器学习的整体流程 xff1a 数据收集 数据清洗 xff08 清洗重复或缺失的数据 xff0c 以提高数据的精读 xff09 运用机器学习算法对数据进行学习 xff08 获取基准 xff09 使用测试数据进
  • 【Python深度学习之路】-2.2 过拟合与集成学习

    2 3 过拟合 计算机对数据进行了过度的学习而产生的状态 xff0c 简称 过拟合 避免过拟合的方法 xff1a 深度学习中会使用 Dropout 的方法 xff0c 而在常规解决方案中 xff0c 我们通常会使用 归一化 来消除对存在偏差
  • 【Python深度学习之路】-4 监督学习

    Python深度学习之路 4 监督学习 4 1 了解监督学习 xff08 分类 xff09 监督学习 xff1a 根据积累的经验数据对新的数据或将来的数据进行预测 xff0c 或者进行分类的一种学习方式 无监督学习 xff1a 对积累的经验
  • 【Python】string模块之ascii_letters、digits(用于生成验证码)

    方法概述 xff1a 1 ascii letters方法的作用是生成全部字母 xff0c 包括a z A Z 2 digits方法的作用是生成数组 xff0c 包括0 9 span class token keyword import sp

随机推荐

  • 傅里叶变换

    傅里叶变换 目录 滤波傅里叶变换简介傅里叶变换的性质快速傅里叶变换 xff08 FFT xff09 一 xff1a 滤波 滤波是将信号中特定波段频率滤除的操作 xff0c 是抑制和防止干扰的一项重要措施 是根据观察某一随机过程的结果 xff
  • centos 常用的网络登录端口测试工具

    ssh 登录 last lastb who users w lastlog ac d ac p lsof lsof i 443 ngrep ngrep port 80 ngrep q 39 GET HTTP 1 01 39 ngrep q
  • 基于stm32的半实物仿平台开发——FreeRTOS、PID控制电机

    目录 一 系统方案 1 1 系统基本方案 1 2 程序结构方案设计 二 系统理论分析计算 2 1控制算法的分析 三 硬件的选型 3 1编码器电机的选型 四 源代码 摘要 本文基于STM32F103ZET6开发板开发了一个直流电机的实物控制系
  • vnc viewer使用方法

    首先需要配置ip xff0c 网络适配器配置那个ipv4到同一网段 1 双击打开exe 2 输入目标ip 端口 3 输入密码 服务器管理工具 这里写目录标题 一 VNC管理工具1 1 工具介绍1 2 使用步骤1 3 使用截图 二 KVM安装
  • 【Unity Shader】用Cubemap实现天空盒和环境映射

    1 关于Cubemap Cubemap在实时渲染中有很多应用 xff0c 最常见的就是实现天空盒 xff08 Skybox xff09 和环境映射 xff08 Environment Mapping xff09 2 实现天空盒 2 1 实现
  • ubuntu samba搭建教程

    1 更新当前软件 sudo apt get upgrade sudo apt get update sudo apt get dist upgrade 2 安装samba服务器 sudo apt get install samba samb
  • 大数据学习路径

    第一阶段linux 43 搜索 43 hadoop体系 Linux基础 shell编程 高并发架构 lucene solr搜索 hadoop体系 HDFS mapreduce hbase zookeeper hive flume sqoop
  • 【Windows11来了】WIN11抢先体验,使用VMware虚拟机安装WIN11

    2021 6 30更新 xff1a 解决安装时出现 Operating System not found 的问题 2021 6 26更新 xff1a 解决了不同VMware版本可能默认引导方式不同造成启动不成功的问题 2021 6 25更新
  • 斜杠、反斜杠、双斜杠、反双斜杠的区别和使用方法及范围

    背景 这边我就找了两篇大神写的文章 xff0c 讲得非常清晰明了 文章主要讲了一些历史缘故和我们面对各种斜杠时的疑惑 斜杠 和反斜杠 深入探讨正斜杠和反斜杠 概念 1 斜杠 34 34 是URL地址中用到的分隔符 xff0c 并且在linu
  • C语言中int占几个字节,指针占几个字节,由什么决定呢?

    int占几个字节 今天心血来潮 xff0c 想要了解一下C语言中各整型占用几个字节 先上代码测试两个环境 xff1b include lt stdio h gt include lt stdlib h gt int main printf
  • 虚拟串口模拟器和串口调试助手使用教程

    虚拟串口 xff08 虚拟 COM 端口 xff09 xff0c 应该很多人都知道 xff0c 也就是一种模拟物理串行接口的 软件 它完全复制了硬件 COM 接口的功能 xff0c 并且将被操作系统和串行应用程序识别为真实端口 以前的电脑
  • 在Ubuntu上安装Boost的五种方法(全网最全,建议收藏)

    问题描述 我在Ubuntu上 xff0c 并且想安装Boost 我尝试过 sudo apt get install boost 但是没有这样的软件包 在Ubuntu上安装Boost的最佳方法是什么 xff1f 最佳方法 您可以使用apt g
  • 编程入门指南:零基础如何自学编程?

    注明一下 xff1a 本文适用于零基础 xff0c 想自学编程的伙伴 xff0c 重点在于盘清底层逻辑以及整理一些学习途径 编程学习如何入门 xff1f 第一步 xff1a 做好心理建设 首先要告诉你一个坏消息 xff1a 自学编程的弯路多
  • Clion中控制台中文出现乱码怎么解决?

    为什么会出现乱码 xff0c 肯定是字符的编码方式不匹配导致的 我们知道 xff0c 现在比较新一点的编辑器和IDE基本都是默认UTF 8编码了 xff0c 但是在Windows下 xff0c 控制台中的中文编码格式是GBK xff0c 因
  • Pandas教程(非常详细)

    文章目录 教程特点阅读条件 Pandas是什么Pandas主要特点Pandas主要优势Pandas内置数据结构 Pandas库下载和安装Windows系统安装Linux系统安装1 Ubuntu用户2 Fedora用户 MacOSX系统安装
  • Pygame教程(非常详细)

    文章目录 教程特点阅读条件 Pygame是什么扩展知识 Pygame下载和安装1 pip包管理器安装2 二进制安装包安装 第一个Pygame程序初始化程序创建Surface对象事件监听游戏循环 Pygame Display显示模块详解Pyg
  • 如何系统地入门学习stm32?

    来自 xff1a https www zhihu com question 46616925 心得 xff1a 本人当初学习STM32的时候有一些跟风的因素 xff0c 自以为学的芯片越多就越厉害 61 61 其实 xff0c 学习嵌入式重
  • 一口气从零读懂CAN总线以及应用

    在各种总线通信中 xff0c 很多都是点对点的通信方式 xff0c CAN总线是一种去中心化的多主控通信方式 xff0c 在汽车领域应用很多 xff0c 因此有必要了解一下 概要 上世纪八十年代以来 xff0c 汽车ECU越来越多 xff0
  • 开源免费录屏和直播软件OBS Studio教程

    转载于 xff1a https zhuanlan zhihu com p 107720665 OBS Studio是目前比较主流的免费开源录屏和直播软件 xff0c 它提供了丰富的功能特性 xff0c 可以媲美一些受欢迎的同类商业软件 如果
  • KY-RTI分布仿真技术教程

    已剪辑自 https blog csdn net sillysunny article details 84197424 第一章 简介 高层体系结构 xff08 High Level Architecture xff0c HLA xff09