APP下载

基于Google Earth的协同飞行可视仿真

2013-11-04柳有权雷鹏韩红雷王晓琦吴恩华

飞行力学 2013年3期
关键词:飞行数据视景服务器端

柳有权, 雷鹏, 韩红雷, 王晓琦, 吴恩华

(1.长安大学 信息工程学院, 陕西 西安 710064;2.中国科学院软件研究所 计算机科学国家重点实验室, 北京 100190;3.澳门大学 科技学院,澳门;4.中国传媒大学 动画与数字艺术学院, 北京 100024;5.西北工业大学 人文与经法学院,陕西 西安 710072)

2012-10-12;

2012-12-10; < class="emphasis_bold">网络出版时间

时间:2013-04-09 09:58

国家重点基础研究发展规划(973计划)资助(2009CB320802);国家自然科学基金资助(60973066, 60833007);中国科学院软件研究所计算机科学国家重点实验室开放基金资助(SYSKF1004);教育部“长江学者和创新团队发展计划”创新团队基金资助(IRT0951)

柳有权(1976-),男,湖北秭归人,副教授,博士,研究方向为虚拟现实和计算机图形学。

基于Google Earth的协同飞行可视仿真

柳有权1,2,3, 雷鹏1, 韩红雷4, 王晓琦5, 吴恩华2,3

(1.长安大学 信息工程学院, 陕西 西安 710064;2.中国科学院软件研究所 计算机科学国家重点实验室, 北京 100190;3.澳门大学 科技学院,澳门;4.中国传媒大学 动画与数字艺术学院, 北京 100024;5.西北工业大学 人文与经法学院,陕西 西安 710072)

基于Google Earth API提供了一个协同飞行仿真系统。该系统利用Google Earth提供的真实卫星影像和三维地形信息,实现了面向互联网用户的飞机加载和动态飞行仿真;同时为了进行多机协同飞行,采用AJAX通信方案实现了多机位置姿态信息在多个客户端浏览器下的一致性更新,该方案简单有效。系统不但具有较强的真实感,而且具备全球三维场景,开发工作量小,可拓展性强。

飞行仿真; 协同; 可视化; AJAX技术

0 引言

飞行仿真技术伴随着虚拟现实技术的发展得到快速发展,早在20世纪七八十年代,美国军方就开展了“飞行头盔”和军事现代仿真器的研究。目前已经研发了各种各样的飞行仿真器,甚至开发了真实度很高的飞行仿真游戏,如著名的微软飞行仿真游戏。而作为飞行仿真的核心之一——视景仿真占据了很重要的地位,无论模拟的真实度还是场景的复杂度,都已经有了很大的提升。

视景仿真技术通过创建三维虚拟环境为参与者提供一个逼真的视觉感受,通过沉浸感再现参与者真实的操纵感,从而为虚拟漫游、模拟培训、交互娱乐等应用提供了强有力的保障。 特别是在商业和军事等领域,可视化的视景仿真已经成为一项高性价比、安全可靠的能替代原有方案的技术,例如飞行训练、交通事故的场景再现、抢险救灾的预演和演练等项目;然而创建真实的三维虚拟场景费时费力,成本很高。作为飞行仿真来说,需要逼真的三维地形数据,才能达到飞行员训练目的。

叶舸等[1]采用OpenGL图形化手段利用实测飞行数据驱动飞机,为检验实测飞行数据是否满足飞行大纲要求提供了一种可视化的评定方式,但没有提供真实的飞行场景。闫晓东[2]和郭佳等[3]分别基于OpenSceneGraph进行飞行视景仿真系统的开发,以降低以前采用OpenGL开发所带来的开发复杂度和工作量,但仍然需要自己构建三维真实场景。

刘丽等[4]介绍了北京航空航天大学开发的大型民机通用飞行仿真系统的网络结构和网络通信的方案,采用NetBIOS进行计算机设备和应用程序的通信。张继夫等[5]针对多机飞行仿真系统的扩展性差的问题,探讨了基于HLA协议的多机可扩展性。这些多机仿真或分布式仿真都基于局域网范围。

由于Google Map和Google Earth提供了大量免费的地理信息数据,以及开放的编程接口[6],越来越多的研究人员以该平台作为二次开发的基础:如马俊等[7]设计了一个基于Google Earth的人机交互平台,通过与Windows编程相结合实现了地理信息的交互操作;李卫东等[8]以Google Map平台实现了飞行轨迹的动态显示。在利用Google Earth开发方面,国外一些网站给出不少应用的实例:如PlanetInAction网站[9-10]不仅开发了直升机飞行仿真游戏,还开发了轮船驾驶仿真游戏;ParaGlidingEarth网站[11]提供了滑翔机仿真功能,同时为滑翔机爱好者提供了很多数据管理功能;Sea-Seek网站[12]提供了飞行、潜水艇两种任务的模拟。相比之下,国内网站和一些研究者对基于Google Earth的开发尚处于初级阶段。基于Google Earth和Google Map开发的好处是:可以免费获得丰富的卫星影像数据和三维地形数据,开发量小,而且开发接口非常丰富,功能强劲。

