王 成 王會霞
北京航天自動控制研究所,北京 100854
導彈武器系統研制需要較長的時間,從設計到定型必須進行多次飛行試驗,而實彈射擊成本高、周期長,給導彈設計與研制帶來不便。利用系統仿真、虛擬現實和可視化技術模擬實彈打靶,可以快速方便的獲取導彈飛行仿真數據,彌補實彈飛行信息不足的缺陷,為導彈設計與研制方面相關的研究提供了參考依據。
飛行仿真系統一直是系統仿真領域的研究熱點,廣泛應用于飛行器設計、飛行性能測試、導航、制導與控制等系統的研發,已成為我國軍事訓練、高校院所教學與研究的重要方向。文獻[1-2]采用基于OpenGL的三維圖形庫實現飛行仿真和導彈攻擊過程,文獻[3]采用基于OSG的可視化引擎實現飛行仿真系統,文獻[4-5]采用基于STK的開發包實現了飛行過程與任務實現的仿真,文獻[6]采用Matlab建立飛行動力學與飛行器運動模型,然后通過Fligtgear圖形引擎實現飛行仿真。
這些文獻雖然采用了不同的方法實現了導彈、飛機等飛行器的飛行仿真系統,但過于側重視景仿真、三維模型創建、觀察視角的選取,對于飛行仿真數據、性能數據的可視化觀測、飛行器部件的動態變化只是簡單實現或忽略,影響了對飛行仿真系統關鍵部件動態變化的實時觀察和飛行數據的實時觀測與分析驗證。在此背景下本文提出了一種以系統仿真、虛擬現實和可視化技術為基礎的導彈飛行仿真系統,旨在為導彈設計中對飛行數據分析驗證和舵面、噴管等動態部件的實時觀察提供一個解決方案,提高導彈設計效率,驗證仿真系統正確性。
一般六自由度半實物導彈仿真系統由彈載計算機、仿真計算機、飛行轉臺、測量器件、伺服執行機構等組成(結構圖如圖1所示),其中,彈載計算機裝載了彈上控制系統,負責導彈飛行時序和導航、制導與姿態控制。仿真計算機裝載了導彈飛行仿真系統,負責彈體模型的數學解算和可視化仿真。

圖1 六自由度半實物導彈仿真系統組成
根據功能劃分,導彈飛行仿真系統由3部分組成: 1)導彈數學仿真建模; 2)仿真管理; 3)可視化仿真。導彈數學仿真模型部分包含:彈體質量模塊、受力與力矩模塊、運動方程模塊、彈性振動模塊、彈道計算模塊、地球模塊和大氣模塊等。仿真管理部分包含:仿真狀態管理模塊、仿真數據管理模塊。可視化仿真部分包含:三維場景模塊、舵面與噴管運動模塊、二維彈下點模塊、數據動態曲線模塊、三維特效模塊和音效模塊(結構圖如圖4所示)。

圖2 導彈飛行仿真系統結構圖
仿真管理部分發送仿真開始指令后,由導彈數學仿真模型部分解算出導彈飛行仿真數據,然后傳輸給仿真管理部分中的數據管理模塊,該模塊經過數據處理、圖形坐標系轉換等步驟后再傳輸給可視化仿真部分。其仿真流程圖如圖3。

