李婷婷
(中國(guó)直升機(jī)設(shè)計(jì)研究所,江西 景德鎮(zhèn) 333001)
現(xiàn)階段的無(wú)人直升機(jī)飛行操作員的職能是控制無(wú)人直升機(jī)的起飛與著陸過(guò)程,飛行操作員在工作中必須隨時(shí)監(jiān)視無(wú)人直升機(jī)的狀態(tài),并且能夠在緊急情況下控制無(wú)人直升機(jī)返航并著陸。總結(jié)該項(xiàng)工作存在以下問(wèn)題:
1) 飛行操作員實(shí)裝訓(xùn)練容易受到天氣、場(chǎng)地等環(huán)境因素的影響;
2) 由于無(wú)人直升機(jī)的飛行特效,其試飛存在較高的安全風(fēng)險(xiǎn);
3) 特別是初期接受訓(xùn)練的操作員,操作不當(dāng)容易損壞飛機(jī),降低飛機(jī)壽命。
無(wú)人直升機(jī)飛行模擬訓(xùn)練系統(tǒng)是對(duì)實(shí)際飛行操作環(huán)境的一個(gè)虛擬再現(xiàn),可以模擬飛行操作員實(shí)際操作無(wú)人直升機(jī),通過(guò)培訓(xùn)可以提高操控?zé)o人直升機(jī)及應(yīng)對(duì)處理突發(fā)事件的能力,繼而很好地為飛行操作員實(shí)裝訓(xùn)練做基礎(chǔ)。既能提高飛行安全,又降低了飛行試驗(yàn)的成本。
論文基于Vega Prime研究,實(shí)現(xiàn)了一套無(wú)人直升機(jī)飛行模擬訓(xùn)練系統(tǒng)。系統(tǒng)集成了某型無(wú)人直升機(jī)飛行動(dòng)力學(xué)模型、FUTABA操控盒、3D視景演示、故障模擬訓(xùn)練、考核機(jī)制和通用訓(xùn)練軟件。系統(tǒng)設(shè)計(jì)簡(jiǎn)單、逼真度高、人機(jī)交互性強(qiáng)。
如圖1所示,系統(tǒng)硬件由主控計(jì)算機(jī)、FUTABA操控盒、視景顯示系統(tǒng)組成。主控計(jì)算機(jī)使用HP Z230圖形工作站并配置NVIDIA Quadro K2000顯卡,計(jì)算機(jī)內(nèi)運(yùn)行飛行模擬訓(xùn)練軟件,承擔(dān)某型無(wú)人直升機(jī)飛行動(dòng)力學(xué)控制運(yùn)算、三維視景實(shí)時(shí)渲染等核心任務(wù)。操控盒使用FUTABA,飛行操作員通過(guò)FUTABA控制桿分別對(duì)無(wú)人機(jī)模型的總距、俯仰、尾槳、滾轉(zhuǎn)舵機(jī)通道進(jìn)行控制。視景顯示系統(tǒng)由曲面液晶電視和顯示支架組成,接收來(lái)自主控計(jì)算機(jī)的視頻和音頻信號(hào),通過(guò)DVI轉(zhuǎn)接HDMI線纜傳輸并顯示。
圖1 飛行模擬訓(xùn)練系統(tǒng)組成
按圖1所示,系統(tǒng)設(shè)計(jì)方案如下:
1) 建立訓(xùn)練軟件選擇界面,選擇進(jìn)入通用訓(xùn)練軟件或某型無(wú)人直升機(jī)飛行訓(xùn)練軟件。通用訓(xùn)練軟件為普通航模訓(xùn)練者使用的應(yīng)用軟件。
2) 某型無(wú)人直升機(jī)飛行訓(xùn)練軟件包括三維視景演示模塊、飛行控制模塊和FUTABA操控盒,飛行控制模塊包含該型機(jī)飛行動(dòng)力學(xué)模型,是整個(gè)系統(tǒng)的控制對(duì)象。操控盒的連續(xù)輸出量直接被飛行控制模塊調(diào)用,經(jīng)飛行控制模塊解算出無(wú)人機(jī)的當(dāng)前位置和姿態(tài)等信息。
3) 三維視景演示模塊實(shí)時(shí)接收飛行控制模塊輸出的位置和姿態(tài)信息,并在3D場(chǎng)景和2D地圖中顯示無(wú)人直升機(jī)的目標(biāo)態(tài)勢(shì)信息,同時(shí)完成3D場(chǎng)景下的不同視角切換和視圖顯示。
4) 三維視景演示模塊設(shè)飛行模擬設(shè)置接口,飛行模擬設(shè)置信息實(shí)時(shí)發(fā)送給飛行控制模塊,飛行控制模塊接收并進(jìn)入接口設(shè)置的模擬飛行。
5) 三維視景演示模塊實(shí)時(shí)記錄飛行模擬過(guò)程,并事后對(duì)記錄過(guò)程進(jìn)行回放。
飛行模擬訓(xùn)練軟件在vs2008環(huán)境下利用MFC單文件框架編程實(shí)現(xiàn),使用Vega Prime(簡(jiǎn)稱vp)平臺(tái)實(shí)現(xiàn)三維視景渲染,渲染過(guò)程在定時(shí)器響應(yīng)函數(shù)中完成。vp是美國(guó)Presagis公司在vega基礎(chǔ)上推出的新一代實(shí)時(shí)視景驅(qū)動(dòng)平臺(tái),是高性能實(shí)時(shí)三維視景仿真軟件開(kāi)發(fā)包,接口函數(shù)以C++類形式出現(xiàn),工作效率高,在虛擬現(xiàn)實(shí)領(lǐng)域應(yīng)用廣泛[1]。
vp專門設(shè)計(jì)的用戶圖形界面Lynx Prime工具大大簡(jiǎn)化了應(yīng)用程序的開(kāi)發(fā)過(guò)程。在Lynx Prime設(shè)計(jì)界面,加載使用Terra Vista生成的.mft地形數(shù)據(jù)庫(kù)文件和Multigen Creator構(gòu)建的.flt三維可視化模型,對(duì)vp使用的場(chǎng)景元素類定義及參數(shù)初始化,生成.acf配置文件。Terra Vista是Presagis公司基于Windows平臺(tái)的實(shí)時(shí)3D復(fù)雜地形數(shù)據(jù)庫(kù)生成工具系統(tǒng)軟件,專門應(yīng)用于處理高精度大面積地形數(shù)據(jù)[2]。Multigen Creator提供了強(qiáng)大的多邊形建模、矢量建模以及大面積地形精確生成等功能,生成的實(shí)時(shí)三維模型數(shù)據(jù)庫(kù),能夠和實(shí)時(shí)視景仿真軟件進(jìn)行無(wú)縫焊接[3]。
如圖2所示,按照功能模塊劃分,系統(tǒng)軟件結(jié)構(gòu)由訓(xùn)練軟件選擇、FUTABA操控盒、飛行控制模塊、三維視景演示組成,通過(guò)UDP協(xié)議實(shí)現(xiàn)三維視景演示與飛行控制模塊之間的數(shù)據(jù)實(shí)時(shí)交互。
圖2 系統(tǒng)軟件結(jié)構(gòu)
2.2.1 FUTABA操控盒
FUTABA操控盒的控制桿量線性輸出0-255數(shù)值,使用JoyStick操縱桿庫(kù)的JS4_Attach()、JS4_IsWorking()、JS4_GetAxesNums()、JS4_ReadValue()、JS4_Release()實(shí)現(xiàn)操控盒的加載、查詢,操縱桿量獲取,操縱數(shù)據(jù)讀取、釋放。把該操縱數(shù)據(jù)進(jìn)行線性轉(zhuǎn)換,使總距、縱向周期變距、橫向周期變距和尾槳距滿足某型無(wú)人直升機(jī)操縱范圍。
2.2.2 飛行控制模塊
飛行控制模塊把總距、縱向周期變距、橫向周期變距、尾槳距作為輸入,對(duì)無(wú)人機(jī)模型進(jìn)行模擬飛行處理,輸出無(wú)人機(jī)的位置、姿態(tài)信息。在定時(shí)器響應(yīng)函數(shù)中,通過(guò)WinSock2的sendto()將飛行控制模塊的無(wú)人機(jī)姿態(tài)、位置信息以UDP方式發(fā)送給三維視景演示模塊。同時(shí)通過(guò)WinSock2的recvfrom()接收三維視景演示模塊發(fā)送過(guò)來(lái)的飛行模擬設(shè)置信息,并完成對(duì)應(yīng)設(shè)置的模擬處理[4]。
2.2.3 三維視景演示
1) ACF文件配置
圖3為系統(tǒng)視景的acf文件配置界面。新建配置文件,自動(dòng)調(diào)用vpEnv模塊的EnvSun、EnvMoon、EnvSkyDome、EnvCloudLayer、EnvWind、EnvStars類建立天空中太陽(yáng)、云層等元素。在此基礎(chǔ)上,創(chuàng)建vp以下類的例程并設(shè)置,實(shí)現(xiàn)視景元素的建立和初始化。
vpEnv模塊的EnvRain、EnvSnow類:創(chuàng)建場(chǎng)景中雨雪特效實(shí)例,初始狀態(tài)下使特效隱藏。
MetaFlight模塊的Database類:分別創(chuàng)建地形數(shù)據(jù)庫(kù)類實(shí)例,通過(guò)1.27G大小的.mft地景文件把大地形場(chǎng)景加入。利用vpLADBMPagingStrategyPoint和vpLADBMGeometryGridDataset數(shù)據(jù)庫(kù)管理實(shí)例,在vp的管道式流水線渲染過(guò)程中,動(dòng)態(tài)查閱管理和AOI優(yōu)化大地形數(shù)據(jù)庫(kù)的裝載和卸載過(guò)程,根據(jù)LOD功能節(jié)點(diǎn)當(dāng)前視點(diǎn)范圍,平滑切換顯示不同分辨率的層級(jí),保證效率最優(yōu)化[5]。
圖3 ACF文件配置界面
vp模塊的Object類:分別創(chuàng)建無(wú)人直升機(jī)模型、基地周邊100m的高程數(shù)據(jù)地形、停機(jī)坪實(shí)例,模型根據(jù)的外觀尺寸均為MultiGen Creator創(chuàng)建的.flt文件。分別設(shè)定各模型的坐標(biāo)位置,使之吻合地加入3D視景場(chǎng)景。
vp模塊的Scene場(chǎng)景類:創(chuàng)建3D地景場(chǎng)景實(shí)例myScene,在該地景場(chǎng)景中加入無(wú)人直升機(jī)、停機(jī)坪、基地周圍地景,并作為vpLADBMGeometryGridDataset數(shù)據(jù)庫(kù)管理的場(chǎng)景,與大地形數(shù)據(jù)庫(kù)同時(shí)管理。
vpShadow模塊的ShadowDynamicShadows類:創(chuàng)建動(dòng)態(tài)陰影實(shí)例,模擬無(wú)人機(jī)在天空下的陰影效果,有利于觀察無(wú)人機(jī)的位置變化,增加運(yùn)動(dòng)真實(shí)感。
vp模塊的IsectorZ類:創(chuàng)建地形高度檢測(cè)實(shí)例,選擇Z檢測(cè)方法,獲取無(wú)人直升機(jī)所在位置地形高度,飛行控制模塊根據(jù)此地形高度進(jìn)行懸停,避免出現(xiàn)無(wú)人機(jī)繼續(xù)向地下飛行的不真實(shí)現(xiàn)象。
2) 線程UDP信息交互
啟動(dòng)一個(gè)線程,基于UDP協(xié)議接收飛行控制模塊發(fā)送來(lái)的位置姿態(tài)數(shù)據(jù)并通過(guò)WinSock2的recvfrom()來(lái)實(shí)現(xiàn)。飛行操縱模式和傳感器故障等飛行模擬設(shè)置在該線程中基于UDP方式發(fā)送給飛行控制模塊,WinSock2的sendto()實(shí)現(xiàn)設(shè)置信息的發(fā)送。
3) 無(wú)人機(jī)視景實(shí)時(shí)顯示
在Helicopter類中建立vp的無(wú)人機(jī)模型對(duì)象vpObject,通過(guò)對(duì)模型對(duì)象的位置和姿態(tài)賦值傳遞,在視景演示框中實(shí)時(shí)更新顯示。
vp::initialize()完成視景的內(nèi)核、場(chǎng)景渲染庫(kù)初始化和內(nèi)存分配,vpKernel::instance()->define(acfFile.c_str())ACF文件代碼轉(zhuǎn)換,configure()完成文件配置,然后在定時(shí)器OnTimer中完成系統(tǒng)的視景渲染,部分實(shí)現(xiàn)代碼如下:
int frameNum = vpKernel::instance()-> beginFrame(); //進(jìn)入仿真
myDeltaTime = vpKernel::instance()-> getSimulationDeltaTime(); //兩幀時(shí)間間隔
_p_UAV->updateEntity(myDeltaTime);
//完成無(wú)人機(jī)位置、場(chǎng)景更新
int result=vpKernel::instance()->endFrame();
//結(jié)束當(dāng)前幀循環(huán)
vpObject模型對(duì)象的setPosition()和setRotate()更新無(wú)人機(jī)的位置和姿態(tài),同時(shí)利用vpObserver觀察者對(duì)象的setPosition()和setRotate()更新觀察者的觀察位置和角度。根據(jù)現(xiàn)有無(wú)人機(jī)的飛行品質(zhì),設(shè)置當(dāng)俯仰角或滾轉(zhuǎn)角大于60°時(shí),處理無(wú)人機(jī)垂直落地并切換墜毀模型,使用vpAudioSoundSpatial和vpFxSmoke實(shí)例模擬墜地時(shí)的聲音和煙霧特效。
4) 導(dǎo)航及儀表視圖
圖4為儀表視圖,在ACF配置文件中創(chuàng)建GLS儀表窗口實(shí)例WindowGLS、管道實(shí)例channelGLS,channelGLS作為儀表窗口的顯示通道。無(wú)人機(jī)位置和姿態(tài)通過(guò)vpGLStudioComponent* _p_glsViewCmp的setAttrib()函數(shù)賦值給GLS儀表各參數(shù),然后綁定在MFC儀表視圖中顯示。
圖4 儀表視圖
圖5為導(dǎo)航視圖,設(shè)計(jì)在導(dǎo)航視圖窗口嵌入2D地圖,基于窗口消息映射機(jī)制傳遞無(wú)人機(jī)的當(dāng)前位置,并通過(guò)動(dòng)態(tài)疊加無(wú)人機(jī)標(biāo)識(shí)示意,同時(shí)繪制飛行軌跡和偏離基地直線軌跡。2D地圖為3D視景相對(duì)應(yīng)的矢量電子地圖,包含道路、河流、邊界以及輔助顯示信息多個(gè)圖層。在MFC中創(chuàng)建導(dǎo)航視圖窗口,在視圖窗口類中嵌入使用MapWinGis繪圖控件,SetProperty()完成圖層設(shè)置,DrawLineEx()軌跡繪制,ZoomIn()視場(chǎng)縮小,ZoomOut()視場(chǎng)放大,SetBounds()視場(chǎng)移動(dòng)。
圖5 導(dǎo)航視圖
5) 航跡顯示及航跡預(yù)設(shè)
航跡顯示:把航跡顯示的繪畫(huà)點(diǎn)放置在無(wú)人機(jī)的尾翼上,隨著無(wú)人機(jī)的位置、姿態(tài)的改變以紅色透明帶的形式繪制飛行航跡。繪制中利用vpTransform的getMatrixAffine()和vuMatrixConvert()等函數(shù)獲得完整矩陣并轉(zhuǎn)換,幾何繪制工具vrGeometry繪制飛機(jī)當(dāng)前位置與上一時(shí)刻飛機(jī)位置的直線。
在主程序添加工具欄按鈕,利用命令消息實(shí)現(xiàn)預(yù)設(shè)點(diǎn)的導(dǎo)入和預(yù)設(shè)航跡繪制,利用vrGeometry幾何繪制工具以白色曲線繪制。
6) 模擬設(shè)置
模擬設(shè)置包括視景環(huán)境模擬設(shè)置、飛行操縱模擬模式、故障模擬、訓(xùn)練科目設(shè)置等。視景環(huán)境模擬包括一天24小時(shí)、霧雨雪天氣環(huán)境。重寫(xiě)vpApp::onKeyInput(vrWindow::Key key, int mod),編寫(xiě)鍵盤按鍵對(duì)應(yīng)的功能,通過(guò)switch(key)和case vrWindow::KEY_X實(shí)現(xiàn)天氣、視角快捷鍵選擇。設(shè)置界面見(jiàn)圖6。
7) 觀察視角切換
觀察視角有飛行儀表視角、跟隨視角、漫游視角。各視角的實(shí)現(xiàn)通過(guò)聯(lián)合設(shè)置vpObserver的setStrategy()、setLookAt()、setLookFrom()和vpTransform的setStrategy()實(shí)現(xiàn),飛行儀表視角用vpGLStudioComponent儀表類實(shí)例完成飛機(jī)姿態(tài)信息儀表顯示。
8) 記錄及回放
把vuFile的open()、writeString()、readString()等函數(shù)與定時(shí)器WM_TIMER()相結(jié)合,實(shí)現(xiàn)對(duì)飛行過(guò)程的記錄與控制回放??刂苹胤胚^(guò)程包括開(kāi)始播放、暫停播放、重新播放、快速與減速播放,并實(shí)時(shí)顯示考核過(guò)程中的失分因素。
圖6 視景場(chǎng)景初始設(shè)置
該系統(tǒng)運(yùn)行時(shí),通過(guò)配合操控盒轉(zhuǎn)換器的不同開(kāi)關(guān)可以進(jìn)行兩種環(huán)境的飛行模擬訓(xùn)練,即通用飛行訓(xùn)練和某型無(wú)人直升機(jī)飛行訓(xùn)練。某型無(wú)人直升機(jī)飛行訓(xùn)練運(yùn)行效果如圖7所示,系統(tǒng)可以接收操控盒的控制輸入,仿真模擬某型無(wú)人直升機(jī)的飛行狀態(tài),同步驅(qū)動(dòng)更新無(wú)人直升機(jī)模型的位置、姿態(tài)并完成三維場(chǎng)景的實(shí)時(shí)渲染。同時(shí),系統(tǒng)可以模擬無(wú)人直升機(jī)在不同飛行控制理論模式下的飛行,隨時(shí)接入常見(jiàn)傳感器故障模擬飛行,以提高無(wú)人直升機(jī)操縱水平并鍛煉突發(fā)事件的應(yīng)急處理能力。
圖7 某型無(wú)人直升機(jī)飛行訓(xùn)練過(guò)程
通過(guò)對(duì)系統(tǒng)的長(zhǎng)期使用和用戶測(cè)試評(píng)價(jià),證明該系統(tǒng)運(yùn)行可靠,且具有良好的真實(shí)感和較強(qiáng)的人機(jī)交互性,能夠滿足某型無(wú)人直升機(jī)飛行模擬訓(xùn)練系統(tǒng)建設(shè)的需求。
該無(wú)人直升機(jī)飛行模擬訓(xùn)練系統(tǒng)是無(wú)人直升機(jī)領(lǐng)域針對(duì)飛行操作員開(kāi)發(fā)和使用的一套系統(tǒng)。它調(diào)用了先進(jìn)建模工具Terra Vista生成的地形數(shù)據(jù)庫(kù)文件和Multigen Creator構(gòu)建的三維可視化模型,使用了虛擬現(xiàn)實(shí)技術(shù)Vega Prime完成模擬系統(tǒng)視景場(chǎng)景的開(kāi)發(fā),視景模擬真實(shí)度大大提高,飛行操作員使用該系統(tǒng)的真實(shí)感大大增強(qiáng)。系統(tǒng)首次集成某型無(wú)人直升機(jī)飛行動(dòng)力學(xué)模型,實(shí)現(xiàn)了對(duì)無(wú)人直升機(jī)的飛行控制,使飛行操作員可以像對(duì)真實(shí)無(wú)人直升機(jī)一樣進(jìn)行操作和控制。
在該系統(tǒng)基礎(chǔ)上,可通過(guò)更換無(wú)人直升機(jī)飛行動(dòng)力學(xué)模型動(dòng)態(tài)鏈接庫(kù),來(lái)用于其他型號(hào)無(wú)人直升機(jī)的飛行操作員模擬訓(xùn)練。伴隨飛控模型的非線性化研究發(fā)展,可以進(jìn)行動(dòng)力學(xué)模型的仿真驗(yàn)證。經(jīng)過(guò)進(jìn)一步的席位擴(kuò)展有望實(shí)現(xiàn)多架無(wú)人直升機(jī)甚至與其他武器裝備的聯(lián)合作戰(zhàn)模擬。