趙銀玲,李治國
(1.西安職業(yè)技術學院 陜西 西安 710032;2.中航工業(yè)西安飛行自動控制研究所 陜西 西安 710065)
基于GL Studio的儀表面板開發(fā)及其應用
趙銀玲1,李治國2
(1.西安職業(yè)技術學院 陜西 西安 710032;2.中航工業(yè)西安飛行自動控制研究所 陜西 西安 710065)
運動的視景可以顯示出飛機的位置和姿態(tài),但視景沒有直觀的數(shù)據(jù)以供參考,所以在飛行視景中加入儀表是非常必要的。通過儀表的數(shù)據(jù)變化實時獲取飛機準確的高度、速度、航向等信息,為研究無人機飛行運動過程提供直觀事實依據(jù)。文章從仿真建模到軟件模塊的實現(xiàn),較全面地介紹了一種專用虛擬儀表制作軟件-GL Studio,以無人機座艙為例,詳細說明了GL Studio的ActiveX代碼實現(xiàn)技術及嵌入視景時的關鍵問題和解決方法。該軟件在無人機半物理仿真試驗中得到了很好的應用,滿足了系統(tǒng)對實時性和流暢性的要求。
虛擬現(xiàn)實;儀表;紋理;控件
近年來,隨著軍事科技的發(fā)展,高技術武器裝備在現(xiàn)代戰(zhàn)爭中得到了廣泛的應用,越來越多的高技術武器已經(jīng)裝配到部隊,對部隊的戰(zhàn)場訓練和技術保障都產(chǎn)生了重大的影響[1]。由于高技術裝備造價貴、品種多、數(shù)量少,所以在實際裝備上開展操作和維修訓練都越來越困難。虛擬現(xiàn)實技術的發(fā)展為部隊開展脫離實裝的訓練提供了技術基礎[1-2]。
在虛擬座艙的仿真建模中,座艙中的儀表多種多樣,如地評議、高度表、空速表、平顯、航向表等。需要對座艙中的大量的儀表面板的行為,如指針的擺動、指示燈的閃爍、旋鈕的轉動、掃描線的移動等進行仿真。座艙面板的機械結構復雜,利用傳統(tǒng)的建模工具,如3D Max、Solidwork等,建模工作量大,效率低,難度大。為此,座艙面板的建模使用一種快速、新型的建模工具——GL Studio,它支持照片級別的紋理,只要將欲仿真的面板的照片應用為紋理即可[3],從而大大降低建模難度,減小了工作量,提高了效率,而且建模效果非常逼真。在目前無人機半物理仿真中的到了很好的使用。
無人機半物理仿真綜合測試系統(tǒng)由飛行仿真機(包括仿真主控機和目標機)、飛控計算機(以下簡稱飛控機)、飛控臺、導航臺、視景計算機等組成。系統(tǒng)的結構如圖1所示。

圖1 系統(tǒng)結構圖
飛控臺和視景計算機以及導航臺之間均采用高速的網(wǎng)卡代替了傳統(tǒng)的串行通訊系統(tǒng),使得系統(tǒng)的傳輸效率和運行速度都有大幅度的提高。導航臺通過TCP協(xié)議發(fā)送給飛控臺航路點信息,飛控臺接收、顯示并通過串口上傳給飛控機。飛控機通過串口RS232向飛控臺輸出遙測數(shù)據(jù)幀,其中包括無人機的經(jīng)度、緯度、高度、俯仰角、滾轉角、偏航角、空速、油量等。飛控臺接收并顯示,然后把相關數(shù)據(jù)通過UDP協(xié)議轉發(fā)給導航臺和視景計算機。
GL Studio是一個獨立平臺的快速原型工具,用來創(chuàng)建實時的、三維的、照片級的互動圖形界面。它能與HLA/DIS仿真應用相連;生成的C++和OpenGL源代碼可以單獨運行,也可以嵌入其他應用中;它能運行于WindowsNT2000XP、TRIX和Linux等操作系統(tǒng)上[4-5]。
GL Studio設計器包括兩個主要的控制窗口和一個或多個編輯窗口。所有設計的對象的列表用一個可折疊的樹狀結構來顯示。如圖2所示。GL Studio支持照片級紋理的應用。一切多邊形對象都可以貼紋理。紋理工具可以讓你使用大多數(shù)格式的紋理,如TIFF,JPEG,SGI,BMP等。GL Studio設計器有10種圖像原型,包括規(guī)則多邊形、不規(guī)則曲線和TrueType文本對象。原型能被組合成更復雜的對象。設計器支持所有的繪圖操作,包括剪貼和粘貼、轉換、縮放、修剪、剔除、頂點編輯、插入和移除頂點、水平翻轉、垂直翻轉、左旋轉、右旋轉、自由旋轉、扭曲、排列對象和改變繪圖順序等[7]。設計器支持文檔的多視圖,包括3個正投影視圖和一個自由視角的透視視圖。在每個視圖下可以以網(wǎng)格、文體和貼有紋理等方式來觀察。

