• 
    

    
    

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

      ?

      基于MFC和Vega的導(dǎo)航仿真系統(tǒng)

      2009-05-12 03:14懷紅旗王愛民
      現(xiàn)代電子技術(shù) 2009年2期
      關(guān)鍵詞:虛擬現(xiàn)實(shí)

      懷紅旗 王愛民

      摘 要:為了加快艦載海上航行的慣性導(dǎo)航仿真,論述一種基于MFC和Vega開發(fā)環(huán)境開發(fā)虛擬現(xiàn)實(shí)仿真系統(tǒng)的方法,并且詳細(xì)闡述開發(fā)過程,用于開發(fā)艦載海上航行仿真系統(tǒng),通過對(duì)陀螺儀和加速度數(shù)學(xué)模型的建立,完成了慣性器件仿真和艦載航行仿真系統(tǒng)的研究。結(jié)果表明該系統(tǒng)能使設(shè)計(jì)人員很直觀地觀察艦載的航行,航行姿態(tài),同時(shí),采用面向?qū)ο蟮脑O(shè)計(jì)方法,遵循軟件的開發(fā)規(guī)范,驗(yàn)證了平臺(tái)的可行性和有效性,有利于艦載慣性導(dǎo)航仿真的設(shè)計(jì),同時(shí)對(duì)虛擬現(xiàn)實(shí)的開發(fā)也有很好的借鑒作用。

      關(guān)鍵詞:虛擬現(xiàn)實(shí);系統(tǒng)仿真;艦載;Vega;MFC;慣性器件

      中圖分類號(hào):TN965文獻(xiàn)標(biāo)識(shí)碼:B

      文章編號(hào):1004 373X(2009)02 167 04

      Navigation Simulation System Based on MFC and Vega

      HUAI Hongqi,WANG Aimin

      (The School of Instrument Science and Engineering,Southeast University,Nanjing,210096,China)

      Abstract:To speed up the inertial navigation simulation of shipborne marine navigation,a method of virtual reality simulation system based on MFC and Vega,and its development process are studied,it is applied to develop shipborne marine navigation.The research on inertial device simulation and shipborne navigation simulation are completed by building gyroscope and accelerated math model.The results show that the navigation of shipborne can be observed by designers,using object-oriented method,the feasibility and effectiveness of platform is verificated.It is useful for developing virtual reality.

      Keywords:virtual reality;system simulation;shipborne;Vega;MFC;inertial device

      虛擬現(xiàn)實(shí)(Virtual Reality,VR)是在信息科學(xué)的飛速發(fā)展中誕生的,其主要特點(diǎn)是將虛擬現(xiàn)實(shí)技術(shù)和系統(tǒng)仿真技術(shù)完美的結(jié)合在一起。其核心是由一些三維的交互式計(jì)算機(jī)生成的環(huán)境組成。這些環(huán)境可以是真實(shí)的,也可以是想象的世界模型,其目的是通過人工合成的經(jīng)歷表示信息。有了虛擬現(xiàn)實(shí)技術(shù),復(fù)雜或抽象系統(tǒng)的概念形成可以通過將系統(tǒng)的各子部件以某種方式表示成具有確切含義的符號(hào)而成為可能,從而有助于人們理解和認(rèn)識(shí)所研究系統(tǒng)的本質(zhì)和動(dòng)態(tài)規(guī)律。

      1 虛擬航行仿真系統(tǒng)開發(fā)環(huán)境

      隨著虛擬現(xiàn)實(shí)仿真技術(shù)的不斷發(fā)展,虛擬現(xiàn)實(shí)仿真開發(fā)平臺(tái)也得到了飛速的發(fā)展。尤其是Multigen-Paradigm公司的實(shí)時(shí)場景管理和驅(qū)動(dòng)軟件Vega,由于它在實(shí)時(shí)視景仿真、聲音仿真、虛擬現(xiàn)實(shí)及其他可視化領(lǐng)域的廣泛應(yīng)用,成為現(xiàn)在最流行的虛擬環(huán)境開發(fā)仿真平臺(tái)[1]。這里研究的艦載海上仿真系統(tǒng)是基于MFC和Vega開發(fā)環(huán)境基礎(chǔ)上開發(fā)的。

      Vega是在SDI Performer 軟件的基礎(chǔ)之上發(fā)展起來的,為Performer 增加了許多重要特性。它將易用的點(diǎn)擊式圖形界面開發(fā)環(huán)境LynX和高級(jí)仿真功能巧妙的結(jié)合起來,使用戶以簡單的操作迅速的創(chuàng)建,編輯和運(yùn)行復(fù)雜的仿真應(yīng)用程序。

      Vega是一個(gè)類庫,每個(gè)Vega類都是一個(gè)完整的控制,該控制結(jié)構(gòu)包含用于處理和執(zhí)行特征等各項(xiàng)內(nèi)容,它以C語言的API形式出現(xiàn),為軟件人員提供最大限度的軟件控制的靈活性[2]。

      2 基于Windows 平臺(tái)上Vega應(yīng)用程序的基本框架

      Vega的函數(shù)庫都是基于多線程動(dòng)態(tài)鏈接庫(Mutithread DLL)版本的C運(yùn)行時(shí)庫(Run Time Library ),直接用Windows API進(jìn)行Vega應(yīng)用程序的開發(fā)是一個(gè)非常繁瑣的過程,很多基礎(chǔ)工作(比如窗口的創(chuàng)建,菜單的創(chuàng)建等)都需要自己動(dòng)手寫,大部分的精力被耗費(fèi)在應(yīng)用程序框架的搭建和應(yīng)用程序界面的設(shè)計(jì)上,所以利用可視化的應(yīng)用程序開發(fā)工具(Microsoft Visual C++6.0)編寫基于MFC的Vega應(yīng)用程序是非常有必要的。Vega應(yīng)用程序編程接口自帶了必須的頭文件和鏈接庫,故首先配置Microsoft Visual C++6.0的環(huán)境[3]。步驟如下:

      (1) 添加相關(guān)路徑,打開Microsoft Visual C++6.0 界面,單擊“Tools”菜單條下的“Options”選項(xiàng),單擊“Directories”將Vega安裝目錄下的“Include”目錄添加進(jìn)來,單擊“Show directories for ”下拉選項(xiàng),選擇“Library files”項(xiàng)把Vega安裝目錄下的“Include”目錄添加進(jìn)來。

      (2) 更改編譯選項(xiàng),單擊“Project”菜單下的“Settings…”選項(xiàng),將“Project Options”中的“MLd”,改為“MD”。

      2.1 Vega應(yīng)用程序的基本框架和實(shí)現(xiàn)

      典型Vega應(yīng)用程序的框架如圖1所示[3]。

      圖1 Vega應(yīng)用程序框架圖

      由圖1可以看出,Vega應(yīng)用程序可以分成2個(gè)主要的階段,首先是Vega系統(tǒng)的靜態(tài)描述階段,然后進(jìn)入Vega系統(tǒng)的動(dòng)態(tài)循環(huán)。第一個(gè)階段主要為Vega系統(tǒng)的正確運(yùn)行進(jìn)行必要的系統(tǒng)配置,包括內(nèi)存分配,參數(shù)設(shè)置,Vega類的定義等。而Vega仿真應(yīng)用程序主要是在Vega動(dòng)態(tài)循環(huán)中實(shí)現(xiàn)的,故每一個(gè)Vega應(yīng)用程序都包含如下的函數(shù)語句:

      void main( int argc,char *argv[] )

      // init,define,and config the system //

      vgInitSys();// initialize Vega//

      vgDefineSys( argv[1] );//read in the ADF//

      vgConfigSys();//configure Vega//

      while(1){

      vgSyncFrame ();

      vgFrame();

      // the simulation code//

      }

      }

      vgSyncFrame()和vgFrame()函數(shù)一起決定了Vega進(jìn)程能夠與設(shè)定的幀頻率保持同步,從而能夠保證渲染出流暢的動(dòng)態(tài)視景仿真畫面,再加上相應(yīng)的控制代碼就可以完成各樣的仿真要求[4]。

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

      首先利用Microsoft Visual C++6.0的應(yīng)用程序向?qū)梢粋€(gè)單文檔界面(SDI)應(yīng)用程序框架[5],然后編輯和修改相應(yīng)的代碼,實(shí)現(xiàn)在視圖框架中顯示Vega的渲染窗口,再添加菜單、工具欄、對(duì)話框?qū)ega窗口的渲染過程進(jìn)行實(shí)時(shí)的交互式控制。在采用Cview類和其派生類CVegaView來實(shí)現(xiàn)的,并在派生類CVegaView中加入相應(yīng)的啟動(dòng)代碼[6]。如圖2所示。

      圖2 單文檔應(yīng)用程序框架基本關(guān)系

      在定義CVegaView類定義的時(shí)候應(yīng)該加入如下成員函數(shù)。

      void ownship_update( void );

      void Platform2Xyz(const double *pxyz,double *BLH,double *xyz);

      void convert2platform(const double *xyz,double *BLH,double *p_xyz);

      void BLH2XYZ(const double *earth,double *xyz);

      void XYZ2BLH(const double *xyz,double *earth);

      void GD(float a[18],float b[12]);//the InertialNavigation function

      void WibbASFB(float a[9],float b[7]);//the model of gyro and accelerometer function

      void Initial(float a[3],float b[13]);//INS initial function

      定義一個(gè)全局函數(shù)UINT runvegaProc(LPVOID pParam)以此作為啟動(dòng)Vega線程的入口,在此函數(shù)中加入線程的系統(tǒng)的初始化,系統(tǒng)定義,系統(tǒng)配置和vega線程的主循環(huán)和調(diào)用仿真模型的代碼等。

      3 基于Vega海洋模塊模塊的程序設(shè)計(jì)

      Vega海洋模塊提供API標(biāo)準(zhǔn)程序使得主程序能夠確認(rèn)海浪高度,這樣當(dāng)與用戶所提供的動(dòng)態(tài)模型結(jié)合后,可使得相應(yīng)的動(dòng)態(tài)模型隨著海浪的波動(dòng)而波動(dòng)。在編寫以海洋模塊為基礎(chǔ)的應(yīng)用程序時(shí),需要在Microsoft Visual C++6.0環(huán)境中包含其模塊中的“vgmarine.h”頭文件并鏈接模塊中相應(yīng)的庫文件到用戶的主程序中。當(dāng)在Vega仿真程序中調(diào)用Vega海洋模塊時(shí),需要調(diào)用vgInitMarine()和vgInitFx()對(duì)Vega海洋各模塊進(jìn)行初始化,當(dāng)調(diào)用vgConfigSys()時(shí),配置海洋模塊[2]。

      4 慣性導(dǎo)航系統(tǒng)數(shù)學(xué)模型的研究

      由于條件有限,這里沒有實(shí)際數(shù)據(jù),一種辦法是模擬艦船的航跡,然后計(jì)算加速度計(jì)和陀螺的輸出,作為仿真的輸入,仿真結(jié)果與實(shí)際航跡比較,得到誤差曲線,慣導(dǎo)仿真框圖如圖3所示。

      圖3 慣導(dǎo)仿真框圖

      4.1 慣導(dǎo)仿真框圖

      在真實(shí)的捷聯(lián)慣導(dǎo)系統(tǒng)中,ωb璱b和fb分別是由陀螺儀和加速度計(jì)提供的[7]。由于條件的限制,在對(duì)捷聯(lián)慣導(dǎo)系統(tǒng)進(jìn)行仿真時(shí),首先建立陀螺儀仿真和加速度計(jì)的仿真器[8]。

      4.2 陀螺儀仿真器數(shù)學(xué)模型

      (1) 陀螺儀模型[9]需要的輸入量。東向速度γt瓁、北向速度γt瓂、當(dāng)?shù)鼐暥圈铡?dāng)?shù)馗叨萮;航向角ψ、俯仰角θ、橫滾角γ、x軸向角速率ωb璽bx、y軸向角速率ωb璽by,z軸向角速率ωb璽bz。

      (2) 陀螺儀模型的理想輸出量。理想角速率陀螺儀測量的是艦體坐標(biāo)系(b系)相對(duì)于慣性坐標(biāo)系(i系)的轉(zhuǎn)動(dòng)角速率在艦體坐標(biāo)系中的投影ωb璱b。從軌跡數(shù)據(jù)中,可以得到艦體坐標(biāo)系相對(duì)于地理坐標(biāo)系(t系)的轉(zhuǎn)動(dòng)角速率在艦體坐標(biāo)系中的投影ωb璽b。通過軌跡數(shù)據(jù)中的水平速度、緯度、高度可以計(jì)算出地理坐標(biāo)系相對(duì)于慣性坐標(biāo)系的轉(zhuǎn)動(dòng)角速率在地理坐標(biāo)系中投影ωt璱t:通過姿態(tài)角可以算出地理坐標(biāo)系到艦體坐標(biāo)系之間的轉(zhuǎn)換矩陣cb璽;ωt璱t乘轉(zhuǎn)換矩陣cb璽即可得到式ωb璱t,然后,將ωb璱t與ωb璽b相加,就可以得到陀螺儀模型的理想輸出ωb璱b。

      (3) 陀螺儀仿真器的數(shù)學(xué)模型。陀螺儀是敏感載體角運(yùn)動(dòng)的元件,由于陀螺儀本身存在誤差,因此陀螺儀的輸出為:

      b璱b=ωb璱b+εb(1)

      式中,εb為陀螺儀元件的誤差。

      4.3 加速度計(jì)仿真器數(shù)學(xué)模型

      (1) 加速度計(jì)模型的輸入量。加速度計(jì)模型所需的輸入量也是取自海浪軌跡數(shù)據(jù),具體為:東向速度νt瓁、北向速度νt瓂、垂直速度νt瓃、東向加速度αt瓁、北向加速度αt瓂、垂直加速度αt瓂、航向角ψ、俯仰角θ、橫滾角γ,當(dāng)?shù)鼐暥圈?,?dāng)?shù)馗叨萮。

      (2) 加速度計(jì)模型的理想輸出量。加速度計(jì)感測的量是比力。可以用下面的式子來解釋加速度計(jì)所感測的比力與載體相對(duì)地球加速度之間的關(guān)系:

      f=dνdt璸+ω璭pν+2ω璱eν-g(2)

      式中,dνdt璸為相對(duì)于地球速度在測量坐標(biāo)系中的變化率;ω璭pν 載體相對(duì)于地球轉(zhuǎn)動(dòng)所引起的向心加速度;2ω璱eν載體相對(duì)于地球速度與地球自轉(zhuǎn)角速度的相互影響而形成的哥氏加速度;g為地球重力加速度。式中,dνdt璸中的ν可以從海浪軌跡數(shù)據(jù)中獲得。ω璭p,ω璱e以通過海浪軌跡數(shù)據(jù)的水平中速度、緯度、高度算出,由上式可算出是地理坐標(biāo)系下的比力ft。通過姿態(tài)角可以算出從地理坐標(biāo)系到艦體坐標(biāo)系之間的轉(zhuǎn)換矩陣cb璽,ft乘上轉(zhuǎn)換矩陣得到艦體坐標(biāo)系下的比力ft,ft就捷聯(lián)慣導(dǎo)系統(tǒng)中加速度計(jì)模型的理想輸出。

      (3) 加速度計(jì)仿真器的模型。加速度計(jì)是敏感載體線運(yùn)動(dòng)的元件。由于加速度計(jì)本身存在誤差,因此加速度計(jì)的輸出為:

      b=fb+齜璦(3)

      式中,b為加速度計(jì)實(shí)際測得的比力齜璦為加速度計(jì)的誤差。

      5 坐標(biāo)轉(zhuǎn)換系統(tǒng)

      在三維視景仿真中,坐標(biāo)系是建立算法和三維顯示的基礎(chǔ),因此,需要首先將不同設(shè)備的坐標(biāo)轉(zhuǎn)換成一致的坐標(biāo)系。在仿真中,主要涉及到兩種坐標(biāo)系,一是空間大地直角坐標(biāo);二是WGS84坐標(biāo)(地心坐標(biāo))。

      6 艦載海上仿真系統(tǒng)開發(fā)

      船艦的實(shí)時(shí)位置信息由地理緯度、經(jīng)度和海拔高度來確定,采用的是WGS84坐標(biāo)(地心坐標(biāo))。在建立船艦仿真模型時(shí),需要空間大地直角坐標(biāo)。因此,在進(jìn)行計(jì)算前,需要進(jìn)行必要的坐標(biāo)轉(zhuǎn)換,由地心坐標(biāo)轉(zhuǎn)換為空間大地直角坐標(biāo)[10]。

      圖4是作者開發(fā)的艦載捷聯(lián)慣導(dǎo)仿真系統(tǒng)的主界面,該系統(tǒng)主要模擬艦載海上慣導(dǎo)仿真,同時(shí)將陀螺和加速度器的仿真模型,慣性導(dǎo)航算法和虛擬現(xiàn)實(shí)模型有機(jī)結(jié)合。

      由于主循環(huán)每循環(huán)1次虛擬場景就刷新1幀,因此在Vega主循環(huán)每循環(huán)1次時(shí),首先讀取位置信息,完成坐標(biāo)轉(zhuǎn)換;然后完成1次陀螺和加速度數(shù)學(xué)模型的計(jì)算,通過導(dǎo)航算法的處理,得到緯度、經(jīng)度、高度和姿態(tài)信息;最后在通過坐標(biāo)轉(zhuǎn)換到平面坐標(biāo)系,控制艦船的姿態(tài)和運(yùn)行[7]。

      圖4 仿真系統(tǒng)的主界面

      該系統(tǒng)是基于MFC開發(fā)的,所以大大降低了編碼所用的時(shí)間,加速了開發(fā)效率。由于很好地將Vega的功能嵌入到單文檔應(yīng)用程序框架中,充分發(fā)揮了Vega的強(qiáng)大的視景驅(qū)動(dòng)能力[11]。

      7 結(jié) 語

      給出Microsoft Visual C++6.0和Vega的虛擬現(xiàn)實(shí)系統(tǒng);開發(fā)了艦載海上航行仿真系統(tǒng)。該系統(tǒng)使設(shè)計(jì)人員可以直觀地觀察航行過程和姿態(tài),對(duì)于分析陀螺和加速度計(jì)模型的設(shè)計(jì)是否合理,尤其在導(dǎo)航系統(tǒng)算法開發(fā)的初步階段具有非常有用的價(jià)值。同時(shí)對(duì)基于Microsoft Visual C++6.0和Vega的虛擬現(xiàn)實(shí)開發(fā)者也有很好的借鑒作用。

      參考文獻(xiàn)

      [1]MultiGen-Paradigm Inc.Creating Terrain for Simulations.Version 2.6.

      [2]MultiGen-Paradigm Inc.The Multigen Creator Desktop Tutor.Version 2.6.U.S.A.

      [3]王乘,李麗軍,周均清,等.Vega實(shí)時(shí)三維視景仿真技術(shù)[M].武漢:華中科技大學(xué)出版社,2005.

      [4]MultiGen-Paradigm Inc.Multigen Creator User′s Guide.Version 2.6.

      [5]候俊杰.深入淺出MFC[M].2版.武漢:華中科技大學(xué)出版社,2001.

      [6]唐勝景,汪群山,王憲宗,等.基于Visual C++ 和Vega的導(dǎo)彈虛擬飛行仿真系統(tǒng)[J].北京理工大學(xué)學(xué)報(bào),2007(5):413-416.

      [7]以光衢.慣性導(dǎo)航原理[M].北京:航空工業(yè)出版社,1987.

      [8]趙玉霞.捷聯(lián)慣導(dǎo)系統(tǒng)仿真算法的研究及其實(shí)現(xiàn)[D].大連:大連理工大學(xué),2005.

      [9]董秋泉,肖尚彬,蔡泰信.陀螺系統(tǒng)[M].西安:西北工業(yè)大學(xué)出版社,1985.

      [10]任亮,龍建忠,李華.三維航跡的仿真數(shù)學(xué)模型及其在Vega環(huán)境中的實(shí)現(xiàn)[J].計(jì)算機(jī)仿真,2006(3):59-60.

      [11] David Kruglinski.Visual C++技術(shù)內(nèi)幕[M].潘愛民,王國印,譯.北京:清華大學(xué)出版社,1999.

      作者簡介

      懷紅旗 男,1981年出生,碩士研究生。主要研究方向?yàn)樘摂M現(xiàn)實(shí)仿真。

      王愛民 男,1968年出生,副教授。主要研究方向?yàn)闄C(jī)器人控制技術(shù)、臨場感技術(shù)、數(shù)字信號(hào)處理技術(shù)。

      猜你喜歡
      虛擬現(xiàn)實(shí)
      虛擬現(xiàn)實(shí)技術(shù)在中學(xué)校園中的應(yīng)用
      論虛擬現(xiàn)實(shí)藝術(shù)的“沉浸”
      REALITY BITES
      虛擬現(xiàn)實(shí)產(chǎn)業(yè)進(jìn)入高速發(fā)展期
      風(fēng)口上的虛擬現(xiàn)實(shí)
      虛擬現(xiàn)實(shí)技術(shù)向科幻小說借靈感
      虛擬現(xiàn)實(shí):另一個(gè)真實(shí)世界
      諾基亞推出虛擬現(xiàn)實(shí)攝像機(jī)OZO
      虛擬現(xiàn)實(shí)炫酷來襲走出實(shí)驗(yàn)室坎坷漫長
      虛擬現(xiàn)實(shí)技術(shù)不能根本改變新聞
      金堂县| 新龙县| 云阳县| 鹤庆县| 龙里县| 岳普湖县| 屯昌县| 梓潼县| 祥云县| 中卫市| 桂东县| 丹阳市| 海城市| 广昌县| 马尔康县| 宜宾市| 民丰县| 犍为县| 丰镇市| 高密市| 镶黄旗| 布拖县| 泊头市| 长岛县| 察雅县| 得荣县| 运城市| 海伦市| 资溪县| 浮山县| 密云县| 桐梓县| 平利县| 临清市| 寻乌县| 阳朔县| 梧州市| 扎囊县| 玉田县| 手游| 靖江市|