韓文波,陳瀚超
(長春理工大學(xué) 光電工程學(xué)院,長春 130022)
戰(zhàn)斗機飛行視景仿真系統(tǒng)的建立對戰(zhàn)斗機飛行模擬器的研究有一定的促進作用,也可作為戰(zhàn)斗機飛行員模擬訓(xùn)練平臺。目前,應(yīng)用C++開發(fā)的視景仿真系統(tǒng)側(cè)重于模擬物體運動規(guī)律,開發(fā)代碼繁復(fù)[1],工作量較大;采用VegaPrime等仿真軟件能對虛擬環(huán)境進行快速開發(fā)[2],但是單純使用VegaPrime又很難準(zhǔn)確模擬出戰(zhàn)斗機運動的數(shù)學(xué)規(guī)律。為此,用Creator軟件對戰(zhàn)斗機、機場進行創(chuàng)建,利用Vega Prime調(diào)用*.acf文件來進行場景配置[3],利用MATLAB/SIMULINK建立數(shù)學(xué)模型,最后搭建Visual C++與VegaPrime和MATLAB/SIMULINK的數(shù)據(jù)接口以及操縱桿輸入接口,設(shè)計一套戰(zhàn)斗機飛行視景仿真系統(tǒng),實現(xiàn)了戰(zhàn)斗機飛行參數(shù)與三維視景的無縫銜接。
戰(zhàn)斗機飛行視景仿真系統(tǒng)主要由仿真計算平臺、三維建模、場景驅(qū)動三個部分組成,其系統(tǒng)結(jié)構(gòu)如圖1所示。首先在Creator軟件中建立戰(zhàn)斗機模型和機場地形,并將模型數(shù)據(jù)導(dǎo)入VegaPrime軟件進行場景配置。系統(tǒng)運行時,操縱桿得到操縱者的操縱信號,并通過數(shù)據(jù)接口將操縱信號傳輸至仿真計算機進行數(shù)據(jù)解算,由Visual C++對仿真輸入數(shù)據(jù)和仿真場景進行系統(tǒng)集成,并輸出可執(zhí)行程序,在視景平臺上顯示,使操縱者通過視景窗口做出下一步的操作決策,從而實現(xiàn)戰(zhàn)斗機飛行過程的視景仿真。
(1)仿真計算平臺:該模塊是用MATLAB/SIMULINK將戰(zhàn)斗機數(shù)學(xué)模型進行模型繪制。仿真計算平臺與操縱桿和Visual C++進行通聯(lián),便于控制信號的傳輸。
(2)場景建模:該模塊是用Creator軟件,采用模型繪制、約束體定制等方法建立戰(zhàn)斗機模型;采用收集原始數(shù)據(jù)生成地形數(shù)據(jù)庫、加載文化特征要素等方法建立機場地形。
(3)場景驅(qū)動:該模塊是將已建立的戰(zhàn)斗機模型和機場地形導(dǎo)入VegaPrime軟件中,在VegaPrime中對場景中模型初始位姿、視點位姿、環(huán)境等參數(shù)進行設(shè)定。
圖1 視景仿真系統(tǒng)結(jié)構(gòu)框圖
仿真計算平臺是視景仿真系統(tǒng)的重要組成部分,其原理如圖2所示。
圖2 仿真計算平臺原理框圖
飛行參數(shù)解算的目的是使視景仿真戰(zhàn)斗機能夠按照真實的動力學(xué)規(guī)律飛行,并根據(jù)操縱者發(fā)出的操縱信號改變其飛行姿態(tài)。戰(zhàn)斗機質(zhì)心運動方程為:
戰(zhàn)斗機繞質(zhì)心運動方程為:
式中,x、y、z分別是戰(zhàn)斗機在地坐標(biāo)系中x、y、z軸上的坐標(biāo);u、v、w分別是戰(zhàn)斗機在x、y、z軸上的速度;Ψ、p分別是戰(zhàn)斗機的滾轉(zhuǎn)角、滾轉(zhuǎn)角速度;θ、q分別是戰(zhàn)斗機的俯仰角、俯仰角速度;φ、r分別是戰(zhàn)斗機的偏航角、偏航角速度[4]。
聯(lián)立兩方程,應(yīng)用MATLAB/SIMULINK可以求出戰(zhàn)斗機速度、位置、俯仰角等隨時間變化的飛行參數(shù)。為實現(xiàn)虛擬戰(zhàn)斗機在動態(tài)三維視景中的運動規(guī)律與飛行參數(shù)曲線吻合,還需要以Visual C++為平臺實現(xiàn)MATLAB/SIMULINK與VegaPrime的交互。為此要對操縱桿、MATLAB/SIMULINK、Visual C++、VegaPrime之間的數(shù)據(jù)接口進行搭建。
MATLAB/SIMULINK中的Joystick Input模塊能夠?qū)崿F(xiàn)操縱桿與仿真平臺之間的數(shù)據(jù)傳輸。安裝操縱桿驅(qū)動程序,在該模塊中通過輸入Joystick Input ID建立模塊與操縱桿之間的交互,并以Axes軸向輸出和Button功能按鍵輸出作為該模塊的輸出量與其他SIMULINK模塊建立連接。操縱桿輸入的主要接口功能如表1所示。
表1 Joystick Input接口功能
為實現(xiàn)戰(zhàn)斗機數(shù)學(xué)模型向可執(zhí)行程序的飛行參數(shù)數(shù)據(jù)傳輸,需搭建Visual C++與MATLAB/SIMULINK數(shù)據(jù)接口。
搭建數(shù)據(jù)接口之前必須在Visual C++中添加MATLAB/SIMULINK函數(shù)庫路徑,確保在編譯時可以傳遞帶有MATLAB/SIMULINK的頭文件和鏈接庫。為實現(xiàn)飛行仿真的實時性,要確保SIMULINK求解器類型為固定。同時目標(biāo)代碼生成語言調(diào)整為C語言實現(xiàn)SIMULINK和VisualC++的無縫連接。設(shè)置界面如圖3所示。
通過總結(jié)近幾年的學(xué)術(shù)中關(guān)于跨文化交際能力的研究,發(fā)現(xiàn)跨文化交際能力包括四個方面:思維向度、行為向度、情感向度和個性向度??缥幕芰εc跨文化交際能力相比是一種更為綜合的能力,后者更側(cè)重于知識和技能,尤其是技能的向度或稱為行為能力(人們之間交往溝通的能力)??缥幕芰Φ纳婕懊嬉獜V于跨文化交際能力。本文的研究基于對學(xué)生跨文化能力而不僅僅是跨文化交際能力的培養(yǎng)。
圖3 參數(shù)設(shè)置界面
可執(zhí)行程序生成后需進行校驗,以確保代碼轉(zhuǎn)換的準(zhǔn)確性。代碼校驗是運行可執(zhí)行文件.exe與SIMULINK模型的比較,較細微的誤差來源于不同編譯器的優(yōu)化設(shè)置,通常小于10-13。代碼校驗的關(guān)鍵語句如下。
控制操縱桿,忽略環(huán)境因素的影響,模擬某型號戰(zhàn)斗機從靜止開始做勻速直線運動的過程,以此過程為例對代碼轉(zhuǎn)換的準(zhǔn)確性進行校驗。圖4為戰(zhàn)斗機模型的SIMULINK仿真曲線,該曲線是戰(zhàn)斗機從靜止到勻速直線運動過程距離隨時間的響應(yīng)曲線。圖5為運行轉(zhuǎn)換成該模型代碼后的結(jié)果。兩幅曲線顯示1秒內(nèi)距離為0米,第1秒至第6秒距離由0米均勻增加到5米。兩幅曲線的顯示結(jié)果一致,說明轉(zhuǎn)換代碼準(zhǔn)確。
圖4 Simulink模型運行結(jié)果 圖5 代碼轉(zhuǎn)換運行結(jié)果
為實現(xiàn)飛行場景的數(shù)據(jù)傳輸,需搭建VC與VegaPrime數(shù)據(jù)接口。利用VegaPrime自帶頭文件和鏈接庫,通過在Visual C++中添加VegaPrime函數(shù)庫路徑,采用窗口子類化技術(shù),實現(xiàn)了用Visual C++對VegaPrime的調(diào)用。建立數(shù)據(jù)接口的關(guān)鍵代碼如下。
對關(guān)鍵代碼編譯后的結(jié)果如下。
出現(xiàn)此錯誤的原因是VegaPrime函數(shù)庫在Windows平臺下的C運行時庫是一個基于多線程動態(tài)鏈接庫的版本,在編譯程序時必須使用/MD編譯器。
重新編譯程序后生成飛行視景.exe可執(zhí)行文件,結(jié)果如圖6所示。該結(jié)果表明數(shù)據(jù)接口搭建完成。
圖6 可執(zhí)行程序
飛行場景的建模與驅(qū)動是仿真系統(tǒng)輸出動態(tài)三維圖像的關(guān)鍵。在設(shè)計過程中,采用紋理映射、數(shù)據(jù)庫優(yōu)化和LOD技術(shù)等關(guān)鍵技術(shù),優(yōu)化了場景數(shù)據(jù)庫結(jié)構(gòu),提高了仿真系統(tǒng)的效率。
MultiGen Creator場景建模分為實體建模及地形建模兩部分。MultiGen Creator中柵格的單元格長度可以事先設(shè)置,所以在對戰(zhàn)斗機實體和機場地形進行建模之前,首先要對戰(zhàn)斗機和機場結(jié)構(gòu)尺寸進行收集,以確保建模的準(zhǔn)確性。實體模型和地形數(shù)據(jù)庫生成后,采用紋理映射技術(shù)將真實的顏色映射到場景中,使場景變得更加逼真。通過為戰(zhàn)斗機定制約束體、為地形設(shè)置LOD參數(shù)可以提高仿真運行效率。戰(zhàn)斗機模型和機場地形如圖7和圖8所示。
圖7 戰(zhàn)斗機三維模型
圖8 機場地形
MultiGen Creator提供的特有技術(shù)本質(zhì)上都是以節(jié)省內(nèi)存為目的,以提高仿真渲染速度。除紋理映射技術(shù)和LOD技術(shù)外,建模過程中數(shù)據(jù)庫優(yōu)化技術(shù)貫穿始終。MultiGen Creator的層次數(shù)據(jù)庫結(jié)構(gòu)是一種可視化的數(shù)據(jù)結(jié)構(gòu),它直觀地表達了數(shù)據(jù)庫的各個組成部分[5]。在設(shè)計飛行場景過程中,采用了邏輯結(jié)構(gòu)與空間結(jié)構(gòu)相結(jié)合的方法,對飛行場景數(shù)據(jù)庫進行了合理優(yōu)化,系統(tǒng)資源利用率大幅提高。戰(zhàn)斗機的數(shù)據(jù)庫結(jié)構(gòu)如圖9所示。
圖9 戰(zhàn)斗機數(shù)據(jù)庫結(jié)構(gòu)圖
飛行場景驅(qū)動的目的是對地景數(shù)據(jù)庫進行渲染,并向顯示器輸出動態(tài)三維畫面。將建立好的模型和場景導(dǎo)入VegaPrime中,應(yīng)用VegaPrime中各模塊對模型對象位姿、視點位姿、場景環(huán)境、碰撞檢測、碰撞特效等進行相關(guān)設(shè)置后,生成ADF格式文件輸出到顯示系統(tǒng)。飛行場景如圖10所示。
圖10 飛行場景
運行視景仿真系統(tǒng),用操縱桿控制升降舵和方向舵兩路信號輸入,控制視景仿真戰(zhàn)斗機起飛、高空飛行、著陸等飛行過程。圖11為視景仿真系統(tǒng)運行過程中戰(zhàn)斗機著陸過程的視景仿真界面截圖。
圖11 戰(zhàn)斗機視景仿真界面
圖12為SIMULINK環(huán)境下戰(zhàn)斗機著陸過程高度隨時間的變化曲線,戰(zhàn)斗機在150米高空開始著陸,前30秒近似勻速直線下滑,30秒時戰(zhàn)斗機后輪著地,進行減速運動。圖13為SIMULINK環(huán)境下戰(zhàn)斗機著陸過程速度隨時間的變化曲線,戰(zhàn)斗機著陸初始速度約50米/秒,前30秒保持勻速,而后進行減速運動。整個過程中視景顯示器顯示的戰(zhàn)斗機飛行狀態(tài)與兩組曲線顯示的飛行參數(shù)相一致。
圖12 高度曲線
圖13 速度曲線
視景仿真結(jié)果表明,視景顯示器中仿真戰(zhàn)斗機飛行狀態(tài)的顯示與SIMULINK環(huán)境下戰(zhàn)斗機飛行參數(shù)的輸出具有良好的同步性。以戰(zhàn)斗機飛行各階段的理論參數(shù)指標(biāo)作為依據(jù),該系統(tǒng)輸出的飛行參數(shù)曲線對參訓(xùn)飛行員具有參考價值。
針對目前在戰(zhàn)斗機飛行視景仿真領(lǐng)域單純使用Visual C++和VegaPrime兩款軟件存在的局限性,本文提出了用MATLAB/SIMULINK圖形界面控制戰(zhàn)斗機并與VegaPrime聯(lián)合進行三維視景顯示的方法。仿真結(jié)果表明,該方法能夠解決傳統(tǒng)戰(zhàn)斗機視景仿真的局限性,對飛行模擬器的研究及飛行員訓(xùn)練具有參考價值。
[1]彭亮,黃心漢.基于VC和Vega Prime聯(lián)合開發(fā)的巡航導(dǎo)彈仿真系統(tǒng)研究[J].中南大學(xué)學(xué)報,2010,41(1):219-224.
[2]李亞臣,胡健,黎遠忠等.基于VegaPrime的航天器視景仿真中的多坐標(biāo)系問題[J].系統(tǒng)仿真學(xué)報,2007,19(3):575?578.
[3]Chen G,Gan ZC,Sheng JJ,et al.Equipment simulation training system based on virtual reality[C].International Conference on Computer and Electrical Engineering,IEEE,2008.
[4]姚子羽,艾劍良.采用雙側(cè)桿的民機仿真系統(tǒng)的研究與設(shè)計[J].系統(tǒng)仿真學(xué)報,2014,26(8):1692-1705.
[5]盧中尉,郝穎明.基于Creator大地景建模的研究與實現(xiàn)[J].仿真技術(shù),2010,26(2):139-141.