張紹澤,任 磊,程 翔
基于JSBSim的可視化飛行仿真系統(tǒng)
張紹澤,任 磊,程 翔
(中國電子科技集團(tuán)公司第二十研究所,西安 710068)
為了模擬一個(gè)具有高真實(shí)感飛行動力學(xué)模型,并且擴(kuò)展后可以與聯(lián)合作戰(zhàn)仿真系統(tǒng)中其它武器裝備進(jìn)行交互的飛行器,本文使用Unity開發(fā)了一套基于JSBSim飛行動力學(xué)模型的可視化飛行仿真系統(tǒng)。該仿真系統(tǒng)先對輸入設(shè)備的輸入數(shù)據(jù)進(jìn)行解析,然后利用JSBSim飛行動力學(xué)模型進(jìn)行計(jì)算,最后根據(jù)計(jì)算結(jié)果對飛機(jī)的姿態(tài)、位置和速度等信息進(jìn)行更新,可實(shí)現(xiàn)飛機(jī)姿態(tài)控制、狀態(tài)信息及三維地形顯示等功能。實(shí)驗(yàn)結(jié)果表明,開發(fā)的飛行仿真系統(tǒng)可以有效地模擬飛機(jī)的橫滾、俯仰、偏轉(zhuǎn)和加油等操作,實(shí)現(xiàn)飛機(jī)的可視化飛行仿真。經(jīng)過擴(kuò)展后,該仿真系統(tǒng)還可用于聯(lián)合作戰(zhàn)仿真中飛機(jī)的模擬。
JSBSim;Unity;聯(lián)合作戰(zhàn)仿真;飛行仿真
現(xiàn)代信息技術(shù)的飛速發(fā)展促使當(dāng)今軍事領(lǐng)域作戰(zhàn)模式不斷發(fā)生著變革。作戰(zhàn)模式從以往的單一作戰(zhàn)模式發(fā)展到了目前高技術(shù)條件下的海、陸、空、天、電多維一體的諸軍兵種聯(lián)合作戰(zhàn)模式。聯(lián)合作戰(zhàn)已經(jīng)逐漸成為高技術(shù)條件下局部戰(zhàn)爭的主要形式,而采用計(jì)算機(jī)仿真技術(shù)模擬聯(lián)合作戰(zhàn)是研究聯(lián)合作戰(zhàn)的重要手段[1]。
在聯(lián)合作戰(zhàn)仿真中,需要模擬海、陸、空等不同軍種的武器裝備,飛機(jī)作為空軍武器裝備的主要組成部分,其模擬程序的開發(fā)成為研究熱點(diǎn)。FlightGear是一款開源、跨平臺的飛行模擬程序,主要使用YASim、JSBSim和UIUC三種飛行動力學(xué)模型,提供了極具真實(shí)感的實(shí)時(shí)飛行視景和座艙顯示[2]。除此之外,F(xiàn)lightGear還提供多種開放接口,可由Matlab、STA32等程序驅(qū)動,實(shí)現(xiàn)飛行仿真或試飛數(shù)據(jù)回放等[3]。已有多位學(xué)者利用FlightGear進(jìn)行飛行仿真系統(tǒng)的開發(fā)。黃華等[4]利用Matlab/Simulink模擬非線性六自由度飛行模型,使用飛行航跡/姿態(tài)等仿真數(shù)據(jù)驅(qū)動FlightGear進(jìn)行可視化飛行仿真。王領(lǐng)等[5]與黃華等方法類似,建立了一種用于空戰(zhàn)的可視化飛行仿真系統(tǒng)。蔚海軍等[6]和劉鵬等[7]利用FlightGear建立直升機(jī)的動力學(xué)模型,并進(jìn)行可視化飛行仿真。但是以上飛行仿真系統(tǒng)主要用于飛機(jī)的飛行仿真,沒有考慮將系統(tǒng)接入聯(lián)合作戰(zhàn)仿真系統(tǒng),并與系統(tǒng)中其它武器裝備進(jìn)行交互,因此不適合模擬聯(lián)合作戰(zhàn)仿真中的飛機(jī)。
為了解決以上問題,本文基于JSBSim飛行動力學(xué)模型,使用Unity開發(fā)了一套可視化飛行仿真系統(tǒng)。實(shí)驗(yàn)結(jié)果表明,該飛行仿真系統(tǒng)不僅可以有效地模擬飛機(jī)飛行,擴(kuò)展后還可以與聯(lián)合作戰(zhàn)仿真系統(tǒng)中其它武器裝備進(jìn)行交互,可用于飛行仿真訓(xùn)練、聯(lián)合作戰(zhàn)仿真環(huán)境中的飛機(jī)模擬等。
JSBSim是一個(gè)開源的六自由度非線性飛行動力學(xué)模型,可以在不同操作系統(tǒng)中編譯運(yùn)行[8]。其主要功能是根據(jù)輸入的數(shù)據(jù)對飛行器的空氣動力特性進(jìn)行計(jì)算,解算飛行器的六自由度運(yùn)動方程以及對因大氣環(huán)境變化、飛行器起落架和襟翼收放等構(gòu)形變化對飛行造成的影響進(jìn)行仿真和解算。
從文件組成上,JSBSim模型主要包括基于C++語言編寫的代碼文件和基于XML語言編寫的配置文件兩部分。代碼文件定義了JSBSim模型動力學(xué)仿真的實(shí)現(xiàn)方法;而飛行器的配置文件定義了不同類型飛行器的幾何、質(zhì)量、氣動、推進(jìn)、控制及起落裝置等動力學(xué)特征以及模型需要的參數(shù)配置。JSBSim模型的程序代碼和模型數(shù)據(jù)分離,只需修改XML文件中有關(guān)飛行器的配置數(shù)據(jù),就能實(shí)現(xiàn)不同飛行器的仿真[9]。
JSBSim沒有原生的圖形界面,可以根據(jù)初始狀態(tài)參數(shù)和運(yùn)行腳本單獨(dú)運(yùn)行,實(shí)現(xiàn)離線非實(shí)時(shí)仿真;也可以作為子程序或子函數(shù)由其它外部程序調(diào)用,實(shí)現(xiàn)外部程序所需的在線實(shí)時(shí)仿真或離線非實(shí)時(shí)仿真。其仿真結(jié)果可按配置文件要求輸出相應(yīng)數(shù)據(jù)到指定的文件或網(wǎng)絡(luò)端口,便于分析處理和網(wǎng)絡(luò)應(yīng)用[3]。
本系統(tǒng)將JSBSim作為系統(tǒng)的子程序調(diào)用,利用其進(jìn)行飛行動力學(xué)計(jì)算,并通過網(wǎng)絡(luò)端口與其進(jìn)行數(shù)據(jù)交互。
該仿真系統(tǒng)通過飛行搖桿和油門模擬控制器對飛機(jī)進(jìn)行控制,控制信息經(jīng)過解析后利用基于JSBSim的飛行動力學(xué)模型進(jìn)行飛行動力學(xué)計(jì)算,計(jì)算結(jié)果對三維飛機(jī)模型的姿態(tài)和位置等信息進(jìn)行更新,并將相關(guān)信息顯示在平視顯示器(Head Up Display,HUD)上,最后對三維飛機(jī)模型、三維地形和HUD等進(jìn)行渲染顯示。系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)框圖
飛行搖桿和油門模擬控制器成本低、易上手,通過它可以實(shí)現(xiàn)方向舵、升降舵、副翼以及油門控制等飛行操作,因此選擇它作為輸入設(shè)備對飛機(jī)進(jìn)行控制。飛行搖桿和油門模擬控制器通過USB接口與計(jì)算機(jī)連接,利用SharpDX.DirctInput.dll提供的API接口實(shí)現(xiàn)飛行搖桿和油門狀態(tài)數(shù)據(jù)的獲取解析。
飛行動力學(xué)計(jì)算模塊基于JSBSim飛行動力學(xué)模型實(shí)現(xiàn)。該模塊先根據(jù)飛機(jī)的配置文件和初始化文件調(diào)用JSBSim程序創(chuàng)建飛機(jī)的動力學(xué)模型;然后將解析的輸入數(shù)據(jù)編碼為JSBSim的控制命令并通過網(wǎng)絡(luò)通信模塊發(fā)送給JSBSim進(jìn)行解算;最后,解算結(jié)果中所需的屬性通過網(wǎng)絡(luò)通信模塊發(fā)送給JSBSim輸出解碼模塊進(jìn)行解碼。該模塊的框圖如圖2所示。
圖2 飛行動力學(xué)計(jì)算模塊框圖
(1)JSBSim程序調(diào)用
調(diào)用JSBSim時(shí),以飛機(jī)名稱及初始化文件名稱作為參數(shù),然后JSBSim根據(jù)參數(shù)尋找對應(yīng)的飛機(jī)配置文件和初始化文件創(chuàng)建飛機(jī)動力學(xué)模型并開始模擬[10]。
(2)網(wǎng)絡(luò)通信
JSBSim可以通過TCP/IP和UDP方式進(jìn)行網(wǎng)絡(luò)通信,實(shí)現(xiàn)控制命令接收及飛行動力學(xué)計(jì)算結(jié)果輸出[11]。本文使用UDP的方式進(jìn)行網(wǎng)絡(luò)通信,創(chuàng)建了UDP客戶端和UDP服務(wù)器。其中,UDP客戶端用來向JSBSim發(fā)送控制命令,UDP服務(wù)器用來接收J(rèn)SBSim的輸出數(shù)據(jù)。
(3)JSBSim命令編碼
根據(jù)搖桿和油門不同操作綁定的功能將解析的輸入數(shù)據(jù)編碼為JSBSim的控制命令,然后通過網(wǎng)絡(luò)通信模塊的UDP客戶端發(fā)送給JSBSim。
(4)JSBSim輸出解碼
JSBSim輸出解碼模塊根據(jù)飛機(jī)配置文件中輸出屬性的順序及編碼方式對從網(wǎng)絡(luò)通信模塊中UDP服務(wù)器接收的數(shù)據(jù)進(jìn)行解碼,從而得到飛行姿態(tài)、飛行高度和飛行速度等信息。
該模塊根據(jù)JSBSim的輸出解碼結(jié)果對飛機(jī)三維模型的飛行姿態(tài)(如俯仰、偏轉(zhuǎn)和橫滾等)、可控部分的位置及旋轉(zhuǎn)角度(如副翼、升降舵、方向舵、尾噴口和起落架等)、地理位置(如經(jīng)度、緯度和高度等)等進(jìn)行控制,使飛機(jī)三維模型反映出當(dāng)前飛機(jī)的狀態(tài)。
HUD顯示的信息包括高度、速度、航向、俯仰和位置等,其通過Unity中的Image和Text組件實(shí)現(xiàn)。在程序運(yùn)行時(shí),HUD根據(jù)JSBSim輸出解碼的結(jié)果對顯示的信息進(jìn)行更新,使用戶直觀地了解當(dāng)前的飛行狀態(tài)。
該系統(tǒng)中的三維地形創(chuàng)建主要包含地形網(wǎng)格創(chuàng)建和紋理創(chuàng)建兩部分。其中,地形數(shù)據(jù)使用FlightGear程序中的BTG格式的高程數(shù)據(jù),紋理使用Google地圖的紋理數(shù)據(jù)。創(chuàng)建地形時(shí),先根據(jù)每個(gè)BTG文件對應(yīng)的地形塊高程數(shù)據(jù)創(chuàng)建地形網(wǎng)格;然后根據(jù)地形塊的經(jīng)緯度范圍創(chuàng)建相應(yīng)的紋理,并將紋理貼到地形塊上;最后將多個(gè)地形塊按經(jīng)緯度排列拼接實(shí)現(xiàn)三維地形的創(chuàng)建。
利用Unity的渲染系統(tǒng)對飛機(jī)三維模型、三維地形和HUD等進(jìn)行渲染顯示,實(shí)現(xiàn)飛行仿真的可視化。
為了驗(yàn)證開發(fā)系統(tǒng)的有效性,本文以F/A-18C飛機(jī)為例進(jìn)行了仿真實(shí)驗(yàn)。實(shí)驗(yàn)在Windows7 X64位環(huán)境下運(yùn)行,使用的Unity版本為5.6.0f3,電腦配置為:Intel Core i7-4790 3.6 GHz CPU,16 GB內(nèi)存,NVIDIA GeForce GTX 1070顯卡。操控設(shè)備為羅技X52 Professional HOTAS油門和搖桿模擬控制器。
飛機(jī)在機(jī)場跑道上起飛前的初始姿態(tài)如圖3所示。根據(jù)搖桿及油門控制器的輸入可以對飛機(jī)副翼、升降舵、方向舵、發(fā)動機(jī)噴口和起落架等進(jìn)行控制,從而實(shí)現(xiàn)橫滾、俯仰、偏轉(zhuǎn)、加減推力和收放起落架等操作,結(jié)果如圖4~圖6所示。與圖3相比,圖4~圖6中的飛機(jī)加大了油門,并收起了起落架。圖7顯示了HUD,可以獲取包括高度、速度、方位、俯仰和經(jīng)緯度等信息。
圖3~圖7表明,該仿真系統(tǒng)可以創(chuàng)建高真實(shí)感的三維地形并有效地模擬飛機(jī)飛行。
該仿真系統(tǒng)添加雷達(dá)、武器和通信等模塊并接入自研的聯(lián)合作戰(zhàn)仿真系統(tǒng)后,還可以與仿真系統(tǒng)中的其它武器裝備進(jìn)行交互。如顯示探測到的敵我雙方兵力、鎖定目標(biāo)和發(fā)射導(dǎo)彈打擊目標(biāo)等。結(jié)果如圖8~圖9所示。
圖3 飛機(jī)初始姿態(tài)
圖4 控制副翼實(shí)現(xiàn)左傾
圖5 控制方向舵實(shí)現(xiàn)右轉(zhuǎn)
圖6 控制升降舵實(shí)現(xiàn)爬升
圖7 HUD
圖8 顯示探測的敵我雙方兵力并鎖定目標(biāo)
圖9 發(fā)射導(dǎo)彈打擊目標(biāo)
圖8(a)顯示了雷達(dá)探測到的敵我雙方兵力,圖8(b)中飛機(jī)上方顯示的方框?yàn)殒i定的目標(biāo)。圖9中飛機(jī)下方的方框框選的物體為打擊目標(biāo)發(fā)射的導(dǎo)彈。圖8~圖9表明該仿真系統(tǒng)可與聯(lián)合作戰(zhàn)仿真系統(tǒng)中其它武器裝備進(jìn)行交互,可用于聯(lián)合作戰(zhàn)仿真中飛機(jī)的模擬。
本文基于JSBSim飛行動力學(xué)模型開發(fā)了一套可用于聯(lián)合作戰(zhàn)仿真的可視化飛行仿真系統(tǒng)。該仿真系統(tǒng)根據(jù)控制信息使用JSBSim進(jìn)行飛行動力學(xué)計(jì)算,并根據(jù)計(jì)算結(jié)果對飛機(jī)姿態(tài)、位置和速度等信息進(jìn)行更新,可實(shí)現(xiàn)飛機(jī)姿態(tài)控制、狀態(tài)信息及三維地形顯示等功能。實(shí)驗(yàn)結(jié)果表明,開發(fā)的可視化飛行仿真系統(tǒng)可以有效地模擬飛機(jī)橫滾、偏轉(zhuǎn)、俯仰和加油等操作,可用于飛機(jī)模擬仿真訓(xùn)練和聯(lián)合仿真系統(tǒng)中飛機(jī)的模擬等。
[1] 胡曉峰,楊鏡宇,司光亞,等. 戰(zhàn)爭復(fù)雜系統(tǒng)仿真分析與實(shí)驗(yàn)[M]. 北京:國防大學(xué)出版社,2008.
[2] The FlightGear Flight Simulator [P/OL]. https://www. flightgear.org/Docs/.
[3] 劉紅,張雷. 基于JSBSim/Flightgear的六自由度飛行仿真研究[J]. 中國民航飛行學(xué)院學(xué)報(bào),2018,29(03):44-48.
[4] 黃花,徐幼平,鄧志武. 基于Flightgear模擬器的實(shí)時(shí)可視化飛行仿真系統(tǒng)[J]. 系統(tǒng)仿真學(xué)報(bào),2007(19):4421-4423.
[5] 王領(lǐng),張斌,左星星. 一種空戰(zhàn)任務(wù)可視化仿真系統(tǒng)的開發(fā)[J]. 計(jì)算機(jī)仿真,2012,29(05):42-46.
[6] 蔚海軍. 基于FlightGear的直升機(jī)飛行模擬系統(tǒng)研究[D]. 大連:大連理工大學(xué),2008.
[7] 劉鵬. 基于FlightGear的無人直升機(jī)飛行仿真技術(shù)研究[D]. 南京:南京航空航天大學(xué),2011.
[8] Jon S Berndt. JSBSim: An Open Source Flight Dynamics Model in C++[C]. Proceeding of AIAA, 2004: 4919-4923.
[9] 岳顯,吉華,王強(qiáng),等. 基于JSBSim模型飛行能力初步評估系統(tǒng)的研究與實(shí)踐[J]. 計(jì)算機(jī)應(yīng)用與軟件,2015,32(04):96-99,190.
[10] Jon S Berndt. Progress on and Usage of the Open Source Flight Dynamics Model Software Library, JSBSim[J]. AIAA, 2009: 2009-5699.
[11] Jon S Berndt and the JSBSim Development Team. JSBSim Reference Manual[K]. 2011.
Visual Flight Simulation System Based on JSBSim
ZHANG Shaoze, REN Lei, CHENG Xiang
In order to simulate an aircraft with high realism flight dynamics model, and after expansion, it can interact with other weapons in joint operation simulation. The paper develops a visual flight simulation system based on JSBSim flight dynamics model with Unity. The simulation system first analyzes the input data of the input device, then uses JSBSim flight dynamics model to calculate, and finally updates the aircraft attitude, position, speed and other information according to the calculation results. It can realize the functions of aircraft attitude control, state information and 3D terrain display. The experimental results show that the developed flight simulation system can effectively simulate the roll, pitch, yaw, refueling and other operations of the aircraft, and realize visual flight simulation of the aircraft. After expansion, the simulation system can also be used for aircraft simulation in joint operation simulation.
JSBSim; Unity; Joint Operation Simulation; Flight Simulation
V211
A
1674-7976-(2021)-04-271-05
2021-02-22。張紹澤(1985.06-),黑龍江富錦人,博士,工程師,主要研究方向?yàn)槿S場景仿真和VR仿真。