劉貴賓, 王亞平, 陳佳蕊, 胡燦燦, 張煜
(1.南京理工大學 機械工程學院,南京 210094;2.中國兵器裝備集團兵器裝備研究所,北京 102202)
軍事訓練是軍隊在作戰(zhàn)中取得優(yōu)勢的必備前提,軍事行動具有高復雜性、高技術(shù)性,并且會消耗大量人力、物力等資源,這促進了計算機生成兵力技術(shù)的發(fā)展。計算機生成兵力(computer generated forces, CGF)是指由計算機生成和控制的自主或半自主的虛擬智能體。CGF技術(shù)已廣泛應用于構(gòu)造仿真和虛擬仿真中,在國內(nèi)外廣泛應用于軍事訓練、國防規(guī)劃、新型武器以及新戰(zhàn)術(shù)的效能評估上。目前,CGF實體根據(jù)其生成的自主性可劃分為自動兵力(automated force, AF)與半自動兵力(semi-automated force, SAF)。
AF主要由計算機完成對規(guī)劃、決策等行為的建模,AF系統(tǒng)具有自主感知、決策和行動能力,能夠更快、更準確地做出響應。但是,AF仿真系統(tǒng)的設計和實現(xiàn)難度較大,需要使用復雜的人工智能算法和技術(shù),并且由于兵力生成具有軟件自主性,其行為和決策難以人為預測和控制,有時不會依據(jù)操作員的意愿行動,存在一定的安全風險。
SAF仿真的高層決策、規(guī)劃等行為由人為進行設置,底層的反應式行為通過計算機控制,典型的系統(tǒng)有ModSAF(modular semi-automated forces)。此系統(tǒng)的典型軟件是MAK Technologies公司開發(fā)的VR-Forces,該軟件能夠保證所生成兵力的行為與決策符合操作員的期望,占用的仿真資源較少,適合小規(guī)模多智能體的作戰(zhàn)仿真,其功能已經(jīng)相當成熟。但是,此類系統(tǒng)需要人為干預或指導,作戰(zhàn)效率較低,尤其在涉及到軍團級作戰(zhàn)時,以人工完成兵力生成是一項巨大的工作,并且面對復雜和不可預測的環(huán)境,系統(tǒng)缺乏自適應和自我修正能力。
目前,國內(nèi)有關(guān)VR-Forces仿真結(jié)果分析的研究較少。俞成龍等[1]采用實例分析法研究機群作戰(zhàn)仿真的可視化演示;高化猛等[2]利用VR-Forces提供的應用程序接口進行功能擴展;王超等[3]通過分析某典型裝備模型的基本要素,給出基于VR-Forces的裝備建模方法和實例;連云峰等[4]研究VR-Forces的計算機兵力生成過程,構(gòu)建坦克排的聚合體并進行作戰(zhàn)檢驗;高化猛等[5]針對VR-Forces與其他仿真程序數(shù)據(jù)交互困難的問題,提出一種新的基于注冊表和遠程控制函數(shù)的數(shù)據(jù)交互機制。上述文獻均主要研究VR-Forces功能擴展和數(shù)據(jù)交互。
VR-Forces提供海、陸、空、天多種類型的仿真,仿真模型類型比較豐富,但是裝備類型大多為歐美國家的,針對我國裝備的仿真模型幾乎沒有。另外,對抗仿真需要對彈藥消耗量、仿真時間、實體毀傷狀態(tài)等仿真數(shù)據(jù)進行統(tǒng)計分析,以進行作戰(zhàn)效能評估,因此需要解決數(shù)據(jù)庫的連接與配置問題,且需要對源數(shù)據(jù)進行解析。然而,VR-Forces仿真平臺的數(shù)據(jù)解析和處理在國內(nèi)外文獻中極少見到。
針對上述問題,本文首先分析VR-Forces仿真平臺的仿真方法,然后研究實體模型構(gòu)建方法,基于模型描述規(guī)范,導入新三維仿真模型,實現(xiàn)仿真實體模型參數(shù)的自定義。通過開放式數(shù)據(jù)庫互連技術(shù)ODBC、JDBC等與各種數(shù)據(jù)庫進行連接,將仿真數(shù)據(jù)以表格形式輸出到外部數(shù)據(jù)庫系統(tǒng)中,以進行解析與應用。
本文提出的仿真模型重用技術(shù)可以減少仿真模型開發(fā)的時間和成本,提高仿真模型的可重復使用性和可維護性,快速建立所需的仿真場景和情境,提高仿真建模的效率和準確性。開放式數(shù)據(jù)庫互連技術(shù)可提供更靈活的數(shù)據(jù)輸出方式,將仿真數(shù)據(jù)和結(jié)果集成到評價軟件系統(tǒng)中,有利于進一步開展作戰(zhàn)效能綜合分析。
VR-Force主要采用連續(xù)時間與離散事件的混合仿真系統(tǒng)。VR-Forces仿真模擬的是一系列事件的發(fā)生和影響,每個事件都有其獨立的時間戳。模擬時按時間順序依次處理每個事件,并根據(jù)事件對模型狀態(tài)進行修改,最終得到仿真結(jié)果。這種仿真方法可以幫助操作員快速預測決策結(jié)果[6]。
VR-Forces提供2個可執(zhí)行文件,一個是圖形界面(GUI)的前端程序,另一個是仿真引擎的后端程序。GUI程序提供用戶與系統(tǒng)交互,用戶可以使用GUI程序創(chuàng)建、編輯和運行仿真場景。后端程序是實現(xiàn)仿真引擎的核心部分,負責處理場景和運行仿真的過程。通過仿真引擎和可視界面的分離,VR-Forces可以同時運行多個圖形界面,每個界面可以與同一仿真引擎進行通信,并可以在不同的視角下觀察仿真結(jié)果[7]。這樣的設計可以增強仿真場景的可視性與可操作性,提高仿真的效率和精度。同時,這也使得VR-Forces可以應用于分布式仿真環(huán)境中,多個操作端可以通過網(wǎng)絡連接到同一仿真引擎,共同參與仿真任務的執(zhí)行和分析[8]。
VR-Forces的前端GUI和后端仿真引擎通過TCP/IP協(xié)議進行通信,加載場景和運行仿真時前端程序與后端程序運行交互示意見圖1。
(1)在GUI中創(chuàng)建或加載場景,并設置仿真參數(shù);
(2)GUI將命令發(fā)送到仿真引擎(例如創(chuàng)建實體或設置其屬性);
(3)仿真引擎接收到命令后執(zhí)行相應操作,并將結(jié)果返回給GUI;
圖 1 VR-Forces仿真前、后端交互示意
(4)當仿真引擎狀態(tài)發(fā)生變化時(例如實體移動或受到傷害),將狀態(tài)更新發(fā)送給GUI;
(5)GUI收到狀態(tài)更新后更新場景顯示(例如移動實體的位置或顯示實體受到的傷害);
(6)用戶可以通過GUI監(jiān)視和控制仿真過程(例如暫停、恢復、加速或減速仿真);
(7)當仿真結(jié)束時,GUI將結(jié)果保存到文件或數(shù)據(jù)庫中,以供后續(xù)分析和再次使用。
在仿真過程中,VR-Forces將任務信息發(fā)送到核心模塊中,核心模塊負責執(zhí)行任務,同時將任務信息發(fā)送到相關(guān)模塊進行處理。模擬情景和模擬環(huán)境模塊負責創(chuàng)建場景、環(huán)境和特定的情況,確保仿真的真實性。作戰(zhàn)單元模塊負責對作戰(zhàn)單元進行建模,并負責執(zhí)行作戰(zhàn)單元的任務。核心模塊不斷更新仿真結(jié)果,并將其發(fā)送到結(jié)果記錄和可視化模塊中,方便用戶分析和評估作戰(zhàn)結(jié)果。Data Logger模塊可以保存仿真結(jié)果并進行后續(xù)分析[9]。
在準備階段,需要配置對象參數(shù)數(shù)據(jù)庫編輯器、實體編輯器、想定編輯器和仿真條件等。完成準備階段實際上就完成了仿真實體模型與作戰(zhàn)行為模型、作戰(zhàn)環(huán)境模型的具體配置[10]。
在運行階段,需要配置仿真數(shù)據(jù)記錄器,設置數(shù)據(jù)記錄模塊所偵測的仿真數(shù)據(jù)類型,打開仿真數(shù)據(jù)的實時監(jiān)測,然后開始仿真。仿真結(jié)束后,停止仿真,關(guān)閉數(shù)據(jù)記錄器,保存仿真數(shù)據(jù)。
在分析階段,將已經(jīng)保存的仿真數(shù)據(jù)利用外部接口導出至目標數(shù)據(jù)庫中。
在VR-Forces中,各個模塊都可以生成、發(fā)送和接收消息,用于傳遞狀態(tài)信息、用戶輸入、傳感器數(shù)據(jù)等。消息可以包含各種信息,例如實體的位置、速度、姿態(tài)、任務指令等。
圖 2 VR-Forces仿真流程
當一個模塊生成消息時,可以將消息發(fā)送給其他模塊。接收到消息的模塊可以解析消息中的信息,并根據(jù)需要執(zhí)行相應操作,例如更新實體的狀態(tài)、調(diào)整運動軌跡、生成傳感器數(shù)據(jù)等[11]。不同模塊之間可以通過消息傳遞實現(xiàn)實時信息共享和交互。消息傳遞機制允許各個模塊在運行時動態(tài)地交互和協(xié)同工作,從而實現(xiàn)復雜的仿真行為和場景模擬。模塊之間的消息傳遞可以通過VR-Forces的內(nèi)部API或者其他通信方式進行,例如共享內(nèi)存、網(wǎng)絡通信等。這種靈活的交互機理使得VR-Forces具有高度的可擴展性和定制性,能夠滿足不同仿真需求和應用場景的要求。VR-Forces仿真過程的交互機理見圖3。
VR-Forces擁有規(guī)則庫、傳感器庫、武器庫、模型庫等仿真資源庫[12],其中重用可行性較強的是模型庫,通過建立可重用的仿真模型導入至模型庫中,再利用其他仿真資源庫重構(gòu)符合需求的仿真模型。將這些模型分別存儲到庫中,以便于后續(xù)使用。在需要構(gòu)建仿真模型時,可以直接從庫中選擇相應的模型,再根據(jù)需求選取其他仿真資源進行重構(gòu),從而快速構(gòu)建新的仿真模型。
圖 3 VR-Forces仿真過程的交互機理
先通過3D MAX、SolidWorks三維建模軟件對實體構(gòu)建可視化模型,再將實體可視化模型導出為flt格式。在VR-Forces的實體編輯器Entity Editor中選取需要新建的模型實體類型,在仿真模型集中以原有實體模型為基礎新建模型,就可以重用原仿真實體模型的基本參數(shù)、運動參數(shù)、傳感器參數(shù)、武器裝備參數(shù)、附加系統(tǒng)參數(shù)等[13]。
取pH=6.0的枸杞蛋白質(zhì)溶液8.0ml,加入相對應的(NH4)2SO4固體[11],使蛋白質(zhì)溶液的(NH4)2SO4飽和度達20%,搖勻,靜置3~4h后以8000r/min離心10min,傾出上清液并測量體積,重復以上步驟,直到蛋白質(zhì)溶液的(NH4)2SO4飽和度達100%。得到(NH4)2SO4飽和度分別為20%、40%、60%、80%、100%的枸杞蛋白沉淀。向5次離心后的傾出上清液的離心管中加入0.2mol/l pH=6.0的PBS緩沖液5.0ml,輕輕搖動,使貼于管壁上的蛋白質(zhì)溶解后置于冰箱中保存。
以新建某種固定翼航空兵力為例,可以選取原有的固定翼無人機進行重用,具體生成步驟如下。
(1)構(gòu)建用于重用的三維模型,可利用3D MAX、SolidWorks等三維建模軟件,見圖4。
圖 4 固定翼航空兵力可視化模型
(2)重構(gòu)仿真模型,將構(gòu)建完成的三維模型導出為flt格式,再導入至實體編輯器中。
(3)編輯固定翼航空兵力的基本類型、運動參數(shù)等,使仿真模型的運行參數(shù)能夠?qū)崿F(xiàn)預設功能,見表1。
表 1 模型可重用參數(shù)
(4)調(diào)整固定翼航空兵力的傳感器、武器、附加系統(tǒng),使其主要職能為幫助士兵在空中進行短途飛行。
(5)采用對象參數(shù)數(shù)據(jù)編輯器Opd Editor對傳感器系統(tǒng)、武器系統(tǒng)、附加系統(tǒng)進行深層編輯。
Data Logger是VR-Forces中用于數(shù)據(jù)記錄和輸出的模塊。在作戰(zhàn)仿真過程中,Data Logger與VR-Forces GUI通過DIS協(xié)議連接,可實時記錄仿真過程中的各種數(shù)據(jù),包括實體的位置、速度、方向,任務的執(zhí)行情況,以及其他自定義數(shù)據(jù)。在仿真完畢后,記錄的數(shù)據(jù)可以導出為文本文件、lgr文件,或者將數(shù)據(jù)轉(zhuǎn)移至數(shù)據(jù)庫中。
通過仿真實驗發(fā)現(xiàn),文本輸出與lgr輸出的仿真數(shù)據(jù)邏輯混亂,解析難度較大。相比之下,將數(shù)據(jù)轉(zhuǎn)移至數(shù)據(jù)庫中解析的難度適中,且可以利用可視化數(shù)據(jù)庫管理工具預設好導入數(shù)據(jù)庫的數(shù)據(jù)格式,因此本文采用數(shù)據(jù)庫輸出的方式進行仿真數(shù)據(jù)提取。
仿真數(shù)據(jù)的解析需要對所提取的數(shù)據(jù)進行分析,配合仿真界面中的實體行為與狀態(tài)情況,如實體的移動速度、開火次數(shù)、死亡的位置等信息。
針對實體狀態(tài),本文期望可以得到作戰(zhàn)仿真過程中的人員傷亡情況、死亡位置、死亡時間等數(shù)據(jù),這些數(shù)據(jù)可以用于綜合作戰(zhàn)效能評估中的人員傷亡效能評估。針對交火數(shù)據(jù),解析虛擬兵力的不同彈藥的消耗情況,期望得到每種武器裝備的彈藥消耗量,以評估戰(zhàn)損情況。針對仿真時間、任務完成情況,期望得到每個事件的時間點,以評估作戰(zhàn)任務完成度。
采用開放式數(shù)據(jù)庫互連技術(shù)實現(xiàn)Data Logger與MySQL數(shù)據(jù)庫的異構(gòu)數(shù)據(jù)庫互連,將仿真數(shù)據(jù)從源數(shù)據(jù)庫遷移至MySQL數(shù)據(jù)庫中,數(shù)據(jù)遷移包括數(shù)據(jù)讀取、數(shù)據(jù)轉(zhuǎn)換與數(shù)據(jù)轉(zhuǎn)入,其基本原理[14]見圖5。
圖 5 數(shù)據(jù)遷移基本原理
首先,在MySQL數(shù)據(jù)庫中創(chuàng)建一個與Data Logger所需數(shù)據(jù)格式相匹配的數(shù)據(jù)表,并建立ODBC數(shù)據(jù)源。
然后,在Data Logger中設置與ODBC數(shù)據(jù)源對應的連接信息和MySQL語句,以便將記錄的數(shù)據(jù)寫入到MySQL數(shù)據(jù)庫中[15]。
將Data Logger與MySQL數(shù)據(jù)庫實現(xiàn)異構(gòu)數(shù)據(jù)庫互連的詳細配置流程如下。
(1)配置網(wǎng)絡接口與端口信息。在協(xié)議界面配置網(wǎng)絡接口地址與端口信息,并測試確認Data Logger與VR-Forces前、后端應用成功連接,見圖6。
圖 6 Data logge與Force 連接示意
(2)配置用戶界面。配置Data Logger與VR-Forces前、后端應用的網(wǎng)絡接口地址的互連,通過DIS(7)分布式仿真器進入仿真界面。
(3)配置目標數(shù)據(jù)與數(shù)據(jù)連接驅(qū)動互連。利用可視化數(shù)據(jù)庫管理工具對MySQL數(shù)據(jù)庫進行預處理,配置格式和時間間隔,并測試確認ODBC驅(qū)動程序與目標數(shù)據(jù)庫連接成功,見圖7。
圖 7 連接驅(qū)動和數(shù)據(jù)庫連接
(4)測試確認源數(shù)據(jù)庫與目標數(shù)據(jù)庫互連成功,將Data Logger收集的數(shù)據(jù)導入到數(shù)據(jù)庫,見圖8。
圖 8 仿真數(shù)據(jù)導入數(shù)據(jù)庫
在數(shù)據(jù)記錄過程中,Data Logger將記錄的數(shù)據(jù)按照預先設置的格式和時間間隔進行存儲,并通過ODBC連接將數(shù)據(jù)遷移到MySQL數(shù)據(jù)庫中。在MySQL數(shù)據(jù)庫中,使用可視化的數(shù)據(jù)庫管理工具對目標數(shù)據(jù)庫中的數(shù)據(jù)進行管理,以便進行數(shù)據(jù)的解析與應用,將VR-forces中的仿真數(shù)據(jù)遷移至MySQL的過程[15]見圖9。
圖 9 VR-Forces數(shù)據(jù)遷移流程
MySQL數(shù)據(jù)庫中的數(shù)據(jù)表主要包括:entitystate(實體狀態(tài)表)、fire(開火事件)、detonation(爆炸事件)等,導出至目標數(shù)據(jù)庫的仿真數(shù)據(jù)表見圖10。
圖 10 目標數(shù)據(jù)庫的仿真數(shù)據(jù)表
仿真數(shù)據(jù)解析的前提是要了解VR-Forces的仿真過程以及數(shù)據(jù)記錄的原理。VR-Forces記錄仿真數(shù)據(jù)通過Data Logger模塊實現(xiàn)。Data Logger模塊是VR-Forces的一個核心模塊,負責記錄仿真過程中的數(shù)據(jù)并將其保存到文件中。當VR-Forces運行時,Data Logger在后臺自動記錄數(shù)據(jù),包括仿真場景中所有對象的位置、速度、方向、狀態(tài)等信息,以及各種事件的發(fā)生時間和類型[16]。
VR-Forces內(nèi)部不同模塊每一次交互,都會有一次信息的發(fā)出與響應,在界面展示出的可能是實體的一次狀態(tài)更新,或者是一個事件的觸發(fā),這些數(shù)據(jù)導出至目標數(shù)據(jù)庫中會被保存至不同數(shù)據(jù)表格里[17]。
MySQL數(shù)據(jù)庫的主要數(shù)據(jù)解析如下:
checkpoints(檢查點表)記錄Data Logger監(jiān)控仿真暫停/開始時生成時間戳。
detonation(爆炸事件表)包含攻擊實體和被攻擊實體的爆炸事件。fire數(shù)據(jù)表格記錄彈藥命中被攻擊實體的爆炸事件,detonation數(shù)據(jù)表格在此基礎上記錄未命中實體的爆炸事件。
entitystate(實體狀態(tài)表)記錄實體狀態(tài)信息,包括位置、速度、姿態(tài)、狀態(tài)等,用于還原實體在仿真過程中的運動軌跡和狀態(tài)。每當實體參與一場交火、爆炸事件,或者位置、姿態(tài)、航向、速度、加速度、外觀參數(shù)發(fā)生改變,都會生成一個事件并被記錄。在仿真過程中,實體的狀態(tài)信息發(fā)生改變時會生成一個事件并被記錄。每個事件都有其獨立的時間戳,數(shù)據(jù)記錄按時間順序依次處理每個事件。例如,當一個實體移動到新的位置時,系統(tǒng)會生成一條entitystate數(shù)據(jù),其中包含實體的新位置、速度、姿態(tài)等信息。這個entitystate數(shù)據(jù)可以在后續(xù)的仿真分析中被用于評估實體的運動軌跡、速度變化等。
fire(開火事件表)以開火事件的發(fā)生作為時間線,每發(fā)射一枚彈藥生成一次開火事件,并記錄對應的仿真時間點。一次開火事件主要包含:攻擊實體編號、被攻擊實體編號、彈藥類型、是否加裝特殊彈頭、彈速、射擊方向以及射擊距離等信息。當一個實體開火時,系統(tǒng)會生成一個fire數(shù)據(jù),其中包含實體的開火位置、目標、武器類型、射擊效果等信息。這個fire數(shù)據(jù)可以在后續(xù)的仿真分析中被用于評估實體的射擊效果、武器性能等。
對目標數(shù)據(jù)庫數(shù)據(jù)進行分析整理,在理清其記錄邏輯后,對數(shù)據(jù)進行解析,可以得到彈藥消耗量、仿真時間、實體毀傷狀態(tài)等情況。這些數(shù)據(jù)可進一步作為作戰(zhàn)效能評估指標,并據(jù)此繪制人員傷亡記錄圖、紅藍雙方彈藥消耗量對比圖、紅藍雙方各實體彈藥消耗圖。
例如,依據(jù)典型城市建筑物奪控戰(zhàn)場想定,構(gòu)建典型城市環(huán)境模型、紅藍雙方作戰(zhàn)班組仿真實體模型,完成作戰(zhàn)單元實體的行為規(guī)則及仿真模型性能參數(shù)設置。作戰(zhàn)仿真運行結(jié)束后,提取有效數(shù)據(jù),見表2。對仿真數(shù)據(jù)進一步分析得到戰(zhàn)損統(tǒng)計,其中人員傷亡統(tǒng)計見圖11,紅藍軍同兵種彈藥消耗的對比分析見圖12,紅軍各實體彈藥消耗量對比見圖13,藍軍各實體彈藥消耗量對比見圖14。
表 2 紅、藍軍戰(zhàn)損統(tǒng)計結(jié)果
圖 11 人員傷亡統(tǒng)計
圖 12 紅、藍軍同兵種彈藥消耗量對比
圖 13 紅軍各實體彈藥消耗量對比
圖 14 藍軍各實體彈藥消耗量對比
經(jīng)過多次仿真,作戰(zhàn)班組在城市作戰(zhàn)時執(zhí)行一個班組級殲滅任務時,班組內(nèi)部兵種彈藥消耗排序均呈現(xiàn)上述規(guī)律。
研究VR-Forces仿真平臺的仿真方法與交互機理,認為VR-Force主要采用連續(xù)時間與離散事件的混合仿真系統(tǒng)。在仿真過程中,不同模塊之間通過消息傳遞實現(xiàn)實時信息共享和交互,并確定下一步具體操作。詳細給出VR-Forces仿真平臺的仿真流程與內(nèi)部交互機理,可對后續(xù)作戰(zhàn)仿真平臺的深入研究提供一定的幫助。
基于VR-Forces仿真模型庫,給出基于仿真資源庫的仿真模型重用方法,然后使用此方法完成仿真模型重用并給出具體操作步驟,提高仿真模型構(gòu)建的效率和可重復性。
研究VR-Forces仿真軟件數(shù)據(jù)記錄原理,實現(xiàn)仿真數(shù)據(jù)的遷移、解析和應用。采用一個作戰(zhàn)仿真實例演示結(jié)果文件的應用,完成適用于戰(zhàn)損統(tǒng)計的分析圖,最終完成后續(xù)綜合作戰(zhàn)效能評估的階段性任務。
本文方法可降低仿真開發(fā)成本、提高建模效率和質(zhì)量,對VR-Forces仿真平臺的使用和開發(fā),以及對仿真數(shù)據(jù)的永久存儲和后續(xù)分析具有一定的實際意義。