劉慶國
(沈陽炮兵學(xué)院,沈陽 110162)
HLA訓(xùn)練仿真系統(tǒng)數(shù)據(jù)記錄與回放的設(shè)計(jì)和實(shí)現(xiàn)*
劉慶國
(沈陽炮兵學(xué)院,沈陽 110162)
在戰(zhàn)術(shù)仿真訓(xùn)練中,數(shù)據(jù)記錄與回放是實(shí)現(xiàn)對(duì)戰(zhàn)術(shù)對(duì)抗行動(dòng)定性定量分析評(píng)估的重要手段。結(jié)合基于HLA技術(shù)的戰(zhàn)術(shù)仿真訓(xùn)練系統(tǒng)的研發(fā),探討了順序事件觸發(fā)式數(shù)據(jù)記錄、離線回放及演習(xí)狀態(tài)回滾功能的具體設(shè)計(jì)和實(shí)現(xiàn)方法。該系統(tǒng)已推廣部隊(duì)使用,應(yīng)用效果良好。
高層體系結(jié)構(gòu),數(shù)據(jù)記錄,數(shù)據(jù)回放
近年來,隨著計(jì)算機(jī)技術(shù)、信息技術(shù)的飛速發(fā)展,計(jì)算機(jī)仿真在軍事領(lǐng)域的應(yīng)用不斷拓寬,HLA技術(shù)廣泛應(yīng)用于作戰(zhàn)仿真領(lǐng)域。軍事需求的強(qiáng)大推動(dòng)促使戰(zhàn)術(shù)訓(xùn)練系統(tǒng)的研發(fā)在滿足各級(jí)軍事人員訓(xùn)練戰(zhàn)斗程序、組織方法、指揮技能等基本內(nèi)容的同時(shí),日漸注重對(duì)戰(zhàn)法訓(xùn)法、戰(zhàn)斗行動(dòng)效能的評(píng)估。當(dāng)前在戰(zhàn)術(shù)仿真訓(xùn)練中,攻防對(duì)抗行動(dòng)呈現(xiàn)以下特點(diǎn):參訓(xùn)兵種多,席位數(shù)量龐大;“非線式作戰(zhàn)”在虛擬戰(zhàn)場多維空間同時(shí)展開,行動(dòng)復(fù)雜;單次對(duì)抗訓(xùn)練按時(shí)間推進(jìn),行動(dòng)具有不可逆性。以上特點(diǎn)增大了對(duì)戰(zhàn)術(shù)行動(dòng)進(jìn)行科學(xué)準(zhǔn)確評(píng)估的難度,通過對(duì)各席位戰(zhàn)術(shù)對(duì)抗行動(dòng)進(jìn)行全程的數(shù)據(jù)記錄,并進(jìn)行可訂制的回放,重現(xiàn)交戰(zhàn)過程和細(xì)節(jié),是實(shí)現(xiàn)對(duì)戰(zhàn)斗行動(dòng)定性和定量分析評(píng)估的一種重要手段。
本文結(jié)合某型火炮戰(zhàn)術(shù)對(duì)抗仿真系統(tǒng)的研制,探討了在HLA體系結(jié)構(gòu)下,采用基于事件機(jī)制實(shí)現(xiàn)數(shù)據(jù)記錄與回放的方法。
本系統(tǒng)采用HLA和Vega作為基本平臺(tái),如下頁圖1,在仿真訓(xùn)練時(shí),演習(xí)導(dǎo)演根據(jù)訓(xùn)練任務(wù)和要求,在數(shù)字地形圖上擬制戰(zhàn)術(shù)想定,對(duì)雙方兵力、裝備、部署等條件進(jìn)行設(shè)定,系統(tǒng)生成相應(yīng)的席位和虛擬戰(zhàn)場環(huán)境,攻防雙方在RTI運(yùn)行環(huán)境下完成對(duì)抗訓(xùn)練。其中,數(shù)據(jù)記錄與回放子系統(tǒng)以盟員身份加入仿真聯(lián)盟,對(duì)各盟員發(fā)布的對(duì)象類狀態(tài)及產(chǎn)生的交互進(jìn)行記錄,而后在某一時(shí)刻或仿真結(jié)束時(shí)向Vega模塊提供各參演席位戰(zhàn)術(shù)行動(dòng)的仿真數(shù)據(jù)支持,進(jìn)行仿真回放,重現(xiàn)仿真過程。
圖1 系統(tǒng)功能示意圖
數(shù)據(jù)記錄與回放實(shí)現(xiàn)的具體功能如下:
①可準(zhǔn)確記錄行動(dòng)過程,與各席位戰(zhàn)術(shù)行動(dòng)完全一致;②可按不同回放速率進(jìn)行戰(zhàn)術(shù)行動(dòng)回放;③回放時(shí),演習(xí)導(dǎo)演可從不同視角(如飛行視角、任意席位視角等)查看戰(zhàn)術(shù)行動(dòng)細(xì)節(jié);④可進(jìn)行演習(xí)狀態(tài)回滾,即將系統(tǒng)的狀態(tài)恢復(fù)至任一時(shí)刻,從該時(shí)刻重新開始演習(xí)。
在HLA戰(zhàn)術(shù)仿真系統(tǒng)中,將各盟員對(duì)象類實(shí)例的創(chuàng)建和移除、屬性的更新及交互的發(fā)送等定義為“事件”,數(shù)據(jù)記錄的工作原理就是將仿真運(yùn)行中發(fā)生的“事件”及其時(shí)間戳記錄下來。在本系統(tǒng)中,采用集中式記錄方法[1],即設(shè)置整個(gè)仿真聯(lián)盟唯一的數(shù)據(jù)收集盟員(即數(shù)據(jù)記錄盟員),它訂購所有對(duì)象類的所有屬性和交互類。當(dāng)其收到RTI的回調(diào)時(shí)就將這些數(shù)據(jù)記錄下來。同分布式記錄方法比較,優(yōu)點(diǎn)是結(jié)構(gòu)簡單,并且一旦聯(lián)盟執(zhí)行結(jié)束,能夠得到完整的數(shù)據(jù)記錄文件,不需要傳輸與合并分布的記錄者各自記錄的數(shù)據(jù)。
集中式記錄方法對(duì)聯(lián)邦執(zhí)行狀態(tài)的記錄可采取兩種方式:
順序事件觸發(fā)式。即記錄聯(lián)邦執(zhí)行中的每次狀態(tài)變化。每當(dāng)一個(gè)RTI回調(diào)產(chǎn)生時(shí),包裝此次RTI傳遞的數(shù)據(jù),打上時(shí)間戳,寫入記錄文件,如圖2所示。該方法形成一個(gè)流式的記錄文件,優(yōu)點(diǎn)是實(shí)現(xiàn)簡單,節(jié)約磁盤空間,缺點(diǎn)在于如果記錄文件較大,在記錄文件中隨機(jī)定位到任意時(shí)間點(diǎn)時(shí),聯(lián)邦的狀態(tài)無法在常數(shù)時(shí)間內(nèi)確定,原因是回放機(jī)需要讀取從零點(diǎn)到當(dāng)前時(shí)間點(diǎn)之間記錄的所有事件才能確定當(dāng)前的狀態(tài)。
圖2 順序事件觸發(fā)式記錄
定頻采樣式。每隔固定時(shí)間間隔(如20 ms)掃描一次聯(lián)邦狀態(tài),把當(dāng)前聯(lián)邦執(zhí)行中所有的創(chuàng)建刪除對(duì)象類實(shí)例、對(duì)象類實(shí)例更新、交互產(chǎn)生等事件的數(shù)據(jù)進(jìn)行封裝,寫入記錄文件中,如圖3所示。該記錄方式優(yōu)點(diǎn)是可以快速隨機(jī)定位到任意時(shí)間點(diǎn)開始回放,缺點(diǎn)是實(shí)現(xiàn)較復(fù)雜,需要較多的磁盤空間,靈活性差,回放精度受采樣頻率影響大。
圖3 定頻采樣式記錄
綜合戰(zhàn)術(shù)對(duì)抗系統(tǒng)的需求以及硬件配置情況等多方面因素,數(shù)據(jù)記錄回放機(jī)JLogger采用集中式順序事件觸發(fā)方式對(duì)仿真數(shù)據(jù)進(jìn)行記錄。
記錄機(jī)工作流程如下:
(1)JLogger調(diào)用registerCallback()注冊記錄機(jī)的回調(diào)函數(shù)。部分回調(diào)函數(shù)如下:
void saveDiscoverObject(DveEvent*pEvent,void *pUsr);//發(fā)現(xiàn)遠(yuǎn)程對(duì)象
void saveUpdateObject(DveEvent*pEvent,void *pUsr);//遠(yuǎn)程對(duì)象實(shí)例屬性更新
void saveReceiveExplosion(DveEvent*pEvent,void*pUsr);//交互事件處理函數(shù)
大數(shù)據(jù)中心數(shù)據(jù)庫至下而上進(jìn)行劃分為物理層、邏輯層以及邏輯字庫層。邏輯字庫包含了基礎(chǔ)類、參考系、專業(yè)類以及管理類等數(shù)據(jù);邏輯層主要用來描述國土資源數(shù)據(jù)的專題圖件,細(xì)分包括防災(zāi)管理數(shù)據(jù)、地政管理數(shù)據(jù)以及礦政管理數(shù)據(jù);物理層主要用來描述另外兩層的關(guān)鍵要素,數(shù)據(jù)邏輯設(shè)計(jì)如圖3所示:
這些回調(diào)函數(shù)響應(yīng)對(duì)應(yīng)的事件(對(duì)象實(shí)例創(chuàng)建,實(shí)例屬性變化,交互產(chǎn)生等),如果JLogger正處于記錄狀態(tài)則把事件的詳細(xì)信息寫入記錄文件。
(2)JLogger調(diào)用init()函數(shù)初始化記錄文件。
(3)JLogger調(diào)用start()函數(shù)啟動(dòng)計(jì)時(shí)定時(shí)器,記錄狀態(tài)轉(zhuǎn)為已開始。
(4)如果網(wǎng)絡(luò)中有“事件”發(fā)生,相應(yīng)回調(diào)函數(shù)被觸發(fā),則將對(duì)應(yīng)的事件信息以及此次事件距離上次事件的時(shí)間差一并寫入記錄文件。
數(shù)據(jù)回放是由回放機(jī)使用記錄的數(shù)據(jù)重現(xiàn)仿真過程和場景?;胤排c正常仿真演習(xí)的不同處在于前者數(shù)據(jù)來自文件,后者來自網(wǎng)絡(luò)[2],如圖4所示。Vega渲染引擎不必區(qū)分?jǐn)?shù)據(jù)的來源,這樣不需對(duì)其進(jìn)行修改就可完成數(shù)據(jù)可視化回放。
圖4 實(shí)時(shí)仿真和離線回放
記錄文件中記錄的是經(jīng)過封裝的事件,這些事件包括:對(duì)象實(shí)例創(chuàng)建、刪除、屬性更新以及交互產(chǎn)生等事件。在實(shí)時(shí)仿真過程中,聯(lián)邦執(zhí)行中每一類對(duì)象由一個(gè)全局唯一的類句柄標(biāo)示,并且每一個(gè)對(duì)象實(shí)例也是通過對(duì)象實(shí)例句柄來標(biāo)示存在[3]。在數(shù)據(jù)記錄時(shí),這些句柄信息連同其他屬性信息一起被寫入記錄文件。而對(duì)于每一類對(duì)象的處理可以采用相同的方法(如:所有的火炮實(shí)例對(duì)象可以使用一個(gè)函數(shù)來從記錄文件中恢復(fù)狀態(tài)),因此,可以建立一個(gè)“對(duì)象實(shí)例句柄-恢復(fù)函數(shù)”的映射,保存對(duì)象實(shí)例和恢復(fù)函數(shù)的對(duì)應(yīng)關(guān)系,從而減少程序中的判斷分支,使代碼更加簡潔。該映射采用map數(shù)據(jù)結(jié)構(gòu):
下面是回放函數(shù)的部分程序代碼:
圖5 回放函數(shù)執(zhí)行流程
如圖5所示。
系統(tǒng)狀態(tài)回滾功能的實(shí)現(xiàn)涉及兩方面問題:一是狀態(tài)的記錄,二是狀態(tài)的更新。對(duì)于狀態(tài)的記錄可以采用前述實(shí)時(shí)數(shù)據(jù)記錄的實(shí)現(xiàn)方案。對(duì)于狀態(tài)的更新,由于在分布式仿真系統(tǒng)中對(duì)象是分布式存儲(chǔ)的,更新系統(tǒng)狀態(tài)就是要更新所有對(duì)象的狀態(tài)。通常的做法是設(shè)計(jì)更新報(bào)文,對(duì)應(yīng)每一個(gè)對(duì)象發(fā)送一個(gè)更新報(bào)文,指定它的新狀態(tài)。這種方法實(shí)現(xiàn)簡單,缺點(diǎn)是需要設(shè)計(jì)額外的數(shù)據(jù)結(jié)構(gòu),而且當(dāng)對(duì)象種類和數(shù)量增多時(shí)會(huì)造成報(bào)文數(shù)量的膨脹。
本系統(tǒng)采用基于HLA所有權(quán)管理的對(duì)象狀態(tài)更新方法,替代發(fā)送報(bào)文的方式。在HLA中,所有權(quán)管理的對(duì)象是聯(lián)邦執(zhí)行中實(shí)例屬性的所有權(quán),只有擁有某個(gè)實(shí)例屬性所有權(quán)的聯(lián)邦成員才有權(quán)更新該實(shí)例屬性的值。這樣,基于所有權(quán)實(shí)現(xiàn)狀態(tài)回滾的原理是:首先由數(shù)據(jù)回放機(jī)獲得各對(duì)象類實(shí)例屬性的所有權(quán),然后按t時(shí)刻對(duì)象類實(shí)例狀態(tài)由回放機(jī)產(chǎn)生“屬性更新事件”,進(jìn)而被各聯(lián)邦成員“探測”到,并完成本地對(duì)象類實(shí)例屬性的更新??蓽p少網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,克服更新報(bào)文方式的缺點(diǎn)。HLA規(guī)定,在默認(rèn)情況下,注冊某個(gè)對(duì)象實(shí)例的聯(lián)邦成員,完全擁有該實(shí)例屬性的所有權(quán)。要想與其他聯(lián)邦成員分擔(dān)該對(duì)象實(shí)例的更新職責(zé),注冊該對(duì)象實(shí)例的聯(lián)邦成員必須將其擁有的實(shí)例屬性所有權(quán)轉(zhuǎn)移給其他聯(lián)邦成員[4]。在本文的仿真系統(tǒng)中,所有的對(duì)象類都繼承自DveObject,對(duì)象類所有權(quán)的轉(zhuǎn)移操作封裝為兩個(gè)成員函數(shù),其中獲取屬性所有權(quán)函數(shù)定義為(釋放所有權(quán)函數(shù)與其類似):
下面舉例說明利用所有權(quán)管理實(shí)現(xiàn)狀態(tài)回滾功能。假設(shè)當(dāng)前仿真系統(tǒng)中有一個(gè)坦克盟員和一個(gè)狀態(tài)回滾控制機(jī)盟員,如圖6。
圖6 狀態(tài)回滾結(jié)構(gòu)
系統(tǒng)運(yùn)行時(shí)執(zhí)行流程如下:
(1)TF、CF創(chuàng)建并加入聯(lián)邦執(zhí)行。CF開始狀態(tài)記錄,此時(shí)仿真時(shí)間為T0。
(2)TF創(chuàng)建DveTank對(duì)象orign_tank;CF收到對(duì)象創(chuàng)建事件通知,在本地創(chuàng)建orign_tank的代理對(duì)象proxy_tank,并將此對(duì)象創(chuàng)建事件寫入記錄文件。
(3)TF操作坦克,該席位上的orign_tank屬性發(fā)生變化,CF收到對(duì)象屬性更新事件通知,CF更新proxy_tank屬性并將此對(duì)象屬性更新事件寫入狀態(tài)記錄文件。
(4)在Tk時(shí)刻,CF發(fā)出暫停演習(xí)通知,TF上的操作暫停,該盟員上的對(duì)象類屬性暫不變化。CF從記錄文件中調(diào)出Ti時(shí)刻proxy_tank的屬性值,并更新proxy_tank。
(5)CF上 proxy_tank調(diào)用 AcquireOwnerShip(),TF上orign_tank的ReleaseOwnerShip()會(huì)被觸發(fā),坦克屬性所有權(quán)由TF轉(zhuǎn)移到CF。
(6)CF上 proxy_tank調(diào)用 update(),TF上orign_tank收到屬性更新通知,屬性更新為Ti時(shí)刻狀態(tài)。
(7)TF上orign_tank調(diào)用AcquireOwnerShip(),CF上proxy_tank的ReleaseOwnerShip()會(huì)被觸發(fā),坦克屬性所有權(quán)由CF轉(zhuǎn)移到TF。
(8)CF發(fā)出恢復(fù)演習(xí)通知,TF繼續(xù)返回到正常演習(xí)狀態(tài),繼續(xù)更新orign_tank屬性。
本文從基于HLA的仿真訓(xùn)練系統(tǒng)解決數(shù)據(jù)記錄與回放的問題出發(fā),對(duì)多種可行方案進(jìn)行了分析比較,提出了一種基于“事件”機(jī)制和HLA對(duì)象管理、所有權(quán)管理服務(wù)的技術(shù)方案,滿足了模擬訓(xùn)練實(shí)時(shí)性和可靠性等要求,基于該方案的子系統(tǒng)在超過120個(gè)席位的仿真對(duì)抗中使用正常,收到了較好的效果。目前數(shù)據(jù)記錄采用“集中”式記錄方法,所有數(shù)據(jù)通過RTI服務(wù)器傳送至數(shù)據(jù)記錄聯(lián)邦成員,隨著仿真規(guī)模的增大,可能會(huì)造成資源分布和負(fù)載不平衡,引起網(wǎng)絡(luò)延遲等,需要今后進(jìn)一步研究解決。
圖7 系統(tǒng)記錄與回放效果圖
[1]吳躍平.基于HLA的數(shù)據(jù)記錄與回放系統(tǒng)的研究與實(shí)現(xiàn)[D].成都:西南交通大學(xué),2012:41-62.
[2]張新宇.HLA聯(lián)邦回放及其通用性實(shí)現(xiàn)的一種方法[J].系統(tǒng)仿真學(xué)報(bào),2007,19(22):5188-5189.
[3]張家祥.HLA仿真技術(shù)應(yīng)用教程[M].北京:國防工業(yè)出版社,2007:6.
[4]陳 彬.一種基于HLA的通用仿真數(shù)據(jù)收集的方法[J].計(jì)算機(jī)仿真,2006,23(5):127-129.
The Design and Implementation of Data Recording and Playback in a HLA-based Tactical Simulation System
LIU Qing-guo
(Shenyang Artillery Academy,Shenyang 110162,China)
At the tactical simulation training,data recording and playback is an important means to achieve qualitative and quantitative analysis and evaluation on tactical combat operations.By the research on HLA-based tactical simulation training system,the paper discusses the specific design and implementation on the sequential event-triggered data recording,offline playback,and exercise status rollback.The system has been applied in the armed forces perfectly.
HLA,data recording,data playback
TP391.9
A
1002-0640(2014)10-0121-05
2013-08-10
2013-10-27
軍隊(duì)重點(diǎn)項(xiàng)目;獲2011年度軍隊(duì)科技進(jìn)步三等獎(jiǎng)
劉慶國(1979- ),男,遼寧昌圖人,碩士研究生,講師。研究方向:作戰(zhàn)仿真。