李婷婷
(中國直升機設計研究所,江西 景德鎮 333001)
現階段的無人直升機飛行操作員的職能是控制無人直升機的起飛與著陸過程,飛行操作員在工作中必須隨時監視無人直升機的狀態,并且能夠在緊急情況下控制無人直升機返航并著陸??偨Y該項工作存在以下問題:
1) 飛行操作員實裝訓練容易受到天氣、場地等環境因素的影響;
2) 由于無人直升機的飛行特效,其試飛存在較高的安全風險;
3) 特別是初期接受訓練的操作員,操作不當容易損壞飛機,降低飛機壽命。
無人直升機飛行模擬訓練系統是對實際飛行操作環境的一個虛擬再現,可以模擬飛行操作員實際操作無人直升機,通過培訓可以提高操控無人直升機及應對處理突發事件的能力,繼而很好地為飛行操作員實裝訓練做基礎。既能提高飛行安全,又降低了飛行試驗的成本。
論文基于Vega Prime研究,實現了一套無人直升機飛行模擬訓練系統。系統集成了某型無人直升機飛行動力學模型、FUTABA操控盒、3D視景演示、故障模擬訓練、考核機制和通用訓練軟件。系統設計簡單、逼真度高、人機交互性強。
如圖1所示,系統硬件由主控計算機、FUTABA操控盒、視景顯示系統組成。主控計算機使用HP Z230圖形工作站并配置NVIDIA Quadro K2000顯卡,計算機內運行飛行模擬訓練軟件,承擔某型無人直升機飛行動力學控制運算、三維視景實時渲染等核心任務。操控盒使用FUTABA,飛行操作員通過FUTABA控制桿分別對無人機模型的總距、俯仰、尾槳、滾轉舵機通道進行控制。視景顯示系統由曲面液晶電視和顯示支架組成,接收來自主控計算機的視頻和音頻信號,通過DVI轉接HDMI線纜傳輸并顯示。

圖1 飛行模擬訓練系統組成
按圖1所示,系統設計方案如下:
1) 建立訓練軟件選擇界面,選擇進入通用訓練軟件或某型無人直升機飛行訓練軟件。通用訓練軟件為普通航模訓練者使用的應用軟件。
2) 某型無人直升機飛行訓練軟件包括三維視景演示模塊、飛行控制模塊和FUTABA操控盒,飛行控制模塊包含該型機飛行動力學模型,是整個系統的控制對象。操控盒的連續輸出量直接被飛行控制模塊調用,經飛行控制模塊解算出無人機的當前位置和姿態等信息。
3) 三維視景演示模塊實時接收飛行控制模塊輸出的位置和姿態信息,并在3D場景和2D地圖中顯示無人直升機的目標態勢信息,同時完成3D場景下的不同視角切換和視圖顯示。
4) 三維視景演示模塊設飛行模擬設置接口,飛行模擬設置信息實時發送給飛行控制模塊,飛行控制模塊接收并進入接口設置的模擬飛行。
5) 三維視景演示模塊實時記錄飛行模擬過程,并事后對記錄過程進行回放。
飛行模擬訓練軟件在vs2008環境下利用MFC單文件框架編程實現,使用Vega Prime(簡稱vp)平臺實現三維視景渲染,渲染過程在定時器響應函數中完成。vp是美國Presagis公司在vega基礎上推出的新一代實時視景驅動平臺,是高性能實時三維視景仿真軟件開發包,接口函數以C++類形式出現,工作效率高,在虛擬現實領域應用廣泛[1]。
vp專門設計的用戶圖形界面Lynx Prime工具大大簡化了應用程序的開發過程。在Lynx Prime設計界面,加載使用Terra Vista生成的.mft地形數據庫文件和Multigen Creator構建的.flt三維可視化模型,對vp使用的場景元素類定義及參數初始化,生成.acf配置文件。Terra Vista是Presagis公司基于Windows平臺的實時3D復雜地形數據庫生成工具系統軟件,專門應用于處理高精度大面積地形數據[2]。Multigen Creator提供了強大的多邊形建模、矢量建模以及大面積地形精確生成等功能,生成的實時三維模型數據庫,能夠和實時視景仿真軟件進行無縫焊接[3]。
如圖2所示,按照功能模塊劃分,系統軟件結構由訓練軟件選擇、FUTABA操控盒、飛行控制模塊、三維視景演示組成,通過UDP協議實現三維視景演示與飛行控制模塊之間的數據實時交互。

