趙銀玲,李治國
(1.西安職業(yè)技術(shù)學(xué)院 陜西 西安 710032;2.中航工業(yè)西安飛行自動(dòng)控制研究所 陜西 西安 710065)
基于GL Studio的儀表面板開發(fā)及其應(yīng)用
趙銀玲1,李治國2
(1.西安職業(yè)技術(shù)學(xué)院 陜西 西安 710032;2.中航工業(yè)西安飛行自動(dòng)控制研究所 陜西 西安 710065)
運(yùn)動(dòng)的視景可以顯示出飛機(jī)的位置和姿態(tài),但視景沒有直觀的數(shù)據(jù)以供參考,所以在飛行視景中加入儀表是非常必要的。通過儀表的數(shù)據(jù)變化實(shí)時(shí)獲取飛機(jī)準(zhǔn)確的高度、速度、航向等信息,為研究無人機(jī)飛行運(yùn)動(dòng)過程提供直觀事實(shí)依據(jù)。文章從仿真建模到軟件模塊的實(shí)現(xiàn),較全面地介紹了一種專用虛擬儀表制作軟件-GL Studio,以無人機(jī)座艙為例,詳細(xì)說明了GL Studio的ActiveX代碼實(shí)現(xiàn)技術(shù)及嵌入視景時(shí)的關(guān)鍵問題和解決方法。該軟件在無人機(jī)半物理仿真試驗(yàn)中得到了很好的應(yīng)用,滿足了系統(tǒng)對實(shí)時(shí)性和流暢性的要求。
虛擬現(xiàn)實(shí);儀表;紋理;控件
近年來,隨著軍事科技的發(fā)展,高技術(shù)武器裝備在現(xiàn)代戰(zhàn)爭中得到了廣泛的應(yīng)用,越來越多的高技術(shù)武器已經(jīng)裝配到部隊(duì),對部隊(duì)的戰(zhàn)場訓(xùn)練和技術(shù)保障都產(chǎn)生了重大的影響[1]。由于高技術(shù)裝備造價(jià)貴、品種多、數(shù)量少,所以在實(shí)際裝備上開展操作和維修訓(xùn)練都越來越困難。虛擬現(xiàn)實(shí)技術(shù)的發(fā)展為部隊(duì)開展脫離實(shí)裝的訓(xùn)練提供了技術(shù)基礎(chǔ)[1-2]。
在虛擬座艙的仿真建模中,座艙中的儀表多種多樣,如地評議、高度表、空速表、平顯、航向表等。需要對座艙中的大量的儀表面板的行為,如指針的擺動(dòng)、指示燈的閃爍、旋鈕的轉(zhuǎn)動(dòng)、掃描線的移動(dòng)等進(jìn)行仿真。座艙面板的機(jī)械結(jié)構(gòu)復(fù)雜,利用傳統(tǒng)的建模工具,如3D Max、Solidwork等,建模工作量大,效率低,難度大。為此,座艙面板的建模使用一種快速、新型的建模工具——GL Studio,它支持照片級別的紋理,只要將欲仿真的面板的照片應(yīng)用為紋理即可[3],從而大大降低建模難度,減小了工作量,提高了效率,而且建模效果非常逼真。在目前無人機(jī)半物理仿真中的到了很好的使用。
無人機(jī)半物理仿真綜合測試系統(tǒng)由飛行仿真機(jī)(包括仿真主控機(jī)和目標(biāo)機(jī))、飛控計(jì)算機(jī)(以下簡稱飛控機(jī))、飛控臺、導(dǎo)航臺、視景計(jì)算機(jī)等組成。系統(tǒng)的結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
飛控臺和視景計(jì)算機(jī)以及導(dǎo)航臺之間均采用高速的網(wǎng)卡代替了傳統(tǒng)的串行通訊系統(tǒng),使得系統(tǒng)的傳輸效率和運(yùn)行速度都有大幅度的提高。導(dǎo)航臺通過TCP協(xié)議發(fā)送給飛控臺航路點(diǎn)信息,飛控臺接收、顯示并通過串口上傳給飛控機(jī)。飛控機(jī)通過串口RS232向飛控臺輸出遙測數(shù)據(jù)幀,其中包括無人機(jī)的經(jīng)度、緯度、高度、俯仰角、滾轉(zhuǎn)角、偏航角、空速、油量等。飛控臺接收并顯示,然后把相關(guān)數(shù)據(jù)通過UDP協(xié)議轉(zhuǎn)發(fā)給導(dǎo)航臺和視景計(jì)算機(jī)。
GL Studio是一個(gè)獨(dú)立平臺的快速原型工具,用來創(chuàng)建實(shí)時(shí)的、三維的、照片級的互動(dòng)圖形界面。它能與HLA/DIS仿真應(yīng)用相連;生成的C++和OpenGL源代碼可以單獨(dú)運(yùn)行,也可以嵌入其他應(yīng)用中;它能運(yùn)行于WindowsNT2000XP、TRIX和Linux等操作系統(tǒng)上[4-5]。
GL Studio設(shè)計(jì)器包括兩個(gè)主要的控制窗口和一個(gè)或多個(gè)編輯窗口。所有設(shè)計(jì)的對象的列表用一個(gè)可折疊的樹狀結(jié)構(gòu)來顯示。如圖2所示。GL Studio支持照片級紋理的應(yīng)用。一切多邊形對象都可以貼紋理。紋理工具可以讓你使用大多數(shù)格式的紋理,如TIFF,JPEG,SGI,BMP等。GL Studio設(shè)計(jì)器有10種圖像原型,包括規(guī)則多邊形、不規(guī)則曲線和TrueType文本對象。原型能被組合成更復(fù)雜的對象。設(shè)計(jì)器支持所有的繪圖操作,包括剪貼和粘貼、轉(zhuǎn)換、縮放、修剪、剔除、頂點(diǎn)編輯、插入和移除頂點(diǎn)、水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)、左旋轉(zhuǎn)、右旋轉(zhuǎn)、自由旋轉(zhuǎn)、扭曲、排列對象和改變繪圖順序等[7]。設(shè)計(jì)器支持文檔的多視圖,包括3個(gè)正投影視圖和一個(gè)自由視角的透視視圖。在每個(gè)視圖下可以以網(wǎng)格、文體和貼有紋理等方式來觀察。
圖2 GL Studio設(shè)計(jì)器界面
Vega是國內(nèi)仿真系統(tǒng)常用的實(shí)時(shí)驅(qū)動(dòng)軟件,它是MultiGen-Paradigm公司(MPI)以前最主要的三維實(shí)時(shí)驅(qū)動(dòng)軟件。MPI早在2003年就已經(jīng)停止對Vega開發(fā)和升級,Vega Prime作為Vega的升級版本主要改進(jìn)之處有:VegaPrime是基于C++平臺,而Vega是基于C平臺;VegaPrime的場景圖VSG(Vega Scene Graph)是高級跨平臺場景圖形應(yīng)用程序接口,取代了Vega的Performer;Vega是基于進(jìn)程的,VegaPrime是基于線程的;Vega通過C功能調(diào)用,而VegaPrime是通過模塊類。
GL Studio與VegaPrime二者結(jié)合,都采用C++代碼進(jìn)行開發(fā),使得儀表與視景之間的交互問題變得迎刃而解[8]。
3.1 ActiveX控件的建立與使用
視景系統(tǒng)采用GL Studio2.1的兩個(gè)向?qū)斫x表,GL Studio可生成.EXE的文件單獨(dú)運(yùn)行在其支持的操作系統(tǒng)上,也可生成ActiveX控件嵌入別的軟件平臺上。該系統(tǒng)首先采用生成可執(zhí)行文件的向?qū)斫x表,雖然這樣做并不能實(shí)現(xiàn)將儀表載入場景的目的,但是因?yàn)槿绻苯佑蒙?OCX控件,在沒有數(shù)據(jù)之前無法觀測到儀表的運(yùn)動(dòng)是否滿足要求,所以首先利用向?qū)?EXE文件,觀察儀表的運(yùn)動(dòng)是否滿足用戶的要求,然后再利用向?qū)?OCX控件嵌入視景[9-10]。
以座艙中儀表指針的轉(zhuǎn)動(dòng)為例,首先在GL Studio中通過紋理貼圖來建立實(shí)例對象 needle,在代碼編輯窗口variables中建立roll變量,在控制窗口的代碼編輯欄中新建Method為NewMethod,在GL Studio原有的Calculate(doudle time)中寫入指針轉(zhuǎn)動(dòng)的代碼:
動(dòng)態(tài)效果完成之后,再用ActiveX向?qū)梢粋€(gè)空的工程文件,將原產(chǎn)生的.gls文件,.h和.cpp文件改成和新建的空工程中的.gls文件,.h和.cpp文件的名字分別相同,這樣在*.h中就包含有公有的虛函數(shù)
因void zylClass::Calculate(double time)中的代碼的變量用戶不可知,所以我們使用新的方法NewMethod(),用戶可以隨意定義它的變量,將NewMethod()的函數(shù)體寫為
注冊控件之后就可以在ActiveX Control Test Continer中預(yù)覽所作控件的效果了。
3.2 GL Studio與VegaPrime坐標(biāo)系的解決方案
雖然GL Studio與VegaPrime都是在OpenGL基礎(chǔ)上的應(yīng)用,使用的都是右手坐標(biāo)系,但是VegaPrime的坐標(biāo)系與GL Studio的坐標(biāo)系又有所差別,如圖3所示。
圖3 坐標(biāo)系
所以在解決這個(gè)問題的時(shí)候可以將GL Studio的儀表直接設(shè)計(jì)在XOZ平面上或者將在XOY平面上設(shè)計(jì)的儀表在載入視景時(shí)繞X軸旋轉(zhuǎn)90度即可。文章采用的方法是還在XOY平面建立儀表,而在載入場景中時(shí)將儀表繞X軸旋轉(zhuǎn)90度。
3.3 GL Studio載入視景時(shí)的單位變換
在VegaPrime中根據(jù)場景的大小不同,坐標(biāo)所采用的是長度單位,例如可以是米、千米、英尺或英寸等。而在GL Studio中制作虛擬儀表是以像素為基本單位的。因此將GL Studio載入場景時(shí)是以1:1轉(zhuǎn)換的,即GL Studio載入視景時(shí)的一像素即為VegaPrime中的一米,所以在沒有任何處理的情況下儀表載入場景時(shí)非常大,所以要根據(jù)實(shí)際需要進(jìn)行縮小,解決方案是在程序中縮小儀表面板的大小,一般選擇在GL Studio中制作的儀表面板的0.3或0.4倍。
3.4 數(shù)據(jù)通信
無人機(jī)半物理仿真測試系統(tǒng)中不同設(shè)備之間根據(jù)需要采用不同的傳輸協(xié)議。不同的傳輸協(xié)議有不同的試用場合。TCP協(xié)議提供了一種可靠的面向連接的字節(jié)流運(yùn)輸層服務(wù)。它提供端到端的流量控制,并計(jì)算和驗(yàn)證一個(gè)強(qiáng)制性的端到端檢驗(yàn)和[11]。對數(shù)據(jù)的解算比較嚴(yán)格,采用TCP用戶最終數(shù)據(jù)的解釋將帶來額外系統(tǒng)開銷,適合海量數(shù)據(jù)的傳輸以及要求可靠性高的場合;而UDP是ISO參考模型中位于傳輸層的一種無連接的協(xié)議,提供面向操作的簡單非可靠信息傳送服務(wù),比TCP頭部消耗少,傳輸效率高,適合少量數(shù)據(jù)的傳輸和可靠性要求不是很高的場合[12]。
本例中導(dǎo)航臺的主要功能是任務(wù)規(guī)劃以及和飛控臺之間的以太網(wǎng)通信,它要求可靠發(fā)送航點(diǎn)信息,所以采用了TCP協(xié)議;由于視景計(jì)算機(jī)接收飛控臺發(fā)過來的數(shù)據(jù)量并不大而系統(tǒng)對于數(shù)據(jù)接收的流暢性要求較高,所以采用UDP傳輸協(xié)議來接收數(shù)據(jù)。UDP使用ioctlsocket函數(shù)將套結(jié)字設(shè)置為非阻塞,使數(shù)據(jù)接收更流暢。
Vega Prime應(yīng)用程序的運(yùn)行分為兩個(gè)主要的階段。首先是仿真系統(tǒng)的靜態(tài)設(shè)置階段,在這個(gè)階段中主要進(jìn)行包括內(nèi)存分配、參數(shù)設(shè)置、進(jìn)程分配等在內(nèi)的系統(tǒng)初始化和配置等,第二階段進(jìn)入仿真系統(tǒng)的動(dòng)態(tài)循環(huán),系統(tǒng)等待飛控臺傳送數(shù)據(jù),在沒有數(shù)據(jù)傳輸時(shí)系統(tǒng)處于等待狀態(tài),否則程序進(jìn)入飛行姿態(tài)設(shè)置和儀表驅(qū)動(dòng)顯示階段,一幀數(shù)據(jù)發(fā)送完畢則重新進(jìn)入下一個(gè)循環(huán),仿真應(yīng)用的主要過程都在這個(gè)階段中完成[3-13]。
3.5 視景和儀表驅(qū)動(dòng)的實(shí)現(xiàn)
在該實(shí)驗(yàn)系統(tǒng)中,飛控臺已確定的發(fā)送數(shù)據(jù)的時(shí)間為50 ms,首先通過套借口自定義函數(shù)recvfrom()將飛控臺每隔50 ms發(fā)過來的數(shù)據(jù)放到數(shù)據(jù)緩沖區(qū)數(shù)組buffer[10]中,其中在buffer[0],buffer[1],uffer[2]…buffer[5]中將分別存放無人機(jī)的位置參數(shù)x,y,z以及俯仰、滾轉(zhuǎn)、偏航的數(shù)據(jù)信息,這樣就完成了數(shù)據(jù)的接收任務(wù),然后使用setPlanePosition()函數(shù)將收到的數(shù)據(jù)轉(zhuǎn)換為飛機(jī)位置向量,偽代碼如下:
視景的驅(qū)動(dòng)首先新建一個(gè)類myApp*app=new myApp;然后調(diào)用用戶自定義的函數(shù)fly(),app->fly(),來實(shí)現(xiàn)飛行器的六自由度飛行仿真。偽代碼如下:
//對象指針指向無人機(jī)模型 getRotate(double*h,double*p,double*r)可以控制對象分別繞 X,Y,Z軸旋轉(zhuǎn)的數(shù)值,getTranslate(double*x,double*y,double*z)可以控制對象分別繞X,Y,Z軸平移的數(shù)值。
接收網(wǎng)絡(luò)數(shù)據(jù)完畢之后儀表的驅(qū)動(dòng)就直接使用接收過來的數(shù)據(jù),將接收的數(shù)據(jù)付給變量liner即可,以此類推[14]。運(yùn)行結(jié)果圖如圖4所示。
圖4 飛行視景效果
文中介紹了一種新型的儀表制作工具GL Studio,研究了儀表與視景結(jié)合的關(guān)鍵問題和解決方法,仿真結(jié)果表明,利用GL Studio制作飛行儀表形象逼真、速率快、效率高、生成代碼可讀性好,確實(shí)是儀表面板仿真的開發(fā)利器[9-15]。將其應(yīng)用于無人機(jī)半物理中仿針實(shí)驗(yàn)中,取得了良好的應(yīng)用效果。
[1]吳家鑄.視景仿真技術(shù)及應(yīng)用[M].西安:電子科技大學(xué)出版社,2002.
[2]耿通奮,無人機(jī)實(shí)時(shí)仿真與測試系統(tǒng)綜合設(shè)計(jì)[D].南京:南京航空航天大學(xué),2003.
[3]石瓊,無人機(jī)任務(wù)飛行的三維可視化[D].南京:南京航空航天大學(xué),2004.
[4]喬林,費(fèi)廣正等.OpenGL程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2000.
[5]夏衛(wèi)國,軍用視景仿真系統(tǒng)的開發(fā)和應(yīng)用研究[D].北京:北京理工大學(xué),2002.
[6]Jackie.Neider,Tom.Davis Mason.Woo.OpenGL Programming Guide[M].USA:Silicon Graphics Incoporation,1998.
[7]MultiGen.MetaFlight Concept Guide versoin1.2 February 2005.
[8]MultiGen.Creating Terrain Studio User’s Guide versoin1.2 February 2005.
[9]趙龍.無人機(jī)飛行控制仿真視景系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].南京:南京航空航天大學(xué),2006.
[10]黃健熙,毛鋒等.基于VegaPrime的大型流域三維管理系統(tǒng)實(shí)現(xiàn)[J].系統(tǒng)仿真學(xué)報(bào),2006(10):2819-2823.
[11]張德鋒,王華兵,等.基于Vega Prime的視景仿真技術(shù)研究與應(yīng)用[J].計(jì)算機(jī)仿真,2006,23(7):191-195.
[12]黃燕.三維地形地貌的可視化研究[D].北京:北京工業(yè)大學(xué),2002.
[13]廖巍.大規(guī)模地形的建模與動(dòng)態(tài)繪制技術(shù)研究[D].長沙:國防科學(xué)技術(shù)大學(xué),2002.
[14]王召福,金士堯.HLA仿真系統(tǒng)中 Lookahead的分析與動(dòng)態(tài)調(diào)整策略[J].計(jì)算機(jī)仿真,2003,20(4):78-81.
[15]彭光雷.三維地形生成研究及實(shí)現(xiàn)[D].重慶:重慶大學(xué),2005.
Meter panel development and application based on GL Studio
ZHAO Yin-ling1,LI Zhi-guo2
(1.Xi'an Vocational and Technical College,Xi'an 710032,China;2.Xi'an Flight Automatic Control Research Institute of China Aviation Industry,Xi'an 710065,China)
Flying scene of simulation can display location and position of the UAV.but there is no flying data to reference.So it is necessary to add the meter to the scene.the user can obtain the exact information of the plane based of the variation of the meter data,such as altitude、volosity and heading.which provide intuitive and understandable warrant.A kind of expert construction software for virtual meter is presented at the aspects of modeling and realization of simulation modules.taking the UAV cabin as an example,the ActiveX code realization of GL Studio and key technologies and reality methods when embed in the scene are explained.this software behaves perfectly in the UAV half entity simulation trail,fulfilling the system requirement of liquidity and real time performance.
virtual reality;meter;texture;control
TP391
A
1674-6236(2016)23-0035-04
2015-12-28稿件編號:201512287
趙銀玲(1982—),女,陜西渭南人,講師。研究方向:控制理論與控制工程,視景仿真。