馬騰達
(中國民航大學 電子信息與自動化學院,天津 300300)
在傳統(tǒng)的飛機飛控系統(tǒng)教學中,通常采用Matlab等軟件對飛行控制律進行仿真,以曲線形式顯示飛機的姿態(tài)、舵面等數(shù)據(jù),這種演示方式直觀性不強,學生的學習難度較大。在現(xiàn)代教學中,虛擬仿真作為一種直觀有效的教學手段,能夠使用更少的資金投入,使學生們獲得更加真實的教學體驗[1]。文獻[2-4]分別基于不同的虛擬平臺對航跡回放展開了研究。本項目利用虛擬仿真技術(shù),基于P3D平臺,設(shè)計了飛機飛行航跡數(shù)據(jù)回放演示程序。本程序能夠在P3D虛擬場景中將飛行航跡數(shù)據(jù)利用虛擬飛機進行展示,即時生成飛機運動軌跡,反映飛機的飛行特性,能夠?qū)⒔虒W中需要說明的各種概念以真實形象的三維場景表現(xiàn)出來,大大降低了學生的抽象思維難度,增加了學生的學習興趣。
P3D(Prepar3D)是由洛克希德·馬丁公司推出的一款飛行模擬軟件,其目標是針對教育、培訓機構(gòu)以及軍方定制的模擬軟件。P3D提供了SDK,能夠進行二次開發(fā),將P3D內(nèi)的數(shù)據(jù)與外部進行交互,P3D虛擬場景如圖1所示。

圖1 P3D虛擬場景
為了控制P3D平臺中虛擬飛機的運動狀態(tài),采用Qt軟件平臺,開發(fā)了與P3D平臺的數(shù)據(jù)接口,并封裝為數(shù)據(jù)控制類。數(shù)據(jù)控制類的結(jié)構(gòu)如圖2所示。類中提供了initSend()、endSend()和SendCommand()幾種函數(shù)。其中initSend()函數(shù)能夠?qū)崿F(xiàn)連接P3D平臺的功能,end-Send()函數(shù)能夠?qū)崿F(xiàn)斷開P3D的功能,而SendCommand函數(shù)能夠?qū)⒖刂泼顐鬏斨罰3D中,進而驅(qū)動虛擬飛機按照命令進行運動。

圖2 數(shù)據(jù)控制類的結(jié)構(gòu)
在基本的飛行航跡數(shù)據(jù)回放中,需要用到姿態(tài)和位置兩種信息,主要包括高度、空速、俯仰角、橫滾角、航向角、經(jīng)度、緯度等參數(shù),為了更好地體現(xiàn)飛行效果,還包括對起落架、副翼、升降舵、方向舵等參數(shù)的控制。數(shù)據(jù)控制類中的SendCommand()函數(shù),能夠?qū)@些參數(shù)進行控制,驅(qū)動虛擬飛機按照指定參數(shù)運動。
1.總體結(jié)構(gòu)。飛行航跡數(shù)據(jù)回放演示程序是在Qt開發(fā)環(huán)境下進行設(shè)計的。Qt是一個跨平臺應用程序和UI開發(fā)框架[5,6],程序總體結(jié)構(gòu)如圖3所示。

