顧云濤,潘憶江
(1海裝西安局;2中國(guó)電子科技集團(tuán)公司第二十研究所,西安 710068)
隨著計(jì)算機(jī)仿真技術(shù)的不斷應(yīng)用,利用計(jì)算機(jī)仿真技術(shù)對(duì)研究?jī)?nèi)容進(jìn)行仿真和效能評(píng)估,是當(dāng)前技術(shù)條件下的一種有效手段。而在完成仿真研究時(shí),利用視景仿真技術(shù),實(shí)現(xiàn)仿真流程的可視化,可以對(duì)研究?jī)?nèi)容進(jìn)行有效的促進(jìn)[1]。為了能全面直觀的展示相關(guān)仿真系統(tǒng)的工作狀態(tài)和工作流程,本文設(shè)計(jì)了一種仿真可視化系統(tǒng),為仿真流程的可視化提供了一種解決辦法。
仿真可視化系統(tǒng)以Matlab Engine和Vega為基礎(chǔ),分別實(shí)現(xiàn)仿真流程的計(jì)算和仿真過程的可視化,再利用Qt實(shí)現(xiàn)仿真可視化系統(tǒng)的總體控制和Matlab Engine與Vega之間的數(shù)據(jù)實(shí)時(shí)傳輸。
Matlab Engine是MATLAB與其它編程語言如C語言的應(yīng)用程序接口[2]。該接口是用于從外部程序調(diào)用Matlab來完成計(jì)算功能的。在C語言中需要復(fù)雜編程實(shí)現(xiàn)的矩陣計(jì)算和傅立葉變換等功能,在Matlab中則可以輕松實(shí)現(xiàn),因此通過Matlab Engine調(diào)用仿真所需的m文件,可以在有效實(shí)現(xiàn)仿真流程的同時(shí),為仿真可視化系統(tǒng)實(shí)時(shí)提供仿真數(shù)據(jù),以便其實(shí)現(xiàn)仿真流程的可視化。
Vega[3]是一套完整的用于開發(fā)交互式、實(shí)時(shí)可視化仿真應(yīng)用軟件的平臺(tái),其基本的功能是驅(qū)動(dòng)、控制、管理、虛擬場(chǎng)景,并支持快速復(fù)雜的視覺仿真程序,快速創(chuàng)建各種實(shí)時(shí)交互的三維環(huán)境,從整體上而言,Vega具有易用性、高效性、集成性、可擴(kuò)展性、跨平臺(tái)性。
仿真可視化系統(tǒng)仿真演示系統(tǒng)可以分為四個(gè)子模塊,分別是Matlab引擎模塊、Vega演示模塊、系統(tǒng)控制模塊以及人際交互界面構(gòu)成。整個(gè)系統(tǒng)的框架如圖1所示。
圖1 系統(tǒng)框架
Matlab引擎模塊負(fù)責(zé)完成流程仿真。該模塊以Matlab Engine為核心,通過由系統(tǒng)控制模塊配置Matlab Engine完成初始化,并通過系統(tǒng)控制模塊將仿真所需的m文件中的內(nèi)容利用Matlab Engine接口輸入至Matlab中完成仿真。
同時(shí)Matlab Engine通過接口將仿真流程中的仿真數(shù)據(jù)實(shí)時(shí)發(fā)送至系統(tǒng)控制模塊,為驅(qū)動(dòng)Vega演示模塊提供數(shù)據(jù)源。與此同時(shí),Matlab引擎模塊將計(jì)算過程中的相關(guān)數(shù)據(jù)保存于本地硬盤,供后續(xù)對(duì)比與分析使用。
Vega演示模塊[4]用于可視化的演示整個(gè)系統(tǒng)的工作狀態(tài)。Vega里所需的模型,均是由Creator軟件構(gòu)筑完成的。為了真實(shí)還原仿真系統(tǒng)工作的真實(shí)環(huán)境,通常需要制作環(huán)境模型和實(shí)例模型。環(huán)境模型是指仿真系統(tǒng)運(yùn)行時(shí)所處的仿真環(huán)境,如地面模型、水面模型、各種氣象條件模型等。實(shí)例模型則是指仿真系統(tǒng)所模擬的實(shí)物,如飛機(jī)、坦克、導(dǎo)彈等。
在制作環(huán)境模型時(shí),由于Vega提供了水面和氣象條件模塊,因此無需重新制作,而地面模塊通常需要重新制作。為了真實(shí)還原,演示系統(tǒng)中使用的地面模型由DEM數(shù)據(jù)、紋理和材質(zhì)三個(gè)部分構(gòu)成[5-8]。DEM數(shù)據(jù)選取USGS網(wǎng)站所提供的DEM格式數(shù)據(jù),所使用數(shù)據(jù)的分辨率為3角秒,由于所處經(jīng)緯度的不同,每個(gè)網(wǎng)格寬度大約為90m。紋理數(shù)據(jù)可以利用衛(wèi)星照片制作,較為簡(jiǎn)便的方法是從Google Earth上抓取,選取與DEM數(shù)據(jù)相對(duì)應(yīng)的地球真實(shí)紋理數(shù)據(jù)。完成相關(guān)數(shù)據(jù)準(zhǔn)備之后,通過Creator軟件,建立地面模型,并完成地面紋理的制作,得到整個(gè)系統(tǒng)演示的場(chǎng)景地形文件。完成制作后,由Vega軟件中提供的Texture Material Mapper(TMM)工具,為整個(gè)模型附材質(zhì)信息。
此后,以Creator構(gòu)筑合適的實(shí)例模型,通過Vega軟件制作ADF文件,將各類模型在空間中組織在一起,并加入光影、氣象條件模塊,力求實(shí)現(xiàn)趨于真實(shí)的演示效果。隨后通過系統(tǒng)控制模塊與Vega演示模塊的接口,由系統(tǒng)控制模塊提供數(shù)據(jù)驅(qū)動(dòng)Vega演示模塊運(yùn)行。
系統(tǒng)控制模塊旨在將Matlab引擎模塊與Vega演示模塊聯(lián)系在一起,協(xié)調(diào)、統(tǒng)一的完成整個(gè)演示過程。系統(tǒng)控制模塊由Qt實(shí)現(xiàn)[9-10],該模塊通過相應(yīng)的同步控制,使得兩個(gè)模塊同步完成所需展示的信息和畫面,完成整個(gè)系統(tǒng)工作流程的演示工作。系統(tǒng)控制模塊擬采用類似于時(shí)鐘脈沖的控制模式,以實(shí)現(xiàn)Vega演示模塊中實(shí)例和Matlab引擎模塊獲取的相關(guān)數(shù)據(jù)的同步演示。系統(tǒng)控制模塊是整個(gè)仿真可視化系統(tǒng)的核心,整體控制仿真可視化過程。
接口設(shè)計(jì)是仿真可視化系統(tǒng)的重要模塊,通過接口可以將運(yùn)行于不同軟件、不同類型的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,以復(fù)合不同模塊對(duì)數(shù)據(jù)類型和格式的需求。
系統(tǒng)控制模塊與Matlab引擎模塊的接口可實(shí)現(xiàn)兩個(gè)模塊間的數(shù)據(jù)傳遞,主要包括Matlab引擎運(yùn)行的仿真程序和用于演示所需的仿真數(shù)據(jù)。
根據(jù)系統(tǒng)總體設(shè)計(jì),Matlab引擎模塊所運(yùn)行的仿真程序以m文件的形式保存于硬盤中,由系統(tǒng)控制模塊讀取,由Matlab引擎模塊運(yùn)行完成流程仿真,因此為實(shí)現(xiàn)仿真的正常運(yùn)行,需利用engEvalString函數(shù)實(shí)現(xiàn),將m文件中仿真程序傳遞至Matlab引擎模塊。
同時(shí)在仿真中,Matlab引擎模塊計(jì)算出的仿真數(shù)據(jù)傳遞給系統(tǒng)控制模塊,可通過mxGetPr和mxGetPr函數(shù)現(xiàn)實(shí),其分別實(shí)現(xiàn)從相關(guān)矩陣中獲取實(shí)部數(shù)據(jù)和虛部數(shù)據(jù),經(jīng)處理后供Vega演示系統(tǒng)使用。
系統(tǒng)控制模塊與Vega演示模塊的接口主要實(shí)現(xiàn)仿真過程中所需演示數(shù)據(jù)的傳遞,主要為驅(qū)動(dòng)Vega演示模塊的數(shù)據(jù),即各類實(shí)例的實(shí)時(shí)運(yùn)動(dòng)狀態(tài)。在Vega中,任何實(shí)例都具有六個(gè)維度的參數(shù),分別是在空間中的三維坐標(biāo)和其本身的姿態(tài)信息。因此通過該接口,將系統(tǒng)控制模塊接收到的仿真數(shù)據(jù)轉(zhuǎn)換為實(shí)例所需的六個(gè)維度的參數(shù),可通過vgPos和vgPosVec實(shí)現(xiàn),為Vega中的實(shí)例提供流程仿真中的各個(gè)節(jié)拍的仿真結(jié)果,用以驅(qū)動(dòng)實(shí)例的運(yùn)動(dòng)。但在仿真中,由于節(jié)拍設(shè)定的問題,有時(shí)需要在兩個(gè)節(jié)拍計(jì)算結(jié)果中進(jìn)行插值運(yùn)算,以滿足Vega演示時(shí)對(duì)數(shù)據(jù)速率的需求。
本文以機(jī)載高度表為例,利用仿真可視化系統(tǒng),實(shí)現(xiàn)了機(jī)載高度表仿真流程的可視化。如圖2至圖4所示,分別為不同預(yù)定航跡下,仿真可視化系統(tǒng)運(yùn)行中的截圖。
圖2 兩種高度計(jì)性能對(duì)比仿真演示截圖
圖3 機(jī)動(dòng)軌跡仿真演示截圖
圖2至圖4分別為不同航跡下,仿真可視化系統(tǒng)的演示截圖,為了充分演示不同姿態(tài)對(duì)高度表的影響,在Vega中加入了藍(lán)色的波束實(shí)例,與右上角的窗口一同演示不同姿態(tài)下波束的所能覆蓋的地面范圍。同時(shí)為了充分對(duì)比不同高度表的運(yùn)行狀態(tài),以圖2為例,在Matlab中使用plot函數(shù),實(shí)時(shí)繪制出了不同高度表的對(duì)比數(shù)據(jù),驗(yàn)證了仿真可視化系統(tǒng)的可行性。
圖4 爬升軌跡仿真演示截圖
[1]王乘,李利軍,周均清等.Vega實(shí)時(shí)三維視景仿真技術(shù)[M].北京:電子工業(yè)出版社,2005.
[2]蘇金明,黃國(guó)明,劉波.Matlab與外部程序接口[M].北京:電子工業(yè)出版社,2004.
[3]王乘,李利軍,周均清等.Vega實(shí)時(shí)三維視景仿真技術(shù)[M].北京:電子工業(yè)出版社,2005.
[4]MultiGen-Paradigm.VegaOptionsGuide[S].Version 3.7,2001
[5]陳敬周.數(shù)字高程模型的生成與應(yīng)用[D].太原:太原理工大學(xué),2007
[6]桂芳茹.數(shù)字高程模型的建立及其在土方量計(jì)算方面的應(yīng)用[D].重慶:重慶大學(xué),2008.
[7]杜金蓮.大規(guī)模三維地形實(shí)時(shí)繪制關(guān)鍵技術(shù)的研究與實(shí)現(xiàn)[D].大連:大連理工大學(xué),2003
[8]廖巍.大規(guī)模地形的建模與動(dòng)態(tài)繪制技術(shù)研究[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2002
[9]李師賢,蔣愛軍,梅曉勇等.C++Primer[M].北京:人民郵電出版社,2010.
[10]閆鋒欣,曾泉人,張志強(qiáng)等.C++GUI Qt4編程(第2版)[M].北京:電子工業(yè)出版社,2013.