圖2 GL Studio設計器界面
Vega是國內(nèi)仿真系統(tǒng)常用的實時驅動軟件,它是MultiGen-Paradigm公司(MPI)以前最主要的三維實時驅動軟件。MPI早在2003年就已經(jīng)停止對Vega開發(fā)和升級,Vega Prime作為Vega的升級版本主要改進之處有:VegaPrime是基于C++平臺,而Vega是基于C平臺;VegaPrime的場景圖VSG(Vega Scene Graph)是高級跨平臺場景圖形應用程序接口,取代了Vega的Performer;Vega是基于進程的,VegaPrime是基于線程的;Vega通過C功能調用,而VegaPrime是通過模塊類。
GL Studio與VegaPrime二者結合,都采用C++代碼進行開發(fā),使得儀表與視景之間的交互問題變得迎刃而解[8]。
3.1 ActiveX控件的建立與使用
視景系統(tǒng)采用GL Studio2.1的兩個向導來建立儀表,GL Studio可生成.EXE的文件單獨運行在其支持的操作系統(tǒng)上,也可生成ActiveX控件嵌入別的軟件平臺上。該系統(tǒng)首先采用生成可執(zhí)行文件的向導來建立儀表,雖然這樣做并不能實現(xiàn)將儀表載入場景的目的,但是因為如果直接用生成.OCX控件,在沒有數(shù)據(jù)之前無法觀測到儀表的運動是否滿足要求,所以首先利用向導生成.EXE文件,觀察儀表的運動是否滿足用戶的要求,然后再利用向導生成.OCX控件嵌入視景[9-10]。
以座艙中儀表指針的轉動為例,首先在GL Studio中通過紋理貼圖來建立實例對象 needle,在代碼編輯窗口variables中建立roll變量,在控制窗口的代碼編輯欄中新建Method為NewMethod,在GL Studio原有的Calculate(doudle time)中寫入指針轉動的代碼:

動態(tài)效果完成之后,再用ActiveX向導生成一個空的工程文件,將原產(chǎn)生的.gls文件,.h和.cpp文件改成和新建的空工程中的.gls文件,.h和.cpp文件的名字分別相同,這樣在*.h中就包含有公有的虛函數(shù)

因void zylClass::Calculate(double time)中的代碼的變量用戶不可知,所以我們使用新的方法NewMethod(),用戶可以隨意定義它的變量,將NewMethod()的函數(shù)體寫為


注冊控件之后就可以在ActiveX Control Test Continer中預覽所作控件的效果了。
3.2 GL Studio與VegaPrime坐標系的解決方案
雖然GL Studio與VegaPrime都是在OpenGL基礎上的應用,使用的都是右手坐標系,但是VegaPrime的坐標系與GL Studio的坐標系又有所差別,如圖3所示。

