国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于OSG的飛行器實(shí)時(shí)監(jiān)控軟件設(shè)計(jì)

2017-05-02 05:39藥紅紅
關(guān)鍵詞:飛行器姿態(tài)可視化

郝 朝,藥紅紅,山 壽

(中國(guó)飛行試驗(yàn)研究院,陜西 西安 710089)

基于OSG的飛行器實(shí)時(shí)監(jiān)控軟件設(shè)計(jì)

郝 朝,藥紅紅,山 壽

(中國(guó)飛行試驗(yàn)研究院,陜西 西安 710089)

在飛行試驗(yàn)中,飛行器實(shí)時(shí)監(jiān)控是保障飛行安全和提高工作效率的一個(gè)關(guān)鍵環(huán)節(jié)。為了直觀地實(shí)時(shí)監(jiān)控飛行器的位置姿態(tài)和工作狀態(tài),保證飛行器試飛安全,提出了基于OSG(Open Scene Graph)技術(shù)的飛行器三維實(shí)時(shí)監(jiān)控軟件設(shè)計(jì)方案。軟件采用C++語(yǔ)言設(shè)計(jì),讀取飛行器的部件模型構(gòu)建三維可視化飛行場(chǎng)景,通過(guò)TCP/IP協(xié)議與服務(wù)器完成數(shù)據(jù)交互,實(shí)時(shí)驅(qū)動(dòng)飛行場(chǎng)景中模型運(yùn)動(dòng),設(shè)計(jì)獨(dú)立線程響應(yīng)鍵盤(pán)和鼠標(biāo)操作,采用場(chǎng)景漫游和模型選取技術(shù),通過(guò)三維模型運(yùn)動(dòng)與數(shù)字顯示相結(jié)合的方式,更加可視化地監(jiān)控飛行器的飛行過(guò)程。利用模塊化和多線程的設(shè)計(jì)思路,提高了軟件的執(zhí)行效率和可擴(kuò)展性。目前該軟件已成功應(yīng)用到多個(gè)型號(hào)任務(wù)試飛中。實(shí)際應(yīng)用效果表明,該監(jiān)控軟件具有良好的實(shí)時(shí)性、準(zhǔn)確性、可靠性和人機(jī)交互功能,能夠滿足飛行器實(shí)時(shí)監(jiān)控系統(tǒng)的要求。

OSG;飛行器;實(shí)時(shí)監(jiān)控;多線程;人機(jī)交互

0 引 言

隨著航天航空技術(shù)的飛速發(fā)展,對(duì)飛行器的監(jiān)控要求也越來(lái)越高。在飛行試驗(yàn)中,飛行器實(shí)時(shí)監(jiān)控是保障飛行安全和提高工作效率的一個(gè)關(guān)鍵環(huán)節(jié),要求實(shí)時(shí)查看飛行器的位置姿態(tài)信息和設(shè)備的工作狀態(tài)。一旦實(shí)時(shí)監(jiān)控軟件顯示有影響飛行安全的故障,試飛工程師就能及時(shí)提醒飛行監(jiān)控指揮員,并告知飛行員具體系統(tǒng)的故障以及應(yīng)對(duì)故障的措施[1],因此要求實(shí)時(shí)監(jiān)控軟件數(shù)據(jù)直觀且能準(zhǔn)確呈現(xiàn)。目前,實(shí)時(shí)監(jiān)控軟件一般都是通過(guò)數(shù)字或者二維圖表的形式來(lái)展示,無(wú)法形象生動(dòng)地向監(jiān)控人員呈現(xiàn)飛行器的狀態(tài)[2-3]。

為了可視化地表現(xiàn)飛行器的飛行過(guò)程,提出了基于OSG的三維實(shí)時(shí)監(jiān)控軟件設(shè)計(jì)方案?;陂_(kāi)源的OSG三維渲染系統(tǒng)構(gòu)建三維可視化飛行場(chǎng)景,實(shí)時(shí)接收服務(wù)器數(shù)據(jù)刷新飛行場(chǎng)景中的三維模型,實(shí)現(xiàn)對(duì)飛行器飛行狀態(tài)的實(shí)時(shí)監(jiān)控。

