平台及平台类型
在AFSIM模拟中,当在被模拟的场景中定义平台时,创建仿真实体(如车辆和结构)。
AFSIM是一个用于创建仿真的对象框架,而平台封装了对象的原则身份或定义。
平台可以拥有系统(或平台部分)、信息与属性,以及自动控制其行为的处理器。
以下是可能出现在特定平台上的一些组件类型:
- 移动器(Mover) – 定义平台如何移动
- 传感器(Sensor) – 定义平台如何感知其环境中的其他平台
- 通信(Comm) – 定义平台如何与其他平台进行通信
- 处理器(Processor) – 定义平台的决策和行动
快速入门
给定平台必须继承唯一的平台类型,默认平台类型为WSF_PLATFORM。平台类型对于封装多个平台之间的共享信息和平台部件非常有价值。这可以避免代码重复,并允许对多个平台迅速且无误地进行统一更改。
以下示例产生相同的输出,然而,第二个示例实现了平台类型块以避免代码重复。
无平台类型 | 有平台类型 |
platform cargo-1 WSF_PLATFORMicon c130spatial_domain aircategory cargoposition 00:30s 01:30w altitude 8000 mheading 90 deg end_platformplatform cargo-2 WSF_PLATFORMicon c130spatial_domain aircategory cargoposition 00:30s 01:30e altitude 8000 mheading -90 deg end_platform | platform_type CARGO_AIRCRAFT WSF_PLATFORMicon c130spatial_domain aircategory cargo end_platform_typeplatform cargo-1 CARGO_AIRCRAFTposition 00:30s 01:30w altitude 8000 mheading 90 deg end_platformplatform cargo-2 CARGO_AIRCRAFTposition 00:30s 01:30e altitude 8000 mheading -90 deg end_platform |
虽然在这个简单例子中代码行数相同,但现在可以根据第二个示例中的代码快速、轻松地创建其他CARGO_AIRCRAFT平台。现在,可以使用CARGO_AIRCRAFT平台类型选项直接在场景文件中、通过向导地图显示、在Warlock中动态创建,或在脚本中创建平台。
深入了解
注意:以下步骤假设“simple_flight”场景存在,如场景和项目中讨论的那样。
平台定义
可以使用向导文本编辑器直接修改场景文件,或通过向导的地图显示向场景中添加平台。
按照以下步骤将航空器平台添加到simple_flight场景中:
1 使用向导文本编辑器将以下平台命令块添加到simple_flight.txt中。
platform cargo-1 WSF_PLATFORMicon c130spatial_domain aircategory cargoposition 00:30s 01:30w altitude 8000 mheading 90 deg
end_platform
2 保存文件。
3 导航到地图显示(如果地图显示未显示,请使用向导视图菜单打开它)。
4 如有必要,调整地图显示以显示新添加的平台。
5 将光标放置在接近坐标00:30s 01:30e的地图上,然后右键单击 > 添加到位置 > 平台。
6 在创建平台提示框中,将平台命名为“cargo-2”,并从平台类型下拉菜单中选择WSF_PLATFORM,然后单击确定。
注意:当在地图显示中创建平台时,相应的场景文件中会自动出现一个平台定义块,之后可以编辑该块。
7 注意到“cargo-2”默认没有图标,只有在定义中定义了位置。
8 将信息添加/修改到该块,使其与以下平台定义块匹配并保存文件。
platform cargo-2 WSF_PLATFORMicon c130spatial_domain aircategory cargoposition 00:30s 01:30e altitude 8000 mheading -90 deg
end_platform
向导的地图显示应反映以下内容:
平台类型
随着平台定义变得越来越复杂,将常见的个平台元素抽象出来并转移到父平台类型中变得越来越重要。
“cargo-1”和“cargo-2”之间重复了多个元素。虽然这个问题在这个例子中看似微不足道,但后续讨论的元素会增加平台的复杂性,如果不使用平台类型,则会使每个平台的维护变得更加困难。
请完成以下步骤,将常见的平台属性抽象为共享平台类型。
1 在现有平台定义之前,将以下 platform_type
命令块添加到 simple_flight.txt
中:
platform_type CARGO_AIRCRAFT WSF_PLATFORMicon c130spatial_domain aircategory cargo
end_platform_type
2 在各自的平台定义中将 WSF_PLATFORM
替换为 CARGO_AIRCRAFT
,并保存文件。
3 注意,在第2步之前,地图显示没有按预期显示平台,但在第2步之后自动更新。
回顾
完成此模块后,simple_flight
项目应包含一个反映以下内容的单一场景文件 simple_flight.txt
:
# simple_flight demosimulation_name "Simple Flight"execute at_time 0.1 sec absolutewriteln("\nSimulating simple_flight scenario...");
end_executeend_time 30 minplatform_type CARGO_AIRCRAFT WSF_PLATFORMicon c130spatial_domain aircategory cargo
end_platform_typeplatform cargo-1 CARGO_AIRCRAFTposition 00:30s 01:30w altitude 8000 mheading 90 deg
end_platformplatform cargo-2 CARGO_AIRCRAFTposition 00:30s 01:30e altitude 8000 mheading -90 deg
end_platform
总结
平台类型是强大且必要的,能够提供支持大型仿真的可扩展性。平台类型可以从其他现有的平台类型继承,从而允许继承链或“祖父类型”。每个平台或平台类型只能直接从单个父类型继承。
平台可以通过地图显示或场景文件创建,且通过地图显示创建的平台可以使用场景中已存在的任何预定义父类型。
一般来说,多个相似平台共同的组件和属性应保留在一个公共平台类型中。通常,平台类型定义会保存在专门针对该类型的文件中,以改善项目和场景的组织。
另外,平台定义应只包含特定平台实例独有的信息,例如其名称、团队、路线以及其初始位置和运动状态。
早期掌握使用平台类型将大大减少构建大型场景所需的时间,并显著减少难以发现的仿真问题的发生。