摘 要:采用Creator 和Vega 平臺以及Simulink仿真開發(fā)工具對空面導彈的飛行視景仿真技術進行了研究。提出了一種空面導彈飛行視景仿真系統(tǒng)的體系構架,利用獲取的DED真實地形數(shù)據(jù),通過Creator建立大地形三維模型;借助VC/MFC開發(fā)平臺,實現(xiàn)了Simulink數(shù)字仿真系統(tǒng)與視景仿真的通信;在Vega中實現(xiàn)視景仿真系統(tǒng)的軟件開發(fā)調試。仿真結果表明,該系統(tǒng)能夠為空面武器系統(tǒng)研制階段的參數(shù)優(yōu)化和效能評估提供有效的驗證平臺。
關鍵詞:Vega;視景仿真;Simulink
視景仿真是虛擬現(xiàn)實技術的一種表現(xiàn)形式,可以使用戶產(chǎn)生身臨其境的感覺,使仿真環(huán)境與用戶之間有一種真實的交流。根據(jù)仿真的目的不同,可以用三維模型再現(xiàn)真實的環(huán)境,然后采用計算機圖形處理技術,達到非常逼真的效果。利用視景仿真技術,在計算機上就可以進行反復多次的模擬實驗,從而取代耗資巨大的物理和實物實驗,甚至可以進行由于各種原因和條件限制而無法實現(xiàn)的實驗,具有投資少、效益高、可重復、無風險、周期短等突出優(yōu)點,因此視景仿真在軍事、工業(yè)等領域得到迅速推廣[1]。
近年來,航空制導武器飛行視景仿真系統(tǒng)在系統(tǒng)研發(fā)、模擬訓練、作戰(zhàn)研究、方案設計等領域成為研究熱點。武器飛行視景仿真系統(tǒng)克服了實彈發(fā)射在飛行試驗中受到的發(fā)射場地、氣候條件以及經(jīng)費問題等諸多同素制約的難題。在節(jié)省研制費用和縮短研制時間的同時,為導彈提供驗證和分析手段,為具有末端成像制導的精確制導導彈的制導系統(tǒng)仿真及毀傷效果評估提供驗證平臺[2]。
本文采用視景仿真軟件Vega、數(shù)字仿真軟件Simulink,結合VC++/MFC,建立空面武器飛行視景仿真模型,并通過二次開發(fā)獲得武器視景仿真所需要的設計方案。
1 視景仿真系統(tǒng)開發(fā)環(huán)境
為了達到精確和逼真的效果,在仿真系統(tǒng)中,需要建立導彈或制導炸彈的數(shù)字仿真模型,以及復雜的三維場景模型。在系統(tǒng)中實現(xiàn)數(shù)字仿真模型與圖形仿真的通信,同時,在圖形仿真過程中,對這種復雜的三維場景模型進行實時渲染。Paradigm公司提供的建模工具Multigen Creator 和開發(fā)工具Vega無疑是在虛擬現(xiàn)實領域領先的建模和仿真軟件平臺,也成為圖形仿真的首選;而Matlab中的Simulink仿真模塊是實現(xiàn)數(shù)字仿真的最佳選擇。
1.1 Vega
Vega是一個用于建立實時仿真和虛擬現(xiàn)實應用程序開發(fā)的高性能軟件環(huán)境和工具庫。Vega包括友好的圖形環(huán)境界面Lynx、完整的C語言應用程序接口API、豐富的相關實用庫函數(shù)和一批可選的功能模塊。由于Vega大幅度地減少了源代碼的編程,使軟件的維護和實時性能的進一步優(yōu)化變得更加容易,從而大大提高了工作效率[3]。
1.2 Creator
Multigen Creator是一套高逼真度、最佳優(yōu)化的實時三維建模工具, 它能夠滿足視景仿真、交互式仿真以及其他應用領域的要求。它是惟一將多變性建模、矢量建模和地形生成集成在一個軟件包中的手動建模工具,能進行矢量編輯和建模、地形表面生成等。其強大的建模功能可為眾多不同類型的圖像發(fā)生器提供建模系統(tǒng)及工具,它的諸如層次細節(jié)(LOD)、多邊形篩選、邏輯篩選、繪圖優(yōu)先級以及分離面等高級實時功能,使得OpenFlight (. fit)格式在實時三維領域中成為最流行的圖像生成格式,并成為視景仿真領域的行業(yè)標準[4]。
1.3 Simulink
Matlab是一種功能強、效率高、便于進行科學和工程計算的交互式軟件包。Matlab提供了強大的Simulink系統(tǒng)仿真軟件。Simulink提供航空航天飛行器推進系統(tǒng)、控制系統(tǒng)、動力學模塊及六自由度和三自由度模型庫,可以進行固定質量或者變質量體系的建模與仿真;提供重力場、磁場、大氣和風的標準環(huán)境模型。可以利用各種轉換模塊,方便實現(xiàn)坐標轉換,能夠完成各物理量的單位制轉換,也可以方便地構造出導彈飛行所需的數(shù)字模型。
2 視景仿真系統(tǒng)體系構架
空面導彈飛行視景仿真系統(tǒng)體系構架如圖1所示。導彈彈道計算模塊根據(jù)導彈外形參數(shù)、飛行環(huán)境等數(shù)據(jù)計算出導彈的飛行狀態(tài)數(shù)據(jù),并通過網(wǎng)絡通信接口將導彈狀態(tài)數(shù)據(jù)提供給Vega視景仿真程序,最終起到控制導彈飛行彈道以及姿態(tài)的作用。導彈飛行數(shù)據(jù)庫模塊起到存儲飛行彈道以及姿態(tài)的作用,也可以利用存儲的數(shù)據(jù)進行仿真結果的再現(xiàn)、對比和校驗。網(wǎng)絡通信模塊主要負責導彈彈道計算模塊與視景仿真程序模塊的網(wǎng)絡通信與同步。Vega視景仿真程序模塊利用Creator生成的三維模型,并加載ADF應用文件程序,通過接收仿真數(shù)據(jù),對導彈的視景仿真輸出進行控制、調整。
在導彈飛行視景仿真中,Vega視景仿真程序模塊實時提取導彈狀態(tài)數(shù)據(jù)庫中的當前飛行狀態(tài),并產(chǎn)生相應的控制事件流程,然后根據(jù)事件流程,通過運行仿真引擎,觸發(fā)相應的場景特效,達到實時表現(xiàn)飛行三維視景狀態(tài)的目的。
3 空面導彈飛行視景仿真環(huán)境開發(fā)關鍵技術
3.1真實三維地形的建立
三維地形建模是指將一定范圍內的真實地形高程數(shù)據(jù)(例如DED數(shù)據(jù))、地貌特征數(shù)據(jù),結合包含真實地形表面細節(jié)的紋理,根據(jù)適當?shù)牡匦无D換算法生成具有一定序列、能夠近似表示為部分地球表面狀況的多邊形集合。地形建模的整體流程如圖2所示。
航天飛機雷達地形測繪使命SRTM(Shuttle Radar Topography Mission)數(shù)據(jù)主要由美國太空總署(NASA)和國防部國家測繪局(NIMA)聯(lián)合測量。2002年2月1日上午11時4分,美國“奮進”號航天飛機在佛羅里達州卡那維拉爾角的航天發(fā)射中心發(fā)射升空,“奮進”號上搭載的SRTM系統(tǒng)對超過1.19億平方公里、覆蓋面積達到80%的地表進行了數(shù)據(jù)采集。通過SRTM數(shù)據(jù)轉化為DED數(shù)據(jù),如圖3所示,然后利用Creator的地形算法使其轉化為與真實地形類似的三維地形模型。
Creator的地形算法主要有Polymesh、Delaunay、CAT、TCT等,考慮到所生成的導彈飛行地形需要較高的實時性和精確性的特點,多邊形數(shù)量不應受限,且必須設置LOD,所以選用Polymesh算法較為合適,如圖4所示。
3.2 Simulink的外部通信
Simulink的Aerospace Blockset仿真模塊提供了大量的在Simulink環(huán)境中使用的航空航天模塊。Aerospace Blockset將航空航天領域通用的標準模塊在Simulink環(huán)境下進行了集成,能夠方便地組合導彈的系統(tǒng)結構,并在此基礎之上進行完整的開發(fā)及測試工作,完成導彈系統(tǒng)的概念設計。同樣可以使用Simulink建立導彈彈道的計算模塊,向視景仿真系統(tǒng)提供仿真數(shù)據(jù)。
ActiveX是Widnows對象集成的一個標準協(xié)議,它是組件對象模型(com)的一個子集,其目的是通過一個通用機構,實現(xiàn)軟件之間相互提供服務的目的。Matlab提供了引擎組件(ActiveX),可以由它來完成控制Matlab的任務,也可以控制Simulink仿真模塊的運行,并且可以獲取其中的仿真結果。因此可以通過導彈彈道計算模塊程序對Matlab引擎操縱來實現(xiàn)對Simulink的控制,從而完成彈道計算數(shù)據(jù)的處理,并可以提取相關的計算數(shù)據(jù),通過網(wǎng)絡通信模塊傳輸?shù)絍ega視景仿真程序模塊。Simulink外部通信關鍵代碼如下:
Engine *ep; //定義Matlab引擎指針
if (!(ep=engOpen(NULL)))
//測試是否啟動Matlab引擎成功
{
cout <<"Can't start Matlab engine!" <<endl;
exit(1);
}
eng EvalString(ep," open('E:\matlab\\missile_fly.mdl')");
//打開導彈彈道仿真模型
eng EvalString(ep,"sim('missile_fly')"); //開始仿真
…
xyz = engGetVariable(ep,"xyz");
memcpy(arrxyz,mxGetPr(xyz),N*sizeof(double));
… //從Matlab工作空間獲取仿真結果,并
通過網(wǎng)絡傳輸?shù)絍ega視景仿真程序模塊
engClose(ep); //銷毀引擎,釋放內存
通過這種方式,可以將Simulink的仿真結果經(jīng)網(wǎng)絡數(shù)據(jù)傳輸?shù)絍ega仿真程序模塊,實現(xiàn)對彈道的控制。
3.3 Vega編程接口的應用
Vega 是美國MultiGen-Paradigm 公司開發(fā)的用于虛擬現(xiàn)實、視景仿真等領域的世界領先的應用軟件工具。Vega提供完整的C語言編程接口,利用該編程接口可以方便、快捷地在VC/MFC中完成開發(fā)。基于Vega 圖形驅動的導彈視景仿真系統(tǒng)開發(fā)步驟如圖5所示。
(1)由于MFC采用圖形界面,因此必須建立獨立的線程顯示Vega三維視景,以免MFC應用程序和Vega在同一線程,造成程序鎖死。下面是一個MFC建立線程的簡單代碼:
m_pVegaThread=AfxBeginThread(runVegaProc,this,TH
READ_PRIORITY_NORMAL,0,0,NULL)
(2)在獨立線程建立后,在線程中初始化Vega 系統(tǒng)并創(chuàng)建共享內存,調用Vega 的API 函數(shù)vgInitWinSys();
(3)利用ADF 文件(Vega 模型文件) 進行資源初始化,讀取ADF 文件中的數(shù)據(jù),裝載數(shù)據(jù)庫,調用Vega 的API 函數(shù)vgDefineSys (" missile_fly.adf " ) ;
(4)調用配置系統(tǒng)和模塊的函數(shù)vgConfigSys ( ) ,完成資源配置;
(5)調用幀循環(huán)函數(shù),對三維視景進行繪制。在循環(huán)中,接收導彈彈道計算模塊所計算的數(shù)據(jù),對數(shù)據(jù)進行處理,并根據(jù)數(shù)據(jù)對導彈的姿態(tài)進行控制;
(6) 調用函數(shù)VgExit(0) ,終止當前Vega程序。
4 可視化仿真結果顯示
視景仿真系統(tǒng)能將導彈尋找和命中目標的飛行過程以及爆炸場景以三維的影像直觀地顯示出來。通過顯示的結果能夠直觀地判斷導彈最終能否擊中目標,由此可以衡量和檢驗導彈導引性能的優(yōu)劣。圖6是導彈飛行的場景,主通道顯示導彈飛行,左側上方通道顯示目標物,左側下方通道顯示導彈跟隨視角。
本文利用Creator 和Vega 平臺以及Simulink實現(xiàn)了導彈的飛行視景仿真,為空面導彈系統(tǒng)研制階段的參數(shù)優(yōu)化和效能評估提供了一種可視化驗證平臺,對類似武器系統(tǒng)的視景仿真具有一定的參考價值。
參考文獻
[1] 鄭向平.基于Creator 和Vega 的某防護系統(tǒng)可視化仿真研究 [J]. 系統(tǒng)仿真學報,2008,20:4082-4088.
[2] 胡令.導彈武器發(fā)射環(huán)境視景仿真研究[J].信息化縱橫,2009(05):66-68,75.
[3] 王乘.Vega實時三維視景仿真技術[M]. 武漢:華中科技大學出版社,2004.
[4] 洪蕾.導彈飛行仿真可視化系統(tǒng)研究與實現(xiàn)[J].彈箭與制導學報,2007,27:91-94.