王 成 王會(huì)霞
北京航天自動(dòng)控制研究所,北京 100854
導(dǎo)彈武器系統(tǒng)研制需要較長的時(shí)間,從設(shè)計(jì)到定型必須進(jìn)行多次飛行試驗(yàn),而實(shí)彈射擊成本高、周期長,給導(dǎo)彈設(shè)計(jì)與研制帶來不便。利用系統(tǒng)仿真、虛擬現(xiàn)實(shí)和可視化技術(shù)模擬實(shí)彈打靶,可以快速方便的獲取導(dǎo)彈飛行仿真數(shù)據(jù),彌補(bǔ)實(shí)彈飛行信息不足的缺陷,為導(dǎo)彈設(shè)計(jì)與研制方面相關(guān)的研究提供了參考依據(jù)。
飛行仿真系統(tǒng)一直是系統(tǒng)仿真領(lǐng)域的研究熱點(diǎn),廣泛應(yīng)用于飛行器設(shè)計(jì)、飛行性能測試、導(dǎo)航、制導(dǎo)與控制等系統(tǒng)的研發(fā),已成為我國軍事訓(xùn)練、高校院所教學(xué)與研究的重要方向。文獻(xiàn)[1-2]采用基于OpenGL的三維圖形庫實(shí)現(xiàn)飛行仿真和導(dǎo)彈攻擊過程,文獻(xiàn)[3]采用基于OSG的可視化引擎實(shí)現(xiàn)飛行仿真系統(tǒng),文獻(xiàn)[4-5]采用基于STK的開發(fā)包實(shí)現(xiàn)了飛行過程與任務(wù)實(shí)現(xiàn)的仿真,文獻(xiàn)[6]采用Matlab建立飛行動(dòng)力學(xué)與飛行器運(yùn)動(dòng)模型,然后通過Fligtgear圖形引擎實(shí)現(xiàn)飛行仿真。
這些文獻(xiàn)雖然采用了不同的方法實(shí)現(xiàn)了導(dǎo)彈、飛機(jī)等飛行器的飛行仿真系統(tǒng),但過于側(cè)重視景仿真、三維模型創(chuàng)建、觀察視角的選取,對(duì)于飛行仿真數(shù)據(jù)、性能數(shù)據(jù)的可視化觀測、飛行器部件的動(dòng)態(tài)變化只是簡單實(shí)現(xiàn)或忽略,影響了對(duì)飛行仿真系統(tǒng)關(guān)鍵部件動(dòng)態(tài)變化的實(shí)時(shí)觀察和飛行數(shù)據(jù)的實(shí)時(shí)觀測與分析驗(yàn)證。在此背景下本文提出了一種以系統(tǒng)仿真、虛擬現(xiàn)實(shí)和可視化技術(shù)為基礎(chǔ)的導(dǎo)彈飛行仿真系統(tǒng),旨在為導(dǎo)彈設(shè)計(jì)中對(duì)飛行數(shù)據(jù)分析驗(yàn)證和舵面、噴管等動(dòng)態(tài)部件的實(shí)時(shí)觀察提供一個(gè)解決方案,提高導(dǎo)彈設(shè)計(jì)效率,驗(yàn)證仿真系統(tǒng)正確性。
一般六自由度半實(shí)物導(dǎo)彈仿真系統(tǒng)由彈載計(jì)算機(jī)、仿真計(jì)算機(jī)、飛行轉(zhuǎn)臺(tái)、測量器件、伺服執(zhí)行機(jī)構(gòu)等組成(結(jié)構(gòu)圖如圖1所示),其中,彈載計(jì)算機(jī)裝載了彈上控制系統(tǒng),負(fù)責(zé)導(dǎo)彈飛行時(shí)序和導(dǎo)航、制導(dǎo)與姿態(tài)控制。仿真計(jì)算機(jī)裝載了導(dǎo)彈飛行仿真系統(tǒng),負(fù)責(zé)彈體模型的數(shù)學(xué)解算和可視化仿真。
圖1 六自由度半實(shí)物導(dǎo)彈仿真系統(tǒng)組成
根據(jù)功能劃分,導(dǎo)彈飛行仿真系統(tǒng)由3部分組成: 1)導(dǎo)彈數(shù)學(xué)仿真建模; 2)仿真管理; 3)可視化仿真。導(dǎo)彈數(shù)學(xué)仿真模型部分包含:彈體質(zhì)量模塊、受力與力矩模塊、運(yùn)動(dòng)方程模塊、彈性振動(dòng)模塊、彈道計(jì)算模塊、地球模塊和大氣模塊等。仿真管理部分包含:仿真狀態(tài)管理模塊、仿真數(shù)據(jù)管理模塊??梢暬抡娌糠职喝S場景模塊、舵面與噴管運(yùn)動(dòng)模塊、二維彈下點(diǎn)模塊、數(shù)據(jù)動(dòng)態(tài)曲線模塊、三維特效模塊和音效模塊(結(jié)構(gòu)圖如圖4所示)。
圖2 導(dǎo)彈飛行仿真系統(tǒng)結(jié)構(gòu)圖
仿真管理部分發(fā)送仿真開始指令后,由導(dǎo)彈數(shù)學(xué)仿真模型部分解算出導(dǎo)彈飛行仿真數(shù)據(jù),然后傳輸給仿真管理部分中的數(shù)據(jù)管理模塊,該模塊經(jīng)過數(shù)據(jù)處理、圖形坐標(biāo)系轉(zhuǎn)換等步驟后再傳輸給可視化仿真部分。其仿真流程圖如圖3。
圖3 導(dǎo)彈飛行仿真系統(tǒng)流程圖
本文側(cè)重于可視化仿真設(shè)計(jì)與實(shí)現(xiàn),因此導(dǎo)彈數(shù)學(xué)仿真建模部分不再詳述,只重點(diǎn)介紹仿真管理部分與可視化仿真部分。
仿真管理部分包含仿真狀態(tài)管理與仿真數(shù)據(jù)管理2個(gè)模塊,其中仿真狀態(tài)管理模塊負(fù)責(zé)仿真的開始、暫停、結(jié)束、數(shù)據(jù)回放與功能切換等仿真狀態(tài)的控制,仿真數(shù)據(jù)管理模塊負(fù)責(zé)仿真數(shù)據(jù)的處理、保存、圖形坐標(biāo)系轉(zhuǎn)換等功能。
導(dǎo)彈數(shù)學(xué)仿真模型部分解算出導(dǎo)彈飛行仿真數(shù)據(jù)后,不能直接傳遞給可視化仿真部分使用,需要解決2個(gè)問題: 1)數(shù)學(xué)仿真與可視化仿真周期不一致的過實(shí)時(shí)問題; 2)圖形坐標(biāo)系轉(zhuǎn)換的問題。
數(shù)學(xué)仿真周期一般是1~2ms,而對(duì)于一個(gè)實(shí)時(shí)可視化仿真系統(tǒng)其幀速率不低于30fps,即30ms左右的仿真周期,兩者差距較大,這造成可視化仿真相對(duì)于數(shù)學(xué)仿真的過實(shí)時(shí)現(xiàn)象,即可視化仿真只能按渲染周期而不能按數(shù)學(xué)仿真周期反映出數(shù)學(xué)仿真的內(nèi)容。
采用數(shù)據(jù)選取與仿真回放的方式可以解決這個(gè)問題。在實(shí)時(shí)仿真時(shí),仿真數(shù)據(jù)管理模塊開辟出一塊公用內(nèi)存,數(shù)學(xué)仿真按照其周期對(duì)其寫入,可視化仿真按照其周期對(duì)其讀取,由于兩者仿真周期相差n倍(n=可視化仿真周期/數(shù)學(xué)仿真周期),這相當(dāng)于數(shù)學(xué)仿真數(shù)據(jù)每運(yùn)行n次,可視化仿真讀取1次,這樣可視化仿真雖不能反映出數(shù)學(xué)仿真的每一組數(shù)據(jù),但能保證與數(shù)學(xué)仿真同步。同時(shí),仿真數(shù)據(jù)管理模塊保存數(shù)學(xué)仿真的每一組數(shù)據(jù)并寫入到文件中,再采用數(shù)據(jù)回放功能讀取這些仿真數(shù)據(jù),按照渲染周期對(duì)數(shù)學(xué)仿真數(shù)據(jù)進(jìn)行回放,這雖不是實(shí)時(shí)同步反映數(shù)學(xué)仿真內(nèi)容,但能反映數(shù)學(xué)仿真的所有數(shù)據(jù)。
導(dǎo)彈數(shù)學(xué)仿真模型部分解算出的導(dǎo)彈的位置、姿態(tài)角、彈道傾角、航向角等飛行仿真數(shù)據(jù),是在慣性坐標(biāo)系、彈體坐標(biāo)系下的表示方式,而可視化仿真是OGRE[7]圖形坐標(biāo)系的表示方式,需要轉(zhuǎn)換。
慣性坐標(biāo)系(X,Y,Z)與圖形坐標(biāo)系(Xo,Yo,Zo)的轉(zhuǎn)換公式如下:
彈體坐標(biāo)系(Xd,Yd,Zd)與圖形坐標(biāo)系(Xo,Yo,Zo)的轉(zhuǎn)換公式如下:
其中,
φ,ψ,γ分別是俯仰角、偏航角和滾轉(zhuǎn)角。
三維場景包括導(dǎo)彈幾何模型建模、加載與驅(qū)動(dòng),大地形、天空背景的加載與渲染。
導(dǎo)彈的幾何模型采用建模軟件3dsMax來創(chuàng)建,導(dǎo)出為*.3ds文件,由開源可視化引擎OGRE進(jìn)行加載(如圖4所示)。導(dǎo)彈幾何模型包括靜態(tài)節(jié)點(diǎn)(彈體)、動(dòng)態(tài)節(jié)點(diǎn)(舵面,尾噴管)和特效節(jié)點(diǎn)(如金屬表面特效、尾噴火焰特效、爆炸特效等)。
圖4 導(dǎo)彈幾何模型與渲染效果
三維大地形通過讀取一張精細(xì)像素的HeightMap(即高程圖),實(shí)時(shí)生成了一個(gè)長寬范圍為4000km×4000km,高度范圍為10km的三維幾何地形模型,采用Octree(八叉樹)和LOD(Levels of Detail)技術(shù),以攝像機(jī)視點(diǎn)為根節(jié)點(diǎn),動(dòng)態(tài)管理地形網(wǎng)格與頂點(diǎn)的生成與刪除,使得三維場景既能有一定粒度的細(xì)節(jié)顯示,又能保持良好的實(shí)時(shí)性能。然后采用多層混合紋理技術(shù),一方面用地形全貌紋理圖(4096×4096像素)粘貼在三維地形上,用于表征地形主要特征,另一方面用包含細(xì)節(jié)紋理信息的Normal圖(即法向量貼圖),通過NormalMap(即凹凸映射)[8]技術(shù)將地形細(xì)節(jié)體現(xiàn)在三維地形之上,使得三維地形在整體主要特征和局部細(xì)節(jié)都有較好的體現(xiàn)(如圖5所示)。
圖5 三維大地形實(shí)現(xiàn)流程
天空背景主要包含天空、云層、霧、夜景等模型。天空模型采用Skybox(天空盒)技術(shù),將天空視為一個(gè)六面都貼有天空背景紋理的正方體盒,將太陽、月亮、星空背景都包含于內(nèi)。隨著仿真時(shí)間的步進(jìn),天空模型會(huì)按照一定速度調(diào)整太陽、月亮、星空背景的位置、亮度和光照效果,使天空背景會(huì)出現(xiàn)白天、黑夜的更替(如圖6)。霧化效果采用指數(shù)霧的方法,即:霧化因子fog = exp(-abs(eyeDis * fogDensity)),其中,fogDensity是霧化密度,eyeDis是距離視點(diǎn)的距離。云層模型則采用BillBorad(公告板)技術(shù),建立小朵云模型,以腳本方式編輯云軌跡圖并用若干小朵云填充,從而建立云層模型。隨著仿真時(shí)間的步進(jìn),云層模型會(huì)按照給定的運(yùn)動(dòng)規(guī)律飄動(dòng),可實(shí)現(xiàn)導(dǎo)彈的穿云效果(如圖6所示)。
圖6 天空背景的白天、黑夜與導(dǎo)彈穿云效果
導(dǎo)彈的動(dòng)態(tài)部件主要包含舵面與噴管,本文創(chuàng)建了3個(gè)子窗口用于舵面的三視圖觀察,創(chuàng)建了1個(gè)子窗口用于發(fā)動(dòng)機(jī)尾噴管的觀察。該模塊輸入舵面和發(fā)動(dòng)機(jī)在俯仰、偏航、滾轉(zhuǎn)方向上的偏角、合成擺角,輸出為舵面、噴管等部件的三維動(dòng)態(tài)實(shí)時(shí)變化窗口。
該模塊輸入導(dǎo)彈的位置、姿態(tài)、攻角、側(cè)滑角、所在經(jīng)緯度、高度、發(fā)動(dòng)機(jī)推力、舵偏角和氣動(dòng)力等彈道參數(shù)和運(yùn)動(dòng)參數(shù),輸出為這些數(shù)據(jù)的動(dòng)態(tài)曲線圖表。為能實(shí)時(shí)觀測飛行仿真數(shù)據(jù),本文創(chuàng)建了2個(gè)子窗口用于這些參數(shù)的動(dòng)態(tài)曲線繪制,在具體實(shí)現(xiàn)中,采用STL容器中的deque數(shù)據(jù)結(jié)構(gòu)來管理,每次收到數(shù)據(jù)后,判斷是否達(dá)到最大長度,若否,則插到數(shù)據(jù)隊(duì)列末(即deque.push_back);若是,則隊(duì)頭數(shù)據(jù)出隊(duì)(即deque.pop_first),然后插到數(shù)據(jù)隊(duì)列末。每次更新時(shí)只繪制deque里的數(shù)據(jù),這樣既能夠保證動(dòng)態(tài)數(shù)據(jù)信息量的同時(shí),也能保證仿真系統(tǒng)的實(shí)時(shí)性能。另外,采用Windows的GDI繪制動(dòng)態(tài)曲線時(shí),需要先擦除舊圖,再繪制新圖,由于需觀測的飛行數(shù)據(jù)較多,當(dāng)屏幕刷新較快時(shí),會(huì)隨機(jī)地出現(xiàn)屏幕閃爍和曲線大鋸齒不連續(xù)的情況,本文采用雙緩存技術(shù)、曲線與背景顏色混合技術(shù)較好地優(yōu)化這種現(xiàn)象(如圖7所示)。
圖7 動(dòng)態(tài)曲線優(yōu)化前(左圖)后(右圖)比較
該模塊用來顯示導(dǎo)彈在飛行過程中的二維態(tài)勢,輸入導(dǎo)彈的所在經(jīng)緯度、偏航角等參數(shù),輸出為導(dǎo)彈的二維彈下點(diǎn)軌跡窗口。二維彈下點(diǎn)模塊加載的地圖是*.gst[9]文件,這是一種比較流行的GIS文件格式,它包含了諸如:街道、河流、山脈、深林、地貌等信息圖層,每個(gè)圖層以*.tab,*.dat等格式存儲(chǔ),比較全面地反映出二維地理信息。
該模塊用來顯示三維場景中出現(xiàn)的光照效果與三維特效,主要包括以下幾種:
1)彈體金屬材質(zhì)效果。采用高光、環(huán)境映射等技術(shù)實(shí)現(xiàn)彈體、舵面的金屬表面材質(zhì);
2)尾噴火焰效果。采用粒子系統(tǒng)技術(shù),定義尾噴火焰粒子顏色、生命周期、粒子半徑、初始速度等因素,實(shí)現(xiàn)導(dǎo)彈尾部噴管的火焰噴射效果;
3)空氣摩擦效果。表現(xiàn)導(dǎo)彈飛行時(shí)彈頭、舵面與空氣摩擦的情況;
4)彈體與舵面熱效應(yīng)。表現(xiàn)導(dǎo)彈飛行時(shí)空氣摩擦產(chǎn)生的熱效用在彈體與舵面的分布情況;
5)爆炸效果。表現(xiàn)導(dǎo)彈在命中目標(biāo)后爆炸的效果。
該模塊采用基于OpenAL的開源音效庫,用來實(shí)現(xiàn)導(dǎo)彈飛行時(shí)的聲音、舵面機(jī)動(dòng)時(shí)摩擦聲音和爆炸時(shí)的音效。
實(shí)現(xiàn)時(shí)計(jì)算機(jī)硬件配置:PC機(jī)為ThinkCentreM6288T,顯卡為NVIDIA GeForce GT420,硬盤120G。運(yùn)行平臺(tái)為WindowsXP。軟件工具有:Visual Studio C/C++ 2005,OpenGL的glut庫,OGRE1.4.3,Cg,3dsmax9.0。系統(tǒng)運(yùn)行效果如圖8所示。
圖8 導(dǎo)彈飛行仿真系統(tǒng)運(yùn)行界面
導(dǎo)彈動(dòng)態(tài)部件的觀察窗口如圖9所示。
圖9 導(dǎo)彈動(dòng)態(tài)部件觀察
飛行數(shù)據(jù)動(dòng)態(tài)曲線的觀察窗口如圖10所示。
圖10 部分導(dǎo)彈飛行數(shù)據(jù)的動(dòng)態(tài)曲線表
二維彈下點(diǎn)軌跡窗口如圖11所示。
圖11 二維彈下點(diǎn)軌跡
三維場景特效如圖12所示,從左至右、從上至下,分別是金屬材質(zhì)、尾噴火焰、爆炸效果、熱效應(yīng)、空氣摩擦及兩者綜合效果。
本文通過對(duì)導(dǎo)彈數(shù)學(xué)仿真建模、仿真管理、可視化設(shè)計(jì)與實(shí)現(xiàn),建立了一個(gè)以系統(tǒng)仿真、虛擬現(xiàn)實(shí)和
圖12 三維特效
可視化技術(shù)為基礎(chǔ)的導(dǎo)彈飛行仿真系統(tǒng),實(shí)現(xiàn)了導(dǎo)彈設(shè)計(jì)中對(duì)飛行仿真數(shù)據(jù)和舵面、噴管等動(dòng)態(tài)部件實(shí)時(shí)觀察的需求。系統(tǒng)可用于導(dǎo)彈設(shè)計(jì)與研制的仿真數(shù)據(jù)生成與驗(yàn)證、動(dòng)態(tài)部件觀察等相關(guān)工作中,也可作為飛行仿真系統(tǒng)研究的平臺(tái)應(yīng)用于飛行器及相關(guān)仿真系統(tǒng)中。
[1] Hong GeYao.The Realization of Flight Simulation System Based on OpenGL[C].2010 Second International Conf-erence on Information Technology and Computer Science,2010:198-201.
[2] 李海軍,李科杰,劉宵.基于OpenGL的導(dǎo)彈攻擊過程與可視化仿真[J].系統(tǒng)仿真學(xué)報(bào),2004,16(3):530-
533.(Li Haijun,Li Kejie,Liu Xiao.The Visual Simula-tion of Missile’s Attack Course Based on OpenGL[J].Journal of System Simulation,2004,16(3):530-533.)
[3] Xiaoyan Hu,Bo Sun.Visual Simulation System for FlightSimulation Based on OSG[J].ICALIP,2010:562-565.
[4] Analytical Graphics Inc.STK Software Suite[EB/OL].[2009,5]http://www.agi.com/viewer.
[5] 杜耀珂.基于STK的衛(wèi)星實(shí)時(shí)視景仿真系統(tǒng)設(shè)計(jì)[J].空間控制技術(shù)與應(yīng)用,2009,35(2):60-64.(Du Yaoke.The Real Time Visual Simulation System for Satellite Based on STK[J].Aerospace Control and Application,2009,35(2):60-64.)
[6] 郭為剛,韓維.基于Matlab/Flightgear飛機(jī)飛行性能的可視化仿真系統(tǒng)[J].實(shí)驗(yàn)技術(shù)與管理,2010,(10):110-112.(Guo Weigang,Han Wei.Visual Simulation System of Flight Performance Based on Matlab/Flightgear[J].Expermantal Technology and Management,2010,(10):110-112.)
[7] OGRE.Pro Ogre 3D Programming [EB/OL].[2008,3]http://www.ogre.org.
[8] CSDN.Some Detail Discussion for Normal Map [EB/OL].[2007,4]http://blog.csdn.net/cywater2000.
[9] 曹潔,肖鐵.基于MapX的導(dǎo)航程序設(shè)計(jì)與開發(fā)[J].工業(yè)儀表與自動(dòng)化裝置,2010,(1):109-111.(Cao Jie,Xiao Tie.Design and Develop of Navigation System Based on Mapx[J].Industrial Instrumentation and Automation,2010,(1):109-111.