王立波,張復(fù)春,高文琦,易龍龍
(中國人民解放軍空軍航空大學(xué)航空理論系,吉林長春130022)
軍事模擬飛行訓(xùn)練是當(dāng)今世界空軍提高飛行訓(xùn)練效果的一種必然趨勢。所謂軍事模擬訓(xùn)練,是在由模擬訓(xùn)練器/系統(tǒng)實現(xiàn)模擬作戰(zhàn)環(huán)境、作戰(zhàn)過程和武器裝備的作戰(zhàn)效應(yīng)下,所進(jìn)行的嚴(yán)格軍事訓(xùn)練或軍事作戰(zhàn)演習(xí)或戰(zhàn)法研究演練的全過程[1]。FlightGear是一個開源的飛行模擬軟件,由Curt Olson開發(fā)設(shè)計并發(fā)布到互聯(lián)網(wǎng)供大家學(xué)習(xí)使用[2]。大多數(shù)商業(yè)用的飛行模擬器收費都很高,Curt Olson開發(fā)FlightGear的目的正是為發(fā)展價格低廉但功能強大的飛行模擬器,建立一個先進(jìn)的飛行模擬框架用于學(xué)術(shù)研究,免費提供給用戶使用。FlightGear的源代碼對于任何人都是公開和可修改的,在二次開發(fā)方面做的非常友好,不需改動代碼重新編譯就可以滿足大部分開發(fā)上的需要,大大降低非開發(fā)工作的額外開銷。所以可以根據(jù)自己的需求做進(jìn)一步開發(fā),這樣既能利用FlightGear自身的強大功能,又可以滿足個性化需要。FlightGear以其強大的功能和開放式源代碼的優(yōu)勢得到越來越多的客戶和游戲愛好者的青睞,也逐漸成為科學(xué)研究的首選模擬仿真軟件。
FlightGear是一款大型的功能強大飛行模擬軟件,其中集成了許多輕量級開源軟件。FlightGear使用的主要組件關(guān)系如圖1[3]所示。
圖1 FlightGear主要組件關(guān)系Fig.1 Main component relationship in FlighteGear
FlightGear作為一個通用的飛行模擬系統(tǒng),結(jié)構(gòu)組織非常復(fù)雜,各個系統(tǒng)不是獨立基于FlightGear飛行模擬系統(tǒng)研究的,而是相互之間有聯(lián)系并且互相支持的。FlightGear使用SimGear作為仿真引擎,通過Plib包實現(xiàn)跨平臺、網(wǎng)絡(luò)通信等功能,使用OpenAL提供聲音效果,使用OpenGL進(jìn)行圖像處理。FlightGear主要包括動力學(xué)系統(tǒng)、飛行器模塊、時間系統(tǒng)、視景系統(tǒng)、音效系統(tǒng)、控制系統(tǒng)、坐標(biāo)系系統(tǒng)、平顯分系統(tǒng)、日志分系統(tǒng)等。各模塊之間的關(guān)系如圖2所示。
FlightGear是通過C++語言開發(fā)的,具體的運行過程如圖3[4]所示。
圖2 FlightGear各模塊之間的關(guān)系Fig.2 Relationship between the various modules in FligterGear
圖3 FlightGear的運行流程Fig.3 Operational scheme of FlightGear
FlightGear運行流程里面主要包括2個主循環(huán),主循環(huán)1讀取配置文件后,通過Idle_state參數(shù)的迭代完成各模塊的初始化工作。主要包括加載數(shù)據(jù)、飛行器模型、動力學(xué)模型、環(huán)境模型、SSG模塊、OpenGL參數(shù)的初始化。循環(huán)1的窗口系統(tǒng)主要完成啟動界面的渲染。
主循環(huán)2負(fù)責(zé)運行過程中的系統(tǒng)的更新,是整個運行程序的主體。此時的窗口系統(tǒng)主要完成視景系統(tǒng)的渲染,并加載菜單用于對仿真環(huán)境進(jìn)行配置和調(diào)節(jié)。
在FlightGear軟件系統(tǒng)中大量的使用了XML文檔作為配置文件,用于定義系統(tǒng)運行環(huán)境、外界數(shù)據(jù)(包含云層、地形等)以及各類飛行器的載入及配置等等。
XML(Extensible Markup Language可擴展標(biāo)記語言)[5-7]是W3C(World Wide Web Consortium)組織提出的Web上數(shù)據(jù)表示和數(shù)據(jù)交換的標(biāo)準(zhǔn)[8],是萬維網(wǎng)聯(lián)盟(W3C)創(chuàng)建的一組規(guī)范,用于在Web上組織、發(fā)布各種信息。XML主要有兩類作用:第一類作用是作為元標(biāo)記語言,定義各種實例標(biāo)記語言的標(biāo)準(zhǔn);第二類作用是作為標(biāo)準(zhǔn)交換語言,擔(dān)負(fù)其描述交換數(shù)據(jù)的作用。在信息世界中,XML擔(dān)任著“國際語言”的重要角色,是互聯(lián)網(wǎng)上和企業(yè)間交換和發(fā)布數(shù)據(jù)的主要互操作標(biāo)準(zhǔn)。它即可以滿足迅速增長的網(wǎng)絡(luò)應(yīng)用的需求,還能夠確保在通過網(wǎng)絡(luò)進(jìn)行交互操作時,具有良好的互操作性與可靠性。XML以其數(shù)據(jù)和表現(xiàn)相分離的特性和強大的數(shù)據(jù)表達(dá)能力,已經(jīng)成為互聯(lián)網(wǎng)和數(shù)據(jù)庫的橋梁。XML的特點如下表1所示。
XML的諸多特點和優(yōu)點,使它適合表現(xiàn)許多復(fù)雜的數(shù)據(jù)關(guān)系,有利于不同系統(tǒng)間的信息交流,因而可以充當(dāng)網(wǎng)際語言,成為數(shù)據(jù)和文檔交換的標(biāo)準(zhǔn)機制。
飛行模擬軟件的飛行數(shù)據(jù)有著很重要的作用和價值,可以幫助分析飛行動力學(xué)模型設(shè)計的是否合理,輔助評估飛行模擬訓(xùn)練的質(zhì)量和飛行考核,可以幫組飛行訓(xùn)練人員檢查自己的飛行軌跡、飛行狀態(tài),并通過采集記錄的數(shù)據(jù)驅(qū)動視景系統(tǒng)來會回看自己的飛行情況。所以無論真實飛行和模擬飛行,飛行數(shù)據(jù)的實時采集都是必不可少的。
1)飛行參數(shù)的采集和記錄
雖然FlightGear在模擬飛行時可以產(chǎn)生大量飛行數(shù)據(jù),但是FlightGear本身并沒有提供數(shù)據(jù)的對外輸出,一些重要的數(shù)據(jù)可以在飛機座艙的儀表和平視顯示器上可以看到。在系統(tǒng)啟動之后也可以通過手動打開日志記錄功能記錄相關(guān)的數(shù)據(jù),但是通過手動打開日志記錄界面需要重新添加數(shù)據(jù)的名字和路徑,并且系統(tǒng)不會自動記憶,每次重新飛行都需要重新輸入,還有一點不足就是系統(tǒng)自帶的日志記錄系統(tǒng)所能記錄的數(shù)據(jù)的數(shù)量有限的,不能滿足數(shù)據(jù)分析的需求。想要隨心所欲的獲得數(shù)據(jù)這里有兩種方法可以解決,一種是通過重新編譯FlightGear在Main函數(shù)里加入寫文件操作,記錄相關(guān)信息。另一種方法是通過xml文檔配置相關(guān)參數(shù)。本文選取載入XML配置文檔的方法實現(xiàn),因為通過XML文檔加載需要記錄的方式很靈活,可以隨時添加、刪除、修改所需的參數(shù),具有良好的擴展性。
表1 XML的特點Tab.1 The character of XML
FlightGear通過命令行啟動時可以通過命令--config=path(配置文件的路徑和文件名)此條命令載入相關(guān)配置,如配置文件log-config.xml保存在cProgram FilesFlightGear下,則用命令:
--config="C:Program FilesFlightGearlog-config.xml"載入。通過此方式保存的數(shù)據(jù)格式為CSV(逗號分隔值文件),下面將具體的數(shù)據(jù)讀取和保存方法介紹如下:
首先建立一個XML格式的文檔,根據(jù)需要保存的數(shù)據(jù)進(jìn)行添加相關(guān)標(biāo)簽,關(guān)聯(lián)相關(guān)變量當(dāng)程序運行時就會將需要的數(shù)據(jù)保存在指定的文件內(nèi)。下面以X軸加速度、地速和海拔高度為例進(jìn)行說明:
以上是保存X軸加速度、地速和高度的XLM配置文件,<enabled>true</enabled>定義模擬飛行時啟動數(shù)據(jù)保存;<filename>data.csv</filename>定義數(shù)據(jù)保存的名字和格式;<interval-ms>1000</interval-ms>定義采集數(shù)據(jù)的時間間隔,單位為毫秒;<delimiter>,
</delimiter>定義數(shù)據(jù)之間的分割符,為逗號;在<entry>標(biāo)簽起始和</entry>結(jié)束之間就是定需要保存的數(shù)據(jù)和具體路徑,<title>x-accel</title>定義要讀取和保存變量的名稱,為X軸方向的加速度;<property>/accelerations/pilot/x-accelfps_sec</property>定義X軸方向加速的的具體路徑和單位;路徑和單位必須和內(nèi)部存儲器保持一致,否則將會出現(xiàn)錯誤。以下兩個變量定義方式同上,這里就不在贅述。同理要讀取和保存其它變量和數(shù)據(jù)的方法也同上(可以同時保存兩個相同的數(shù)據(jù))。某段飛行時保存的數(shù)據(jù)(時間、X軸加速度、俯仰角、地速、滾轉(zhuǎn)角、俯仰角、航向角)如圖4所示。
圖4 飛行數(shù)據(jù)日志Fig.4 Flight data log
2)飛行數(shù)據(jù)的處理
記錄和保存的飛行數(shù)據(jù)可以直接被評價模塊調(diào)用,評價模塊的主界面、數(shù)據(jù)載入和成績輸出界面如圖5所示。評價模塊是以VC++6.0為平臺開發(fā)的,可以通過載入的模擬飛行數(shù)據(jù)與預(yù)定航線數(shù)據(jù)進(jìn)行比較,按照一定的規(guī)則和權(quán)重,計算出模擬飛行的成績,如圖6所示。
通過評價結(jié)果中顯示不同飛行階段的飛行成績和飛行變量的曲線,能夠很直觀的反映出每個飛行階段的狀況,便于飛行人員對照檢查。
圖5 流程界面Fig.5 Process interface
圖6 成績和飛行曲線Fig.6 Result and flight curve
評價模塊把整個飛行分為起飛滑行、爬升、平飛、降落4個階段,可以分別計算出這4個階段的飛行成績,最后以不同權(quán)重求和得出最后的總成績。評價模塊的階段指標(biāo)和權(quán)重可以自行設(shè)置,根據(jù)不同機型,不同的飛行任務(wù)進(jìn)行修改調(diào)整,如圖7所示。
1)通過加載數(shù)據(jù)采集的XML配置文件,實現(xiàn)了對FLightGear飛行模擬軟件的數(shù)據(jù)的采集,解決了FlightGear自帶的日志記錄系統(tǒng)記錄數(shù)據(jù)個數(shù)有限的缺點。此方法可以根據(jù)評價模塊所需數(shù)據(jù),設(shè)置配置文件采集和記錄所需參數(shù)。
2)通過評價模塊載入記錄的數(shù)據(jù),可以對訓(xùn)練人員進(jìn)行測評得出的成績,可以作為輔助考核的一項指標(biāo)。并且可以對評價的指標(biāo)和不同階段的權(quán)重進(jìn)行設(shè)置,滿足了對新增機型和不同任務(wù)的匹配,有很好的擴展性。
FlightGear以其開源性和靈活性等特點,已經(jīng)成為眾多學(xué)者學(xué)術(shù)研究的最佳選擇。在未來飛行模擬軟件的設(shè)計和應(yīng)用中,F(xiàn)lightGear將會得到更多的關(guān)注和應(yīng)用,本文實現(xiàn)的數(shù)據(jù)采集方式和評價模塊的加入將對基于FLightGear設(shè)計的飛行模擬軟件有一定的實用價值。
圖7 評價系統(tǒng)的設(shè)置Fig.7 Evaluation system setting
[1] 劉興堂,萬少松,張雙選.論軍用模擬訓(xùn)練器/系統(tǒng)的發(fā)展趨勢[J].系統(tǒng)仿真學(xué)報,2009,2(4):19-21.LIUXin-tang,WANShao-song,ZHANGShuang-xuan.Concerning military simulator/system development trend[J].Journal of System Simulation,2009,2(4):19-21.
[2] 黃華,徐幼平,鄧志武.基于FlightGear模擬器的實時可視化仿真系統(tǒng)[J].系統(tǒng)仿真學(xué)報,2007,19(19):72-74.HUANG Hua,XU You-ping,DENG Zhi-wu.Real-time visual flight simulation system based on FlightGear simulator[J].Journal of System Simulation,2007,19(19):72-74.
[3] Burns R S.Development of a Low-Cost simulator for demonstration and engineer[C]//Training,Proceeding of the AIAA,2003:5852-5758.
[4] 王行仁.飛行實時仿真系統(tǒng)及技術(shù)[M].北京:北京航空航天大學(xué)出版社,1998.
[5] 尹泉,侯力,王玫,等.XML網(wǎng)頁開發(fā)實例教程[M].機械工業(yè)出版社,2002.
[6] 曾春平,王超,張鵬.XML編程從入門到精通[M].北京:希望電子出版社,2002.
[7] 張昌宏,王嘩,丁展春.基于XML的企業(yè)應(yīng)用集成方法研究[J].艦船電子工程,2005(6):81-84.ZHANG Chang-hong,WANG Hua,DING Zhan-chun.Based on XML enterprise application integration method[J].Ship Electronic Engineering,2005(6):81-84.
[8] 張銀鶴,張秋香,孫膺.XML實踐教程[M].北京:清華大學(xué)出版社,2007.