一種基于工作站的殲擊機著陸訓練模擬器的設計與實現(xiàn)
摘 要: 著陸訓練是現(xiàn)代殲擊機飛行員訓練的重要環(huán)節(jié),為了訓練飛行員依靠平顯和儀表的數(shù)據(jù)顯示完成著陸過程,提供成本更低、周期更短、更易普及的訓練方法,本文介紹了一種基于PC 的殲擊機著陸訓練模擬器的總體結構的設計以及各個模塊的實現(xiàn)過程,著重就該模擬器系統(tǒng)中建立平顯(HUD)和儀表著陸系統(tǒng)(ILS)以及外部三維場景的步驟以及所采用的關鍵技術進行了闡述,此外還介紹了音響模塊的設計及操縱桿的接口程序的實現(xiàn)。
關鍵詞: 著陸 模擬器 虛擬現(xiàn)實(VR) 計算機仿真
1 引言
著陸訓練一直是飛行訓練的重要環(huán)節(jié)。飛行模擬器(Flight Simulator)是虛擬現(xiàn)實(VR)技術在工程上的重要應用之一,而目前,裝備部隊的模擬器多為全任務飛行模擬器,雖功能齊全,但結構復雜,造價高昂,不易進行大規(guī)模普及性訓練,而象起飛著陸這樣的基本科目,也沒有必要使用大型模擬器實現(xiàn)普及性模擬訓練。在現(xiàn)代高科技戰(zhàn)爭條件下,為使部隊訓練手段現(xiàn)代化,提高部隊的整體訓練質(zhì)量和訓練效益,盡快增強部隊的戰(zhàn)斗力,保障飛行安全,給飛行人員提供既具有真實的場景,逼真的實時數(shù)據(jù)顯示,又兼顧結構簡單,成本低廉,易于普及特點的訓練仿真設備是十分必要的,也是非常迫切的。本文提出的這種基于PC 的著陸訓練模擬器系統(tǒng)正是針對這一需要而建立的。
2 系統(tǒng)結構
該著陸訓練模擬器系統(tǒng)是一個人-機閉環(huán)系統(tǒng),主要用來模擬飛機著陸過程中起落架放下后,飛行員依靠平顯數(shù)據(jù)顯示和儀表著陸系統(tǒng)的指示,手動操縱飛機完成著陸的過程。
系統(tǒng)采用計算機實時成象和實時數(shù)據(jù)顯示技術為受訓者提供逼真的三維場景,受訓者面對顯示畫面,通過飛行搖桿控制畫面中的飛機,完成著陸過程。
該模擬器系統(tǒng)主要組成部分如下:
(1)硬件部分:
配有 Xeon5405 、2GB、250GB SATA、512MB專業(yè)卡,支持DirectSound 的聲卡一塊;
具有油門輸入的飛行搖桿一只;
支持1024*768 分辨率的彩色顯示器兩臺;
立體聲耳機一只(或有源音響一套)。
(2)軟件部分:
Windows2003操作系統(tǒng),Visual C++ 6.0 開發(fā)平臺和 VTree SDK 三維軟件開發(fā)環(huán)境。如圖1 所示,該系統(tǒng)分為交互模塊(搖桿、鍵盤、鼠標)、飛行仿真模塊、視景模塊和音響模塊四大部分,其中視景模塊是該著陸訓練模擬器的核心部分,它又分為外部視角和座艙視角兩部分,分別使用兩個顯示器同時實時顯示,簡潔且直觀。
訓練過程開始后,受訓者通過飛行搖桿向系統(tǒng)發(fā)出操縱指令,操縱指令實時傳入飛行仿真模塊,飛行仿真模塊中的數(shù)學模型根據(jù)輸入的操縱桿指令實時做出響應,以此來模擬真實環(huán)境中飛機響應舵面輸入的過程。根據(jù)受訓者輸入的舵偏指令,飛行仿真模塊實時解算運動學和動力學方程得出飛機位置、姿態(tài)等數(shù)據(jù)并實時傳給視景和音響模塊。視景模塊顯示飛機平顯及儀表著陸系統(tǒng)的數(shù)據(jù),并根據(jù)數(shù)據(jù)控制外部場景視角的實時三維顯示。音響模塊則根據(jù)輸入實時產(chǎn)生相應的音響效果。操縱人員根據(jù)視景畫面實時調(diào)整操縱桿的輸入,如此便構成一個人機閉環(huán)的仿真系統(tǒng)。其他觀察者(教官)可以通過外部視角顯示實時觀察到受訓者的降落情況,以便給予即使的指正。
本系統(tǒng)各模塊之間信號流程和邏輯關系如圖1 所示
3 視景模塊的實現(xiàn)
3.1 外部三維視景的生成
3.1.1 三維模型的建立
建立三維實時模型的工具軟件有很多,本系統(tǒng)采用了DISCREET 公司的3D Studio MAX與Multigen 公司的Creator 相互配合使用的方法來生成系統(tǒng)所需的各種三維實體模型充分發(fā)揮了兩種出色的建模軟件各自的優(yōu)點,減少建模難度,提高模型精度。
(1)首先是飛機模型的建立,在外部視角中,飛機距離觀察者較近,需要較高的精細程度才能給人以逼真的感覺,因此使用了3D Studio MAX 中的Editable Mesh(網(wǎng)格編輯)修改器和NURBS 曲面建模工具進行構造,并使用 #p#page_title#e#UVW Map 貼圖技術進行貼圖(圖2)。
一方面,在模型精細程度上盡可能趨于逼真,但由于是三維實時渲染軟件,模型所用的面(Polygons)過多將會使實時顯示幀速率降低,甚至出現(xiàn)畫面定格,因此,在建模過程中,使用了3D Studio MAX 中的Optimize(最優(yōu)化)修改器,在不失真的前提下盡可能減少模型的面數(shù),在最終優(yōu)化過后,使整架飛機所用面數(shù)維持在1200 個左右。
(2)地形和地面景觀則使用了Multigen Creator 生成,本系統(tǒng)使用了一個大面積地形模型,由于面積很大,對地面細節(jié)精細程度的要求相對較低,所以特別適合使用Creator的“地形分塊”功能實現(xiàn)。
(3)模型格式轉換,由于最終使用的是統(tǒng)一格式模型,需使用VTree SDK 附帶的格式轉換工具將實體模型轉換為統(tǒng)一的圖形格式。
3.1.2 三維場景的建立
構件外部場景,本系統(tǒng)采用了CG2 公司的VTree SDK 作為三維開發(fā)環(huán)境。VTree 是全方位面向對象的開發(fā)工具,它的開發(fā)效率較高而且與硬件結合得較好,是目前視景仿真市場上的一種跨平臺的三維圖形軟件開發(fā)工具,它為本系統(tǒng)提供了快速、方便的方案。
在建立場景過程中,本系統(tǒng)主要注意了以下幾方面功能的實現(xiàn):
(1) 著陸機場位置可選,便于定制著陸航線;
(2) 可以實現(xiàn)白天,黑夜兩種環(huán)境的著陸訓練;
(3) 可以切換全平顯著陸和ILS 引導著陸兩種訓練模式;
(4) 外部視角可實時顯示飛機的位置、高度、姿態(tài)等數(shù)據(jù),便于進行觀察和分析;
(5) 可以預先設定著陸初始位置和高度、速度、姿態(tài)等數(shù)據(jù),提高仿真的靈活性;
(6) 外部視角可以顯示飛機降落航跡,便于分析、總結和改進。
3.1.3 著陸航跡和參數(shù)的顯示
為了便于受訓者和其他觀察者(如教官)分析并評價整個著陸過程,本系統(tǒng)在外部視角里加入了飛機航跡和飛行參數(shù)的實時顯示功能,用以顯示最佳著陸航跡和飛機實際著陸航跡,以及飛機實時的位置、高度、速度、姿態(tài)等參數(shù)。
航跡顯示的原理是在渲染的每個幀周期內(nèi),計算飛機的沿機場縱向和高度的相對位置點,并與上一幀時刻位置點連線,從而形成航跡,本系統(tǒng)使用Vtree SDK 開發(fā)環(huán)境中的“幾何結點”vtGNode 函數(shù)來實現(xiàn)航跡的繪制。
最終完成的外部視角效果(白天、夜間)如圖所示(圖3)。
3.2 艙內(nèi)視景的生成
3.2.1 飛機控制面板的制作
為增強受訓者在訓練時的沉浸感,本系統(tǒng)在艙內(nèi)視角顯示部分加入了根據(jù)國外某型飛機座艙控制面板繪制的面板實體,增添了系統(tǒng)的逼真效果。制作過程中采用了Adobe 公司的Photoshop 和Multigen 公司的Creator 兩種軟件相結
圖4 座艙面板圖
合的方式,采用坐標貼圖和透明化處理的方法,使得面板模型既有立體感又不會增加系統(tǒng)的負擔,達到了很好的效果(圖4)。
在實際應用中,本系統(tǒng)中的座艙模型,可以根據(jù)實際軍機型號進行更換,以滿足不同用戶的需要。
3. 2. 2 平視顯示器的繪制
平視顯示器是該系統(tǒng)視景模塊的核心組成部分,是受訓者操縱飛機著陸的主要信息來源,在現(xiàn)代殲擊機的真實飛行中,平顯無論是在起飛著陸、巡航還是在執(zhí)行戰(zhàn)斗任務的過程中都起著至關重要的作用,特別地,現(xiàn)代殲擊機絕大多數(shù)是全天候殲擊機,在夜航和惡劣天氣條件下,平顯的作用更是無法替代。因此,對平視顯示器飛行的仿真訓練是非常必要的。
在本系統(tǒng)主要模擬平顯在進場/著陸模式下的功能,系統(tǒng)采用了基于VC++的OpenGL 實現(xiàn)對平顯的繪制。 本系統(tǒng)采用的平顯主要結構如圖5 所示。
圖5 系統(tǒng)中的平顯結構圖
OpenGL 是一種硬件圖形開發(fā)器的軟件接口,同時它又是與設備無關的圖形開發(fā)平臺,更重要的是,象VTree SDK, Open GVS 這樣的三維軟件開發(fā)環(huán)境都是基于OpenGL 之上的,因此,OpenGL 與這些開發(fā)環(huán)境結合過程相當完美,非常適合進行平視顯示器的仿真。 #p#page_title#e#
在本系統(tǒng)中,使用OpenGL 繪制平顯的主要過程和步驟如下:
(1)建立平顯模塊程序的總體框架;
(2)建立平面坐標系,繪制平顯中心點,在本系統(tǒng)中,使用了機炮準星作為整個平顯的中心點,其余的各個部分都是以中心點為基準作平移來確定其位置。
(3)繪制各種滾動帶部分,在本系統(tǒng)中,主要用到了四個滾動式顯示帶,分別是:航向帶,速帶,高度帶和俯仰/滾轉梯度帶。模擬各種滾動帶的原理都是使用OpenGL 中的lTranslatef 函數(shù)實現(xiàn)滾動,然后再通過限制其滾動帶的顯示范圍來實現(xiàn)的。
圖6 平顯結構圖
(4)實現(xiàn)平顯各種數(shù)據(jù)的顯示。
(5)繪制各種狀態(tài)參數(shù)(如起落架的收放狀況,著陸模式的選擇,燃料狀態(tài)等)。
經(jīng)過以上過程,繪制完成后的平顯效果圖如圖6 所示。
3. 2. 3 儀表著陸系統(tǒng)(ILS)的繪制
儀表著陸系統(tǒng)(Instrument Landing System,ILS)是目前最廣泛使用的飛機精密著陸指引系統(tǒng)。它的作用是以無線電信號建立一條由跑道指向空中的狹窄“隧道”,飛機通過機載ILS 接收設備,確定自身與“隧道”的相對位置,著陸過程中,飛行員只要讓飛機保持在“隧道”央飛行,就可沿正確方向飛近跑道、平穩(wěn)地下降高度,最終飛進跑道并著陸。儀表著陸系統(tǒng)夜航、惡劣天氣條件等低能見度的著陸過程中尤其適用,它的出現(xiàn)大大降低了著陸過程中的事故發(fā)生率,保障了飛行人員的安全。
在現(xiàn)代殲擊機的座艙中,儀表著陸系統(tǒng)是作為平顯的一部分功能來實現(xiàn)的,這也是現(xiàn)代全天候殲擊機的重要特征之一。
在本模擬器系統(tǒng)中,同樣使用OpenGL 實現(xiàn)儀表著陸系統(tǒng)的仿真。主要步驟如下:
(1)首先建立ILS 的數(shù)學模型,ILS 通過水平和垂直的兩條線段的位置來指示飛機的正確著陸航跡,飛機通過接收機場指引信號,將機場位置數(shù)據(jù)和飛機當前位置、高度、速度傳給ILS,經(jīng)過計算,ILS 以水平和垂直兩條線段的交點距離平顯中心點的相對位置來指示飛機與最佳著陸航跡的差距。
(2)通過OpenGL 實現(xiàn)仿真,在本系統(tǒng)中,主要是通過實時解算飛機當前位置和姿態(tài),計算與最佳航跡(著陸“隧道”的中心線)的相對距離,使用glVertex 函數(shù)來實時確定兩條ILS 線段各端點的位置,進而實現(xiàn)ILS 的仿真。
3. 2. 4 艙內(nèi)儀表的繪制
本系統(tǒng)中,繪制了航向表和高度表來輔助飛行員實現(xiàn)著陸過程。主要借助了VTree SDK
仿真開發(fā)環(huán)境中的儀表類庫 VtGauges,使用其中的多種函數(shù)來完成儀表的繪制。
綜上所述,最終完成的艙內(nèi)視角效果圖(白天、夜間)如圖7 所示:
4 音響模塊的實現(xiàn)
為了提高整個模擬器系統(tǒng)的沉浸感和逼真度,系統(tǒng)中設立了音響模塊。該模擬器系統(tǒng)的音響模塊采用了VTree SDK 開發(fā)環(huán)境提供的音響類庫vtSoundFX 來實現(xiàn),該音響庫是基于Microsoft 公司開發(fā)的DirectSound 組件之上的。程序運行時需要dsound.lib 庫文件支持,該文件可以由WindowsNT4.0 sp3 以上版本或者Windows2000 來提供。
在模擬著陸過程中,音響模塊的主要功能是為受訓者提供以下種類的音響效果:
1, 飛機發(fā)動機引擎聲;
2, 起落架放下/鎖定聲;
3, 起落架著陸接地聲;
4, 地面滑跑的顛簸聲;
5, 剎車制動聲;
6, 著陸過程中地面塔臺的語音著陸提示。
音響模塊的主要設計和實現(xiàn)過程是:首先通過數(shù)字錄音設備對飛機著陸過程中的各種聲音數(shù)據(jù)進行采集,并經(jīng)過加工成為相應格式的音頻數(shù)據(jù)文件。然后,在飛行仿真模塊中建立判別在各種不同條件下播放相應聲音的函數(shù)。并結合Vtree SDK 的vtSoundFX 類庫中的一系列函數(shù)對聲音的播放過程進行調(diào)節(jié)和控制,如聲音播放的頻率控制、增益控制、延時、循環(huán)(如發(fā)動機引擎聲的循環(huán)播放)等。
在Vtree SDK #p#page_title#e#環(huán)境下實現(xiàn)音響的控制和播放的主要步驟為:
vtUInt32 Action(
SoundEvent event,
vtUInt32 eventid = (vtUInt32)-1,
vtFloat pan = Both,
vtInt32 sound = -1,
vtInt32 loopcount = -1,
double gain = 1.0, //增益
vtUInt32 freq = 0, //頻率
vtUInt32 priority = 7 );
vtSoundFX.Action(vtSoundFX::Play,(vtUInt32)-1,-0.5,sound2,1,0.5,6); //實際調(diào)用過程
5 飛行仿真模塊的實現(xiàn)
5.1 操縱桿接口的設計
在該模擬器系統(tǒng)中,除鍵盤和鼠標外,控制飛機的大部分控制指令由飛行搖桿(JoyStick)發(fā)出,而搖桿控制方式的實現(xiàn)主要依賴于搖桿與計算機的接口程序的實現(xiàn)。本系統(tǒng)是通過Microsoft Visual C++ 下的操縱桿接口來實現(xiàn)這一過程。
在Visual C++下運用搖桿的方法可按照以下步驟來完成:
(1)在應用程序框架上,聲明兩個結構體對象JOYINFOEX info,JOYCAPS caps。
(2)在初始化函數(shù)中對操縱桿進行初始化:
if (joyGetNumDevs())
{ joyGetDevCaps(JOYSTICKID1,&caps,sizeof(caps)); // 操縱桿初始設置
info.dwSize=sizeof(info);
info.dwFlags=JOY_RETURNALL;
int joy=joyGetPosEx(JOYSTICKID1,&info);
351
}
(3)在控制實時成象的回調(diào)函數(shù)中,加入實時讀取搖桿指令的語句:
if(joyGetPosEx(JOYSTICKID1,&info)==JOYERR_NOERROR)
{ Ctr.Deltp=255*(65535-info.dwZpos)/65535.0; //油門桿(推力)
Ctr.Deltx=255*info.dwXpos/65535.0; //副翼 (滾轉)
Ctr.Delty=255*info.dwRpos/65535.0; //方向舵(偏航)
Ctr.Deltz=255*(65535-info.dwYpos)/65535.0;//升降舵(俯仰)
}
通過以上步驟,模擬器系統(tǒng)可以實時獲取搖桿指令,驅動飛行仿真模塊實時地做出響應,為視景模塊周期性地提供對飛機飛行位置、姿態(tài)等的控制數(shù)據(jù)。
5.2 飛機動力學和運動學仿真
本系統(tǒng)采用六自由度全量飛機模型。該模型精確、全面地反映了飛機的實際運動特征。飛行動力學方程組可參見參考文獻[1][3]。
6 系統(tǒng)中使用的關鍵技術
6.1 nView 多顯示屏幕技術
與大型模擬器相比,本系統(tǒng)要實現(xiàn)的模擬過程相對比較簡單,為了保證信息既能充分得到顯示,同時遵循成本低廉、易于普及的設計原則,本系統(tǒng)沒有采用大型模擬器系統(tǒng)普遍采用的多通道顯示技術,而是采用了Nvidia 公司的nView 多設備顯示技術來實現(xiàn)單顯卡-雙顯示器的顯示輸出(圖8)。
圖8 采用了 nView 技術的本模擬器系統(tǒng)外觀
nView 顯示技術可以支持Span 模式,這種模式可以讓桌面擴大一倍。對于想要在多個顯示器上顯示同樣信息的的用戶,nView 也可支持 Clone 模式。本系統(tǒng)采用了Span 模式。
6.2 NURBS 曲面建模技術
在3DS MAX 中,有兩種建模方式,多邊形網(wǎng)格建模和NURBS(Non-Uniform Rational B-Splines非均勻有理B 樣條)建模。網(wǎng)格建模常用來創(chuàng)建有棱角的物體,而且很方便。但用它來表現(xiàn)光滑復雜的曲面造型,效果就很不理想,然而這正是NURBS 曲面建模的優(yōu)勢。在三維造型中,曲面物體要多于有棱角的物體,能否表現(xiàn)完美的曲面造型也就成了三維建模的關健。
在本系統(tǒng)的三維造型建模過程中,使用了這一技術來構建某些模型的組成部分(如飛機流線型的機頭、座艙蓋等),取得了很好的效果。
6.3 光點閃爍技術
在VTree SDK 軟件開發(fā)環(huán)境中,還包含了專門用來顯示光點閃爍效果的結點類型vtLightPointNode。它可以通過一系列函數(shù)來設置燈光的顏色、亮度、位置以及閃爍特效的各種參數(shù),此類型中提供了顯示光暈(Halo)效果的函數(shù)SetHaloed(),在實現(xiàn)燈光閃爍的同時,可以實現(xiàn)逼真的光暈效果,提高了燈光模型的逼真程度。在本系統(tǒng)中,使用了此項技術來實現(xiàn)黑夜場景中機場跑道的燈光閃爍效果。
6.4 細節(jié)度級別(LOD)技術
在不影響仿真逼真度的前提下,降低場景復雜程度很有必要。細節(jié)度級別( #p#page_title#e#Level ofDetail, LOD)技術在這方面有很好的效果。其原理是根據(jù)對象與觀察者的遠近關系,使用不同線框密度的幾何模型。在本系統(tǒng)中,采用了兩級LOD 對景物進行簡化,提高了計算效率,滿足了在PC 機上的運行要求。
7 結束語
本系統(tǒng)在整體結構的構建和各個模塊的設計和具體實現(xiàn)過程中,一直遵循了“保證效果,易于普及”的設計思想,在視景模塊中,綜合采用了目前虛擬現(xiàn)實(Virtual Reality)技術和視景仿真(Scene Simulation)技術中多種常用的實體建模、場景管理、圖象特效的軟件和技術,使系統(tǒng)的整體視景效果達到了期望的真實程度。并加入音響模塊,通過模擬飛機著陸過程中的各種聲音以及來自地面的語音指示來增強整個系統(tǒng)的沉浸感和逼真度。同時,通過按照一定的層次結構,利用LOD 技術和最優(yōu)化技術,在不影響畫面視覺效果的前提條件下對各種景物模型進行了簡化,使計算的效率大大提高,而且,在操縱和飛行仿真模塊中,使用了普及型的操縱設備和接口,使整個系統(tǒng)完全可以在PC 平臺上正常運行。該系統(tǒng)結構相對簡單,而且適合于在飛機實體模型、地形環(huán)境、天氣條件、平顯和ILS 的樣式以及飛機的飛行動力學和運動學參數(shù)上根據(jù)用戶實際需要進行各種更改。因此,比較適合于供部隊進行普及性初級訓練使用。
參考文獻
[1] 飛行實時仿真系統(tǒng)及技術 王行仁等著. 北京航空航天大學出版社;
[2] 3DS MAX 動畫設計寶典 V.N.CLUB著 清華大學出版社;
[3] 飛行控制系統(tǒng) 張明廉著. 國防工業(yè)出版社;
[4] 虛擬現(xiàn)實技術及編程技巧 張秀山 等編著 國防科技大學出版社;
[5] OPENGL 高級編程與可視系統(tǒng)開發(fā) 和平鴿工作室著 中國水利水電出版社;
[6] MultiGen Creator’s Desktop Tutor, MultiGen-Paradigm;
[7] Vtree SDK User’S Manual CG-2;