摘 要:針對(duì)武器系統(tǒng)模擬訓(xùn)練平臺(tái)開(kāi)發(fā)中,開(kāi)發(fā)人員工作量大,開(kāi)發(fā)周期長(zhǎng),開(kāi)發(fā)系統(tǒng)效果不理想等問(wèn)題,提出了基于3D/VR開(kāi)發(fā)平臺(tái)(Virtools)與分布交互仿真高層體系結(jié)構(gòu)(HLA)相結(jié)合的設(shè)計(jì)方法。在給出高炮駕駛系統(tǒng)一個(gè)設(shè)計(jì)體系結(jié)構(gòu)之后,針對(duì)該仿真平臺(tái)設(shè)計(jì)中有關(guān)RTI BB模塊的開(kāi)發(fā)、運(yùn)動(dòng)控制仿真、視景顯示、模型的物理化及碰撞檢測(cè)這4個(gè)關(guān)鍵技術(shù)進(jìn)行了深入探究。最后基于此方法設(shè)計(jì)了某自行高炮駕駛系統(tǒng)的仿真平臺(tái)。關(guān)鍵詞:Virtools; 分布交互仿真; 高層體系結(jié)構(gòu); 駕駛系統(tǒng); 視景顯示
中圖分類號(hào):TN919-34;TP391.9 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2010)18-0176-04
Design of Anti-aircraft Gun Driving System Operation Simulation
Platform Based on HLA and Virtools
WANG Peng,ZHU Yuan-chang,DI Yan-qiang
(Department of Optical Electrical Engineering, Ordnance Engineering College, Shijiazhuang 050003, China)
Abstract: To solve the problems existing in the simulation training system such as large amount of work, low development efficiency and low quality, a design method of the simulation training system based on Virtools and HLA is put forward. After providing a design system structure of the anti-aircraft gun driving control system,four key technologies (development of RTI BB module, motion simulation, visual display, model physical zing and collision detection) are investigation. An operation simulation platform of a certain anti-aircraft gun driving control system was designed based on this method.Keywords: Virtools; distributed mutual simulation; high level architecture (HLA); driving control system; visual display
0 引 言
分布交互仿真技術(shù)從產(chǎn)生(SIMNET計(jì)劃)到DIS2.X,IEEE1278.X系列協(xié)議和ALSP協(xié)議,進(jìn)而發(fā)展到今天的HLA,都是為了解決建模與仿真(Modeling and Simulation,MS)領(lǐng)域存在的問(wèn)題。如:絕大多數(shù)仿真平臺(tái)的應(yīng)用實(shí)現(xiàn)較為獨(dú)立;仿真平臺(tái)之間的互操作性和重用性差;開(kāi)發(fā)、維護(hù)和使用費(fèi)時(shí)間,而且成本高;可驗(yàn)證性、有效性和置信度較差[1]。當(dāng)前,形式、功能單一的模擬訓(xùn)練系統(tǒng)已不能滿足部隊(duì)的需求,因此如何越好越快地設(shè)計(jì)出能夠面向全系統(tǒng)、全任務(wù)空間、全領(lǐng)域的模擬訓(xùn)練系統(tǒng)已成為當(dāng)前一個(gè)迫切需要解決的問(wèn)題。
HLA就是從體系結(jié)構(gòu)上建立的這樣一個(gè)框架,它能盡量涵蓋MS領(lǐng)域中涉及各種不同類型的仿真系統(tǒng),并利于相互間的互操作和重用性,同時(shí)能夠利用不斷發(fā)展的新技術(shù)來(lái)滿足復(fù)雜大系統(tǒng)的仿真需求。采用HLA的技術(shù)體制,可以將單個(gè)仿真應(yīng)用連接起來(lái)組成一個(gè)大型的虛擬世界。在這個(gè)虛擬世界中,可以進(jìn)行大規(guī)模多對(duì)多/部隊(duì)對(duì)部隊(duì)的戰(zhàn)術(shù)、戰(zhàn)略的原則研究和演練仿真。
Virtools一款3D/VR軟件由法國(guó)全球交互三維開(kāi)發(fā)解決方案VIRTOOLS公司開(kāi)發(fā),主要由5個(gè)組件的開(kāi)發(fā)平臺(tái)和6個(gè)可選模塊組成[2]。它采用模塊化思想將原先由程序代碼實(shí)現(xiàn)的功能封裝入行為模塊(building blocks),然后對(duì)行為模塊進(jìn)行相關(guān)的編排鏈接,就可驅(qū)動(dòng)三維場(chǎng)景,顯示相應(yīng)的輸出?;赩irtools的這種設(shè)計(jì)模式,本文提出了基于HLA/RTI和Virtools的高炮駕駛仿真平臺(tái)設(shè)計(jì)方法。
1 駕駛系統(tǒng)仿真平臺(tái)設(shè)計(jì)體系結(jié)構(gòu)
1.1 基于HLA/Virtools模擬訓(xùn)練系統(tǒng)設(shè)計(jì)方法
HLA的核心思想是互操作和重用,其顯著特點(diǎn)是通過(guò)運(yùn)行支撐環(huán)境RTI(run time infrastructure)提供通用的、相對(duì)獨(dú)立的支撐服務(wù)程序,將仿真應(yīng)用與底層的支撐環(huán)境分開(kāi),也就是將具體的仿真功能實(shí)現(xiàn)、仿真運(yùn)行管理和底層通信傳輸三者分離,隱蔽了各自的實(shí)現(xiàn)細(xì)節(jié),從而使各部分可以相對(duì)獨(dú)立地進(jìn)行開(kāi)發(fā),并能充分利用各自領(lǐng)域的先進(jìn)技術(shù)。鑒于HLA的特點(diǎn),分布式駕駛系統(tǒng)仿真平臺(tái)采用HLA的標(biāo)準(zhǔn)設(shè)計(jì)。
分布式仿真系統(tǒng)離不開(kāi)模型渲染和場(chǎng)景驅(qū)動(dòng),在這方面,目前常用的有2種方法:一種是直接基于OpenGL技術(shù)進(jìn)行模型的渲染和場(chǎng)景的驅(qū)動(dòng);另一種是使用場(chǎng)景管理/驅(qū)動(dòng)軟件,如Vega,Vega Prime等,但是這種方法同樣也離不開(kāi)對(duì)OpenGL底層技術(shù)的了解,在進(jìn)行場(chǎng)景驅(qū)動(dòng)時(shí)仍然離不開(kāi)編輯環(huán)境,如VC++等的支持。本文所述的3D/VR軟件Virtools則將相關(guān)底層技術(shù)封裝入行為模塊,使開(kāi)發(fā)者不需要了解和直接利用底層的OpenGL或Direx技術(shù)等就能得到開(kāi)發(fā)應(yīng)用,而且也使資源的重用性大大增強(qiáng)。除此之外,Virtools還有三維可視化編輯環(huán)境和流程圖似的腳本編輯環(huán)境?;诖?,開(kāi)發(fā)者只需基于相應(yīng)的邏輯關(guān)系對(duì)相關(guān)對(duì)象進(jìn)行腳本編排,就能驅(qū)動(dòng)可視化編輯環(huán)境中的對(duì)象和場(chǎng)景發(fā)生相應(yīng)的變動(dòng)。在這種設(shè)計(jì)思路和模式下,在對(duì)開(kāi)發(fā)者的要求和工程開(kāi)發(fā)周期大為降低的同時(shí),虛擬場(chǎng)景在逼真度、沉浸感和交互性方面都得到了加強(qiáng)[3]。
為此,本文提出了基于Virtools與HLA的模擬訓(xùn)練系統(tǒng)設(shè)計(jì)方法,為了使HLA/RTI能夠與Virtools相兼容,對(duì)HLA/RTI的相關(guān)功能進(jìn)行了二次封裝,并通過(guò)Virtools SDK將其功能封裝進(jìn)Virtools特有的BB中,這樣當(dāng)聯(lián)邦成員要與聯(lián)邦或其他成員進(jìn)行信息交互時(shí),只需調(diào)用相應(yīng)的HLA/RTI BB,就可實(shí)現(xiàn)相關(guān)功能;不同的聯(lián)邦成員只需修改相關(guān)的輸入?yún)?shù),就可使用相同的HLA/RTI BB,這樣就使模塊的重用性得到了較大的增強(qiáng)[4]。開(kāi)發(fā)RTI BB的步驟如下:首先將RTI Ambassador和Federate Ambassador相關(guān)的功能服務(wù)封裝成Win32形式的dll,然后將Win32 dll在VS2003.net環(huán)境下封裝成RTI BB模塊。
1.2 高炮外觀模型的建立
高炮外觀模型指模擬訓(xùn)練系統(tǒng)對(duì)某自行高炮外觀的模擬,本文采用3dMax與Virtools相結(jié)合的方式對(duì)裝備進(jìn)行外觀建模。首先,根據(jù)裝備實(shí)物及相關(guān)資源在3ds Max中創(chuàng)建高炮模型和3D場(chǎng)景。為了提高模型的逼真度,可采用紋理映射、多通道等技術(shù)對(duì)模型加以優(yōu)化,然后將模型導(dǎo)入Virtools中進(jìn)行渲染以及做最終的處理。導(dǎo)入裝備和地形模型之前,需要在3ds Max中安裝程序3dMax Exporter.exe;導(dǎo)出時(shí),首先是把建立在3dMax中的裝備和地形模型以.nmo文件的形式進(jìn)行輸出。.nmo文件是Virtools Dev默認(rèn)的用于存儲(chǔ)角色和場(chǎng)景以及物體等信息的文件格式。然后,需要把相應(yīng)的.nmo文件導(dǎo)入Virtools Dev中,添加實(shí)行交互的模塊腳本。在項(xiàng)目保存成可編輯的工程文件.cmo文件或者只讀的工程文件.vmo后,可以通過(guò)Virtools Dev自帶的程序開(kāi)發(fā)包(即SDK)進(jìn)行.exe應(yīng)用文件的開(kāi)發(fā)。
1.3 聯(lián)邦成員的程序框架
RTI對(duì)聯(lián)邦執(zhí)行的創(chuàng)建/撤銷、聯(lián)邦成員的加入/退出以及對(duì)象實(shí)例的注冊(cè)/刪除等操作,都是根據(jù)聯(lián)邦成員的請(qǐng)求來(lái)完成的[5]。
因此,聯(lián)邦執(zhí)行的生命周期與聯(lián)邦成員是息息相關(guān)的。根據(jù)HLA/Virtools的聯(lián)邦成員結(jié)構(gòu),采用雙線程結(jié)構(gòu)。一個(gè)是窗口界面線程,主要用于管理用戶和窗口的交互;另一個(gè)是仿真線程,主要用于完成仿真模型的執(zhí)行和聯(lián)邦交互。聯(lián)邦成員的程序流程如圖1所示。
圖1 聯(lián)邦成員的程序流程
2 駕駛系統(tǒng)仿真平臺(tái)開(kāi)發(fā)的關(guān)鍵技術(shù)
2.1 駕駛員RTI BB模塊的開(kāi)發(fā)
高炮武器系統(tǒng)仿真平臺(tái)的互聯(lián)分布通過(guò)RTI BB來(lái)實(shí)現(xiàn),本仿真平臺(tái)設(shè)計(jì)RTI BB時(shí),主要考慮BB模塊輸入/輸出參數(shù)端口的設(shè)計(jì)[6]。對(duì)于輸入輸出參數(shù),分為一般參數(shù)和特殊參數(shù),其中一般參數(shù)主要包括:創(chuàng)建聯(lián)邦執(zhí)行、加入聯(lián)邦執(zhí)行、初始化時(shí)間管理、公布與訂購(gòu)、時(shí)間推進(jìn)等;特殊參數(shù)對(duì)不同聯(lián)邦成員的需求各異,主要包括:啟動(dòng)RTI進(jìn)程、需要更新的信息、需接收的信息等。具體實(shí)現(xiàn)時(shí)本文設(shè)計(jì)的RTI BB,是通過(guò)將HLA/RTI 中與本地聯(lián)邦成員相關(guān)的本地RTI大使(RTI ambassador)和聯(lián)邦成員大使(federate ambassador)的相關(guān)RTI BB服務(wù)進(jìn)行封裝調(diào)用,使得基于Virtools設(shè)計(jì)的腳本在驅(qū)動(dòng)RTI BB時(shí),就可執(zhí)行聯(lián)邦成員相應(yīng)地創(chuàng)建聯(lián)邦、加入聯(lián)邦、公布訂購(gòu)、時(shí)間推進(jìn)、更新成員信息、獲取聯(lián)邦或其他成員信息等功能。本仿真平臺(tái)開(kāi)發(fā)的RTI BB如圖2所示。
圖2 駕駛員聯(lián)邦成員的RTI BB
2.2 高炮運(yùn)動(dòng)控制的仿真
人機(jī)交互模型的目的在于將人的操作轉(zhuǎn)換為裝備機(jī)理模型的輸入。模擬訓(xùn)練系統(tǒng)中人機(jī)交互設(shè)備主要有兩種:計(jì)算機(jī)標(biāo)準(zhǔn)外設(shè)、實(shí)裝部件。對(duì)于計(jì)算機(jī)標(biāo)準(zhǔn)外設(shè)如鼠標(biāo)、鍵盤等,由于計(jì)算機(jī)系統(tǒng)內(nèi)核有特有的接口,在Virtools中也有相應(yīng)的已封裝好的行為模塊,故可以直接進(jìn)行仿真應(yīng)用;在一些情況下,為了使沉浸感更強(qiáng),經(jīng)常需要用到虛擬現(xiàn)實(shí)(VR)設(shè)備,如方向盤、剎車、油門等[7]。為了支持這個(gè)功能,Virtools開(kāi)發(fā)了VR Pack,該模塊含有完備的虛擬實(shí)境外圍硬件驅(qū)動(dòng)程序,而且包含有先進(jìn)的顯示、聲音同步技術(shù),如Game lock等,這樣對(duì)于VR設(shè)備就可以方便地進(jìn)行仿真應(yīng)用,整個(gè)平臺(tái)從功能上可以分為以下幾個(gè)模塊[8]:
(1) 虛擬高炮在虛擬戰(zhàn)場(chǎng)中的前進(jìn)、后退、轉(zhuǎn)向、停止等動(dòng)作;
(2) 配合指揮車及其他高炮進(jìn)行協(xié)同作戰(zhàn),包括完成要求的各種集結(jié)、編隊(duì)行進(jìn)等功能;
(3) 實(shí)時(shí)地將高炮的車體姿態(tài)信息傳輸給其他各個(gè)節(jié)點(diǎn),如圖3所示。
2.3 駕駛員視角的視景顯示
高炮駕駛員通過(guò)眼睛獲得90%以上的信息,所以,視景系統(tǒng)是駕駛模擬技術(shù)中非常重要的部分[9]。實(shí)現(xiàn)視景系統(tǒng)的關(guān)鍵就是如何制作出真實(shí)、實(shí)時(shí)、高水平的圖像,使得路面和交通環(huán)境就像真實(shí)的一樣。分析比較了幾種常用生成視景系統(tǒng)圖像的方法,提出了基于圖像的虛擬現(xiàn)實(shí)技術(shù),它不依賴于幾何模型,而是通過(guò)在Virtools虛擬環(huán)境中實(shí)時(shí)獲取的一組圖像,通過(guò)這些圖像的適當(dāng)組合來(lái)生成位于不同試點(diǎn)的新視圖。這種方法的最大優(yōu)點(diǎn)在于生成的環(huán)境是這組圖像所反映的客觀真實(shí)場(chǎng)景,而且獨(dú)立于場(chǎng)景復(fù)雜性。本駕駛系統(tǒng)中,基于此方法設(shè)計(jì)了駕駛員視角的視景顯示系統(tǒng),首先將相機(jī)獲取的圖像拼接為寬角度圖像實(shí)現(xiàn)的單視點(diǎn)漫游,再通過(guò)圖像插值和視圖變形技術(shù)實(shí)現(xiàn)各視點(diǎn)間的平滑過(guò)渡,最終完成駕駛員視角區(qū)域內(nèi)的連續(xù)漫游。圖4給出某時(shí)刻,炮車駕駛艙三個(gè)潛望鏡視窗的三維視景截屏仿真圖。
圖3 炮車行駛控制的仿真
圖4 以第一視角操縱炮車在虛擬環(huán)境中運(yùn)行
2.4 模型的物理化及碰撞檢測(cè)
碰撞檢測(cè)是構(gòu)造模擬訓(xùn)練系統(tǒng)不可或缺的一個(gè)重要部分,在高炮駕駛仿真系統(tǒng)中,場(chǎng)景物體的碰撞處理,主要涉及到高炮與地面、高炮與地上景物(樹(shù)木、柵欄等)、高炮與運(yùn)動(dòng)物體之間的碰撞[10]。當(dāng)虛擬角色或者攝像機(jī)闖入地下或者走進(jìn)樹(shù)林的時(shí),即使模型建造得多么逼真,也會(huì)給用戶一種不真實(shí)的感覺(jué),嚴(yán)重地影響了整個(gè)系統(tǒng)的效果和價(jià)值。
導(dǎo)入Virtools的高炮模型為組合模型,所以首先得賦予虛擬物體的物理屬性,Virtools中物理化虛擬物體,要調(diào)用Physicalize行為模塊給虛擬物體賦予重力、摩擦力、彈力等屬性,使其具有真實(shí)物體的一些特性,這時(shí)Virtools會(huì)在模型周圍按照選擇的包圍盒生成一個(gè)碰撞檢測(cè)面,以便對(duì)模型進(jìn)行交互測(cè)試。此外,還需給部件添加空間和邏輯上的約束機(jī)制,使高炮模型可以合理、正常的協(xié)同運(yùn)作。在Virtools中碰撞檢測(cè)使用的主要是層次包圍盒方法,功能主要由標(biāo)準(zhǔn)外部構(gòu)件管理應(yīng)用程序接口(standard external managers API)中的碰撞管理接口(collision manager API)來(lái)實(shí)現(xiàn)。通常層次包圍盒合上一些特殊的碰撞檢測(cè)應(yīng)用,就能按照實(shí)際需求,實(shí)時(shí)、精確地實(shí)現(xiàn)物體之間的交互測(cè)試,極大程度地增強(qiáng)用戶操作模型時(shí)的真實(shí)感和交互感。圖5給出高炮在仿真環(huán)境中發(fā)生碰撞檢測(cè),無(wú)法穿透障礙物的仿真示意圖。
圖5 碰撞檢測(cè)發(fā)生,高炮無(wú)法穿透障礙物
3 高炮駕駛系統(tǒng)平臺(tái)開(kāi)發(fā)應(yīng)用
基于上文提到的開(kāi)發(fā)設(shè)計(jì)方法,本文設(shè)計(jì)了如圖6的某自行高炮單炮的聯(lián)邦系統(tǒng)。
圖6 某自行高炮駕駛系統(tǒng)訓(xùn)練平臺(tái)
通過(guò)模擬高炮在虛擬戰(zhàn)場(chǎng)環(huán)境中逼真的動(dòng)力學(xué)、動(dòng)力學(xué)特征,對(duì)高炮在虛擬戰(zhàn)場(chǎng)環(huán)境中的各種運(yùn)動(dòng)行為進(jìn)行仿真,以產(chǎn)生逼真度高的建模仿真效果。其中,仿真導(dǎo)演臺(tái)就是通過(guò)人機(jī)交互界面,對(duì)各節(jié)點(diǎn)進(jìn)行初始化,同時(shí)控制整個(gè)仿真過(guò)程,包括啟動(dòng)、暫停、停止和控制仿真推進(jìn)的快慢;機(jī)理解算成員節(jié)點(diǎn)由VC++和Matlab共同編輯完成。其中,解算由Simulink負(fù)責(zé)完成,主要用來(lái)對(duì)仿真系統(tǒng)采集的數(shù)據(jù)進(jìn)行分析處理,以實(shí)現(xiàn)裝備機(jī)理仿真,并為外觀模型提供數(shù)據(jù)支撐; 三維視景顯示成員利用Virtools 軟件進(jìn)行仿真,用于實(shí)時(shí)顯示整個(gè)三維仿真場(chǎng)景;成員間的交互則由RTI來(lái)實(shí)現(xiàn)。通過(guò)測(cè)試,整個(gè)高炮駕駛系統(tǒng)的渲染幀速率為50~60 f/s,完全可以滿足虛擬場(chǎng)景交互的實(shí)時(shí)性和逼真度要求。
4 結(jié) 語(yǔ)
本文結(jié)合當(dāng)前仿真需要,在構(gòu)建高炮駕駛系統(tǒng)仿真平臺(tái)時(shí),提出了一種新的仿真平臺(tái)設(shè)計(jì)方法,即將Virtools與HLA相結(jié)合,針對(duì)平臺(tái)開(kāi)發(fā)中的幾個(gè)關(guān)鍵技術(shù)進(jìn)行了研究,并提出了解決方案,解決了高炮作為聯(lián)邦成員在虛擬環(huán)境中的運(yùn)動(dòng)等問(wèn)題。此法既科學(xué)又易于實(shí)現(xiàn),對(duì)今后相關(guān)的開(kāi)發(fā)工作具有較好的參考價(jià)值。
參考文獻(xiàn)
[1]周彥,戴劍偉.HLA仿真程序設(shè)計(jì)[M].北京:電子工業(yè)出版社,2002.
[2]劉明昆.三維游戲設(shè)計(jì)師寶典:Virtools開(kāi)發(fā)工具篇[M].成都:四川電子音像出版中心,2005.
[3]程勇剛,朱元昌,邸彥強(qiáng).基于Virtools/HLA的跨廣域網(wǎng)多聯(lián)邦互聯(lián)研究[J].系統(tǒng)仿真學(xué)報(bào),2009,21(19):6104-6107.
[4]程勇剛,朱元昌,邸彥強(qiáng).基于Virtools與HLA的模擬訓(xùn)練系統(tǒng)研究[J].計(jì)算機(jī)仿真,2008,25(6):265-269.
[5]張家祥.HLA仿真技術(shù)應(yīng)用教程[M].北京:國(guó)防工業(yè)出版社,2007.
[6]邸彥強(qiáng),柴旭東,李伯虎,等.HLA/RTI網(wǎng)絡(luò)化與以模型為中心的分布仿真互聯(lián)模式研究[J].計(jì)算機(jī)集成制造系統(tǒng),2006,12(4):504-510.
[7]薛涵.基于Virtools的汽車駕駛仿真系統(tǒng)研究[D].哈爾濱:哈爾濱工程大學(xué),2007.
[8]淮永建,王梅峰,左正興.基于多圖動(dòng)力學(xué)理論的賽車游戲引擎的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2005,25(2):414-416.
[9]李崴巍,杜飛,鐘延炯.基于圖像的虛擬現(xiàn)實(shí)技術(shù)在駕駛模擬器中的應(yīng)用[J].微計(jì)算機(jī)信息,2006,22(2):230-233.
[10]馬登武,葉文,李瑛.基于包圍盒的碰撞檢測(cè)算法綜述[J].系統(tǒng)仿真學(xué)報(bào),2006,18(4):1058-1061.