圖2 系統軟件結構
2.2.1 FUTABA操控盒
FUTABA操控盒的控制桿量線性輸出0-255數值,使用JoyStick操縱桿庫的JS4_Attach()、JS4_IsWorking()、JS4_GetAxesNums()、JS4_ReadValue()、JS4_Release()實現操控盒的加載、查詢,操縱桿量獲取,操縱數據讀取、釋放。把該操縱數據進行線性轉換,使總距、縱向周期變距、橫向周期變距和尾槳距滿足某型無人直升機操縱范圍。
2.2.2 飛行控制模塊
飛行控制模塊把總距、縱向周期變距、橫向周期變距、尾槳距作為輸入,對無人機模型進行模擬飛行處理,輸出無人機的位置、姿態信息。在定時器響應函數中,通過WinSock2的sendto()將飛行控制模塊的無人機姿態、位置信息以UDP方式發送給三維視景演示模塊。同時通過WinSock2的recvfrom()接收三維視景演示模塊發送過來的飛行模擬設置信息,并完成對應設置的模擬處理[4]。
2.2.3 三維視景演示
1) ACF文件配置
圖3為系統視景的acf文件配置界面。新建配置文件,自動調用vpEnv模塊的EnvSun、EnvMoon、EnvSkyDome、EnvCloudLayer、EnvWind、EnvStars類建立天空中太陽、云層等元素。在此基礎上,創建vp以下類的例程并設置,實現視景元素的建立和初始化。
vpEnv模塊的EnvRain、EnvSnow類:創建場景中雨雪特效實例,初始狀態下使特效隱藏。
MetaFlight模塊的Database類:分別創建地形數據庫類實例,通過1.27G大小的.mft地景文件把大地形場景加入。利用vpLADBMPagingStrategyPoint和vpLADBMGeometryGridDataset數據庫管理實例,在vp的管道式流水線渲染過程中,動態查閱管理和AOI優化大地形數據庫的裝載和卸載過程,根據LOD功能節點當前視點范圍,平滑切換顯示不同分辨率的層級,保證效率最優化[5]。

圖3 ACF文件配置界面
vp模塊的Object類:分別創建無人直升機模型、基地周邊100m的高程數據地形、停機坪實例,模型根據的外觀尺寸均為MultiGen Creator創建的.flt文件。分別設定各模型的坐標位置,使之吻合地加入3D視景場景。
vp模塊的Scene場景類:創建3D地景場景實例myScene,在該地景場景中加入無人直升機、停機坪、基地周圍地景,并作為vpLADBMGeometryGridDataset數據庫管理的場景,與大地形數據庫同時管理。
vpShadow模塊的ShadowDynamicShadows類:創建動態陰影實例,模擬無人機在天空下的陰影效果,有利于觀察無人機的位置變化,增加運動真實感。
vp模塊的IsectorZ類:創建地形高度檢測實例,選擇Z檢測方法,獲取無人直升機所在位置地形高度,飛行控制模塊根據此地形高度進行懸停,避免出現無人機繼續向地下飛行的不真實現象。
2) 線程UDP信息交互
啟動一個線程,基于UDP協議接收飛行控制模塊發送來的位置姿態數據并通過WinSock2的recvfrom()來實現。飛行操縱模式和傳感器故障等飛行模擬設置在該線程中基于UDP方式發送給飛行控制模塊,WinSock2的sendto()實現設置信息的發送。
3) 無人機視景實時顯示
在Helicopter類中建立vp的無人機模型對象vpObject,通過對模型對象的位置和姿態賦值傳遞,在視景演示框中實時更新顯示。
vp::initialize()完成視景的內核、場景渲染庫初始化和內存分配,vpKernel::instance()->define(acfFile.c_str())ACF文件代碼轉換,configure()完成文件配置,然后在定時器OnTimer中完成系統的視景渲染,部分實現代碼如下:
int frameNum = vpKernel::instance()-> beginFrame(); //進入仿真
myDeltaTime = vpKernel::instance()-> getSimulationDeltaTime(); //兩幀時間間隔
_p_UAV->updateEntity(myDeltaTime);
//完成無人機位置、場景更新
int result=vpKernel::instance()->endFrame();
//結束當前幀循環
vpObject模型對象的setPosition()和setRotate()更新無人機的位置和姿態,同時利用vpObserver觀察者對象的setPosition()和setRotate()更新觀察者的觀察位置和角度。根據現有無人機的飛行品質,設置當俯仰角或滾轉角大于60°時,處理無人機垂直落地并切換墜毀模型,使用vpAudioSoundSpatial和vpFxSmoke實例模擬墜地時的聲音和煙霧特效。
4) 導航及儀表視圖
圖4為儀表視圖,在ACF配置文件中創建GLS儀表窗口實例WindowGLS、管道實例channelGLS,channelGLS作為儀表窗口的顯示通道。無人機位置和姿態通過vpGLStudioComponent* _p_glsViewCmp的setAttrib()函數賦值給GLS儀表各參數,然后綁定在MFC儀表視圖中顯示。