圖3 程序的總體結(jié)構(gòu)
(1)P3D驅(qū)動模塊。首先要將設(shè)計的程序連接到P3D模擬飛行系統(tǒng),采用數(shù)據(jù)控制類實現(xiàn)該功能。在程序界面上設(shè)置兩個按鈕,分別為“連接P3D”“斷開P3D”。為了判斷程序是否連接成功,在界面上有一個連接信號指示燈。在與P3D連接成功后,用戶選擇飛行航跡數(shù)據(jù)文件,從文件中得到有效的飛行航跡數(shù)據(jù)后,在后臺進行數(shù)據(jù)處理程序,對數(shù)據(jù)進行分析讀取,并通過數(shù)據(jù)控制類中的SendCommand () 函數(shù)傳輸?shù)絇3D中。
(2)回放控制模塊。完成飛機的飛行回放過程需要知道飛機的位置和姿態(tài)信息。獲取飛行航跡數(shù)據(jù)后,以一定頻率輸出數(shù)據(jù),飛機即可再現(xiàn)飛行過程,同時控制飛機的舵面進行顯示。在程序中,對飛行回放有開始、暫停、快進、慢放、停止、重新回放六種功能。要實現(xiàn)飛行數(shù)據(jù)的定時傳輸,采用定時器對傳輸周期進行設(shè)定,而快進慢放功能的實現(xiàn)也通過定時器進行設(shè)置。當定時器的頻率變快,回放過程就將加快,當定時器的頻率減慢,回放過程就變慢。在對回放進行開始暫停功能時,則是對定時器調(diào)用啟動和停止函數(shù)。
(3)航跡顯示模塊。當飛機在飛行航跡回放過程中,用戶需要觀察飛機當前的飛行狀態(tài)。航跡顯示模塊將飛機的位置、姿態(tài)、舵面信息通過列表的方式進行顯示。為了能夠完整地觀察整個飛行過程,航跡顯示模塊還具有曲線顯示功能,以曲線圖表的形式展示高度、速度、姿態(tài)、舵面等信息。
(4)進度條模塊。為了方便用戶掌握飛行回放進度,在程序界面中設(shè)計一個進度條。飛行進度條在讀取一次飛行數(shù)據(jù)后前進一小格,它的最大值即為飛行數(shù)據(jù)的總組數(shù)。拖動進度條會將讀取數(shù)據(jù)的組值設(shè)定為釋放后進度條的值,從而實現(xiàn)回放時的時間跳躍功能。
(5)飛行計時模塊。程序界面中有一計時器,記錄了飛行回放的累計時間。計時器每讀取一次飛行數(shù)據(jù)就進行一次計時,以實現(xiàn)對飛行時間的記錄。因為是對數(shù)據(jù)組的計算得出的飛行時間,所以通過進度條改變回放時間點時,不會影響飛行累計時間的計算。
2.工作流程。飛行航跡數(shù)據(jù)回放演示程序的工作流程如圖4所示。實現(xiàn)飛行航跡數(shù)據(jù)回放功能需要同時運行P3D模擬飛行軟件。程序之間的交互調(diào)用數(shù)據(jù)控制類中的相關(guān)函數(shù),實現(xiàn)控制P3D中虛擬飛機的運動狀態(tài)。

圖4 程序運行的總體流程
首先與P3D進行連接,然后判斷程序與P3D連接是否成功,連接成功界面右端的指示燈會由紅色變?yōu)榫G色,然后選擇飛行航跡數(shù)據(jù)。對數(shù)據(jù)進行解析后,開始回放,控制P3D平臺中的虛擬飛機按飛行航跡數(shù)據(jù)回放演示飛行過程。如果P3D未連接成功或未選擇文件就點擊開始回放按鈕,程序?qū)棾龃翱谔崾尽T陂_始回放后,有暫停、快進、慢放、重新開始的功能操作,方便對飛行回放的觀察。停止回放會回到未選擇文件的狀態(tài),并初始化界面所有部件。在回放結(jié)束時,會彈出窗口提示回放完成,程序回到初始選擇文件時的狀態(tài)。界面中還有實時顯示飛行參數(shù)的表格以及曲線圖表,方便對飛行情況進行分析。界面的最下方的進度條可查看飛行回放的進度情況。
選取某一飛行航跡,使用設(shè)計的飛機飛行航跡數(shù)據(jù)回放演示程序打開,軟件運行效果如圖5所示。

圖5 軟件運行效果
設(shè)計的程序能夠讀取飛行航跡數(shù)據(jù),并將整個飛行航跡以曲線的形式進行演示,能夠驅(qū)動P3D平臺的虛擬飛機按照指定的方式進行運動,完成了設(shè)計的功能。
開發(fā)的飛機飛行航跡數(shù)據(jù)回放演示程序,除了能夠應用于教學,也可作為虛擬飛機運動學仿真測試平臺,用于飛行操縱系統(tǒng)、自動飛行控制系統(tǒng)設(shè)計等項目的開發(fā),具有較好的應用前景。