趙文杰 劉鎮(zhèn)瑜 霍爍爍 宋 磊 楊曉宇 霍江濤
(63891部隊(duì) 洛陽(yáng) 471000)
在某些任務(wù)中,需要組織多種機(jī)型、多架飛機(jī)進(jìn)行協(xié)同飛行來(lái)構(gòu)建典型應(yīng)用場(chǎng)景,這些場(chǎng)景對(duì)飛機(jī)的飛行構(gòu)型有嚴(yán)格的要求。在這些任務(wù)的組織實(shí)施中,構(gòu)型的實(shí)時(shí)顯示是指揮員指揮的重要依據(jù)?,F(xiàn)有文獻(xiàn)中主要研究無(wú)人機(jī)集群協(xié)同飛行的控制算法、多機(jī)協(xié)同的模擬訓(xùn)練系統(tǒng)、分布式控制架構(gòu)系統(tǒng)等進(jìn)行研究[1~6],缺少針對(duì)多種機(jī)型協(xié)同飛行構(gòu)型與偏差實(shí)時(shí)顯示的相關(guān)研究。本系統(tǒng)著眼實(shí)際需求,開(kāi)展了基于實(shí)時(shí)數(shù)據(jù)接收分析、基于GIS的三維場(chǎng)景構(gòu)建、三維坐標(biāo)的二維分解顯示等技術(shù)研究,構(gòu)建了多機(jī)協(xié)同飛行空中構(gòu)型實(shí)時(shí)顯示系統(tǒng),為指揮人員提供直觀的顯示效果,為其指揮決策提供了依據(jù)。
多機(jī)協(xié)同飛行空中構(gòu)型實(shí)時(shí)顯示系統(tǒng)需要對(duì)多機(jī)數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)控、更新、交互,達(dá)到多機(jī)協(xié)同構(gòu)型顯示實(shí)時(shí)性、同步性、穩(wěn)定性等要求[1],其主要功能需求包括:
1)數(shù)據(jù)實(shí)時(shí)接收、處理。接收多機(jī)的實(shí)時(shí)測(cè)控?cái)?shù)據(jù),并進(jìn)行數(shù)據(jù)處理,轉(zhuǎn)換到統(tǒng)一坐標(biāo)系中,計(jì)算同理論構(gòu)型的偏差。
2)飛機(jī)位置與構(gòu)型顯示。根據(jù)飛機(jī)飛行數(shù)據(jù),實(shí)時(shí)顯示飛機(jī)在三維GIS中的位置與構(gòu)型。
3)構(gòu)型偏差實(shí)時(shí)顯示。將三維坐標(biāo)進(jìn)行二維映射,在三視圖中實(shí)時(shí)顯示飛機(jī)實(shí)際位置與理論位置,并顯示偏差值。
該系統(tǒng)主要分為數(shù)據(jù)接收分析處理和數(shù)據(jù)實(shí)時(shí)顯示兩個(gè)模塊,其功能設(shè)計(jì)圖如圖1所示。
圖1 軟件功能設(shè)計(jì)圖
數(shù)據(jù)接收分析處理數(shù)據(jù)接收分析處理模塊主要負(fù)責(zé)接收數(shù)據(jù),并對(duì)接收的數(shù)據(jù)進(jìn)行解析處理,將飛機(jī)經(jīng)緯高坐標(biāo)轉(zhuǎn)換到以某機(jī)為中心的站心坐標(biāo),并根據(jù)飛行方向,修正坐標(biāo)系指向,得到相對(duì)坐標(biāo)值,再根據(jù)理論構(gòu)型計(jì)算出構(gòu)型偏差。
數(shù)據(jù)的可視化模塊主要負(fù)責(zé)數(shù)據(jù)實(shí)時(shí)顯示,首先顯示多架飛機(jī)的實(shí)時(shí)測(cè)控鏈路數(shù)據(jù)狀況,其次在三維地理信息系統(tǒng)中顯示飛機(jī)的實(shí)時(shí)位置與構(gòu)型,最后以某機(jī)為坐標(biāo)原點(diǎn),實(shí)時(shí)顯示其他飛機(jī)在前后、左右、高度三個(gè)方向的相對(duì)位置與偏差情況。
空間一點(diǎn)P在大地經(jīng)緯高坐標(biāo)系中的坐標(biāo)(Lp,Bp,Hp),P點(diǎn)在大地直角坐標(biāo)系中的坐標(biāo)(Xp,Yp,Zp),所應(yīng)用的計(jì)算公式如下:
其中,橢球在緯度Bp處的卯酉圈曲率半徑(a是橢球的長(zhǎng)半徑,e是橢球的第一偏心率,WGS-84坐標(biāo)系中:a=66378137.0 m,e=1/298.257223563)。
空間一點(diǎn)P在大地經(jīng)緯高坐標(biāo)系中的坐標(biāo)(Lp,Bp,Hp),以某測(cè)站S為原點(diǎn)的站心水平面極坐標(biāo)系(測(cè)站S在大地經(jīng)緯高坐標(biāo)系中的坐標(biāo)是(LS,BS,HS),以測(cè)站S為原點(diǎn)的站心水平面極坐標(biāo)系的坐標(biāo)北與大地北的夾角為γ,如果以大地北為坐標(biāo)北,則γ=0°)。P點(diǎn)在以測(cè)站S為原點(diǎn)的站心水平面極坐標(biāo)系中的坐標(biāo)(rp,αp,βp)。
大地經(jīng)緯高坐標(biāo)到站心水平面極坐標(biāo)變換算法的功能分解具體的轉(zhuǎn)換步驟如下:
步驟1:利用上述式(1~3),P點(diǎn)在大地直角坐標(biāo)系中的坐標(biāo)(Xp,Yp,Zp)。
步驟2:利用上述式(1~3),測(cè)站S在大地直角坐標(biāo)系中的坐標(biāo)(Xs,Ys,Zs)。
步驟3:P點(diǎn)在以測(cè)站S為原點(diǎn)的站心水平面直角坐標(biāo)系中的坐標(biāo)(X'p,Y'p,Z'p)。
步驟4:P點(diǎn)在以測(cè)站S為原點(diǎn)的站心水平面極坐標(biāo)系中的坐標(biāo)(rp,αp,βp)。
因理論構(gòu)型中站心坐標(biāo)水平方向夾角的基準(zhǔn)并非是與正北方向的夾角,而是與航線方向的夾角,俯仰角與距離均不變,因此上述計(jì)算公式中αp應(yīng)減去航向與正北方向的夾角θ,即
所以P點(diǎn)在以測(cè)站S為原點(diǎn)的站心水平面構(gòu)型極坐標(biāo)系中的坐標(biāo)(rp,αp',βp)。由站心極坐標(biāo)轉(zhuǎn)換為空間直角坐標(biāo)(Xn,Yn,Zn)的公式為
假定飛機(jī)0處于P點(diǎn)位置,飛機(jī)n相對(duì)于飛機(jī)0的理論坐標(biāo)為(xn,yn,zn),則飛機(jī)n相對(duì)于飛機(jī)0與理論構(gòu)型的偏差為(Xn-xn,Yn-yn,Zn-zn)。
系統(tǒng)采用Microsoft Windows 7操作系統(tǒng)進(jìn)行開(kāi)發(fā),以Visual Studio 2010作為開(kāi)發(fā)平臺(tái),采用C#編程語(yǔ)言,具體開(kāi)發(fā)方法如下:
1)采用。Net中Socket類方法進(jìn)行網(wǎng)絡(luò)通信編程,實(shí)現(xiàn)多機(jī)測(cè)控鏈路的實(shí)時(shí)位置數(shù)據(jù)接收。
2)將接收到的數(shù)據(jù)進(jìn)行解析處理,通過(guò)坐標(biāo)轉(zhuǎn)換,將大地坐標(biāo)系下的經(jīng)度、緯度和高度坐標(biāo)轉(zhuǎn)換為以參考機(jī)為站心的水平面極坐標(biāo),再根據(jù)已知的理論構(gòu)型數(shù)據(jù)計(jì)算出實(shí)際偏差值。
3)利用STK軟件中的三維GIS進(jìn)行空間構(gòu)型顯示,調(diào)用STK的組件對(duì)象模型(COM)接口進(jìn)行二次開(kāi)發(fā),實(shí)現(xiàn)應(yīng)用程序嵌入STK三維顯示窗口,基于數(shù)字地球進(jìn)行精準(zhǔn)定位,實(shí)現(xiàn)多機(jī)位置實(shí)時(shí)更新與構(gòu)型實(shí)時(shí)顯示。
4)利用基于C#構(gòu)建的自定義圖表控件,通過(guò)三視圖的方式顯示飛機(jī)的理論相對(duì)位置、實(shí)際相對(duì)位置關(guān)系、報(bào)警閾值范圍以及與理論構(gòu)型的偏差。
4.2.1 數(shù)據(jù)分析處理模塊
系統(tǒng)接收到的數(shù)據(jù)一般為大地坐標(biāo)系下的經(jīng)度、緯度和高度坐標(biāo)數(shù)據(jù),以四機(jī)同飛為例理論構(gòu)型一般給出的形式如圖2所示:“以飛機(jī)0為基準(zhǔn),飛機(jī)1在飛機(jī)0的正前方1000m靠左300m的位置,飛機(jī)2在飛機(jī)0正前方1000m靠下300m的的位置,飛機(jī)3在飛機(jī)0正前方1000m靠下300m且靠左300m的位置”。若要計(jì)算出與理論構(gòu)型的偏差,需要將其他飛機(jī)的經(jīng)緯高坐標(biāo)轉(zhuǎn)換為以飛機(jī)0為原點(diǎn)的站心坐標(biāo),計(jì)算方法在本文第3節(jié)的坐標(biāo)轉(zhuǎn)換算法中已說(shuō)明。
圖2 四機(jī)協(xié)同飛行理論構(gòu)型示意圖
4.2.2 基于GIS的三維構(gòu)型態(tài)勢(shì)顯示
衛(wèi)星工具包(STK)是由美國(guó)Analytical Graphics公司(AGI)開(kāi)發(fā)的一款在航天領(lǐng)域處于領(lǐng)先地位的商業(yè)分析軟件[7]。STK通過(guò)精確的二維和三維視覺(jué)效果和分析數(shù)據(jù)輸出能夠幫助用戶增強(qiáng)對(duì)情景的感知和理解[8]。該軟件支持用戶進(jìn)行二次開(kāi)發(fā),用戶可以在程序中調(diào)用STK界面或?qū)TK引擎嵌入程序[9]。
本系統(tǒng)為實(shí)現(xiàn)多機(jī)位置實(shí)時(shí)更新與構(gòu)型實(shí)時(shí)顯示,利用STK的組件對(duì)象模型(COM)接口進(jìn)行二次開(kāi)發(fā)[10],實(shí)現(xiàn)應(yīng)用程序嵌入STK三維顯示窗口,基于三維數(shù)字地球進(jìn)行飛機(jī)的精準(zhǔn)定位與顯示,主要過(guò)程如下:
步驟一:場(chǎng)景編輯。打開(kāi)STK軟件構(gòu)建相應(yīng)的三維場(chǎng)景,如加載地形及地圖影像、添加飛機(jī)對(duì)象并命名、添加飛機(jī)三維模型、設(shè)置場(chǎng)景及飛機(jī)對(duì)象為實(shí)時(shí)模式。
步驟二:構(gòu)建程序環(huán)境。首先添加飛機(jī)VS2010工程中添加調(diào)用STK對(duì)象模型的COM組建引用庫(kù),包括 AGI.STKObjects、AGI.STKUtil、AGI.STKVgt、AGI.STKX、AxAGI.STKX[11];
步驟三:加載三維場(chǎng)景。首先程序初始化并構(gòu)建STKObjectRoot對(duì)象,主要代碼為AGI.STKObjects.AgStkObjectRoot STKRoot=new AGI.STKObjects.AgStkObjectRoot()。其次加載三維場(chǎng)景,主要代碼為STKRoot.LoadScenario(stkfilepath),其中stkfilepath為已編輯并保存的STK場(chǎng)景.sc工程文件路徑;
步驟四:實(shí)時(shí)構(gòu)型顯示。啟動(dòng)軟件接收飛機(jī)數(shù)據(jù)并解算后,通過(guò)STK提供的Connect接口與STK進(jìn)行交互,實(shí)現(xiàn)多架飛機(jī)的實(shí)時(shí)移動(dòng)。主要代碼如下為:string strCommand="SetPosition*/Aircraft/"+FeiJiName+"LLA"+"""+day.ToString("dd MMM yyyy H:mm:ss.fff",System.Globalization.CultureInfo.CreateSpecificCulture("en-US"))+"""+L.ToString()+""+B.ToString()+""+H.ToString();STKRoot.ExecuteCommand(strCommand)[12]。其中 FeiJiName為需要實(shí)時(shí)驅(qū)動(dòng)的飛機(jī)名稱,L、B、H分別為當(dāng)前飛機(jī)的緯度、經(jīng)度、高度值。
程序運(yùn)行中的三維實(shí)時(shí)構(gòu)型圖如下圖3所示。
圖3 基于GIS的4機(jī)構(gòu)型三維構(gòu)型圖
4.2.3 自定義構(gòu)型顯示控件
為清晰顯示多機(jī)協(xié)同構(gòu)型同理論構(gòu)型的位置偏差,將三維坐標(biāo)進(jìn)行二維映射,分別從側(cè)視、俯視和后視三個(gè)角度顯示飛機(jī)構(gòu)型,主要顯示內(nèi)容包括各飛機(jī)理論位置、實(shí)時(shí)位置、飛機(jī)編號(hào)和報(bào)警閾值范圍等,為了便于分工和快速開(kāi)發(fā)需求,采用構(gòu)建自定義構(gòu)型顯示控件的方式進(jìn)行開(kāi)發(fā)。
本系統(tǒng)在Visual Studio 2010下使用C#開(kāi)發(fā)。NET自定義構(gòu)型顯示控件,先將Window控件庫(kù)UserControl基類集成一個(gè)類,通過(guò)設(shè)計(jì)視圖添加所需要的控件功能[13],利用雙坐標(biāo)模式,實(shí)現(xiàn)了不同顏色標(biāo)號(hào)點(diǎn)跡、不同粗細(xì)線型等的繪制以及坐標(biāo)標(biāo)尺的動(dòng)態(tài)范圍自動(dòng)調(diào)整功能,另外提供顯示網(wǎng)格、局部放大等功能,極大限度地實(shí)現(xiàn)了代碼重用和程序的快速開(kāi)發(fā),在該控件的設(shè)計(jì)實(shí)現(xiàn)中,采用坐標(biāo)換算來(lái)實(shí)現(xiàn)顯示和局部放大??丶@示效果如下圖4所示。
圖4 自定義構(gòu)型顯示控件
本系統(tǒng)運(yùn)行效果如圖5所示,界面均分為四個(gè)區(qū)域,左上角以標(biāo)簽的形式來(lái)進(jìn)行構(gòu)型偏差值顯示、數(shù)據(jù)狀態(tài)顯示、三維構(gòu)型(理論)顯示、動(dòng)態(tài)構(gòu)型顯示以及系統(tǒng)參數(shù)設(shè)置等,構(gòu)型偏差主要顯示轉(zhuǎn)換到某機(jī)為原點(diǎn)的坐標(biāo)系中相對(duì)理論構(gòu)型在前后、左右、高度的偏差值,數(shù)據(jù)狀態(tài)主要顯示飛機(jī)的數(shù)據(jù)接收狀態(tài),三維構(gòu)型則實(shí)時(shí)顯示飛機(jī)在三維GIS中的實(shí)時(shí)位置構(gòu)型,動(dòng)態(tài)構(gòu)型主要顯示構(gòu)型的理論要求,參數(shù)設(shè)置則用來(lái)設(shè)置系統(tǒng)運(yùn)行、計(jì)算需要的一些參數(shù),如系統(tǒng)接收網(wǎng)絡(luò)設(shè)置、數(shù)據(jù)刷新率、報(bào)警閾值、理論構(gòu)型參數(shù)設(shè)置等。
圖5 系統(tǒng)運(yùn)行界面效果圖
本文根據(jù)任務(wù)中對(duì)多機(jī)協(xié)同飛行空中構(gòu)型實(shí)時(shí)顯示的要求,結(jié)合現(xiàn)狀,基于.NET開(kāi)發(fā)平臺(tái),利用C#語(yǔ)言和STK軟件的二次開(kāi)發(fā),采用模塊化、組件化的設(shè)計(jì)方法,運(yùn)用了多種坐標(biāo)轉(zhuǎn)換算法,設(shè)計(jì)了多機(jī)協(xié)同飛行空中構(gòu)型實(shí)時(shí)顯示系統(tǒng)。系統(tǒng)實(shí)現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)實(shí)時(shí)接收、基于三維GIS的構(gòu)型實(shí)時(shí)顯示、三視圖相對(duì)位置實(shí)時(shí)顯示、理論偏差值實(shí)時(shí)顯示、位置偏離報(bào)警提示等功能,能夠有效顯示多機(jī)實(shí)時(shí)構(gòu)型,為指揮決策提供了有力支撐。