該軟件已經(jīng)應(yīng)用到多個(gè)型號(hào)任務(wù)試飛中,有效保證試飛安全監(jiān)控。

1 OSG簡(jiǎn)介

OSG是一款開(kāi)源、高效的三維渲染系統(tǒng),是一個(gè)開(kāi)源的場(chǎng)景圖形管理開(kāi)發(fā)庫(kù),主要為圖形圖像應(yīng)用程序的開(kāi)發(fā)提供場(chǎng)景管理和圖形渲染優(yōu)化功能[4]。OSG采用可移植的C++作為開(kāi)發(fā)語(yǔ)言,使得其具有良好的跨平臺(tái)性[5],實(shí)現(xiàn)了對(duì)OpenGL底層渲染API的封裝,功能豐富并易于使用。目前OSG在視景仿真、虛擬現(xiàn)實(shí)、科學(xué)計(jì)算可視化等方面都具有非常廣泛的應(yīng)用[6-10]。

2 軟件設(shè)計(jì)

飛行器實(shí)時(shí)監(jiān)控軟件運(yùn)行流程如圖1所示。

圖1 軟件運(yùn)行流程圖

為了方便軟件功能的更新、維護(hù)與拓展,在設(shè)計(jì)過(guò)程中采用模塊化的思想。軟件由數(shù)據(jù)交互模塊、場(chǎng)景渲染模塊和事件響應(yīng)模塊組成,各個(gè)模塊功能通過(guò)設(shè)計(jì)獨(dú)立的線程[11-12]來(lái)完成。系統(tǒng)軟件設(shè)計(jì)的結(jié)構(gòu)圖如圖2所示。

圖2 軟件結(jié)構(gòu)圖

3 軟件實(shí)現(xiàn)

3.1 模型讀取

OSG提供文件的讀寫(xiě)插件將模型讀入到模型節(jié)點(diǎn)中。

osg::Node*pNodeModel=osgDB::readNodeFile(chrModelName);

飛行器的軌跡通過(guò)OSG內(nèi)置的POLYGON圖元和LINE_LOOP圖元實(shí)現(xiàn)。

3.2 模型運(yùn)動(dòng)與場(chǎng)景漫游

三維虛擬場(chǎng)景中的漫游能夠讓使用者從不同角度立體地觀察場(chǎng)景中的物體,從而提高了交互的品質(zhì)。指定觀察者位置和觀察方向,OSG核心庫(kù)能在每一幀都計(jì)算視場(chǎng)內(nèi)出現(xiàn)的物體,自動(dòng)完成圖形的拾取和裁剪并渲染輸出到屏幕上。因此,實(shí)現(xiàn)場(chǎng)景漫游的核心在于控制觀察者所在的位置和方向。

觀測(cè)者位置可以通過(guò)直角坐標(biāo)和球坐標(biāo)指定,設(shè)置攝像機(jī)朝向球心可保持觀察對(duì)象始終在視野內(nèi)。球坐標(biāo)系(0.0,0.0,CameraDistance)轉(zhuǎn)換到直角坐標(biāo)系為:

vViewPointPosition=osg::Vec3(0,-CameraDistance,0);

vViewDirection=osg::Vec3(osg::PI_2,0,0);

當(dāng)需要觀測(cè)者跟隨某一實(shí)體運(yùn)動(dòng)時(shí),需要獲取實(shí)體位置并疊加在攝像機(jī)的位置向量上。也可以同時(shí)獲取實(shí)體姿態(tài),通過(guò)矩陣變換將觀測(cè)者與實(shí)體綁定。

三維演示飛行中飛行器的位置和姿態(tài)、設(shè)備的工作狀態(tài)隨時(shí)間發(fā)生變化,OSG應(yīng)根據(jù)這些變化驅(qū)動(dòng)場(chǎng)景中實(shí)體的變化。對(duì)于位置和姿態(tài)的變化,由OSG坐標(biāo)轉(zhuǎn)換矩陣[4]實(shí)現(xiàn),步驟如下:

