概述
• 分布式虚拟环境 – 分布式交互式仿真
• 死亡推算
• 高级体系结构
分布式虚拟环境
• 引言。
• 它们是什么?
• DVE 与分析仿真的对比
• 分布式交互式仿真(DIS)
• 设计原则
• 示例。
分布式虚拟环境(DVE)
- 一个将人类和/或物理设备嵌入其中的合成世界
- 嵌入的人类/设备与模拟元素之间的互动
- 涉及不同位置的人类、设备、计算
- 示例 ; 军事训练(SIMNET,分布式交互式仿真,HLA) ; 多人视频游戏
- 一个关键问题是确保不同参与者对DVE的观点一致 ;在时间和空间上一致 ;“公平战斗”问题 ;延迟,通信带宽有限
DVE 架构
地理分布的用户和/或资源有时是必需的
- 通过互联网进行的互动游戏
- 专用硬件或数据库
仿真类型
一个广泛使用的分类仿真类型的分类法 :
- 实时仿真: 一种涉及真人操作真实系统的仿真
- 虚拟仿真: 一种涉及真人操作模拟系统的仿真 虚拟仿真通过行使运动控制技能(例如飞行飞机)、决策技能(例如投入火控资源进行行动)或通信技能(例如作为C4I团队的成员)将人类置于中心位置
- 建构性模型或仿真: 涉及模拟人员操作模拟系统的模型和仿真。真人激活(输入)这些仿真,但不参与决定结果
分布式交互式仿真(DIS)
“DIS的主要任务是定义一种基础设施,用于将多个位置的各种类型的仿真连接起来,创造出用于模拟高度互动活动的真实、复杂的虚拟‘世界’”[DIS愿景,1994年]。
- 最初为训练而开发,由美国国防部开发
- 在DoD中广泛使用的分布式虚拟环境;在其他领域(娱乐、紧急计划、空中交通控制)的使用也在增长
DIS设计原则
• 模拟节点的自主性
- 模拟传播感兴趣的事件(消息称为协议数据单元PDU)给其他模拟;无需确定哪些其他节点需要信息
- 接收者确定信息是否与其相关,并模拟新信息的本地影响
- 模拟可以在练习进行中加入或离开
• 传输“真实情况”信息
- 每个模拟传输其对象状态的绝对真实信息
- 接收者负责适当地“降级”信息(例如,由于环境、传感器特性) • 仅传输状态变更信息
- 如果行为“保持不变”(例如,直线平稳飞行),状态更新将降至预定频率(例如,每五秒一次)
• “死亡推算”算法
- 根据最后报告的位置推算移动对象的当前位置
• 模拟时间约束
- 许多模拟是人在回路中
- 人类无法区分小于100毫秒的时间差异
- 对模拟平台的通信延迟施加约束
典型的DVE节点模拟器 每1/30秒执行一次:
• 接收传入消息和用户输入,更新远程车辆的状态 •
• 更新本地显示
• 对每辆本地车辆
- 计算(整合)当前时间段的新状态
- 发送消息(例如,广播)表明新状态 典型序列
-
检测扳机按压
-
播放“开火”声音
-
显示枪口闪光
-
发送开火PDU
-
显示枪口闪光
-
计算弹道, 显示曳光弹
-
显示弹壳撞击
-
发送爆炸PDU
-
显示弹壳撞击
-
计算伤害
-
发送实体状态PDU表明伤害
分布式虚拟环境-总结
• 分布式虚拟环境与分析模拟有不同的需求,导致解决方案的不同
- 为了实现更好的视觉真实感,牺牲精确度可能是可以接受的
- 经常可以利用人类感知的限制
• 分布式交互式模拟(DIS)是构建DVEs所采用的方法的代表
死亡推算
• 基本死亡推算模型(DRM)
- 生成状态更新
- 位置外推
• 改进
- 时间补偿
- 平滑处理
分布式模拟示例
• 包含两辆移动车辆的虚拟环境模拟
• 每个联合体(模拟器)一辆车
• 每个车辆模拟器都必须追踪其他车辆的位置,并生成本地显示(从本地车辆看)
• 方法:每1/30秒(约34毫秒):
- 每辆车向另一辆车发送一条消息,指示其当前位置
- 每辆车接收来自另一辆车的消息,更新其本地显示
通信需求
• 每个玩家拥有1.0 Mbits/sec连接
• DIS:PDU包含144字节(1152比特)
• 每辆车每1/30秒生成一次位置更新
- 每秒34,560比特
• 上限:支持29个实体
• 上述情况非常乐观
- 无法利用所有可用带宽
- 实体生成其他PDU(例如,武器开火)
- 每个人类玩家多个实体(合成力量)
• 56Kbits/sec调制解调器:最多,只能一辆车!
问题
• 如果有许多车辆,需要生成许多消息;我们需要找到节约通信带宽的方法
• 位置信息对应于发送消息时的位置;没有考虑通过网络发送消息的延迟
死亡推算是一种尝试解决每个问题的技术。
死亡推算
• 更少频率发送位置更新消息
• 本地死亡推算模型预测远程实体之间的更新位置
重新同步DRM
何时生成位置更新消息?
• 比较DRM位置与精确位置,如果错误太大,则生成更新消息
• 以某种最小速率生成更新,例如,5秒(心跳)
死亡推算模型
- P(t) = 实体在时间t的精确位置
- 位置更新消息:P(t1), P(t2), P(t3) …
- v(ti), a(ti) = 第i个速度,加速度更新
- DRM:估计D(t),时间t的位置 ; ti = 最后一个更新之前的时间 ;∆t = t - ti
- 零阶DRM: D(t) = P(ti)
- 一阶DRM: D(t) = P(ti) + v(ti)∆t
- 二阶DRM: D(t) = P(ti) + v(ti)∆t + 0.5a(ti)(∆t)²
潜在问题:
- 当位置更新到达时可能会发生不连续性; 可能在显示中产生“跳跃”
- 没有考虑消息延迟
时间补偿
考虑消息延迟
- 在生成更新时向消息添加时间戳(发送者时间戳)
- 基于消息时间戳进行死亡推算
平滑处理
减少更新发生后的不连续性
• “逐渐”引入位置更新
• 更新到达后
- 使用DRM预测接下来的k个位置
- 插值下一个更新的位置
死亡推算-总结
• 管理通信是实施分布式模拟的主要问题
• 死亡推算模型(DRM)
- 根据过去的更新外推当前位置
- 当DRM误差变得太大时发送更新消息
- 减少处理器间通信
• DRM基于运动方程
• 时间补偿以考虑消息延迟
• 平滑处理以避免显示中的“跳跃”
高级体系结构
- 高级体系结构(HLA):背景
- 规则
- 接口规范
- 对象模型模板
HLA:动机
• 因“独立管道模拟”问题困扰的国防部:单独设计和定制的模拟,用于特定应用
- 不易适应其他用途,导致软件重用有限,大量重复劳动
- 不能轻松利用在其他DoD建模和仿真程序中开发的功能
• 高级体系结构的目标:定义一个共同的仿真基础设施,以支持国防仿真的互操作性和重用
- 分析模拟(例如,战争游戏)
- 培训(平台级,指挥级)
- 测试和评估
DoD中的分布式模拟
• SIMNET(SIMulator NETworking)(1983-89)
- DARPA和美国陆军项目
- 网络互动战斗模拟器
- 数十到几百个模拟器
• DIS(分布式交互式模拟)(1990-96)
- 基于SIMNET成功迅速扩展
- 数万个模拟实体
- IEEE标准1278
• 聚合级模拟协议(ALSP)(1980年代末至1990年代)
- 将网络模拟概念应用于战争模型
高级体系结构(HLA)
• 基于可组合“系统中的系统”方法
- 没有单一的仿真可以满足所有用户需求
- 支持DoD仿真之间的互操作性和重用
• 仿真联盟(联合体)
- 纯软件仿真
- 人在环仿真(虚拟模拟器)
- 实时组件(例如,仪器化武器系统)
• 自1996年9月以来,被指定为美国国防部所有建模和仿真(M&S)的标准参考体系结构
HLA包括
- 仿真(联合体)必须遵循的规则,以在联合执行期间实现正确的交互
- 对象模型模板(OMT)定义了联合体(联合体对象模型)使用的公共对象集的格式,它们的属性以及它们之间的关系
- 接口规范(IFSpec)提供了与运行时基础设施(RTI)的接口,该基础设施在模型执行期间将联合体联系在一起
HLA(高级体系结构)讲解
模拟模型的组合=联盟
模拟模型/包=联盟成员
HLA
联盟/联盟成员规则
- 确保联盟中模拟的正确交互
- 描述模拟和联盟成员的责任 •
接口规范
- 定义运行时基础设施(RTI)服务
- 确定每个联盟成员必须提供的“回调”函数 •
对象模型模板
- 提供记录信息的通用方法
- 确立关键模型的格式 --->联盟对象模型(FOM) ---> 模拟对象模型(SOM)
HLA规则
联盟(Federation)规则
- 联盟应有一个HLA联盟对象模型(FOM),按照HLA对象模型模板(OMT)记录。
- 在联盟中,所有与模拟相关的对象实例表示应在联盟成员中,而不在运行时基础设施(RTI)中。
- 在联盟执行期间,联盟成员之间的FOM数据交换应通过RTI进行。
- 在联盟执行期间,联盟成员应按照HLA接口规范与RTI交互。
- 在联盟执行期间,一个实例属性在任何时候最多只能由一个联盟成员拥有。
- 联盟成员应有一个HLA模拟对象模型(SOM),按照HLA OMT记录。
- 联盟成员应能够更新和/或反映任何属性,并发送和/或接收交互,如其SOM所指定。
- 联盟成员应能够在联盟执行期间动态转移和/或接受属性所有权,如其SOM所指定。
- 联盟成员应能够根据其SOM指定的条件(例如,阈值)变更提供属性更新的条件。
- 联盟成员应能够管理本地时间,以便他们能够与联盟的其他成员协调数据交换。
HLA联盟
互联自主模拟器
运行时基础设施(RTI)
提供创建和管理联盟执行的服务
- 联盟设置/拆除
- 在联盟成员之间传输数据
- 同步(时间管理)
HLA运行时基础设施
• 运行时基础设施(RTI)是一组提供多个模拟系统所需的共同服务的软件。
• 六个服务组:
- 联盟管理
- 声明管理
- 对象管理
- 所有权管理
- 时间管理
- 数据分发管理
典型的联盟执行
初始化联盟
- 创建联盟执行(联盟管理)
- 加入联盟执行(联盟管理)
声明联盟成员共同关心的对象
- 发布对象类(声明管理)
- 订阅对象类属性(声明管理)
交换信息
- 更新/反映属性值(对象管理)
- 发送/接收交互(对象管理)
- 时间推进请求,时间推进授权(时间管理)
- 请求属性所有权假设(所有权管理)
- 修改区域(数据分发管理)
终止执行
- 辞去联盟执行(联盟管理)
- 销毁联盟执行(联盟管理)
联盟成员与RTI启动的服务
一些服务由联盟成员启动,其他由RTI启动
• 联盟成员调用的服务
- 发布,订阅,注册,更新
- 类似于对库的调用
- 在RTI大使中定义的程序
• RTI调用的服务
- 发现,反映
- 联盟成员定义的程序,在联盟大使中
对象模型模板
- HLA OMT提供了一个模板,用于记录有关模拟或联盟对象及其属性和交互的HLA相关信息。
— 它提供了一个公认的机制,用于指定数据交换和联盟成员之间的一般协调。
— 它提供了一种常见的、标准化的机制,用于描述潜在联盟成员的能力。
— 它有助于设计和应用HLA对象模型开发的通用工具集。
- HLA对象模型可以用来描述一个单独的联盟成员(联盟成员),创建一个HLA模拟对象模型(SOM);或者描述一组多个互动联盟成员(联盟),创建一个联盟对象模型(FOM)。
- 在任何情况下,HLA OMT的主要目标都是促进模拟之间的互操作性和模拟组件的重用。
HLA OMT组件:
- 对象模型识别表:关联重要的识别信息
- 对象类结构表:记录所有模拟/联盟对象类及其类/子类关系的命名空间
- 互动类结构表:记录所有模拟/联盟互动类及关系的命名空间
- 属性表:指定模拟/联盟中对象属性的特征
- 参数表:指定模拟/联盟中互动参数的特征
- 路由空间表:指定联盟中对象属性和互动的路由空间
- FOM/SOM词汇表:定义表中使用的所有术语
基于类的数据分发
• 联盟对象模型(FOM)定义了在联盟成员之间传输的信息类型
- 对象类(例如,坦克)
- 属性(例如,炮塔的位置、方向)
• 一些关键原语(联盟成员/RTI接口)
- 发布对象类属性:由联盟成员调用,声明其能够更新的对象类和属性
- 订阅对象类属性:声明联盟成员感兴趣接收的对象类和属性
- 注册对象实例:通知RTI在联盟成员中已创建一个对象的实例
- 发现对象实例*:通知联盟成员已注册了一个订阅类的对象实例
- 更新属性值:通知RTI已修改一个或多个对象的属性
- 反映属性值*:通知联盟成员其已订阅的属性已被修改
高级体系结构-总结
- 高级体系结构是实现分布式模拟的一种方法
- HLA规则定义了贯穿整个体系结构的一般原则
- HLA接口规范定义了一组支持分布式模拟的运行时服务
- 数据分发基于发布/订阅机制