圖3 導彈飛行仿真系統流程圖
本文側重于可視化仿真設計與實現,因此導彈數學仿真建模部分不再詳述,只重點介紹仿真管理部分與可視化仿真部分。
仿真管理部分包含仿真狀態管理與仿真數據管理2個模塊,其中仿真狀態管理模塊負責仿真的開始、暫停、結束、數據回放與功能切換等仿真狀態的控制,仿真數據管理模塊負責仿真數據的處理、保存、圖形坐標系轉換等功能。
導彈數學仿真模型部分解算出導彈飛行仿真數據后,不能直接傳遞給可視化仿真部分使用,需要解決2個問題: 1)數學仿真與可視化仿真周期不一致的過實時問題; 2)圖形坐標系轉換的問題。
數學仿真周期一般是1~2ms,而對于一個實時可視化仿真系統其幀速率不低于30fps,即30ms左右的仿真周期,兩者差距較大,這造成可視化仿真相對于數學仿真的過實時現象,即可視化仿真只能按渲染周期而不能按數學仿真周期反映出數學仿真的內容。
采用數據選取與仿真回放的方式可以解決這個問題。在實時仿真時,仿真數據管理模塊開辟出一塊公用內存,數學仿真按照其周期對其寫入,可視化仿真按照其周期對其讀取,由于兩者仿真周期相差n倍(n=可視化仿真周期/數學仿真周期),這相當于數學仿真數據每運行n次,可視化仿真讀取1次,這樣可視化仿真雖不能反映出數學仿真的每一組數據,但能保證與數學仿真同步。同時,仿真數據管理模塊保存數學仿真的每一組數據并寫入到文件中,再采用數據回放功能讀取這些仿真數據,按照渲染周期對數學仿真數據進行回放,這雖不是實時同步反映數學仿真內容,但能反映數學仿真的所有數據。
導彈數學仿真模型部分解算出的導彈的位置、姿態角、彈道傾角、航向角等飛行仿真數據,是在慣性坐標系、彈體坐標系下的表示方式,而可視化仿真是OGRE[7]圖形坐標系的表示方式,需要轉換。
慣性坐標系(X,Y,Z)與圖形坐標系(Xo,Yo,Zo)的轉換公式如下:
彈體坐標系(Xd,Yd,Zd)與圖形坐標系(Xo,Yo,Zo)的轉換公式如下:
其中,

φ,ψ,γ分別是俯仰角、偏航角和滾轉角。
三維場景包括導彈幾何模型建模、加載與驅動,大地形、天空背景的加載與渲染。
導彈的幾何模型采用建模軟件3dsMax來創建,導出為*.3ds文件,由開源可視化引擎OGRE進行加載(如圖4所示)。導彈幾何模型包括靜態節點(彈體)、動態節點(舵面,尾噴管)和特效節點(如金屬表面特效、尾噴火焰特效、爆炸特效等)。

圖4 導彈幾何模型與渲染效果
三維大地形通過讀取一張精細像素的HeightMap(即高程圖),實時生成了一個長寬范圍為4000km×4000km,高度范圍為10km的三維幾何地形模型,采用Octree(八叉樹)和LOD(Levels of Detail)技術,以攝像機視點為根節點,動態管理地形網格與頂點的生成與刪除,使得三維場景既能有一定粒度的細節顯示,又能保持良好的實時性能。然后采用多層混合紋理技術,一方面用地形全貌紋理圖(4096×4096像素)粘貼在三維地形上,用于表征地形主要特征,另一方面用包含細節紋理信息的Normal圖(即法向量貼圖),通過NormalMap(即凹凸映射)[8]技術將地形細節體現在三維地形之上,使得三維地形在整體主要特征和局部細節都有較好的體現(如圖5所示)。

圖5 三維大地形實現流程
天空背景主要包含天空、云層、霧、夜景等模型。天空模型采用Skybox(天空盒)技術,將天空視為一個六面都貼有天空背景紋理的正方體盒,將太陽、月亮、星空背景都包含于內。隨著仿真時間的步進,天空模型會按照一定速度調整太陽、月亮、星空背景的位置、亮度和光照效果,使天空背景會出現白天、黑夜的更替(如圖6)。霧化效果采用指數霧的方法,即:霧化因子fog = exp(-abs(eyeDis * fogDensity)),其中,fogDensity是霧化密度,eyeDis是距離視點的距離。云層模型則采用BillBorad(公告板)技術,建立小朵云模型,以腳本方式編輯云軌跡圖并用若干小朵云填充,從而建立云層模型。隨著仿真時間的步進,云層模型會按照給定的運動規律飄動,可實現導彈的穿云效果(如圖6所示)。