圖3 坐標系
所以在解決這個問題的時候可以將GL Studio的儀表直接設計在XOZ平面上或者將在XOY平面上設計的儀表在載入視景時繞X軸旋轉90度即可。文章采用的方法是還在XOY平面建立儀表,而在載入場景中時將儀表繞X軸旋轉90度。
3.3 GL Studio載入視景時的單位變換
在VegaPrime中根據(jù)場景的大小不同,坐標所采用的是長度單位,例如可以是米、千米、英尺或英寸等。而在GL Studio中制作虛擬儀表是以像素為基本單位的。因此將GL Studio載入場景時是以1:1轉換的,即GL Studio載入視景時的一像素即為VegaPrime中的一米,所以在沒有任何處理的情況下儀表載入場景時非常大,所以要根據(jù)實際需要進行縮小,解決方案是在程序中縮小儀表面板的大小,一般選擇在GL Studio中制作的儀表面板的0.3或0.4倍。
3.4 數(shù)據(jù)通信
無人機半物理仿真測試系統(tǒng)中不同設備之間根據(jù)需要采用不同的傳輸協(xié)議。不同的傳輸協(xié)議有不同的試用場合。TCP協(xié)議提供了一種可靠的面向連接的字節(jié)流運輸層服務。它提供端到端的流量控制,并計算和驗證一個強制性的端到端檢驗和[11]。對數(shù)據(jù)的解算比較嚴格,采用TCP用戶最終數(shù)據(jù)的解釋將帶來額外系統(tǒng)開銷,適合海量數(shù)據(jù)的傳輸以及要求可靠性高的場合;而UDP是ISO參考模型中位于傳輸層的一種無連接的協(xié)議,提供面向操作的簡單非可靠信息傳送服務,比TCP頭部消耗少,傳輸效率高,適合少量數(shù)據(jù)的傳輸和可靠性要求不是很高的場合[12]。
本例中導航臺的主要功能是任務規(guī)劃以及和飛控臺之間的以太網(wǎng)通信,它要求可靠發(fā)送航點信息,所以采用了TCP協(xié)議;由于視景計算機接收飛控臺發(fā)過來的數(shù)據(jù)量并不大而系統(tǒng)對于數(shù)據(jù)接收的流暢性要求較高,所以采用UDP傳輸協(xié)議來接收數(shù)據(jù)。UDP使用ioctlsocket函數(shù)將套結字設置為非阻塞,使數(shù)據(jù)接收更流暢。
Vega Prime應用程序的運行分為兩個主要的階段。首先是仿真系統(tǒng)的靜態(tài)設置階段,在這個階段中主要進行包括內(nèi)存分配、參數(shù)設置、進程分配等在內(nèi)的系統(tǒng)初始化和配置等,第二階段進入仿真系統(tǒng)的動態(tài)循環(huán),系統(tǒng)等待飛控臺傳送數(shù)據(jù),在沒有數(shù)據(jù)傳輸時系統(tǒng)處于等待狀態(tài),否則程序進入飛行姿態(tài)設置和儀表驅動顯示階段,一幀數(shù)據(jù)發(fā)送完畢則重新進入下一個循環(huán),仿真應用的主要過程都在這個階段中完成[3-13]。
3.5 視景和儀表驅動的實現(xiàn)
在該實驗系統(tǒng)中,飛控臺已確定的發(fā)送數(shù)據(jù)的時間為50 ms,首先通過套借口自定義函數(shù)recvfrom()將飛控臺每隔50 ms發(fā)過來的數(shù)據(jù)放到數(shù)據(jù)緩沖區(qū)數(shù)組buffer[10]中,其中在buffer[0],buffer[1],uffer[2]…buffer[5]中將分別存放無人機的位置參數(shù)x,y,z以及俯仰、滾轉、偏航的數(shù)據(jù)信息,這樣就完成了數(shù)據(jù)的接收任務,然后使用setPlanePosition()函數(shù)將收到的數(shù)據(jù)轉換為飛機位置向量,偽代碼如下:

視景的驅動首先新建一個類myApp*app=new myApp;然后調用用戶自定義的函數(shù)fly(),app->fly(),來實現(xiàn)飛行器的六自由度飛行仿真。偽代碼如下:

//對象指針指向無人機模型 getRotate(double*h,double*p,double*r)可以控制對象分別繞 X,Y,Z軸旋轉的數(shù)值,getTranslate(double*x,double*y,double*z)可以控制對象分別繞X,Y,Z軸平移的數(shù)值。
接收網(wǎng)絡數(shù)據(jù)完畢之后儀表的驅動就直接使用接收過來的數(shù)據(jù),將接收的數(shù)據(jù)付給變量liner即可,以此類推[14]。運行結果圖如圖4所示。

圖4 飛行視景效果
文中介紹了一種新型的儀表制作工具GL Studio,研究了儀表與視景結合的關鍵問題和解決方法,仿真結果表明,利用GL Studio制作飛行儀表形象逼真、速率快、效率高、生成代碼可讀性好,確實是儀表面板仿真的開發(fā)利器[9-15]。將其應用于無人機半物理中仿針實驗中,取得了良好的應用效果。
[1]吳家鑄.視景仿真技術及應用[M].西安:電子科技大學出版社,2002.
[2]耿通奮,無人機實時仿真與測試系統(tǒng)綜合設計[D].南京:南京航空航天大學,2003.
[3]石瓊,無人機任務飛行的三維可視化[D].南京:南京航空航天大學,2004.
[4]喬林,費廣正等.OpenGL程序設計[M].北京:清華大學出版社,2000.
[5]夏衛(wèi)國,軍用視景仿真系統(tǒng)的開發(fā)和應用研究[D].北京:北京理工大學,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]趙龍.無人機飛行控制仿真視景系統(tǒng)設計與實現(xiàn)[D].南京:南京航空航天大學,2006.
[10]黃健熙,毛鋒等.基于VegaPrime的大型流域三維管理系統(tǒng)實現(xiàn)[J].系統(tǒng)仿真學報,2006(10):2819-2823.
[11]張德鋒,王華兵,等.基于Vega Prime的視景仿真技術研究與應用[J].計算機仿真,2006,23(7):191-195.
[12]黃燕.三維地形地貌的可視化研究[D].北京:北京工業(yè)大學,2002.
[13]廖巍.大規(guī)模地形的建模與動態(tài)繪制技術研究[D].長沙:國防科學技術大學,2002.
[14]王召福,金士堯.HLA仿真系統(tǒng)中 Lookahead的分析與動態(tài)調整策略[J].計算機仿真,2003,20(4):78-81.
[15]彭光雷.三維地形生成研究及實現(xiàn)[D].重慶:重慶大學,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—),女,陜西渭南人,講師。研究方向:控制理論與控制工程,視景仿真。