基于MFC和Vega的導航仿真系統(tǒng)
摘 要:為了加快艦載海上航行的慣性導航仿真,論述一種基于MFC和Vega開發(fā)環(huán)境開發(fā)虛擬現(xiàn)實仿真系統(tǒng)的方法,并且詳細闡述開發(fā)過程,用于開發(fā)艦載海上航行仿真系統(tǒng),通過對陀螺儀和加速度數(shù)學模型的建立,完成了慣性器件仿真和艦載航行仿真系統(tǒng)的研究。結(jié)果表明該系統(tǒng)能使設計人員很直觀地觀察艦載的航行,航行姿態(tài),同時,采用面向?qū)ο蟮脑O計方法,遵循軟件的開發(fā)規(guī)范,驗證了平臺的可行性和有效性,有利于艦載慣性導航仿真的設計,同時對虛擬現(xiàn)實的開發(fā)也有很好的借鑒作用。
關(guān)鍵詞:虛擬現(xiàn)實;系統(tǒng)仿真;艦載;Vega;MFC;慣性器件
虛擬現(xiàn)實(Virtual Reality,VR)是在信息科學的飛速發(fā)展中誕生的,其主要特點是將虛擬現(xiàn)實技術(shù)和系統(tǒng)仿真技術(shù)完美的結(jié)合在一起。其核心是由一些三維的交互式計算機生成的環(huán)境組成。這些環(huán)境可以是真實的,也可以是想象的世界模型,其目的是通過人工合成的經(jīng)歷表示信息。有了虛擬現(xiàn)實技術(shù),復雜或抽象系統(tǒng)的概念形成可以通過將系統(tǒng)的各子部件以某種方式表示成具有確切含義的符號而成為可能,從而有助于人們理解和認識所研究系統(tǒng)的本質(zhì)和動態(tài)規(guī)律。
1 虛擬航行仿真系統(tǒng)開發(fā)環(huán)境
隨著虛擬現(xiàn)實仿真技術(shù)的不斷發(fā)展,虛擬現(xiàn)實仿真開發(fā)平臺也得到了飛速的發(fā)展。尤其是Multigen—Paradigm公司的實時場景管理和驅(qū)動軟件Vega,由于它在實時視景仿真、聲音仿真、虛擬現(xiàn)實及其他可視化領域的廣泛應用,成為現(xiàn)在最流行的虛擬環(huán)境開發(fā)仿真平臺。這里研究的艦載海上仿真系統(tǒng)是基于MFC和Vega開發(fā)環(huán)境基礎上開發(fā)的。
Vega是在SDI Performer軟件的基礎之上發(fā)展起來的,為Performer增加了許多重要特性。它將易用的點擊式圖形界面開發(fā)環(huán)境LynX和高級仿真功能巧妙的結(jié)合起來,使用戶以簡單的操作迅速的創(chuàng)建,編輯和運行復雜的仿真應用程序。
Vega是一個類庫,每個Vega類都是一個完整的控制,該控制結(jié)構(gòu)包含用于處理和執(zhí)行特征等各項內(nèi)容,它以C語言的API形式出現(xiàn),為軟件人員提供最大限度的軟件控制的靈活性。
2 基于Windows平臺上Vega應用程序的基本框架
Vega的函數(shù)庫都是基于多線程動態(tài)鏈接庫(Mu—tithread DLL)版本的C運行時庫(Run Time Library),直接用Windows API進行Vega應用程序的開發(fā)是一個非常繁瑣的過程,很多基礎工作(比如窗口的創(chuàng)建,菜單的創(chuàng)建等)都需要自己動手寫,大部分的精力被耗費在應用程序框架的搭建和應用程序界面的設計上,所以利用可視化的應用程序開發(fā)工具(Microsoft VisuaI C++6.0)編寫基于MFC的Vega應用程序是非常有必要的。Vega應用程序編程接口自帶了必須的頭文件和鏈接庫,故首先配置Microsoft Vistlal C++6.O的環(huán)境。步驟如下:
(1)添加相關(guān)路徑,打開Microsoft Visual C++6.0界面,單擊“Tools”菜單條下的“Options”選項,單擊“Directories”將Vega安裝目錄下的“Inelude”目錄添加進來,單擊“Show directories for”下拉選項,選擇“Library files”項把Vega安裝目錄下的“Include”目錄添加進來。
(2)更改編譯選項,單擊“Project”菜單下的“Set—tings…”選項,將“PrOject Options”中的“MLd”,改為“MD”。
2.1 Vega應用程序的基本框架和實現(xiàn)
典型Vega應用程序的框架如圖1所示。
由
vgSyncFrame()和vgFrame()函數(shù)一起決定了Ve—ga進程能夠與設定的幀頻率保持同步,從而能夠保證渲染出流暢的動態(tài)視景仿真畫面,再加上相應的控制代碼就可以完成各樣的仿真要求。
2.2 基于MFC的Vega的應用程序開發(fā)
首先利用Microsoft Visual C++6.O的應用程序向?qū)梢粋€單文檔界面(SDI)應用程序框架,然后編輯和修改相應的代碼,實現(xiàn)在視圖框架中顯示Vega的渲染窗口,再添加菜單、工具欄、對話框?qū)ega窗口的渲染過程進行實時的交互式控制。在采用Cview類和其派生類CVegaView來實現(xiàn)的,并在派生類CVega—View中加入相應的啟動代碼。如圖2所示。
在定義CVegaView類定義的時候應該加入如下成員函數(shù)。
定義一個全局函數(shù)UINT runvegaproc(LPVOIDpParam)以此作為啟動Vega線程的入口,在此函數(shù)中加入線程的系統(tǒng)的初始化,系統(tǒng)定義,系統(tǒng)配置和vega線程的主循環(huán)和調(diào)用仿真模型的代碼等。
3 基于Vega海洋模塊模塊的程序設計
Vega海洋模塊提供API標準程序使得主程序能夠確認海浪高度,這樣當與用戶所提供的動態(tài)模型結(jié)合后,可使得相應的動態(tài)模型隨著海浪的波動而波動。在編寫以海洋模塊為基礎的應用程序時,需要在Mi—crosoft Visual C++6.O環(huán)境中包含其模塊中的“vgma—rine.h”頭文件并鏈接模塊中相應的庫文件到用戶的主程序中。當在Vega仿真程序中調(diào)用Vega海洋模塊時,需要調(diào)用vgInitMarine()和vgInitFx()對Vega海洋各模塊進行初始化,當調(diào)用vgConfigSys()時,配置海洋模塊。
4 慣性導航系統(tǒng)數(shù)學模型的研究
由于條件有限,這里沒有實際數(shù)據(jù),一種辦法是模擬艦船的航跡,然后計算加速度計和陀螺的輸出,作為仿真的輸入,仿真結(jié)果與實際航跡比較,得到誤差曲線,慣導仿真框圖如圖3所示。
4.1 慣導仿真框圖
在真實的捷聯(lián)慣導系統(tǒng)中,ωbib和fb分別是由陀螺儀和加速度計提供的。由于條件的限制,在對捷聯(lián)慣導系統(tǒng)進行仿真時,首先建立陀螺儀仿真和加速度計的仿真器。
4.2 陀螺儀仿真器數(shù)學模型
(1)陀螺儀模型需要的輸入量。東向速度γtx、北向速度γty、當?shù)鼐暥圈?、當?shù)馗叨萮;航向角ψ、俯仰角θ、橫滾角γ、x軸向角速率ωbtbx、y軸向角速率ωbtby,z軸向角速率ωbtbz。
(2)陀螺儀模型的理想輸出量。理想角速率陀螺儀測量的是艦體坐標系(b系)相對于慣性坐標系(i系)的轉(zhuǎn)動角速率在艦體坐標系中的投影ωbib。從軌跡數(shù)據(jù)中,可以得到艦體坐標系相對于地理坐標系(t系)的轉(zhuǎn)動角速率在艦體坐標系中的投影ωbtb。通過軌跡數(shù)據(jù)中的水平速度、緯度、高度可以計算出地理坐標系相對于慣性坐標系的轉(zhuǎn)動角速率在地理坐標系中投影ωtit:通過姿態(tài)角可以算出地理坐標系到艦體坐標系之間的轉(zhuǎn)換矩陣cbt;ωtit乘轉(zhuǎn)換矩陣cbt即可得到式ωbit,然后,將ωbit與ωbtb相加,就可以得到陀螺儀模型的理想輸出ωbib。
(3)陀螺儀仿真器的數(shù)學模型。陀螺儀是敏感載體角運動的元件,由于陀螺儀本身存在誤差,因此陀螺儀的輸出為:
式中,εb為陀螺儀元件的誤差。
4.3 加速度計仿真器數(shù)學模型
(1)加速度計模型的輸入量。加速度計模型所需的輸入量也是取自海浪軌跡數(shù)據(jù),具體為:東向速度vtx、北向速度vty、垂直速度vtz、東向加速度αtx、北向加速度αty、垂直加速度αty、航向角ψ、俯仰角θ、橫滾角γ,當?shù)鼐暥圈?,當?shù)馗叨萮。
(2)加速度計模型的理想輸出量。加速度計感測的量是比力??梢杂孟旅娴氖阶觼斫忉尲铀俣扔嬎袦y的比力與載體相對地球加速度之間的關(guān)系:
式中,為相對于地球速度在測量坐標系中的變化率;ωepv載體相對于地球轉(zhuǎn)動所引起的向心加速度;2ωiev載體相對于地球速度與地球自轉(zhuǎn)角速度的相互影響而形成的哥氏加速度;g為地球重力加速度。式中,中的v可以從海浪軌跡數(shù)據(jù)中獲得。ωep,ωie以通過海浪軌跡數(shù)據(jù)的水平中速度、緯度、高度算出,由上式可算出是地理坐標系下的比力ft。通過姿態(tài)角可以算出從地理坐標系到艦體坐標系之間的轉(zhuǎn)換矩陣cbt,ft乘上轉(zhuǎn)換矩陣得到艦體坐標系下的比力ft,ft就捷聯(lián)慣導系統(tǒng)中加速度計模型的理想輸出。
(3)加速度計仿真器的模型。加速度計是敏感載體線運動的元件。由于加速度計本身存在誤差,因此加速度計的輸出為:
式中,fb為加速度計實際測得的比力為加速度計的誤差。
5 坐標轉(zhuǎn)換系統(tǒng)
在三維視景仿真中,坐標系是建立算法和三維顯示的基礎,因此,需要首先將不同設備的坐標轉(zhuǎn)換成一致的坐標系。在仿真中,主要涉及到兩種坐標系,一是空間大地直角坐標;二是WGS84坐標(地心坐標)。
6 艦載海上仿真系統(tǒng)開發(fā)
船艦的實時位置信息由地理緯度、經(jīng)度和海拔高度來確定,采用的是WGS84坐標(地心坐標)。在建立船艦仿真模型時,需要空間大地直角坐標。因此,在進行計算前,需要進行必要的坐標轉(zhuǎn)換,由地心坐標轉(zhuǎn)換為空間大地直角坐標。
圖4是作者開發(fā)的艦載捷聯(lián)慣導仿真系統(tǒng)的主界面,該系統(tǒng)主要模擬艦載海上慣導仿真,同時將陀螺和加速度器的仿真模型,慣性導航算法和虛擬現(xiàn)實模型有機結(jié)合。
由于主循環(huán)每循環(huán)1次虛擬場景就刷新1幀,因此在Vega主循環(huán)每循環(huán)1次時,首先讀取位置信息,完成坐標轉(zhuǎn)換;然后完成1次陀螺和加速度數(shù)學模型的計算,通過導航算法的處理,得到緯度、經(jīng)度、高度和姿態(tài)信息;最后在通過坐標轉(zhuǎn)換到平面坐標系,控制艦船的姿態(tài)和運行。
該系統(tǒng)是基于MFc開發(fā)的,所以大大降低了編碼所用的時間,加速了開發(fā)效率。由于很好地將Ve—ga的功能嵌入到單文檔應用程序框架中,充分發(fā)揮了Vega的強大的視景驅(qū)動能力。
7 結(jié) 語
給出Microsoft Visual C++6.0和Vega的虛擬現(xiàn)實系統(tǒng);開發(fā)了艦載海上航行仿真系統(tǒng)。該系統(tǒng)使設計人員可以直觀地觀察航行過程和姿態(tài),對于分析陀螺和加速度計模型的設計是否合理,尤其在導航系統(tǒng)算法開發(fā)的初步階段具有非常有用的價值。同時對基于Microsoft Visual C++6.O和Vega的虛擬現(xiàn)實開發(fā)者也有很好的借鑒作用。