一種飛行器的三維視景仿真系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)三維仿真技術(shù)領(lǐng)域,更為具體地講,涉及一種飛行器的三維視景仿真系統(tǒng)。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)三維仿真技術(shù)和飛行器技術(shù)的快速發(fā)展,飛行器的三維可視化仿真研宄在飛行器研宄領(lǐng)域起著舉足輕重的作用。通過(guò)三維仿真系統(tǒng),研宄人員對(duì)數(shù)據(jù)的分析方式發(fā)生了根本變化,不再停留在大量復(fù)雜的數(shù)值曲線研宄上,而是通過(guò)三維動(dòng)畫來(lái)反映飛行器的實(shí)時(shí)飛行狀況,更加直觀形象地驗(yàn)證飛行方案設(shè)計(jì)的正確性及準(zhǔn)確性。
[0003]目前,對(duì)于飛行器視景仿真系統(tǒng)的研宄已經(jīng)有了一些研宄成果,市面上也有一些比較專業(yè)的視景仿真軟件,例如FlightGear、Vega、Vega Prime、VTree等,用戶可以在此基礎(chǔ)上進(jìn)行二次開發(fā),這種方式需要對(duì)該軟件進(jìn)行系統(tǒng)地分析研宄,但是大部分商業(yè)軟件價(jià)格昂貴,并且代碼不開源,所需成本較高,并且存在重復(fù)開發(fā)問(wèn)題。
[0004]為了解決這些問(wèn)題,專利CN103093047A典型飛行器視景仿真系統(tǒng)中提出了一種適用于各種飛行器的三維視景仿真系統(tǒng),但是在這個(gè)系統(tǒng)中也存在著一些不足:
[0005]1、該系統(tǒng)只支持3ds文件格式的飛行器模型。飛行器的3D模型可能有多種文件格式,雖然這些格式的模型都可以通過(guò)相關(guān)軟件轉(zhuǎn)化成3ds格式,但是格式轉(zhuǎn)化過(guò)程中可能會(huì)導(dǎo)致某些模型數(shù)據(jù)的丟失。
[0006]2、該系統(tǒng)中的數(shù)據(jù)可視化模塊基于編輯框控件實(shí)現(xiàn),可以對(duì)飛行器的各種屬性進(jìn)行實(shí)時(shí)數(shù)值和曲線顯示。這種基于控件繪制曲線的方式比較復(fù)雜,因?yàn)镸FC類庫(kù)中沒(méi)有數(shù)值曲線顯示控件,通過(guò)控件繪制數(shù)值曲線需要調(diào)用畫筆構(gòu)造顯示環(huán)境。
[0007]3、該飛行仿真系統(tǒng)采用UDP通訊方式,只能接收局域網(wǎng)上位機(jī)的數(shù)據(jù)傳遞,無(wú)法接收飛行器實(shí)際飛行數(shù)據(jù)。只能驗(yàn)證控制算法,而不能修正控制算法。
[0008]4、該仿真系統(tǒng)不能設(shè)置特定的飛行模式,只能以一種視角跟隨飛行器運(yùn)動(dòng),沒(méi)有設(shè)計(jì)三維場(chǎng)景漫游功能。
[0009]5、該仿真系統(tǒng)沒(méi)有考慮碰撞檢測(cè)問(wèn)題。
【發(fā)明內(nèi)容】
[0010]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種飛行器的三維視景仿真系統(tǒng),通過(guò)實(shí)時(shí)仿真和回放仿真的方式,從而滿足用戶的基本仿真要求。
[0011]為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明一種飛行器的三維視景仿真系統(tǒng),其特征在于,包括:
[0012]一人機(jī)交互模塊,用于處理用戶的界面操作和系統(tǒng)操作的信息顯示;
[0013]三維視景仿真系統(tǒng)啟動(dòng)后,用戶通過(guò)點(diǎn)擊開始按鈕對(duì)三維視景仿真系統(tǒng)解鎖,再點(diǎn)擊人機(jī)交互模塊上相應(yīng)按鈕進(jìn)行系統(tǒng)設(shè)置;
[0014]一模型配置模塊,包括控制對(duì)象配置和仿真場(chǎng)景配置;在控制對(duì)象配置中加載用戶需要的3D模型,在仿真場(chǎng)景配置中加載對(duì)應(yīng)的飛行場(chǎng)景模型,加載完成后,系統(tǒng)將自動(dòng)啟動(dòng)碰撞檢測(cè)算法模塊,并通過(guò)視景顯示模塊對(duì)加載的3D模型和飛行場(chǎng)景模型進(jìn)行初始化顯示;
[0015]一碰撞檢測(cè)模塊,利用基于圖像空間的碰撞檢測(cè)優(yōu)化算法,在視景顯示模塊的實(shí)時(shí)仿真過(guò)程中對(duì)模型配置模塊中加載的3D模型和飛行場(chǎng)景模型進(jìn)行實(shí)時(shí)計(jì)算,用于實(shí)時(shí)檢測(cè)飛行器與仿真場(chǎng)景是否發(fā)生碰撞,得到碰撞檢測(cè)結(jié)果,存儲(chǔ)在數(shù)據(jù)存儲(chǔ)模塊;
[0016]一視景顯示模塊,包括實(shí)時(shí)顯示模塊和回放顯示模塊;
[0017]實(shí)時(shí)顯示模塊將通信模塊與MATLAB引擎或飛行器間的通信數(shù)據(jù)通過(guò)純數(shù)值、數(shù)值曲線和三維動(dòng)畫三種方式顯示,其中,三維動(dòng)畫顯示時(shí),調(diào)用數(shù)據(jù)存儲(chǔ)模塊中的碰撞檢測(cè)結(jié)果,碰撞檢測(cè)模塊再次監(jiān)測(cè)飛行器和飛行場(chǎng)景是否發(fā)生碰撞,如果發(fā)生碰撞,則停止實(shí)時(shí)仿真,人機(jī)交互模塊產(chǎn)生警報(bào),如果不發(fā)生碰撞,則將該次仿真數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)存儲(chǔ)模塊;
[0018]回放顯示模塊通過(guò)讀取數(shù)據(jù)存取模塊中的數(shù)據(jù)進(jìn)行純數(shù)值、數(shù)值曲線和三維動(dòng)畫顯不;
[0019]在同一時(shí)刻,視景顯示模塊只能選擇一個(gè)顯示模塊工作,每個(gè)顯示模塊可以選擇三種顯示方式中的一種或兩種或三種同時(shí)顯示,具體可以通過(guò)人機(jī)交互模塊的顯示模式按鈕選擇;
[0020]一通信模塊,包括UDP通信模塊和串口通信模塊,采用數(shù)據(jù)雙向傳遞方式;通信模塊根據(jù)視景顯示模塊選擇的顯示模塊確定出通信模塊的工作方式;
[0021]如果視景顯示模塊選擇實(shí)時(shí)顯示模塊,則通信模塊進(jìn)入實(shí)時(shí)飛行仿真通信模式;此時(shí),啟動(dòng)m)P通信模塊或串口通信模塊工作,其中,UDP通信模塊用于接收和傳遞三維視景仿真系統(tǒng)與MATLAB引擎間的數(shù)據(jù),串口通信模塊用于接收和傳遞三維視景仿真系統(tǒng)與飛行器間的數(shù)據(jù);UDP通信模塊和串口通信模塊在接受數(shù)據(jù)時(shí)均需要通過(guò)時(shí)間戳判斷是否出現(xiàn)數(shù)據(jù)掉包,如果發(fā)生掉包,則由數(shù)據(jù)的平均值補(bǔ)齊,再將接收的數(shù)據(jù)傳遞給視景顯示模塊,同時(shí)存儲(chǔ)到數(shù)據(jù)存儲(chǔ)模塊;
[0022]如果視景顯示模塊選擇回放顯示模塊,則通信模塊進(jìn)入回放飛行仿真通信模式;此時(shí),通信模塊自動(dòng)關(guān)閉,視景顯示模塊直接從數(shù)據(jù)存儲(chǔ)模塊中讀取數(shù)據(jù)進(jìn)行相應(yīng)顯示;
[0023]—數(shù)據(jù)存儲(chǔ)模塊,用于存儲(chǔ)三維視景仿真系統(tǒng)與MATLAB引擎或飛行器間的通信數(shù)據(jù),以及碰撞檢測(cè)模塊得到碰撞檢測(cè)結(jié)果;
[0024]—三維場(chǎng)景漫游模塊,用戶通過(guò)鼠標(biāo)、鍵盤在三維場(chǎng)景漫游模塊中控制攝像機(jī)的移動(dòng)和旋轉(zhuǎn),從而改變用戶觀察飛行器和場(chǎng)景的視角;
[0025]三維視景仿真系統(tǒng)的工作流程如下所述;
[0026]三維視景仿真系統(tǒng)啟動(dòng)后,用戶通過(guò)點(diǎn)擊開始按鈕對(duì)三維視景仿真系統(tǒng)解鎖,再點(diǎn)擊人機(jī)交互模塊上相應(yīng)按鈕進(jìn)行系統(tǒng)設(shè)置;
[0027]點(diǎn)擊人機(jī)交互模塊的模型加載按鈕,模型配置模塊利用開源庫(kù)加載飛行器的3D模型和飛行場(chǎng)景模型,同時(shí)啟動(dòng)碰撞檢測(cè)模塊,并對(duì)加載的模型進(jìn)行初始化顯示;在初始化顯示時(shí),啟動(dòng)三維場(chǎng)景漫游模塊,用戶通過(guò)鼠標(biāo)、鍵盤可以控制用戶觀察視角的變化;
[0028]點(diǎn)擊人機(jī)交互模塊的實(shí)時(shí)仿真按鈕,三維視景仿真系統(tǒng)進(jìn)入實(shí)時(shí)仿真階段;此時(shí),還要選擇通信模塊中的UDP通信或者串口通信;
[0029]點(diǎn)擊UDP通信按鈕,UDP通信開始接收、傳遞三維視景仿真系統(tǒng)與MATLAB引擎間的數(shù)據(jù);
[0030]點(diǎn)擊串口通信按鈕,串口通信模塊開始接收、傳遞三維視景仿真系統(tǒng)與飛行器間的數(shù)據(jù);
[0031]在同一時(shí)刻,只能點(diǎn)擊一個(gè)通信按鈕,UDP通信或者串口通信下的通信數(shù)據(jù)均存儲(chǔ)在數(shù)據(jù)存儲(chǔ)模塊,同時(shí)發(fā)送給視景顯示模塊,通過(guò)純數(shù)值、仿真曲線和三維動(dòng)畫三種方式顯示,三種顯示方式均可點(diǎn)擊對(duì)應(yīng)的按鈕,選擇開啟或者關(guān)閉;在三維動(dòng)畫顯示時(shí),啟動(dòng)三維場(chǎng)景漫游模塊,用戶通過(guò)鼠標(biāo)、鍵盤可以控制用戶觀察視角的變化;
[0032]點(diǎn)擊人機(jī)交互模塊的回放仿真按鈕,三維視景仿真系統(tǒng)進(jìn)入回放仿真階段;此時(shí),通信模塊自動(dòng)關(guān)閉,視景顯示模塊直接從數(shù)據(jù)存儲(chǔ)模塊中讀取數(shù)據(jù),通過(guò)純數(shù)值、仿真曲線和三維動(dòng)畫三種方式顯示,三種顯示方式均可點(diǎn)擊對(duì)應(yīng)的按鈕,選擇開啟或者關(guān)閉;此時(shí),在三維動(dòng)畫顯示時(shí),啟動(dòng)三維場(chǎng)景漫游模塊,用戶也可以通過(guò)鼠標(biāo)、鍵盤可以控制用戶觀察視角的變化。
[0033]本發(fā)明的發(fā)明目的是這樣實(shí)現(xiàn)的:
[0034]本發(fā)明飛行器的三維視景仿真系統(tǒng),包括人機(jī)交互模塊、模型配置模塊、碰撞檢測(cè)模塊、視景顯示模塊、通信模塊、數(shù)據(jù)存儲(chǔ)模塊和三維場(chǎng)景漫游模塊,并行處理用戶的仿真操作;具體講,利用MFC類庫(kù)完成人機(jī)交互界面的開發(fā),利用ProEssential和OpenGL分別完成純數(shù)值、數(shù)值曲線和三維動(dòng)畫的仿真,通信模塊采用UDP通信和串口通信技術(shù),碰撞檢測(cè)算法模塊采用了基于圖像的碰撞檢測(cè)優(yōu)化算法,從而使整個(gè)系統(tǒng)能夠滿足用戶的基本仿真要求。
[0035]同時(shí),本發(fā)明飛行器的三維視景仿真系統(tǒng)還具有以下有益效果:
[0036]1、使用第三方開源庫(kù)Open Asset Import Library來(lái)導(dǎo)入模型文件,第三方開源庫(kù)支持多種格式的3D模型加載,增強(qiáng)了系統(tǒng)的通用性和擴(kuò)展性;
[0037]2、利用圖標(biāo)制作軟件ProEssential繪制二維曲線,應(yīng)用程序中使用較為便捷,繪制速度快,外形美觀且易修改;
[0038]3、實(shí)時(shí)仿真模式和飛行回放模式同時(shí)開發(fā),通信模塊中包含UDP通信和串口通信,實(shí)現(xiàn)了飛行器實(shí)時(shí)仿真和離線三維仿真功能;
[0039]4、本系統(tǒng)的仿真形式包含飛行器屬性參數(shù)的純數(shù)值、數(shù)值曲線和三維動(dòng)畫等多種仿真顯示形式,增強(qiáng)了系統(tǒng)的擴(kuò)展性;
[0040]5、三維場(chǎng)景漫游功能增加了用戶虛擬環(huán)境沉浸感,通過(guò)人機(jī)交互能夠使用戶更好的體驗(yàn)虛擬場(chǎng)景,用戶可以從多個(gè)視角觀察飛行器三維仿真;
[0041]6、增加了基于圖像空間的碰撞檢測(cè)優(yōu)化算法,利用GPU加速技術(shù)減輕CPU負(fù)擔(dān),三維視景仿真系統(tǒng)中加入該模塊進(jìn)行避障和碰撞檢測(cè),具有一定的創(chuàng)新性。
【附圖說(shuō)明】
[0042]圖1是飛行器的三維視景仿真系統(tǒng)總體框架圖;
[0043]圖2是圖1所示視景顯示模