对于飞行仿真,Google Earth内部提供了一个高真实感的飞行模拟器,但只提供单用户应用模式。James Stafford[13]开发了一个网站提供飞行模拟,不过这个功能过于简单。据了解,目前唯一与本文工作类似的是GEFS在线网站[14],它实现了多人在线模拟飞行功能,但其主要定位为在线娱乐。

本文提出了一种廉价的基于Google Earth的飞行仿真系统。充分利用Google Earth通过卫星影像图构建的整个地球的三维地形数据,而且对于一些中心城市,Google Earth还提供了细节丰富的三维建筑物模型。这些数据对于飞行仿真来说,精度可以满足要求。另外,不同于传统的飞行仿真都只针对单人单机进行,提出了一种基于互联网的飞行协同的概念,即类似于网络游戏,互联网用户通过网络浏览器进行协同飞行仿真。

1 整体架构设计

本文目的在于为用户提供一种新的协同飞行仿真的手段。为了达到这个目的,借助于Google强大的数据支撑,通过Google Earth API编程实现了一个协同飞行仿真系统。该系统运行在一个超级轻量级服务器上,大数据则存放在Google的服务器上。系统架构图如图1所示。

图1 协同飞行仿真系统架构图Fig.1 Framework of the collaborative flight simulation system

因为主要数据均来自Google,所以本地服务器可以非常“瘦小”。在本地瘦服务器,可利用Google API进行大数据访问,所以客户端的数据来自两方面:一方面是Google提供的地理信息数据和三维地形数据,另一方面是来自瘦服务器提供的一些自定义数据,如飞机模型和地标数据等,模型和数据均以KML文件形式存储在本地服务器的数据库。用户可以选择所需飞机机型,不同的飞机被赋予不同的参数,包括独特的外形特征和飞行特性,如速度、灵活性等。系统模块如图2所示。客户端从瘦服务器上下载飞机模型文件和实时飞行模拟计算的Java Script代码在浏览器中执行,而瘦服务器端负责多用户飞行参数的维护,它们之间通过AJAX通信模块进行动态更新。

图2 模块划分图Fig.2 Module division

飞行模拟仿真需要根据空气动力学、飞行器运动学和飞行控制原理等相关理论构建相关数学模型,然后通过求解获得飞机的飞行姿态和位置更新。因为这部分不是本文工作重点,所以只是采用简单的策略来控制飞机的飞行姿态:即用户操纵飞机的偏航角、俯仰角和滚转角的变化,通过当前速度计算出下一个时刻的位置点和飞机整体方位,然后在Google Earth中将位置坐标转换为经纬度,当然也可以引入更为复杂真实的操作,这一部分通过Java Script脚本编程来实现。另外,由于Google Earth没有提供碰撞检测的功能,为了避免飞机穿透地面,仿真过程中需要不断查询飞机当前位置对应的地形高度,如果飞机高度低于地形高度,意味着飞机与地面发生碰撞。 这时需要修改飞机速度,或者直接给用户报告飞机坠毁的消息。

由于Google Earth的飞行视景只是为用户提供了局部的三维观察视角,用户通过键盘或游戏杆操纵虚拟飞机进行飞行任务训练时,呈现内容包括三维场景中的地形地貌和建筑物信息等。为了给用户提供全局位置的定位和跟踪,同时引入了Google Maps。这样通过二维地图就可以了解飞机在三维场景中的具体位置,为整个协同飞行提供全局感知。

本系统开发的重点在于多人在线通信,只有支持多人通信,才能达到协同仿真的目的。 因此本系统除了支持单用户进行模拟飞行外,同时也支持多人同时通过互联网进行实时飞行协同。各用户直接共享其他用户的飞行状态数据,实现多用户编队飞行;或进行实时联机模拟飞行,大大提高了系统的可用性和协同性。每个用户在进行模拟飞行的同时还可以看到视野范围内的其他用户。

2 关键算法设计

2.1AJAX通信

异步的JavaScript与XML技术(Asynchronous JavaScript and XML,AJAX)[15]与传统Web应用不同,AJAX应用可以只向服务器发送和取回那些必需的数据信息。它使用SOAP或其他一些基于XML的Web服务器接口,并在客户端使用JavaScript处理从服务器返回的响应,实现页面在不刷新的情况下与服务器通信、数据交换和按需读取数据。

本系统通过多用户客户端实时传递和交换被控制飞行器模型的飞行状态数据,实现了多个用户在Google Earth三维地球场景中同时飞行的功能。本系统采用AJAX技术将所有的客户端和服务器端连接在一起,各客户端之间通过本地瘦服务器可以进行数据通信,实现协同飞行。这样可以改善系统的交互性,增强客户端的表现能力,在带给用户更好的飞行体验的同时,减少网络传输的数据量,提高系统运行的性能。

在客户端和服务器端之间,AJAX通信模块充当了一个中间连接件的角色,将客户端和服务器端紧密联系在一起。AJAX通信功能通过客户端函数调用触发,封装客户端数据生成对服务器端的通信请求,并在服务器端返回数据后,以函数返回的形式反馈到客户端。具体实现采用了XMLHttpRequest对象,通过该对象的open,send,requestText等方法进行消息传递。