(1)在實(shí)體對(duì)象節(jié)點(diǎn)的坐標(biāo)轉(zhuǎn)換矩陣上設(shè)置回調(diào)函數(shù):

pMatrixTransform→setUpdateCallback(this);

(2)設(shè)置回調(diào)函數(shù)后,在節(jié)點(diǎn)的虛函數(shù)中對(duì)節(jié)點(diǎn)坐標(biāo)轉(zhuǎn)換矩陣進(jìn)行處理:

voidDeviceWithAction::operator()(osg::Node* node,osg::NodeVisitor* nv);

(3)建立運(yùn)動(dòng)回調(diào)類:

osg::MatrixTransform *pTransformMatrix=dynamic_cast(node);

(4)根據(jù)實(shí)體的新位置對(duì)此節(jié)點(diǎn)進(jìn)行平移變換:

osg::Matrix mTranslate,mRotate;

mTranslate.makeTranslate(this→vPosition);

(5)根據(jù)實(shí)體的新姿態(tài)對(duì)此節(jié)點(diǎn)進(jìn)行旋轉(zhuǎn)變換:

mRotate.makeRotate(this→vAttitude._v[0],osg::Vec3(1,0,0),this→vAttitude._v[1],osg::Vec3(0,1,0),this→vAttitude._v[2],osg::Vec3(0,0,1));

(6)刷新此節(jié)點(diǎn)的坐標(biāo)轉(zhuǎn)換矩陣,實(shí)體將運(yùn)動(dòng)到指定位置和姿態(tài)。

pTransformMatrix→setMatrix(mRotate*(this→mFixMatrix)*mTranslate);

traverse(node,nv);

3.3 鍵盤(pán)鼠標(biāo)交互

鍵盤(pán)鼠標(biāo)交互采用事件處理機(jī)制來(lái)實(shí)現(xiàn),添加一個(gè)switch語(yǔ)句來(lái)判別事件類型,用到的事件類型有KEYDOWN、LEFT_MOUSE_BUTTON等。KEYDOWN事件類型是指鍵盤(pán)上某鍵按下產(chǎn)生的事件。KEYDOWN通過(guò)getKey函數(shù)判斷是哪個(gè)鍵產(chǎn)生的事件。其中,字母和數(shù)字按鍵的getKey函數(shù)返回值為對(duì)應(yīng)字母和數(shù)字的ASCII碼。LEFT_MOUSE_BUTTON事件類型是指鼠標(biāo)左鍵按下產(chǎn)生的事件,主要實(shí)現(xiàn)模型選取來(lái)進(jìn)行更多操作。OSG并不直接支持選中,但其提供的相交計(jì)算功能能夠?qū)崿F(xiàn)模型的選中操作。步驟如下:

(1)定義一條射向屏幕內(nèi)部的射線:

osgUtil::LineSegmentIntersector::Intersections sections;

(2)計(jì)算場(chǎng)景中與此條射線相交的實(shí)體交集:

pCurrentViewer→computeIntersections(CenterX,CenterY,sections);

交集是C++中的容器對(duì)象,它的每一個(gè)元素都保存了與射線相交節(jié)點(diǎn)的節(jié)點(diǎn)路徑,也即是從根節(jié)點(diǎn)到此節(jié)點(diǎn)的父—子節(jié)點(diǎn)樹(shù)分支。

(3)使用迭代器取出節(jié)點(diǎn)路徑:

osgUtil::LineSegmentIntersector::Intersections::iterator itr=sections.begin();

osg::NodePathnodePath=itr →nodePath;

(4)獲取節(jié)點(diǎn)路徑上每一個(gè)節(jié)點(diǎn),通過(guò)名稱比對(duì)確定具體節(jié)點(diǎn)。

3.4 HUD文字顯示

OSG支持平視顯示器(Head Up Display,HUD)的文字顯示。HUD主要用來(lái)顯示飛行器的位置和姿態(tài)等信息。HUD不會(huì)因攝像機(jī)的漫游而變化。步驟如下:

