FLAMES程序本身并不包含任何模拟现实世界系统行为的软件。所有这类软件都驻留在FLAMES程序之外的组件中。组件存储在动态由FLAMES应用程序加载的组件插件库(简称“插件”)中。
图 1 使用FLAMES进行复杂的系统分析过程
一个FLAMES组件通常模拟现实世界中存在的事物的属性和行为,如人类、车辆、传感器、通信设备或武器效果。这种类型的组件通常被称为“建模组件”或简称“模型”。还支持其他类型的“基础设施”组件,如视图覆盖层、管理服务或与外部系统的接口。
图 1 FLAMES插件
在所有情况下,FLAMES组件都是作为继承自FLAMES主要类别的单独软件类实现的。主要类别定义了组件类的整体结构并提供了丰富的内置功能,极大地简化了组件类的开发。FLAMES为仿真中可能需要的每种类型的组件定义了一个主要类别。FLAMES支持多种不同类型的组件,包括下面描述的几种。
- 单位模型
在FLAMES场景中的每一个独立、互动的参与者被称为一个单位(Unit)。单位的功能,包括移动、感知、通信、思考和影响其他单位的能力,是由FORGE通过附加模型来组成的。可以附加到单位上的主要模型类型有认知模型、装备模型和属性模型。
图 1 The Unit Window | 图 2 Create New Unit window |
- 环境模型
环境模型存储描述场景发生时的自然和人造环境的数据,或是适用于整个场景而不特定于具体单位的数据。FLAMES支持几种不同类型的环境模型。
- 视图覆盖层
视图覆盖层在FORGE和FLASH的2D和3D视图顶部显示补充信息。几乎任何东西都可以在覆盖层中绘制,从简单的线条和文本注释到完整的抬头显示器全仪表板。每个覆盖层类还可以定义一个视图偏好对象,该对象将自动包含在FORGE和FLASH的视图偏好窗口中。
图 3 FORGE Main Window
图 4 FLASH Main Window
- 服务组件
服务组件扩展了FLAMES引擎的功能,极其强大且灵活。服务组件的例子包括与外部系统(如图像生成器和实时系统)的接口以及在场景执行期间引发额外处理的服务。所有FLAMES选项都是作为一项或多项服务组件实施的。
图 5 FLAMES应用
所有与FLAMES兼容的组件都是作为独立的类来实现的,这些类是从FLAMES基类派生(继承)而来。下面的图表展示了所有可以被继承以创建自定义组件类的FLAMES基类。红色的类是用C++编写的,只能直接由用C++编程语言编写的自定义类继承。蓝色的类是用C编写的,只能直接由用C编程语言编写的自定义类继承。灰色的类不能直接被继承。
图 5 FLAMES Class Hierarchy
接下来,我们将参照FLAMES的设计思路,设计一款类似的纯国产化柔性仿真建模框架,敬请关注。