刘贵宾, 王亚平, 陈佳蕊, 胡灿灿, 张煜
(1.南京理工大学 机械工程学院,南京 210094;2.中国兵器装备集团兵器装备研究所,北京 102202)
军事训练是军队在作战中取得优势的必备前提,军事行动具有高复杂性、高技术性,并且会消耗大量人力、物力等资源,这促进了计算机生成兵力技术的发展。计算机生成兵力(computer generated forces, CGF)是指由计算机生成和控制的自主或半自主的虚拟智能体。CGF技术已广泛应用于构造仿真和虚拟仿真中,在国内外广泛应用于军事训练、国防规划、新型武器以及新战术的效能评估上。目前,CGF实体根据其生成的自主性可划分为自动兵力(automated force, AF)与半自动兵力(semi-automated force, SAF)。
AF主要由计算机完成对规划、决策等行为的建模,AF系统具有自主感知、决策和行动能力,能够更快、更准确地做出响应。但是,AF仿真系统的设计和实现难度较大,需要使用复杂的人工智能算法和技术,并且由于兵力生成具有软件自主性,其行为和决策难以人为预测和控制,有时不会依据操作员的意愿行动,存在一定的安全风险。
SAF仿真的高层决策、规划等行为由人为进行设置,底层的反应式行为通过计算机控制,典型的系统有ModSAF(modular semi-automated forces)。此系统的典型软件是MAK Technologies公司开发的VR-Forces,该软件能够保证所生成兵力的行为与决策符合操作员的期望,占用的仿真资源较少,适合小规模多智能体的作战仿真,其功能已经相当成熟。但是,此类系统需要人为干预或指导,作战效率较低,尤其在涉及到军团级作战时,以人工完成兵力生成是一项巨大的工作,并且面对复杂和不可预测的环境,系统缺乏自适应和自我修正能力。
目前,国内有关VR-Forces仿真结果分析的研究较少。俞成龙等[1]采用实例分析法研究机群作战仿真的可视化演示;高化猛等[2]利用VR-Forces提供的应用程序接口进行功能扩展;王超等[3]通过分析某典型装备模型的基本要素,给出基于VR-Forces的装备建模方法和实例;连云峰等[4]研究VR-Forces的计算机兵力生成过程,构建坦克排的聚合体并进行作战检验;高化猛等[5]针对VR-Forces与其他仿真程序数据交互困难的问题,提出一种新的基于注册表和远程控制函数的数据交互机制。上述文献均主要研究VR-Forces功能扩展和数据交互。
VR-Forces提供海、陆、空、天多种类型的仿真,仿真模型类型比较丰富,但是装备类型大多为欧美国家的,针对我国装备的仿真模型几乎没有。另外,对抗仿真需要对弹药消耗量、仿真时间、实体毁伤状态等仿真数据进行统计分析,以进行作战效能评估,因此需要解决数据库的连接与配置问题,且需要对源数据进行解析。然而,VR-Forces仿真平台的数据解析和处理在国内外文献中极少见到。
针对上述问题,本文首先分析VR-Forces仿真平台的仿真方法,然后研究实体模型构建方法,基于模型描述规范,导入新三维仿真模型,实现仿真实体模型参数的自定义。通过开放式数据库互连技术ODBC、JDBC等与各种数据库进行连接,将仿真数据以表格形式输出到外部数据库系统中,以进行解析与应用。
本文提出的仿真模型重用技术可以减少仿真模型开发的时间和成本,提高仿真模型的可重复使用性和可维护性,快速建立所需的仿真场景和情境,提高仿真建模的效率和准确性。开放式数据库互连技术可提供更灵活的数据输出方式,将仿真数据和结果集成到评价软件系统中,有利于进一步开展作战效能综合分析。
VR-Force主要采用连续时间与离散事件的混合仿真系统。VR-Forces仿真模拟的是一系列事件的发生和影响,每个事件都有其独立的时间戳。模拟时按时间顺序依次处理每个事件,并根据事件对模型状态进行修改,最终得到仿真结果。这种仿真方法可以帮助操作员快速预测决策结果[6]。
VR-Forces提供2个可执行文件,一个是图形界面(GUI)的前端程序,另一个是仿真引擎的后端程序。GUI程序提供用户与系统交互,用户可以使用GUI程序创建、编辑和运行仿真场景。后端程序是实现仿真引擎的核心部分,负责处理场景和运行仿真的过程。通过仿真引擎和可视界面的分离,VR-Forces可以同时运行多个图形界面,每个界面可以与同一仿真引擎进行通信,并可以在不同的视角下观察仿真结果[7]。这样的设计可以增强仿真场景的可视性与可操作性,提高仿真的效率和精度。同时,这也使得VR-Forces可以应用于分布式仿真环境中,多个操作端可以通过网络连接到同一仿真引擎,共同参与仿真任务的执行和分析[8]。
VR-Forces的前端GUI和后端仿真引擎通过TCP/IP协议进行通信,加载场景和运行仿真时前端程序与后端程序运行交互示意见图1。
(1)在GUI中创建或加载场景,并设置仿真参数;
(2)GUI将命令发送到仿真引擎(例如创建实体或设置其属性);
(3)仿真引擎接收到命令后执行相应操作,并将结果返回给GUI;
图 1 VR-Forces仿真前、后端交互示意
(4)当仿真引擎状态发生变化时(例如实体移动或受到伤害),将状态更新发送给GUI;
(5)GUI收到状态更新后更新场景显示(例如移动实体的位置或显示实体受到的伤害);
(6)用户可以通过GUI监视和控制仿真过程(例如暂停、恢复、加速或减速仿真);
(7)当仿真结束时,GUI将结果保存到文件或数据库中,以供后续分析和再次使用。
在仿真过程中,VR-Forces将任务信息发送到核心模块中,核心模块负责执行任务,同时将任务信息发送到相关模块进行处理。模拟情景和模拟环境模块负责创建场景、环境和特定的情况,确保仿真的真实性。作战单元模块负责对作战单元进行建模,并负责执行作战单元的任务。核心模块不断更新仿真结果,并将其发送到结果记录和可视化模块中,方便用户分析和评估作战结果。Data Logger模块可以保存仿真结果并进行后续分析[9]。
在准备阶段,需要配置对象参数数据库编辑器、实体编辑器、想定编辑器和仿真条件等。完成准备阶段实际上就完成了仿真实体模型与作战行为模型、作战环境模型的具体配置[10]。
在运行阶段,需要配置仿真数据记录器,设置数据记录模块所侦测的仿真数据类型,打开仿真数据的实时监测,然后开始仿真。仿真结束后,停止仿真,关闭数据记录器,保存仿真数据。
在分析阶段,将已经保存的仿真数据利用外部接口导出至目标数据库中。
在VR-Forces中,各个模块都可以生成、发送和接收消息,用于传递状态信息、用户输入、传感器数据等。消息可以包含各种信息,例如实体的位置、速度、姿态、任务指令等。
图 2 VR-Forces仿真流程
当一个模块生成消息时,可以将消息发送给其他模块。接收到消息的模块可以解析消息中的信息,并根据需要执行相应操作,例如更新实体的状态、调整运动轨迹、生成传感器数据等[11]。不同模块之间可以通过消息传递实现实时信息共享和交互。消息传递机制允许各个模块在运行时动态地交互和协同工作,从而实现复杂的仿真行为和场景模拟。模块之间的消息传递可以通过VR-Forces的内部API或者其他通信方式进行,例如共享内存、网络通信等。这种灵活的交互机理使得VR-Forces具有高度的可扩展性和定制性,能够满足不同仿真需求和应用场景的要求。VR-Forces仿真过程的交互机理见图3。
VR-Forces拥有规则库、传感器库、武器库、模型库等仿真资源库[12],其中重用可行性较强的是模型库,通过建立可重用的仿真模型导入至模型库中,再利用其他仿真资源库重构符合需求的仿真模型。将这些模型分别存储到库中,以便于后续使用。在需要构建仿真模型时,可以直接从库中选择相应的模型,再根据需求选取其他仿真资源进行重构,从而快速构建新的仿真模型。
图 3 VR-Forces仿真过程的交互机理
先通过3D MAX、SolidWorks三维建模软件对实体构建可视化模型,再将实体可视化模型导出为flt格式。在VR-Forces的实体编辑器Entity Editor中选取需要新建的模型实体类型,在仿真模型集中以原有实体模型为基础新建模型,就可以重用原仿真实体模型的基本参数、运动参数、传感器参数、武器装备参数、附加系统参数等[13]。
取pH=6.0的枸杞蛋白质溶液8.0ml,加入相对应的(NH4)2SO4固体[11],使蛋白质溶液的(NH4)2SO4饱和度达20%,摇匀,静置3~4h后以8000r/min离心10min,倾出上清液并测量体积,重复以上步骤,直到蛋白质溶液的(NH4)2SO4饱和度达100%。得到(NH4)2SO4饱和度分别为20%、40%、60%、80%、100%的枸杞蛋白沉淀。向5次离心后的倾出上清液的离心管中加入0.2mol/l pH=6.0的PBS缓冲液5.0ml,轻轻摇动,使贴于管壁上的蛋白质溶解后置于冰箱中保存。
以新建某种固定翼航空兵力为例,可以选取原有的固定翼无人机进行重用,具体生成步骤如下。
(1)构建用于重用的三维模型,可利用3D MAX、SolidWorks等三维建模软件,见图4。
图 4 固定翼航空兵力可视化模型
(2)重构仿真模型,将构建完成的三维模型导出为flt格式,再导入至实体编辑器中。
(3)编辑固定翼航空兵力的基本类型、运动参数等,使仿真模型的运行参数能够实现预设功能,见表1。
表 1 模型可重用参数
(4)调整固定翼航空兵力的传感器、武器、附加系统,使其主要职能为帮助士兵在空中进行短途飞行。
(5)采用对象参数数据编辑器Opd Editor对传感器系统、武器系统、附加系统进行深层编辑。
Data Logger是VR-Forces中用于数据记录和输出的模块。在作战仿真过程中,Data Logger与VR-Forces GUI通过DIS协议连接,可实时记录仿真过程中的各种数据,包括实体的位置、速度、方向,任务的执行情况,以及其他自定义数据。在仿真完毕后,记录的数据可以导出为文本文件、lgr文件,或者将数据转移至数据库中。
通过仿真实验发现,文本输出与lgr输出的仿真数据逻辑混乱,解析难度较大。相比之下,将数据转移至数据库中解析的难度适中,且可以利用可视化数据库管理工具预设好导入数据库的数据格式,因此本文采用数据库输出的方式进行仿真数据提取。
仿真数据的解析需要对所提取的数据进行分析,配合仿真界面中的实体行为与状态情况,如实体的移动速度、开火次数、死亡的位置等信息。
针对实体状态,本文期望可以得到作战仿真过程中的人员伤亡情况、死亡位置、死亡时间等数据,这些数据可以用于综合作战效能评估中的人员伤亡效能评估。针对交火数据,解析虚拟兵力的不同弹药的消耗情况,期望得到每种武器装备的弹药消耗量,以评估战损情况。针对仿真时间、任务完成情况,期望得到每个事件的时间点,以评估作战任务完成度。
采用开放式数据库互连技术实现Data Logger与MySQL数据库的异构数据库互连,将仿真数据从源数据库迁移至MySQL数据库中,数据迁移包括数据读取、数据转换与数据转入,其基本原理[14]见图5。
图 5 数据迁移基本原理
首先,在MySQL数据库中创建一个与Data Logger所需数据格式相匹配的数据表,并建立ODBC数据源。
然后,在Data Logger中设置与ODBC数据源对应的连接信息和MySQL语句,以便将记录的数据写入到MySQL数据库中[15]。
将Data Logger与MySQL数据库实现异构数据库互连的详细配置流程如下。
(1)配置网络接口与端口信息。在协议界面配置网络接口地址与端口信息,并测试确认Data Logger与VR-Forces前、后端应用成功连接,见图6。
图 6 Data logge与Force 连接示意
(2)配置用户界面。配置Data Logger与VR-Forces前、后端应用的网络接口地址的互连,通过DIS(7)分布式仿真器进入仿真界面。
(3)配置目标数据与数据连接驱动互连。利用可视化数据库管理工具对MySQL数据库进行预处理,配置格式和时间间隔,并测试确认ODBC驱动程序与目标数据库连接成功,见图7。
图 7 连接驱动和数据库连接
(4)测试确认源数据库与目标数据库互连成功,将Data Logger收集的数据导入到数据库,见图8。
图 8 仿真数据导入数据库
在数据记录过程中,Data Logger将记录的数据按照预先设置的格式和时间间隔进行存储,并通过ODBC连接将数据迁移到MySQL数据库中。在MySQL数据库中,使用可视化的数据库管理工具对目标数据库中的数据进行管理,以便进行数据的解析与应用,将VR-forces中的仿真数据迁移至MySQL的过程[15]见图9。
图 9 VR-Forces数据迁移流程
MySQL数据库中的数据表主要包括:entitystate(实体状态表)、fire(开火事件)、detonation(爆炸事件)等,导出至目标数据库的仿真数据表见图10。
图 10 目标数据库的仿真数据表
仿真数据解析的前提是要了解VR-Forces的仿真过程以及数据记录的原理。VR-Forces记录仿真数据通过Data Logger模块实现。Data Logger模块是VR-Forces的一个核心模块,负责记录仿真过程中的数据并将其保存到文件中。当VR-Forces运行时,Data Logger在后台自动记录数据,包括仿真场景中所有对象的位置、速度、方向、状态等信息,以及各种事件的发生时间和类型[16]。
VR-Forces内部不同模块每一次交互,都会有一次信息的发出与响应,在界面展示出的可能是实体的一次状态更新,或者是一个事件的触发,这些数据导出至目标数据库中会被保存至不同数据表格里[17]。
MySQL数据库的主要数据解析如下:
checkpoints(检查点表)记录Data Logger监控仿真暂停/开始时生成时间戳。
detonation(爆炸事件表)包含攻击实体和被攻击实体的爆炸事件。fire数据表格记录弹药命中被攻击实体的爆炸事件,detonation数据表格在此基础上记录未命中实体的爆炸事件。
entitystate(实体状态表)记录实体状态信息,包括位置、速度、姿态、状态等,用于还原实体在仿真过程中的运动轨迹和状态。每当实体参与一场交火、爆炸事件,或者位置、姿态、航向、速度、加速度、外观参数发生改变,都会生成一个事件并被记录。在仿真过程中,实体的状态信息发生改变时会生成一个事件并被记录。每个事件都有其独立的时间戳,数据记录按时间顺序依次处理每个事件。例如,当一个实体移动到新的位置时,系统会生成一条entitystate数据,其中包含实体的新位置、速度、姿态等信息。这个entitystate数据可以在后续的仿真分析中被用于评估实体的运动轨迹、速度变化等。
fire(开火事件表)以开火事件的发生作为时间线,每发射一枚弹药生成一次开火事件,并记录对应的仿真时间点。一次开火事件主要包含:攻击实体编号、被攻击实体编号、弹药类型、是否加装特殊弹头、弹速、射击方向以及射击距离等信息。当一个实体开火时,系统会生成一个fire数据,其中包含实体的开火位置、目标、武器类型、射击效果等信息。这个fire数据可以在后续的仿真分析中被用于评估实体的射击效果、武器性能等。
对目标数据库数据进行分析整理,在理清其记录逻辑后,对数据进行解析,可以得到弹药消耗量、仿真时间、实体毁伤状态等情况。这些数据可进一步作为作战效能评估指标,并据此绘制人员伤亡记录图、红蓝双方弹药消耗量对比图、红蓝双方各实体弹药消耗图。
例如,依据典型城市建筑物夺控战场想定,构建典型城市环境模型、红蓝双方作战班组仿真实体模型,完成作战单元实体的行为规则及仿真模型性能参数设置。作战仿真运行结束后,提取有效数据,见表2。对仿真数据进一步分析得到战损统计,其中人员伤亡统计见图11,红蓝军同兵种弹药消耗的对比分析见图12,红军各实体弹药消耗量对比见图13,蓝军各实体弹药消耗量对比见图14。
表 2 红、蓝军战损统计结果
图 11 人员伤亡统计
图 12 红、蓝军同兵种弹药消耗量对比
图 13 红军各实体弹药消耗量对比
图 14 蓝军各实体弹药消耗量对比
经过多次仿真,作战班组在城市作战时执行一个班组级歼灭任务时,班组内部兵种弹药消耗排序均呈现上述规律。
研究VR-Forces仿真平台的仿真方法与交互机理,认为VR-Force主要采用连续时间与离散事件的混合仿真系统。在仿真过程中,不同模块之间通过消息传递实现实时信息共享和交互,并确定下一步具体操作。详细给出VR-Forces仿真平台的仿真流程与内部交互机理,可对后续作战仿真平台的深入研究提供一定的帮助。
基于VR-Forces仿真模型库,给出基于仿真资源库的仿真模型重用方法,然后使用此方法完成仿真模型重用并给出具体操作步骤,提高仿真模型构建的效率和可重复性。
研究VR-Forces仿真软件数据记录原理,实现仿真数据的迁移、解析和应用。采用一个作战仿真实例演示结果文件的应用,完成适用于战损统计的分析图,最终完成后续综合作战效能评估的阶段性任务。
本文方法可降低仿真开发成本、提高建模效率和质量,对VR-Forces仿真平台的使用和开发,以及对仿真数据的永久存储和后续分析具有一定的实际意义。