(1)創(chuàng)建攝像機(jī)節(jié)點(diǎn):

osg::Camera* cam=new osg::CameraNode;

(2)設(shè)置相機(jī)節(jié)點(diǎn)的投影矩陣和渲染順序:

cam→setProjectionMatrix(osg::Matrix::ortho2D(0,1 024,0,768));

cam→setReferenceFrame(osg::Transform::ABSOLUTE_RF);

cam→setRenderOrder(osg::CameraNode::POST_RENDER);

(3)創(chuàng)建Text對(duì)象以輸出文字:

osg::Geode* pGeode=new osg::Geode();

osgText::Text *pText=new osgText::Text;

pGeode→addDrawable(pText);

(4)將文字節(jié)點(diǎn)加入攝像機(jī)中:

cam→addChild(pGeode);

3.5 數(shù)據(jù)交互

數(shù)據(jù)交互示意圖如圖3所示。數(shù)據(jù)交互采用連接可靠的TCP協(xié)議[13-14]建立兩個(gè)網(wǎng)絡(luò)連接,其中一個(gè)是發(fā)送套接字,負(fù)責(zé)向服務(wù)器發(fā)送參數(shù)名數(shù)組,發(fā)送成功后關(guān)閉該套接字。另一個(gè)是接收套接字,服務(wù)器接收到參數(shù)名后挑選出對(duì)應(yīng)的數(shù)據(jù)并重新組包,通過(guò)該套接字實(shí)時(shí)接收服務(wù)器數(shù)據(jù),解析完成后驅(qū)動(dòng)相應(yīng)模型的運(yùn)動(dòng)。

圖3 數(shù)據(jù)交互示意圖

4 應(yīng)用效果

飛行器三維實(shí)時(shí)監(jiān)控軟件運(yùn)行結(jié)果如圖4所示,可以直觀地顯示出飛行器當(dāng)前位置姿態(tài)信息、太陽(yáng)帆板的運(yùn)動(dòng)情況和推力器的工作情況等,整個(gè)場(chǎng)景渲染效果逼真。

通過(guò)實(shí)際應(yīng)用發(fā)現(xiàn),該軟件實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)準(zhǔn)確、運(yùn)行穩(wěn)定可靠。

圖4 軟件運(yùn)行結(jié)果

5 結(jié)束語(yǔ)

為了保證飛行器試飛安全,可視化地實(shí)時(shí)監(jiān)控飛行過(guò)程,設(shè)計(jì)了基于OSG的飛行器三維實(shí)時(shí)監(jiān)控軟件?;陂_(kāi)源的OSG三維渲染系統(tǒng),構(gòu)建三維可視化飛行場(chǎng)景,采用多線程并發(fā)機(jī)制和模塊化設(shè)計(jì)思想,提高了軟件的可靠性和維護(hù)性,實(shí)時(shí)接收服務(wù)器數(shù)據(jù)驅(qū)動(dòng)飛行場(chǎng)景中三維模型運(yùn)動(dòng),對(duì)運(yùn)動(dòng)場(chǎng)景進(jìn)行刷新,實(shí)現(xiàn)對(duì)飛行器運(yùn)動(dòng)過(guò)程的實(shí)時(shí)監(jiān)控。該軟件已經(jīng)應(yīng)用于多個(gè)型號(hào)任務(wù)的試飛實(shí)時(shí)監(jiān)控中,實(shí)際應(yīng)用效果表明,該軟件具有穩(wěn)定可靠、人機(jī)界面友好等特點(diǎn),滿足了實(shí)時(shí)監(jiān)控要求。

[1] 張芹芹,劉 丹.基于LabVIEW的某航電系統(tǒng)監(jiān)控軟件設(shè)計(jì)[J].中國(guó)科技信息,2014(20):128-129.

[2] 房 瑾,覃 燕,穆永河.通用試飛參數(shù)顯示儀的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2014,22(9):35-37.

[3] 劉嫚婷,尚麗娜,張芹芹.飛行試驗(yàn)通用動(dòng)態(tài)監(jiān)控軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)科技信息,2013(18):92-93.

