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