• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于VC和Vega的某型導(dǎo)彈模擬器設(shè)計

      2014-01-15 10:00:56張千宇
      電子設(shè)計工程 2014年21期
      關(guān)鍵詞:模擬訓(xùn)練模擬器線程

      張千宇,郭 巍,張 楊

      (海軍航空工程學(xué)院指揮系,山東 煙臺 264001)

      模擬訓(xùn)練以安全、經(jīng)濟、可控、無風(fēng)險、不受氣候條件和場地空間限制、既能按常規(guī)進行操作訓(xùn)練、又能培訓(xùn)處理各種事故的應(yīng)變能力以及訓(xùn)練的高效率、高效益等獨特優(yōu)勢,一直受到各國軍方的高度重視,特別面對武器裝備日趨復(fù)雜化、購買武器費用不斷提高的現(xiàn)狀,致使世界各國軍事部門均將模擬器視為軍事訓(xùn)練必不可少的甚至是唯一安全、經(jīng)濟而有效的工具和手段,加以重點發(fā)展。美軍是世界上最早開展模擬訓(xùn)練研究和應(yīng)用的。其技術(shù)和裝備一直居于國際領(lǐng)先地位。長期以來,主要發(fā)展各類武器裝備的使用操作訓(xùn)練模擬器,據(jù)統(tǒng)計,僅1995~2000年用于三軍的模擬裝備費用就高達36億美元。俄羅斯同樣是世界上的模擬訓(xùn)練的大國和強國。應(yīng)該說,俄羅斯在發(fā)展訓(xùn)練模擬器上是不惜代價的,其數(shù)量約占世界之半,僅俄試飛院就擁有昂貴的空中飛行模擬器十余種。他們的先進武器裝備幾乎都編配有相應(yīng)的訓(xùn)練模擬器。西歐軍事強國(如英、法、德等國)也十分重視模擬訓(xùn)練,模擬訓(xùn)練技術(shù)及應(yīng)用處于世界領(lǐng)先行列。

      1 模擬器發(fā)展概況

      我國是發(fā)展和應(yīng)用模擬訓(xùn)練技術(shù)較早的國家之一。二十世紀(jì)六十年代初開始研制和使用射擊練習(xí)器和簡易飛行模擬器。二十世紀(jì)八十年代以來模擬訓(xùn)練進入了迅速發(fā)展階段,先后研制成功殲-6、殲-7、殲-8D、轟-6C等飛行模擬器,及HQ-2、HQ-7、HQ-6、C-300等防空導(dǎo)彈武器的指揮控制模擬訓(xùn)練系統(tǒng)。相繼掌握了計算機成像、圖形/圖像顯示技術(shù)、多媒體技術(shù)以及精確控制機體和彈體運動平臺技術(shù)等。二十世紀(jì)九十年代在分布式交互仿真(DIS)、虛擬現(xiàn)實(VR)和計算機生成兵力(CGF)技術(shù)等方面的研究和應(yīng)用上獲得了跨越式發(fā)展。

      隨著國防現(xiàn)代化的發(fā)展,武器系統(tǒng)規(guī)模日益龐大,技術(shù)更加先進和復(fù)雜,系統(tǒng)造價也更加昂貴,雖然訓(xùn)練時出現(xiàn)危險性的可能性降低了,但是一旦操作不當(dāng),引起的破壞性和危險性卻大為增加。因此,提高訓(xùn)練的經(jīng)濟性、安全性、可靠性至關(guān)重要。為了較好的解決這一問題,需要有相應(yīng)的模擬訓(xùn)練系統(tǒng)能夠模擬實際裝備的工作環(huán)境和工作狀況,價格要低廉,能夠避免采用實裝進行訓(xùn)練時的巨大危險性和高昂代價[1-2]。

      2 導(dǎo)彈運動模型

      某型導(dǎo)彈運動模型的建立可以為導(dǎo)彈攻擊的視景仿真或描述運動軌跡提供數(shù)據(jù)來源,使系統(tǒng)更加貼近實際,利于提高學(xué)習(xí)、訓(xùn)練質(zhì)量。

      導(dǎo)彈運動模型的實現(xiàn)要盡量接近實際,以便能夠最大可能的反映出不同裝訂參數(shù)下導(dǎo)彈的運動狀態(tài)、軌跡等,最好能夠得到具體導(dǎo)彈的實際模型。

      某型導(dǎo)彈的運動可以分解為隨質(zhì)心的移動和繞質(zhì)心的轉(zhuǎn)動。我們在進行導(dǎo)彈運動的控制時首先應(yīng)確定其運動的坐標(biāo)系:

      Odxdydzd—表示大地坐標(biāo)系

      Ojxjyjzj—表示艦艇坐標(biāo)系

      OfxfyFzF—表示發(fā)射坐標(biāo)系

      O1x1y1z1—表示彈體坐標(biāo)系

      具體的坐標(biāo)之間的關(guān)系如圖1所示。

      圖1 某型導(dǎo)彈運動的坐標(biāo)系Fig.1 Coordanition system of ship monted missile

      有關(guān)導(dǎo)彈運動的一些相關(guān)參數(shù)是可以得到的,有了這些參數(shù),可以利用現(xiàn)有的公式進行導(dǎo)彈速度的求解,得到導(dǎo)彈在任何時刻t的速度矢量,通過對這些速度矢量在各自的坐標(biāo)軸上的積分,就可以得出導(dǎo)彈在某一時刻t時的運動狀態(tài),包括導(dǎo)彈的空間坐標(biāo)(x,y,z)、以及導(dǎo)彈的姿態(tài)角(偏航角、俯仰角、滾轉(zhuǎn)角)、導(dǎo)彈的速度(空速)。

      3 導(dǎo)彈模擬器設(shè)計

      導(dǎo)彈模擬器在整個系統(tǒng)中主要起到近似模擬實際的導(dǎo)彈在射前檢查、參數(shù)裝訂、發(fā)射控制、目標(biāo)攻擊的過程中的姿態(tài)變化,配以一定的環(huán)境背景和逼真的視頻、音頻效果,渲染出臨近實戰(zhàn)的氛圍,有利于激發(fā)參訓(xùn)者的戰(zhàn)斗意識,提高訓(xùn)練的熱情和效率。

      本文設(shè)計的模擬器在實現(xiàn)導(dǎo)彈運動的過程中所要達到的控制上的要求:

      1)接收彈道計算仿真結(jié)果并據(jù)此控制導(dǎo)彈姿態(tài)。

      2)仿真系統(tǒng)動畫演示及聲音媒體表現(xiàn);

      3)可視化駕馭功能,可以不同的視角對導(dǎo)彈狀態(tài)進行觀察。

      在導(dǎo)彈模擬器上,主要仿真對象是導(dǎo)彈、艦艇。其中導(dǎo)彈的運動規(guī)律根據(jù)導(dǎo)彈空間運動模型和導(dǎo)彈導(dǎo)引率編寫;敵我艦艇運動假設(shè)只是考慮運動學(xué)關(guān)系,在勻速直線運動的基礎(chǔ)上根據(jù)來襲導(dǎo)彈的相對距離和方位進行機動。

      在程序中為了能響應(yīng)整個示教系統(tǒng)的各種操作,需要在收到網(wǎng)絡(luò)數(shù)據(jù)后,及時的進行判斷是否需要本系統(tǒng)做出反應(yīng),比如,在收到“開蓋”的指令后,若沒有設(shè)置“開蓋故障”,則在三維圖像顯示畫面中控制導(dǎo)彈發(fā)射架的蓋子打開,打開到位后使“開蓋到位”的標(biāo)志量有效,并將更改后的數(shù)據(jù)發(fā)向網(wǎng)絡(luò),而后控制臺會根據(jù)“開蓋到位”標(biāo)志量點亮控制臺面板上的“開蓋到位”指示燈,模擬訓(xùn)練系統(tǒng)其它部分的狀態(tài)顯示也會相應(yīng)地進行更改。當(dāng)有導(dǎo)彈發(fā)射后要邊解算導(dǎo)彈的運動模型邊驅(qū)動三維動畫,所以要在Visual C++環(huán)境下運行Vega應(yīng)用程序。

      4 Vega的基本框架

      Vega是虛擬現(xiàn)實軟件MultiGen的一部分。Vega的作用是將Creator制作的三維模型渲染成場景、在場景上瀏覽、查詢、實例演示。Vega由Lynx軟件、多種動態(tài)聯(lián)接庫(DLL)、函數(shù)庫(Lib)、應(yīng)用程序接口(API)組成[3-6]。

      在Visual C++中應(yīng)用Vega首先要對頭文件和庫文件路徑進行如下設(shè)置:

      1)在 Visual C++的菜單項“Tools”選項中,選擇“Directories”標(biāo)簽,將“Show directories for:”選為“Include files”。

      2)若“c:paradigmvegainclude”( c:paradigmvegainclude為Vega的安裝路徑)未出現(xiàn)在列表中,則將其添加進來。

      3)再將“Show directories for:”選為“Library files”。

      4)若“c:paradigmvegalib”未出現(xiàn)在列表中,則將其添加進來。

      Vega應(yīng)用程序的啟動步驟。

      1)系統(tǒng)初始化:由函數(shù)vgInit Sys()完成初始化Vega系統(tǒng)并創(chuàng)建共享內(nèi)存以及信號量等。

      2)系統(tǒng)定義:由函數(shù) vgDefineSys (“my.adf”)讀入 ADF文件,完成應(yīng)用程序各個類的屬性的定義和初始化。

      3)系統(tǒng)配置:通過調(diào)用函數(shù)vgConfigSys()完成配置并啟動系統(tǒng)。因此,每一個Vega應(yīng)用程序都必須包含以下函數(shù)語句:

      vgInitSys( ) ; //系統(tǒng)初始化

      vgDefineSys (“Ddgj.adf”); //系統(tǒng)定義,載入“.adf”文件

      vgConfigSys( ); //系統(tǒng)配置

      while (1)

      {

      vgSyncFrame() ; //幀同步

      vgFrame(); //幀顯示

      …… //系統(tǒng)仿真代碼或入口

      }

      Vega應(yīng)用程序每次執(zhí)行主循環(huán)刷新顯示幀時,都要調(diào)用vgSyncFrame()和 vgFrame(),vgSyncFrame()函數(shù)完成幀同步,vgFrame()函數(shù)則完成幀的顯示。另外也可以在主循環(huán)中加入用戶的系統(tǒng)仿真模塊。

      5 基于MFC的Vega應(yīng)用程序開發(fā)過程

      為了產(chǎn)生一個基于MFC的Vega應(yīng)用程序,首先要生成一個基于MFC的Visual C++單文檔應(yīng)用程序項目,通過AppWizard生成一個單文檔應(yīng)用程序框架完成新項目的建立。

      為了將Vega的基本程序框架合理地嵌入到單文檔應(yīng)用程序框架中,必須在適當(dāng)?shù)臅r機啟動一個Vega線程,由該線程完成虛擬場景的驅(qū)動和渲染。可以在CView類和CMyView類之間再插入一個CVegaView類,在這個CVeg aView類中加入Vega線程代碼及其啟動函數(shù),并在該線程中嵌入Vega的各個相關(guān)功能(主要為上述的建立Vega程序的3個步驟)。

      由于是派生自CView類,CVegaView就擁有所有CView類的成員函數(shù)和消息映射。我們還必須為其添加專門的成員函數(shù)以完成建立Vega應(yīng)用程序的必要步驟。其中最主要的函數(shù)就是RunVega(),它的作用就是開啟Vega渲染線程和一些必要的初始設(shè)置。函數(shù)的主要代碼如下:

      void CVegaView::RunVega(void )

      {

      vegaThread=afxBeginThread( RunVegaApp, this);

      win=vgGetWin( 0 );

      chan=vgGetChan( 0 );

      obs=vgGetObserv( 0 );

      scene=vgGetScene( 0 );

      vgProp(win,VGWIN_WINBORDER,0);

      }

      線程函數(shù)RunVegaApp()是一個全局函數(shù),作為啟動Vega線程的入口,完成Vega函數(shù)“初始化、定義、系統(tǒng)配置”和仿真循環(huán)的計算,其基本內(nèi)容如下:

      UINT RunVegaApp(LPVOID pParam )

      {

      CVegaView*pOwner= (CVegaView*)pParam;

      vgInitWinSys( AfxGetInstanceHandle(),

      pOwner->GetSafeHwnd() );

      vgDefineSys( pOwner->getAdfName() );

      vgConfigSys();

      while(pOwner->getContinueRunning())

      {

      vgSyncFrame ();

      vgFrame ();

      ……. //系統(tǒng)仿真的相關(guān)運算等操作

      }

      vgSyncFrame();

      return 0;

      }

      至此,Vega渲染的函數(shù)就已經(jīng)基本完成,為了讓場景渲染到MFC的View里,還必須把主程序的View類 (假設(shè)為CMyView)的基類改成所引入的CVegaView類,也就是說,MFC的View就是Vega場景渲染區(qū)域,這也是我們設(shè)計CVegaView類的初衷。更改了基類之后,同時也要把該類的消息映射宏的基類參數(shù)進行修改。在各文件中包含了適當(dāng)?shù)念^文件之后,一個完整的基于MFC的Vega應(yīng)用程序基本完成。

      在飛行仿真過程中,可以配合鼠標(biāo)或鍵盤使多個視窗在主窗口和輔助窗口中切換,從而使重要視窗更便于觀察。由于Vega主循環(huán)每循環(huán)一次虛擬場景刷新一幀,因此我們在Vega主循環(huán)每循環(huán)一次時完成一次導(dǎo)彈數(shù)學(xué)模型的數(shù)值求解積分,并由計算求得的導(dǎo)彈空間位置和姿態(tài)位置來設(shè)置導(dǎo)彈在當(dāng)前幀中的位置。

      該模擬器將基于計算機數(shù)值解法的彈道仿真和基于Visual C++的Vega虛擬現(xiàn)實仿真技術(shù)有機地結(jié)合在一起,實現(xiàn)導(dǎo)彈飛行的可視化。

      圖2 導(dǎo)彈模擬器的視景仿真效果Fig.2 Scence simulation result of missile simulator

      6 結(jié)束語

      導(dǎo)彈模擬器是快速有效形成戰(zhàn)斗力的必需。本文研究了某型導(dǎo)彈的運動模型,提出了某型導(dǎo)彈模擬器的設(shè)計思路;建立了基于MFC的Vega應(yīng)用程序開發(fā)過程,實現(xiàn)了某型導(dǎo)彈模擬器的研制。

      [1]喬海巖,可偉,姚廷偉.艦船及艦載導(dǎo)彈運動軌跡模擬器設(shè)計[J].艦船科學(xué)技術(shù),2012(34):30-47.QIAO Hai-yan,KE Wei,YAO Ting-wei.Design of the ships and sea-based missile track simulator[J].Ship Science and Technology,2012(34):30-47.

      [2]史震.運動控制系統(tǒng)[M].北京:清華大學(xué)出版社,2008.

      [3]龔卓蓉.LynX圖形界面[M].北京:國防工業(yè)出版社,2002.

      [4]洪炳镕,蔡則蘇,唐好選.虛擬現(xiàn)實及其應(yīng)用[M].北京 :國防工業(yè)出版社,2005.

      [5]胡小強.虛擬現(xiàn)實技術(shù)[M].北京:北京郵電大學(xué)出版社,2005.

      [6]孟曉梅,劉文慶.MultiGen Creator教程[M].北京:國防工業(yè)出版社,2005

      猜你喜歡
      模擬訓(xùn)練模擬器線程
      了不起的安檢模擬器
      盲盒模擬器
      劃船模擬器
      模擬訓(xùn)練(二)
      淺談linux多線程協(xié)作
      模擬訓(xùn)練(十一)
      模擬訓(xùn)練(十)
      模擬訓(xùn)練(八)
      動態(tài)飛行模擬器及其發(fā)展概述
      Linux線程實現(xiàn)技術(shù)研究
      安达市| 南丰县| 湘潭市| 花莲县| 共和县| 陕西省| 岑巩县| 杂多县| 轮台县| 白河县| 扎兰屯市| 图片| 临湘市| 册亨县| 荆门市| 德化县| 金川县| 明溪县| 芷江| 东乡族自治县| 抚松县| 信宜市| 读书| 南岸区| 石渠县| 沁水县| 新邵县| 琼海市| 南澳县| 云浮市| 乐至县| 枝江市| 陇川县| 岚皋县| 水城县| 吴忠市| 平昌县| 天台县| 定边县| 无为县| 盐边县|