[4] 肖 鵬,劉更代,徐明亮.OpenSceneGraph三維渲染引擎編程指南[M].北京:清華大學(xué)出版社,2009.

[5] Martz P.Open scene graph quick start guide[M].Louisville:Skew Matrix Software LLC,2007.

[6] Dias M S,D'Alpuim J,Caetano P.Galactica,a digital planetarium for immersive virtual reality settings[J].International Journal of Creative Interfaces and Computer Graphics,2016,7(1):19-39.

[7] 姚 崇.無(wú)人機(jī)飛行仿真系統(tǒng)關(guān)鍵技術(shù)研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2014.

[8] 何坤金,張莉軍,李 強(qiáng),等.基于OSG的航道船舶三維可視化信息管理系統(tǒng)[J].計(jì)算機(jī)與現(xiàn)代化,2015(11):89-92.

[9] 伍中聯(lián),孫 卡,王新春,等.校園三維可視化仿真系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2013(2):76-79.

[10] 郭 佳.基于OSG的飛行仿真系統(tǒng)視景平臺(tái)的研究與開(kāi)發(fā)[D].沈陽(yáng):沈陽(yáng)航空工業(yè)學(xué)院,2009.

[11] 郝文化.Windows多線程編程技術(shù)與實(shí)例[M].北京:中國(guó)水利水電出版社,2005.

[12] Courbin P,Lupu I,Goossens J.Scheduling of hard real-time multi-phase multi-thread (MPMT) periodic tasks[J].Real-Time Systems,2013,49(2):239-266.

[13] 羅莉琴,詹祖橋.Windows網(wǎng)絡(luò)編程[M].北京:人民郵電出版社,2011.

[14] Youm B J,Park J.TCP/IP protocol over IEEE-1394 network for real-time control applications[C]//IFAC.[s.l.]:IEEE,2005:38-40.

Design of Aircraft Real-time Monitoring Software Based on OSG

HAO Zhao,YAO Hong-hong,SHAN Shou

(Chinese Flight Test Establishment,Xi’an 710089,China)

Aircraft real-time monitoring is a key to guarantee the flight safety and improve the work efficiency in flight test.In order to monitor the position attitude and working condition in real-time of the aircraft intuitively and ensure the safety of the aircraft flight test,the program of 3D real-time monitoring software of aircraft based on OSG (Open Scene Graph) is proposed.The software is designed using C++ language.3D visualization flight scene is constructed by reading aircraft models.The real-time receiving server data drives the motion of the models in the flight scene through the TCP/IP protocol.The keyboard and mouse operation is responsed by a separate thread.The technology of scene roaming and model selection is used and the mode of 3d model movement combined with digital display is applied to monitor the flight more visually.Using the design idea of modularization and multithreading improves the implementing efficiency and extendibility.Now the software has been successfully applied to plenty of type of tasks test.The actual practice shows that the monitoring software has good performance of real-time,accuracy,reliability and interactive and so on,and it can meet the requirements of aircraft real-time monitoring system.

OSG;aircraft;real-time monitoring;multi-thread;human-computer interaction

2016-06-17

2016-09-22

時(shí)間:2017-03-07

國(guó)防基礎(chǔ)科研計(jì)劃重點(diǎn)項(xiàng)目(A0520132031)

郝 朝(1990-),男,助理工程師,碩士,研究方向?yàn)轱w行試驗(yàn)軟件開(kāi)發(fā)和數(shù)據(jù)處理。

http://kns.cnki.net/kcms/detail/61.1450.TP.20170307.0922.088.html

TP311.1

A

1673-629X(2017)04-0021-04

10.3969/j.issn.1673-629X.2017.04.005

猜你喜歡
飛行器姿態(tài)可視化
基于CiteSpace的足三里穴研究可視化分析
自然資源可視化決策系統(tǒng)
高超聲速飛行器
思維可視化
自然資源可視化決策系統(tǒng)
攀爬的姿態(tài)
全新一代宋的新姿態(tài)
復(fù)雜飛行器的容錯(cuò)控制
另一種姿態(tài)
神秘的飛行器