本书以分布式仿真为核心主题,围绕高层体系结构 HLA(High Level Architecture)展开系统性研究,完整讲解 HLA 联邦全流程实现技术,覆盖对象模型开发至联邦应用程序开发全链条,并结合实例逐一演示各类联邦接口服务的实现方式。
?
全书核心内容包含:高层体系结构 HLA 基础理论与近年技术开发概况、对象模型开发流程、对象模型搭建方法、自动化代码生成技术、层次式架构下联邦成员应用开发、联邦成员工程实现方案、智能 Agent 与 HLA 体系融合技术、完整工程案例综合研究等板块。
?
本书兼顾理论原理与实操案例,可作为分布式仿真、HLA 仿真开发相关专业师生、仿真工程研发人员的专业参考用书。
序
?
我一直很喜欢驾驶船只,但这是非常特别的一天。在人生中第一次,我驾驶着一艘巨大的船,它是长 203 米、载有 2500 名乘客的客轮 SiljaSymphony。当我正要进入 Helsinki 港时,我注意到一艘小船穿过我的船只行进路径。我急转船舵,但什么也没发生。我不停地转着,五秒钟后,我所驾驶的船只反应过来,完全失控地朝着一个码头急转过去。再过几秒钟,这艘船就会撞毁,造成一场重大灾难。
?
幸运的是,所有这些都发生在驾驶学校的模拟器中。当我驾驶着这艘船,沉浸在虚拟的环境中时,我的心怦怦作响。几分钟后,我喝着一杯咖啡冷静下来,而教练帮我纠正我的决策和所犯的错误。
?
仿真让我们体验到危险的情况,让我们学会如何在不冒生命危险的情况下处置事件。模拟器的训练可以在节约时间和金钱的同时,无须使用真正的船只或飞机。模拟器让我们尝试许多假设情景,分析结果,并做出更好的决策。仿真把我们带到我们无法触及的地方。
?
仿真程序最初是由个人或群体作为整体应用程序开发的。随着仿真技术的进步,几种仿真应用可以相互连接。来自多个团队的专业知识可以结合起来,使构建更强大、可扩展和交互式的仿真系统成为可能。仿真程序可以模拟更复杂的场景,更像真实世界的场景。物理设备、人类决策、传感器、环境、通信等都可以集成到一个整体方法中,解决当今复杂世界中的重要问题。
?
二十多年来,我一直参与开发分布式仿真系统,并支持仿真互联标准的演化。我访问了许多国家和地区,为日本、巴西、加拿大、中国、美国和大多数欧洲国家的分布式仿真项目提供建议。无论我去哪里,我都看到了对分布式仿真技术的巨大需求。
?
我很荣幸能介绍托普丘和奥古兹图尊博士的书,书中给出了仿真的介绍,以及对分布式仿真系统设计的有价值的见解。这本书从分布式仿真领先的现代标准 高层体系结构(HLA)的历史和概述开始介绍。HLA 提供了在共同形成联邦的仿真系统之间进行信息交换和同步的服务。
?
为了成功地将 HLA 应用于特定领域,无论是驾驶培训、空间任务规划、运输还是制造,都需要一个联邦对象模型(FOM)。FOM 描述了仿真交换的信息。本书的第二部分涵盖了这个有趣的领域。今天,世界各地正在进行许多 FOM 标准化工作,例如,空间参考 FOM、空中交通管理 FOM、实时平台参考 FOM、道路交通仿真 FOM 以及北约教育和训练 FOM。本书的这一部分为任何想了解这些 FOM 和这种分布式仿真系统体系结构的人提供了基础。
?
在第三部分,托普丘和奥古兹图尊博士展示了被称为联邦成员的应用程序如何使用 HLA 以及它们是如何被构造和开发的。虽然 HLA 规范描述了每个服务,但本书展示了如何将所有内容组合在一起。各种工具和框架促进了 HLA 的开发。托普丘和奥古兹图尊博士介绍了这样一个框架。
?
在第四部分中涵盖了一些高级主题之后,托普丘和奥古兹图尊博士以一个完整的案例研究作为本书的结束。对读者来说,这应该是一个了解一切是如何整合在一起的好时机。
?
托普丘和奥古兹图尊博士的书对从学生到高阶实践者在内的大量仿真开发人员非常有价值。这本书也填补了多年来都缺少一本关于 HLA 的书籍的空白。我强烈推荐这本书,希望读者和我一样喜欢它!
?
Bjrn Mller
?
Pitch 技术公司副总裁兼联合创始人
?
IEEE1516 HLA 标准副总裁
?
瑞典 林克平
?
2017 年
目录
?
第一部分 绪论
?
第 1 章 引言
?
1.1 建模与仿真
?
1.1.1 什么是模型
?
1.1.2 什么是系统
?
1.1.3 什么是仿真
?
1.1.4 用于仿真的模型和用于构建的模型
?
1.1.5 仿真工程
?
1.1.6 时间和变化
?
1.2 分布式仿真
?
1.2.1 SIMNET
?
1.2.2 DIS 协议
?
1.2.3 聚合级仿真协议 ALSP
?
1.3 高层体系结构 HLA
?
1.4 工具
?
1.4.1 SimGe
?
1.4.2 RACoN
?
1.5 案例研究简介
?
1.5.1 海峡交通监测仿真
?
1.5.2 使用无人艇的海洋边界监视
?
1.6 书籍大纲
?
1.6.1 各章摘要
?
1.6.2 字体约定
?
1.7 小结
?
1.8 问题回顾
?
参考文献
?
第 2 章 高层体系结构 HLA
?
2.1 前言
?
2.1.1 什么是 HLA
?
2.2 基本组成部分
?
2.2.1 联邦成员和联邦
?
2.2.2 运行时基础设施
?
2.3 HLA 规则
?
2.3.1 联邦规则
?
2.3.2 联邦成员规则
?
2.4 HLA 数据模型与数据通信
?
2.4.1 HLA 数据通信模式
?
2.4.2 对象交换:公布 / 订购模式
?
2.4.3 数据:对象、交互和 HLA 类
?
2.4.4 对象模型模板
?
2.4.5 HLA 对象模型
?
2.4.6 对象模型模块化
?
2.5 接口规范
?
2.5.1 联邦管理
?
2.5.2 声明管理
?
2.5.3 对象管理
?
2.5.4 所有权管理
?
2.5.5 数据分发管理
?
2.5.6 时间管理
?
2.6 联邦执行的全生命周期
?
2.6.1 初始化
?
2.6.2 运行
?
2.6.3 终止
?
2.7 联邦部署示例
?
2.8 联邦和联邦成员状态
?
2.8.1 联邦执行状态
?
2.8.2 联邦成员状态
?
2.9 小结
?
2.10 问题回顾
?
参考文献
?
第 3 章 联邦开发概览
?
3.1 过程模型
?
3.2 联邦开发和指南
?
3.2.1 联邦设计
?
3.2.2 联邦成员设计
?
3.2.3 联邦成员实现
?
3.2.4 目标平台
?
3.2.5 与本地仿真系统 / 游戏集成
?
3.3 实现步骤
?
3.4 小结
?
3.5 问题回顾
?
参考文献
?
第二部分 对象模型开发
?
第 4 章 对象模型开发导论
?
4.1 SimGe 概述
?
4.2 管理 SimGe 项目
?
4.2.1 主要用户界面
?
4.2.2 创建项目
?
4.2.3 加载项目
?
4.2.4 保存和关闭项目
?
4.2.5 项目开始页
?
4.2.6 项目设置
?
4.2.7 选项
?
4.3 联邦体系结构建模
?
4.3.1 创建 FAM
?
4.3.2 联邦结构
?
4.4 小结
?
4.5 问题回顾
?
参考文献
?
第 5 章 对象模型构建
?
5.1 概述
?
5.2 创建联邦对象模型
?
5.3 加载已有 SimGe 对象模型
?
5.4 移除对象模型
?
5.5 导入 FED/FDD 文件
?
5.6 导出 FED/FDD 文件
?
5.7 对象模型编辑器
?
5.8 表格编辑器
?
5.8.1 对象模型标识
?
5.8.2 对象
?
5.8.3 交互
?
5.8.4 属性
?
5.8.5 参数
?
5.8.6 维度
?
5.8.7 时间表示
?
5.8.8 用户提供的标签
?
5.8.9 同步
?
5.8.10 案例研究:同步
?
5.8.11 传输
?
5.8.12 更新率
?
5.8.13 开关
?
5.8.14 数据类型
?
5.8.15 案例研究:数据类型
?
5.8.16 说明
?
5.8.17 接口规范服务
?
5.8.18 OMT 1.3 支持
?
5.9 文本视图
?
5.9.1 FED 和 FDD 文件的文本视图
?
5.10 验证 FDD 文件
?
5.11 MOM 集成
?
5.12 OM 资源管理器
?
5.12.1 遍历功能
?
5.12.2 修改功能
?
5.13 报告生成器
?
5.14 小结
?
5.15 问题回顾
?
参考文献
?
第三部分 联邦成员应用程序开发
?
第 6 章 代码生成
?
6.1 概述
?
6.2 用户界面
?
6.2.1 代码资源管理器
?
6.2.2 代码查看器
?
6.3 架构风格
?
6.3.1 对象模型的代码生成
?
6.3.2 联邦成员的代码生成
?
6.3.3 数据类型的代码生成
?
6.3.4 MOM 的代码生成
?
6.4 代码生成器配置
?
6.4.1 一般设置
?
6.4.2 回调设置
?
6.4.3 运行时设置
?
6.5 小结
?
参考文献
?
第 7 章 基于分层体系结构的联邦成员应用开发
?
7.1 联邦成员应用程序体系结构
?
7.1.1 表示层
?
7.1.2 仿真层
?
7.1.3 通信层
?
7.1.4 层次集成
?
7.1.5 仿真本地数据结构的封装
?
7.1.6 联邦基础库
?
7.2 开发环境配置
?
7.2.1 前提条件
?
7.2.2 操作环境配置
?
7.2.3 IDE 配置
?
7.3 案例研究:运行 STMS 联邦
?
7.3.1 用户界面
?
7.4 小结
?
参考文献
?
第 8 章 联邦成员实现:基础
?
8.1 案例研究:联邦成员架构
?
8.2 基本原理
?
8.2.1 命名空间
?
8.2.2 RACoN 方法
?
8.2.3 创建仿真管理器
?
8.2.4 创建联邦成员类
?
8.3 实现仿真对象模型
?
8.3.1 定义对象类及其属性
?
8.3.2 定义交互类及其参数
?
8.3.3 连接 SOM 和联邦成员
?
8.4 调用和回调
?
8.4.1 事件
?
8.4.2 事件处理
?
8.4.3 跟踪 RTI
?
8.5 联邦管理
?
8.5.1 联邦执行创建
?
8.5.2 加入联邦执行
?
8.5.3 初始化的高级方法
?
8.5.4 联邦执行的结束
?
8.5.5 连接丢失
?
8.6 声明管理
?
8.7 对象管理
?
8.7.1 实现仿真对象
?
8.7.2 注册对象
?
8.7.3 更新 HLA 对象属性
?
8.7.4 发现对象
?
8.7.5 反射属性值
?
8.7.6 请求属性值的更新
?
8.7.7 删除和移除对象实例
?
8.7.8 发送交互
?
8.7.9 接收交互
?
8.8 主仿真循环
?
8.8.1 控制台应用程序
?
8.8.2 Windows 窗体应用程序
?
8.8.3 Windows Presentation Foundation(WPF)应用程序
?
8.9 参数和属性编码 / 解码(序列化 / 反序列化)
?
8.9.1 支持的数据类型
?
8.10 小结
?
8.11 问题回顾
?
参考文献
?
第四部分 高级专题
?
第 9 章 联邦成员实现:高级
?
9.1 时间管理
?
9.1.1 时间控制联邦成员
?
9.1.2 时间约束联邦成员
?
9.1.3 时间推进
?
9.1.4 查询
?
9.1.5 更改首选顺序类型
?
9.1.6 发送和接收 TSO 消息
?
9.1.7 消息回收
?
9.2 联邦同步
?
9.3 联邦保存和恢复
?
9.4 数据分发管理
?
9.4.1 案例研究 1:STMS
?
9.4.2 创建区域
?
9.4.3 订购带区域的对象类
?
9.4.4 注册带有区域的对象实例
?
9.4.5 关联更新区域
?
9.4.6 案例研究 2:扩展聊天应用
?
9.4.7 订购带区域的交互
?
9.4.8 使用区域发送和接收交互
?
9.5 所有权管理
?
9.5.1 所有权管理服务
?
9.5.2 拉策略
?
9.5.3 推策略
?
9.5.4 案例分析:交通监测站之间转移跟踪
?
9.5.5 查询所有权
?
9.5.6 HLA 1.3 的 OwM 问题
?
9.6 处理多个联邦执行
?
9.7 一个联邦成员应用程序,多个联邦成员
?
9.8 小结
?
9.9 问题回顾
?
参考文献
?
第 10 章 将 agent 集成到 HLA 中
?
10.1 基于 agent 的仿真
?
10.1.1 认知 agent 体系结构
?
10.2 将 agent 集成到基于 HLA 的仿真中
?
10.2.1 体系结构方法
?
10.2.2 具体体系结构
?
10.2.3 使用 HLA 作为 agent 通信介质
?
10.3 小结
?
参考文献
?
第 11 章 一个完整的案例研究
?
11.1 前言
?
11.1.1 仿真环境
?
11.2 海军仿真
?
11.2.1 虚拟环境
?
11.3 基于 agent 的仿真
?
11.3.1 目标推理
?
11.3.2 agent 管理器
?
11.3.3 USV agent
?
。。。。。。。。。。。。。。