2.2 服务器端工作流程

服务器端的功能模块主要完成接收及存储飞行数据、提取及发送飞行数据等功能,其工作流程如图3所示。

图3 服务器端工作流程Fig.3 Server operating flow

从图3中可以看到,在本系统中客户端和服务器端之间的通信全部是通过AJAX技术实现的。存储和读取飞行数据主要涉及到对服务器端的XML数据文件进行查询和修改的操作;而接收和发送飞行数据涉及到AJAX通信时服务器端和客户端的发送和接收函数的使用。

对于客户端中的非被控制飞行器对象来说,需要获取服务器为其发送的飞行状态数据。根据需要从服务器返回的XML文档内容如下:

<%=newhtr0%>

<%=newhtr1%>

<%=absroll%>

<%=lla0%>

<%=lla1%>

<%=lla2%>

程序中,数组lla1,lla2,lla3表示飞行器在场景中的位置,包括经度、纬度以及高度;数组newhtr0,newhtr1和absroll表示飞行器在飞行过程中的姿态。在未来的工作中,飞行数据可以进行进一步扩展以包含更多的内容。

3 试验与讨论

本文使用Google公司的Google Earth API和Google Maps API结合JavaScript开发飞行仿真系统,主体开发语言为HTML,开发平台为MyEclipse和Tomcat;所以与OpenGL或OSG开发模式相比,整个开发复杂度大大降低,用Java Script编程替代了传统的C++编程,而且大规模地形数据无需自己构建。

图4给出了飞机多人编队飞行的结果图,飞机用圆标出,右上角给出了飞机对应在二维地图中的位置。为了清晰地演示飞机的空中位置的变化,以进行航线分析,系统通过轨迹线记录下飞机的飞行轨迹,如图5所示的曲线,然后可以选择多视角进行观察。

演示视频可以访问http://v.youku.com/v-show/id-XMzAxMDc0ODA0.html,也可以通过访问http://imlab.chd.edu.cn/GEFlightSimulator/进行体验。

图4 飞机多人编队飞行Fig.4 Formation flight in Google Earth

图5 飞机轨迹的可视化显示Fig.5 Visualization of the flight path

4 结束语

本文利用Google Maps API和Google Earth API结合AJAX技术实现了多用户的实时可控模拟飞行,为飞行协同仿真提供了灵活、可扩展性强的系统。由于基于Google API进行开发,因此在三维视图中所显示Google公司提供的三维真实地形地貌,优于其他的模拟飞行系统;而且由于Google公司拥有海量的地理信息数据并且经常对地理信息进行更新,保证用户的模拟过程尽可能真实反映现实世界,大大提高了模拟的真实性。由于主要数据来自Google服务器,操作难度降低,用户只需通过网络浏览器即可进行针对全球的模拟飞行,而无需装载其他地图数据。

当然本文工作实践尚很初步,在未来的工作中,将进一步增强多机协同飞行的数据通信能力,以提供更真实的多机协同功能。另外将改进飞行模拟的真实度,考虑采用更为复杂的飞机动力学仿真模型,以更真实地反映飞机的飞行参数。

[1] 叶舸,田兆峰,闫楚良.基于OpenGL的飞机飞行实测数据可视化研究[J].航空学报,2011,32(6):1050-1057.

[2] 闫晓东.基于OSG的飞行视景仿真平台开发[J].计算机仿真,2008,25(5):58-60,198.

[3] 郭佳,郭连成,张丽,等.基于OSG的飞行仿真系统视景平台的研究与开发[J].沈阳航空工业学院学报,2010,27(4):1-4.

[4] 刘丽,彭晓源,王行仁.基于网络的大型民用飞机飞行仿真系统[J].北京航空航天大学学报,2000,26(3):321-324.

[5] 张继夫,邓华.多机飞行仿真系统扩展性研究[J].兵工自动化,2010,29(8):25-27.

[6] Google Earth API [DB/OL].[2012-7-20].https://developers.google.com/earth/.

[7] 马俊,杨忠,杨成顺,等.基于Google Earth的人机交互平台设计[J].应用科技,2010,37(7):6-10.

[8] 李卫东,刘银.基于Google Maps的模拟飞行轨迹显示系统的设计与实现[J].中国民航飞行学院学报,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

(编辑:李怡)

猜你喜欢

飞行数据视景服务器端
Linux环境下基于Socket的数据传输软件设计
vega及其在战场环境视景仿真系统中的应用
浅析异步通信层的架构在ASP.NET 程序中的应用
GARMIN1000系统维修平台搭建预研究
浅谈飞行数据集中处理流程管理
基于Qt的安全即时通讯软件服务器端设计
基于广域信息管理的飞行数据服务设计与实现
全回转拖轮运动建模与视景仿真
基于Vortex与Vega Prime的车辆模拟器动力学与视景仿真
网页防篡改中分布式文件同步复制系统