圖4 儀表視圖
圖5為導航視圖,設計在導航視圖窗口嵌入2D地圖,基于窗口消息映射機制傳遞無人機的當前位置,并通過動態疊加無人機標識示意,同時繪制飛行軌跡和偏離基地直線軌跡。2D地圖為3D視景相對應的矢量電子地圖,包含道路、河流、邊界以及輔助顯示信息多個圖層。在MFC中創建導航視圖窗口,在視圖窗口類中嵌入使用MapWinGis繪圖控件,SetProperty()完成圖層設置,DrawLineEx()軌跡繪制,ZoomIn()視場縮小,ZoomOut()視場放大,SetBounds()視場移動。

圖5 導航視圖
5) 航跡顯示及航跡預設
航跡顯示:把航跡顯示的繪畫點放置在無人機的尾翼上,隨著無人機的位置、姿態的改變以紅色透明帶的形式繪制飛行航跡。繪制中利用vpTransform的getMatrixAffine()和vuMatrixConvert()等函數獲得完整矩陣并轉換,幾何繪制工具vrGeometry繪制飛機當前位置與上一時刻飛機位置的直線。
在主程序添加工具欄按鈕,利用命令消息實現預設點的導入和預設航跡繪制,利用vrGeometry幾何繪制工具以白色曲線繪制。
6) 模擬設置
模擬設置包括視景環境模擬設置、飛行操縱模擬模式、故障模擬、訓練科目設置等。視景環境模擬包括一天24小時、霧雨雪天氣環境。重寫vpApp::onKeyInput(vrWindow::Key key, int mod),編寫鍵盤按鍵對應的功能,通過switch(key)和case vrWindow::KEY_X實現天氣、視角快捷鍵選擇。設置界面見圖6。
7) 觀察視角切換
觀察視角有飛行儀表視角、跟隨視角、漫游視角。各視角的實現通過聯合設置vpObserver的setStrategy()、setLookAt()、setLookFrom()和vpTransform的setStrategy()實現,飛行儀表視角用vpGLStudioComponent儀表類實例完成飛機姿態信息儀表顯示。
8) 記錄及回放
把vuFile的open()、writeString()、readString()等函數與定時器WM_TIMER()相結合,實現對飛行過程的記錄與控制回放??刂苹胤胚^程包括開始播放、暫停播放、重新播放、快速與減速播放,并實時顯示考核過程中的失分因素。

圖6 視景場景初始設置
該系統運行時,通過配合操控盒轉換器的不同開關可以進行兩種環境的飛行模擬訓練,即通用飛行訓練和某型無人直升機飛行訓練。某型無人直升機飛行訓練運行效果如圖7所示,系統可以接收操控盒的控制輸入,仿真模擬某型無人直升機的飛行狀態,同步驅動更新無人直升機模型的位置、姿態并完成三維場景的實時渲染。同時,系統可以模擬無人直升機在不同飛行控制理論模式下的飛行,隨時接入常見傳感器故障模擬飛行,以提高無人直升機操縱水平并鍛煉突發事件的應急處理能力。

圖7 某型無人直升機飛行訓練過程
通過對系統的長期使用和用戶測試評價,證明該系統運行可靠,且具有良好的真實感和較強的人機交互性,能夠滿足某型無人直升機飛行模擬訓練系統建設的需求。
該無人直升機飛行模擬訓練系統是無人直升機領域針對飛行操作員開發和使用的一套系統。它調用了先進建模工具Terra Vista生成的地形數據庫文件和Multigen Creator構建的三維可視化模型,使用了虛擬現實技術Vega Prime完成模擬系統視景場景的開發,視景模擬真實度大大提高,飛行操作員使用該系統的真實感大大增強。系統首次集成某型無人直升機飛行動力學模型,實現了對無人直升機的飛行控制,使飛行操作員可以像對真實無人直升機一樣進行操作和控制。
在該系統基礎上,可通過更換無人直升機飛行動力學模型動態鏈接庫,來用于其他型號無人直升機的飛行操作員模擬訓練。伴隨飛控模型的非線性化研究發展,可以進行動力學模型的仿真驗證。經過進一步的席位擴展有望實現多架無人直升機甚至與其他武器裝備的聯合作戰模擬。