圖6 天空背景的白天、黑夜與導彈穿云效果
導彈的動態部件主要包含舵面與噴管,本文創建了3個子窗口用于舵面的三視圖觀察,創建了1個子窗口用于發動機尾噴管的觀察。該模塊輸入舵面和發動機在俯仰、偏航、滾轉方向上的偏角、合成擺角,輸出為舵面、噴管等部件的三維動態實時變化窗口。
該模塊輸入導彈的位置、姿態、攻角、側滑角、所在經緯度、高度、發動機推力、舵偏角和氣動力等彈道參數和運動參數,輸出為這些數據的動態曲線圖表。為能實時觀測飛行仿真數據,本文創建了2個子窗口用于這些參數的動態曲線繪制,在具體實現中,采用STL容器中的deque數據結構來管理,每次收到數據后,判斷是否達到最大長度,若否,則插到數據隊列末(即deque.push_back);若是,則隊頭數據出隊(即deque.pop_first),然后插到數據隊列末。每次更新時只繪制deque里的數據,這樣既能夠保證動態數據信息量的同時,也能保證仿真系統的實時性能。另外,采用Windows的GDI繪制動態曲線時,需要先擦除舊圖,再繪制新圖,由于需觀測的飛行數據較多,當屏幕刷新較快時,會隨機地出現屏幕閃爍和曲線大鋸齒不連續的情況,本文采用雙緩存技術、曲線與背景顏色混合技術較好地優化這種現象(如圖7所示)。

圖7 動態曲線優化前(左圖)后(右圖)比較
該模塊用來顯示導彈在飛行過程中的二維態勢,輸入導彈的所在經緯度、偏航角等參數,輸出為導彈的二維彈下點軌跡窗口。二維彈下點模塊加載的地圖是*.gst[9]文件,這是一種比較流行的GIS文件格式,它包含了諸如:街道、河流、山脈、深林、地貌等信息圖層,每個圖層以*.tab,*.dat等格式存儲,比較全面地反映出二維地理信息。
該模塊用來顯示三維場景中出現的光照效果與三維特效,主要包括以下幾種:
1)彈體金屬材質效果。采用高光、環境映射等技術實現彈體、舵面的金屬表面材質;
2)尾噴火焰效果。采用粒子系統技術,定義尾噴火焰粒子顏色、生命周期、粒子半徑、初始速度等因素,實現導彈尾部噴管的火焰噴射效果;
3)空氣摩擦效果。表現導彈飛行時彈頭、舵面與空氣摩擦的情況;
4)彈體與舵面熱效應。表現導彈飛行時空氣摩擦產生的熱效用在彈體與舵面的分布情況;
5)爆炸效果。表現導彈在命中目標后爆炸的效果。
該模塊采用基于OpenAL的開源音效庫,用來實現導彈飛行時的聲音、舵面機動時摩擦聲音和爆炸時的音效。
實現時計算機硬件配置:PC機為ThinkCentreM6288T,顯卡為NVIDIA GeForce GT420,硬盤120G。運行平臺為WindowsXP。軟件工具有:Visual Studio C/C++ 2005,OpenGL的glut庫,OGRE1.4.3,Cg,3dsmax9.0。系統運行效果如圖8所示。

圖8 導彈飛行仿真系統運行界面
導彈動態部件的觀察窗口如圖9所示。

圖9 導彈動態部件觀察
飛行數據動態曲線的觀察窗口如圖10所示。

圖10 部分導彈飛行數據的動態曲線表
二維彈下點軌跡窗口如圖11所示。

圖11 二維彈下點軌跡
三維場景特效如圖12所示,從左至右、從上至下,分別是金屬材質、尾噴火焰、爆炸效果、熱效應、空氣摩擦及兩者綜合效果。
本文通過對導彈數學仿真建模、仿真管理、可視化設計與實現,建立了一個以系統仿真、虛擬現實和

圖12 三維特效
可視化技術為基礎的導彈飛行仿真系統,實現了導彈設計中對飛行仿真數據和舵面、噴管等動態部件實時觀察的需求。系統可用于導彈設計與研制的仿真數據生成與驗證、動態部件觀察等相關工作中,也可作為飛行仿真系統研究的平臺應用于飛行器及相關仿真系統中。
[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的導彈攻擊過程與可視化仿真[J].系統仿真學報,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的衛星實時視景仿真系統設計[J].空間控制技術與應用,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].實驗技術與管理,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的導航程序設計與開發[J].工業儀表與自動化裝置,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.