柳有權(quán), 雷鵬, 韓紅雷, 王曉琦, 吳恩華
(1.長安大學(xué) 信息工程學(xué)院, 陜西 西安 710064;2.中國科學(xué)院軟件研究所 計(jì)算機(jī)科學(xué)國家重點(diǎn)實(shí)驗(yàn)室, 北京 100190;3.澳門大學(xué) 科技學(xué)院,澳門;4.中國傳媒大學(xué) 動(dòng)畫與數(shù)字藝術(shù)學(xué)院, 北京 100024;5.西北工業(yè)大學(xué) 人文與經(jīng)法學(xué)院,陜西 西安 710072)
2012-10-12;
2012-12-10; < class="emphasis_bold">網(wǎng)絡(luò)出版時(shí)間
時(shí)間:2013-04-09 09:58
國家重點(diǎn)基礎(chǔ)研究發(fā)展規(guī)劃(973計(jì)劃)資助(2009CB320802);國家自然科學(xué)基金資助(60973066, 60833007);中國科學(xué)院軟件研究所計(jì)算機(jī)科學(xué)國家重點(diǎn)實(shí)驗(yàn)室開放基金資助(SYSKF1004);教育部“長江學(xué)者和創(chuàng)新團(tuán)隊(duì)發(fā)展計(jì)劃”創(chuàng)新團(tuán)隊(duì)基金資助(IRT0951)
柳有權(quán)(1976-),男,湖北秭歸人,副教授,博士,研究方向?yàn)樘摂M現(xiàn)實(shí)和計(jì)算機(jī)圖形學(xué)。
基于Google Earth的協(xié)同飛行可視仿真
柳有權(quán)1,2,3, 雷鵬1, 韓紅雷4, 王曉琦5, 吳恩華2,3
(1.長安大學(xué) 信息工程學(xué)院, 陜西 西安 710064;2.中國科學(xué)院軟件研究所 計(jì)算機(jī)科學(xué)國家重點(diǎn)實(shí)驗(yàn)室, 北京 100190;3.澳門大學(xué) 科技學(xué)院,澳門;4.中國傳媒大學(xué) 動(dòng)畫與數(shù)字藝術(shù)學(xué)院, 北京 100024;5.西北工業(yè)大學(xué) 人文與經(jīng)法學(xué)院,陜西 西安 710072)
基于Google Earth API提供了一個(gè)協(xié)同飛行仿真系統(tǒng)。該系統(tǒng)利用Google Earth提供的真實(shí)衛(wèi)星影像和三維地形信息,實(shí)現(xiàn)了面向互聯(lián)網(wǎng)用戶的飛機(jī)加載和動(dòng)態(tài)飛行仿真;同時(shí)為了進(jìn)行多機(jī)協(xié)同飛行,采用AJAX通信方案實(shí)現(xiàn)了多機(jī)位置姿態(tài)信息在多個(gè)客戶端瀏覽器下的一致性更新,該方案簡單有效。系統(tǒng)不但具有較強(qiáng)的真實(shí)感,而且具備全球三維場(chǎng)景,開發(fā)工作量小,可拓展性強(qiáng)。
飛行仿真; 協(xié)同; 可視化; AJAX技術(shù)
飛行仿真技術(shù)伴隨著虛擬現(xiàn)實(shí)技術(shù)的發(fā)展得到快速發(fā)展,早在20世紀(jì)七八十年代,美國軍方就開展了“飛行頭盔”和軍事現(xiàn)代仿真器的研究。目前已經(jīng)研發(fā)了各種各樣的飛行仿真器,甚至開發(fā)了真實(shí)度很高的飛行仿真游戲,如著名的微軟飛行仿真游戲。而作為飛行仿真的核心之一——視景仿真占據(jù)了很重要的地位,無論模擬的真實(shí)度還是場(chǎng)景的復(fù)雜度,都已經(jīng)有了很大的提升。
視景仿真技術(shù)通過創(chuàng)建三維虛擬環(huán)境為參與者提供一個(gè)逼真的視覺感受,通過沉浸感再現(xiàn)參與者真實(shí)的操縱感,從而為虛擬漫游、模擬培訓(xùn)、交互娛樂等應(yīng)用提供了強(qiáng)有力的保障。 特別是在商業(yè)和軍事等領(lǐng)域,可視化的視景仿真已經(jīng)成為一項(xiàng)高性價(jià)比、安全可靠的能替代原有方案的技術(shù),例如飛行訓(xùn)練、交通事故的場(chǎng)景再現(xiàn)、搶險(xiǎn)救災(zāi)的預(yù)演和演練等項(xiàng)目;然而創(chuàng)建真實(shí)的三維虛擬場(chǎng)景費(fèi)時(shí)費(fèi)力,成本很高。作為飛行仿真來說,需要逼真的三維地形數(shù)據(jù),才能達(dá)到飛行員訓(xùn)練目的。
葉舸等[1]采用OpenGL圖形化手段利用實(shí)測(cè)飛行數(shù)據(jù)驅(qū)動(dòng)飛機(jī),為檢驗(yàn)實(shí)測(cè)飛行數(shù)據(jù)是否滿足飛行大綱要求提供了一種可視化的評(píng)定方式,但沒有提供真實(shí)的飛行場(chǎng)景。閆曉東[2]和郭佳等[3]分別基于OpenSceneGraph進(jìn)行飛行視景仿真系統(tǒng)的開發(fā),以降低以前采用OpenGL開發(fā)所帶來的開發(fā)復(fù)雜度和工作量,但仍然需要自己構(gòu)建三維真實(shí)場(chǎng)景。
劉麗等[4]介紹了北京航空航天大學(xué)開發(fā)的大型民機(jī)通用飛行仿真系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)和網(wǎng)絡(luò)通信的方案,采用NetBIOS進(jìn)行計(jì)算機(jī)設(shè)備和應(yīng)用程序的通信。張繼夫等[5]針對(duì)多機(jī)飛行仿真系統(tǒng)的擴(kuò)展性差的問題,探討了基于HLA協(xié)議的多機(jī)可擴(kuò)展性。這些多機(jī)仿真或分布式仿真都基于局域網(wǎng)范圍。
由于Google Map和Google Earth提供了大量免費(fèi)的地理信息數(shù)據(jù),以及開放的編程接口[6],越來越多的研究人員以該平臺(tái)作為二次開發(fā)的基礎(chǔ):如馬俊等[7]設(shè)計(jì)了一個(gè)基于Google Earth的人機(jī)交互平臺(tái),通過與Windows編程相結(jié)合實(shí)現(xiàn)了地理信息的交互操作;李衛(wèi)東等[8]以Google Map平臺(tái)實(shí)現(xiàn)了飛行軌跡的動(dòng)態(tài)顯示。在利用Google Earth開發(fā)方面,國外一些網(wǎng)站給出不少應(yīng)用的實(shí)例:如PlanetInAction網(wǎng)站[9-10]不僅開發(fā)了直升機(jī)飛行仿真游戲,還開發(fā)了輪船駕駛仿真游戲;ParaGlidingEarth網(wǎng)站[11]提供了滑翔機(jī)仿真功能,同時(shí)為滑翔機(jī)愛好者提供了很多數(shù)據(jù)管理功能;Sea-Seek網(wǎng)站[12]提供了飛行、潛水艇兩種任務(wù)的模擬。相比之下,國內(nèi)網(wǎng)站和一些研究者對(duì)基于Google Earth的開發(fā)尚處于初級(jí)階段。基于Google Earth和Google Map開發(fā)的好處是:可以免費(fèi)獲得豐富的衛(wèi)星影像數(shù)據(jù)和三維地形數(shù)據(jù),開發(fā)量小,而且開發(fā)接口非常豐富,功能強(qiáng)勁。
對(duì)于飛行仿真,Google Earth內(nèi)部提供了一個(gè)高真實(shí)感的飛行模擬器,但只提供單用戶應(yīng)用模式。James Stafford[13]開發(fā)了一個(gè)網(wǎng)站提供飛行模擬,不過這個(gè)功能過于簡單。據(jù)了解,目前唯一與本文工作類似的是GEFS在線網(wǎng)站[14],它實(shí)現(xiàn)了多人在線模擬飛行功能,但其主要定位為在線娛樂。
本文提出了一種廉價(jià)的基于Google Earth的飛行仿真系統(tǒng)。充分利用Google Earth通過衛(wèi)星影像圖構(gòu)建的整個(gè)地球的三維地形數(shù)據(jù),而且對(duì)于一些中心城市,Google Earth還提供了細(xì)節(jié)豐富的三維建筑物模型。這些數(shù)據(jù)對(duì)于飛行仿真來說,精度可以滿足要求。另外,不同于傳統(tǒng)的飛行仿真都只針對(duì)單人單機(jī)進(jìn)行,提出了一種基于互聯(lián)網(wǎng)的飛行協(xié)同的概念,即類似于網(wǎng)絡(luò)游戲,互聯(lián)網(wǎng)用戶通過網(wǎng)絡(luò)瀏覽器進(jìn)行協(xié)同飛行仿真。
本文目的在于為用戶提供一種新的協(xié)同飛行仿真的手段。為了達(dá)到這個(gè)目的,借助于Google強(qiáng)大的數(shù)據(jù)支撐,通過Google Earth API編程實(shí)現(xiàn)了一個(gè)協(xié)同飛行仿真系統(tǒng)。該系統(tǒng)運(yùn)行在一個(gè)超級(jí)輕量級(jí)服務(wù)器上,大數(shù)據(jù)則存放在Google的服務(wù)器上。系統(tǒng)架構(gòu)圖如圖1所示。
圖1 協(xié)同飛行仿真系統(tǒng)架構(gòu)圖Fig.1 Framework of the collaborative flight simulation system
因?yàn)橹饕獢?shù)據(jù)均來自Google,所以本地服務(wù)器可以非?!笆菪 薄T诒镜厥莘?wù)器,可利用Google API進(jìn)行大數(shù)據(jù)訪問,所以客戶端的數(shù)據(jù)來自兩方面:一方面是Google提供的地理信息數(shù)據(jù)和三維地形數(shù)據(jù),另一方面是來自瘦服務(wù)器提供的一些自定義數(shù)據(jù),如飛機(jī)模型和地標(biāo)數(shù)據(jù)等,模型和數(shù)據(jù)均以KML文件形式存儲(chǔ)在本地服務(wù)器的數(shù)據(jù)庫。用戶可以選擇所需飛機(jī)機(jī)型,不同的飛機(jī)被賦予不同的參數(shù),包括獨(dú)特的外形特征和飛行特性,如速度、靈活性等。系統(tǒng)模塊如圖2所示。客戶端從瘦服務(wù)器上下載飛機(jī)模型文件和實(shí)時(shí)飛行模擬計(jì)算的Java Script代碼在瀏覽器中執(zhí)行,而瘦服務(wù)器端負(fù)責(zé)多用戶飛行參數(shù)的維護(hù),它們之間通過AJAX通信模塊進(jìn)行動(dòng)態(tài)更新。
圖2 模塊劃分圖Fig.2 Module division
飛行模擬仿真需要根據(jù)空氣動(dòng)力學(xué)、飛行器運(yùn)動(dòng)學(xué)和飛行控制原理等相關(guān)理論構(gòu)建相關(guān)數(shù)學(xué)模型,然后通過求解獲得飛機(jī)的飛行姿態(tài)和位置更新。因?yàn)檫@部分不是本文工作重點(diǎn),所以只是采用簡單的策略來控制飛機(jī)的飛行姿態(tài):即用戶操縱飛機(jī)的偏航角、俯仰角和滾轉(zhuǎn)角的變化,通過當(dāng)前速度計(jì)算出下一個(gè)時(shí)刻的位置點(diǎn)和飛機(jī)整體方位,然后在Google Earth中將位置坐標(biāo)轉(zhuǎn)換為經(jīng)緯度,當(dāng)然也可以引入更為復(fù)雜真實(shí)的操作,這一部分通過Java Script腳本編程來實(shí)現(xiàn)。另外,由于Google Earth沒有提供碰撞檢測(cè)的功能,為了避免飛機(jī)穿透地面,仿真過程中需要不斷查詢飛機(jī)當(dāng)前位置對(duì)應(yīng)的地形高度,如果飛機(jī)高度低于地形高度,意味著飛機(jī)與地面發(fā)生碰撞。 這時(shí)需要修改飛機(jī)速度,或者直接給用戶報(bào)告飛機(jī)墜毀的消息。
由于Google Earth的飛行視景只是為用戶提供了局部的三維觀察視角,用戶通過鍵盤或游戲桿操縱虛擬飛機(jī)進(jìn)行飛行任務(wù)訓(xùn)練時(shí),呈現(xiàn)內(nèi)容包括三維場(chǎng)景中的地形地貌和建筑物信息等。為了給用戶提供全局位置的定位和跟蹤,同時(shí)引入了Google Maps。這樣通過二維地圖就可以了解飛機(jī)在三維場(chǎng)景中的具體位置,為整個(gè)協(xié)同飛行提供全局感知。
本系統(tǒng)開發(fā)的重點(diǎn)在于多人在線通信,只有支持多人通信,才能達(dá)到協(xié)同仿真的目的。 因此本系統(tǒng)除了支持單用戶進(jìn)行模擬飛行外,同時(shí)也支持多人同時(shí)通過互聯(lián)網(wǎng)進(jìn)行實(shí)時(shí)飛行協(xié)同。各用戶直接共享其他用戶的飛行狀態(tài)數(shù)據(jù),實(shí)現(xiàn)多用戶編隊(duì)飛行;或進(jìn)行實(shí)時(shí)聯(lián)機(jī)模擬飛行,大大提高了系統(tǒng)的可用性和協(xié)同性。每個(gè)用戶在進(jìn)行模擬飛行的同時(shí)還可以看到視野范圍內(nèi)的其他用戶。
2.1AJAX通信
異步的JavaScript與XML技術(shù)(Asynchronous JavaScript and XML,AJAX)[15]與傳統(tǒng)Web應(yīng)用不同,AJAX應(yīng)用可以只向服務(wù)器發(fā)送和取回那些必需的數(shù)據(jù)信息。它使用SOAP或其他一些基于XML的Web服務(wù)器接口,并在客戶端使用JavaScript處理從服務(wù)器返回的響應(yīng),實(shí)現(xiàn)頁面在不刷新的情況下與服務(wù)器通信、數(shù)據(jù)交換和按需讀取數(shù)據(jù)。
本系統(tǒng)通過多用戶客戶端實(shí)時(shí)傳遞和交換被控制飛行器模型的飛行狀態(tài)數(shù)據(jù),實(shí)現(xiàn)了多個(gè)用戶在Google Earth三維地球場(chǎng)景中同時(shí)飛行的功能。本系統(tǒng)采用AJAX技術(shù)將所有的客戶端和服務(wù)器端連接在一起,各客戶端之間通過本地瘦服務(wù)器可以進(jìn)行數(shù)據(jù)通信,實(shí)現(xiàn)協(xié)同飛行。這樣可以改善系統(tǒng)的交互性,增強(qiáng)客戶端的表現(xiàn)能力,在帶給用戶更好的飛行體驗(yàn)的同時(shí),減少網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,提高系統(tǒng)運(yùn)行的性能。
在客戶端和服務(wù)器端之間,AJAX通信模塊充當(dāng)了一個(gè)中間連接件的角色,將客戶端和服務(wù)器端緊密聯(lián)系在一起。AJAX通信功能通過客戶端函數(shù)調(diào)用觸發(fā),封裝客戶端數(shù)據(jù)生成對(duì)服務(wù)器端的通信請(qǐng)求,并在服務(wù)器端返回?cái)?shù)據(jù)后,以函數(shù)返回的形式反饋到客戶端。具體實(shí)現(xiàn)采用了XMLHttpRequest對(duì)象,通過該對(duì)象的open,send,requestText等方法進(jìn)行消息傳遞。
2.2 服務(wù)器端工作流程
服務(wù)器端的功能模塊主要完成接收及存儲(chǔ)飛行數(shù)據(jù)、提取及發(fā)送飛行數(shù)據(jù)等功能,其工作流程如圖3所示。
圖3 服務(wù)器端工作流程Fig.3 Server operating flow
從圖3中可以看到,在本系統(tǒng)中客戶端和服務(wù)器端之間的通信全部是通過AJAX技術(shù)實(shí)現(xiàn)的。存儲(chǔ)和讀取飛行數(shù)據(jù)主要涉及到對(duì)服務(wù)器端的XML數(shù)據(jù)文件進(jìn)行查詢和修改的操作;而接收和發(fā)送飛行數(shù)據(jù)涉及到AJAX通信時(shí)服務(wù)器端和客戶端的發(fā)送和接收函數(shù)的使用。
對(duì)于客戶端中的非被控制飛行器對(duì)象來說,需要獲取服務(wù)器為其發(fā)送的飛行狀態(tài)數(shù)據(jù)。根據(jù)需要從服務(wù)器返回的XML文檔內(nèi)容如下:
程序中,數(shù)組lla1,lla2,lla3表示飛行器在場(chǎng)景中的位置,包括經(jīng)度、緯度以及高度;數(shù)組newhtr0,newhtr1和absroll表示飛行器在飛行過程中的姿態(tài)。在未來的工作中,飛行數(shù)據(jù)可以進(jìn)行進(jìn)一步擴(kuò)展以包含更多的內(nèi)容。
本文使用Google公司的Google Earth API和Google Maps API結(jié)合JavaScript開發(fā)飛行仿真系統(tǒng),主體開發(fā)語言為HTML,開發(fā)平臺(tái)為MyEclipse和Tomcat;所以與OpenGL或OSG開發(fā)模式相比,整個(gè)開發(fā)復(fù)雜度大大降低,用Java Script編程替代了傳統(tǒng)的C++編程,而且大規(guī)模地形數(shù)據(jù)無需自己構(gòu)建。
圖4給出了飛機(jī)多人編隊(duì)飛行的結(jié)果圖,飛機(jī)用圓標(biāo)出,右上角給出了飛機(jī)對(duì)應(yīng)在二維地圖中的位置。為了清晰地演示飛機(jī)的空中位置的變化,以進(jìn)行航線分析,系統(tǒng)通過軌跡線記錄下飛機(jī)的飛行軌跡,如圖5所示的曲線,然后可以選擇多視角進(jìn)行觀察。
演示視頻可以訪問http://v.youku.com/v-show/id-XMzAxMDc0ODA0.html,也可以通過訪問http://imlab.chd.edu.cn/GEFlightSimulator/進(jìn)行體驗(yàn)。
圖4 飛機(jī)多人編隊(duì)飛行Fig.4 Formation flight in Google Earth
圖5 飛機(jī)軌跡的可視化顯示Fig.5 Visualization of the flight path
本文利用Google Maps API和Google Earth API結(jié)合AJAX技術(shù)實(shí)現(xiàn)了多用戶的實(shí)時(shí)可控模擬飛行,為飛行協(xié)同仿真提供了靈活、可擴(kuò)展性強(qiáng)的系統(tǒng)。由于基于Google API進(jìn)行開發(fā),因此在三維視圖中所顯示Google公司提供的三維真實(shí)地形地貌,優(yōu)于其他的模擬飛行系統(tǒng);而且由于Google公司擁有海量的地理信息數(shù)據(jù)并且經(jīng)常對(duì)地理信息進(jìn)行更新,保證用戶的模擬過程盡可能真實(shí)反映現(xiàn)實(shí)世界,大大提高了模擬的真實(shí)性。由于主要數(shù)據(jù)來自Google服務(wù)器,操作難度降低,用戶只需通過網(wǎng)絡(luò)瀏覽器即可進(jìn)行針對(duì)全球的模擬飛行,而無需裝載其他地圖數(shù)據(jù)。
當(dāng)然本文工作實(shí)踐尚很初步,在未來的工作中,將進(jìn)一步增強(qiáng)多機(jī)協(xié)同飛行的數(shù)據(jù)通信能力,以提供更真實(shí)的多機(jī)協(xié)同功能。另外將改進(jìn)飛行模擬的真實(shí)度,考慮采用更為復(fù)雜的飛機(jī)動(dòng)力學(xué)仿真模型,以更真實(shí)地反映飛機(jī)的飛行參數(shù)。
[1] 葉舸,田兆峰,閆楚良.基于OpenGL的飛機(jī)飛行實(shí)測(cè)數(shù)據(jù)可視化研究[J].航空學(xué)報(bào),2011,32(6):1050-1057.
[2] 閆曉東.基于OSG的飛行視景仿真平臺(tái)開發(fā)[J].計(jì)算機(jī)仿真,2008,25(5):58-60,198.
[3] 郭佳,郭連成,張麗,等.基于OSG的飛行仿真系統(tǒng)視景平臺(tái)的研究與開發(fā)[J].沈陽航空工業(yè)學(xué)院學(xué)報(bào),2010,27(4):1-4.
[4] 劉麗,彭曉源,王行仁.基于網(wǎng)絡(luò)的大型民用飛機(jī)飛行仿真系統(tǒng)[J].北京航空航天大學(xué)學(xué)報(bào),2000,26(3):321-324.
[5] 張繼夫,鄧華.多機(jī)飛行仿真系統(tǒng)擴(kuò)展性研究[J].兵工自動(dòng)化,2010,29(8):25-27.
[6] Google Earth API [DB/OL].[2012-7-20].https://developers.google.com/earth/.
[7] 馬俊,楊忠,楊成順,等.基于Google Earth的人機(jī)交互平臺(tái)設(shè)計(jì)[J].應(yīng)用科技,2010,37(7):6-10.
[8] 李衛(wèi)東,劉銀.基于Google Maps的模擬飛行軌跡顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中國民航飛行學(xué)院學(xué)報(bào),2011,22(2):5-7.
[9] PlanetInAction.com.Helicopters [DB/OL].[2012-7-20].http://www.planetinaction.com/helicopters/index.htm/.
[10] PlanetInAction.com.Ships [DB/OL].[2012-7-20].http://www.planetinaction.com/ships.htm/.
[11] ParaglidingEarth.com.pgSim [DB/OL].[2012-7-20].http://www.paraglidingearth.com/.
[12] Sea-seek.com[DB/OL].[2012-7-20].http://www.sea-seek.com/.
[13] Stafford J.Barnabu.co.uk[DB/OL].[2012-7-20].http://www.barnabu.co.uk/geapi/flightsim/.
[14] Gefs-online.com [DB/OL].[2012-7-20].http://www.gefs-online.com/.
[15] Wikipedia[DB/OL].[2012-7-20].http://zh.wikipedia.org/zh/AJAX.
VisualcollaborativeflightsimulationbasedonGoogleEarth
LIU You-quan1,2,3, LEI Peng1, HAN Hong-lei4, WANG Xiao-qi5, WU En-hua2,3
(1.School of Information Engineering, Chang’an University, Xi’an 710064, China;2.LCS, Institute of Software, Chinese Academy of Sciences, Beijing 100190, China;3.Faculty of Science and Technology, University of Macau, Macao, China;4.School of Animation and Digital Arts, Communication University of China, Beijing 100024, China;5.School of Humanities, Economics and Law, NWPU, Xi’an 710072, China)
This paper presents a Google Earth-based collaborative flight simulation system. Taking full advantage of real satellite images and 3D terrain data provided by Google, this system offered internet users multiple aircraft loading and dynamic flight simulation with strong realistic visual appearance. Moreover AJAX technique was used to enable multiple aircraft to communicate with each other to make sure the position and orientation of aircraft updated to each user in the internet browser for collaborative flight. Such strategies used in this paper provide flexibility for extension development, and lessen the developing burden with 3D global terrain data available online.
flight simulation; collaboration; visualization; AJAX technique
TP319
A
1002-0853(2013)03-0273-04
(編輯:李怡)