基于OGRE的卫星视景仿真软件的设计与实现
2016-11-08孙诗行
孙诗行 宗 群 徐 锐
(天津大学电气与自动化工程学院 天津 300072)
基于OGRE的卫星视景仿真软件的设计与实现
孙诗行宗群徐锐
(天津大学电气与自动化工程学院天津 300072)
针对卫星三维视景仿真的需求,设计并开发基于OGRE图形引擎的卫星视景仿真软件,对整个飞行过程进行模拟和演示。卫星视景仿真软件基于OGRE图形引擎进行底层渲染,结合3ds Max建模软件进行三维实体模型构建,基于自主开发的场景编辑工具生成卫星星空场景。仿真软件的功能模块包括OGRE主体框架模块、文件路径管理模块、场景数据管理模块、网络通信模块和人机交互模块。运行结果表明,卫星视景仿真软件可以逼真地模拟再现卫星飞行场景,能够实时进行画面模拟、数据监视,具有广阔的应用前景。
视景仿真OGRE模块化开发卫星视景实时模拟
0 引 言
在航空航天技术的发展过程中,新时代的学科交叉对于推动航空航天技术的不断进步起到了关键的作用,其中一个非常重要的方面就是视景仿真技术在航空航天相关领域研究中的应用。视景仿真承担了进行可视化的任务,利用视景仿真技术对空间任务进行全程模拟,可以获得高效可靠的设计对策,并提供较为直观的演示效果,增强了仿真的真实性,有利于增加研究人员对于整个实验过程的了解和认识。
至今,视景仿真技术已经取得了不小进展,许多国内外的高校和研究机构都进行了视景开发与技术研究相关的工作。目前国外的三维视景仿真有采用OpenGL图形库的方式,比如美国航空航天局(NASA)德莱顿飞行研究中心开发的飞行训练系统,其中的实时视景模拟部分就是基于OpenGL进行开发的[1]。美国MultiGen-Paradigm公司虽然开发了一款简捷的三维视景软件Vega,但是由于该软件许多底层的功能并没有实现,所以难以完成精细的开发[2]。华盛顿大学基于OGRE开发了移动机器人视景仿真系统,取得了良好的效果[3]。国内的视景仿真研究主要在近十几年的时间内兴起,也取得了一定的研究进展和成果。例如,西北工业大学基于STK模块开发了卫星实时仿真系统,但由于其非开源的特性,加大了研究和使用的成本[4];南京航空航天大学基于OGRE图形引擎开发了电子海战对战模拟系统[5];华中科技大学基于OGRE开发了港口仿真的可视化演示系统[6];另外一些国内的学者也针对卫星视景软件进行了相关的研究工作[7-9]。上述这些视景仿真软件虽然都实现了视景仿真效果,但某些非开源软件耗费了大量的开发时间与成本,需要团队人员较多,商业授权版本昂贵,不适合研究使用;某些开发基于底层图形API,导致开发复杂,可复用程度低。
在此背景下,本文选择了开源免费的OGRE图形引擎进行了卫星视景仿真软件的开发。该视景软件使用可靠的软件系统结合实时仿真平台,实现对整个仿真过程的数字化、信息化及可视化监控和管理。最后对设计的控制算法作出科学合理的判断,并对算法进行不断优化。本文首先进行了基础软件模块的设计与开发,采用了模块化可复用的架构设计,极大地简化了后续开发以及改进的流程,降低了使用以及维护的难度。然后在实时数据驱动的基础上,使用已设计的基础软件模块开发了一套以实时演示和可视化技术为基础的卫星视景仿真软件,为卫星飞行中对编队构型设计的验证和各个卫星姿态的实时观察提供一个更加优秀的解决方案,提高卫星控制算法验证的效率,验证算法设计的正确性。
本文开发的卫星视景仿真软件依托于仿真平台而运行,仿真平台结构主要包括xPC实时仿真计算机、主控计算机以及视景仿真计算机。其中xPC实时仿真机运行卫星编队仿真模型与算法,并将仿真数据实时发送给主控计算机。这里,主控计算机用来模拟“地面站”,对整个仿真系统进行管理与控制;同时通过以太网发送卫星编队的位置与姿态信息给视景仿真计算机,由其上运行的卫星视景仿真软件实时演示卫星编队过程。
1 视景仿真软件的总体架构设计
1.1视景仿真软件需求分析
视景演示软件的开发目标,是在OGRE图形引擎的基础上,构建可复用的实时视景演示程序,配合仿真平台进行实时的三维模拟演示。软件需要实现以下性能指标:
1) 较高的开发效率。视景仿真软件基于OGRE图形引擎进行开发,相对于DirectX和OpenGL图形API拥有更高的开发效率,能够极大地缩短开发周期,减少维护难度。
2) 基础模块的组成化特性。视景仿真软件应该对通用的功能特性(例如网络、人机界面等)具有很好的抽象,并具备相应的基础模块,符合软件工程的模块化和可复用性的基本思想。
3) 良好的可扩展性。视景仿真软件的代码构建应当充分考虑需求变更的扩展性,每当需求发生改变的时候都能够很好地应对,降低开发人员所面临的困难和复杂度。
4) 三维模型和场景构建的简易性。为了能够在视景软件中简化三维模型和场景的构建与导入工作,视景仿真软件应当支持常用建模软件,同时构建适合演示的三维场景。
5) 良好的渲染帧率和显示效果。视景仿真软件应当具有较高的渲染帧率,使得整个演示过程流畅。因此卫星视景开发的所有代码都应当充分考虑运行效率,避免不必要的内存和显卡开销,使用良好的软件设计模式,选用最优的数据结构,降低软件运行的时间、空间复杂度,提高渲染帧率和效果。
1.2卫星视景仿真软件的架构设计
视景仿真软件架构设计如图1所示,包括基础环境、视景系统基础软件模块和视景应用软件三大部分。
1) 基础环境部分主要包括操作系统、图形API库、OGRE图形引擎开发和运行环境。操作系统是开发和运行视景应用的基础,图形API库(包括DirectX和OpenGL)是支撑环境。OGRE图形引擎结合DirectX和OpenGL的特点,实现了跨操作系统平台移植和开发的特性[10-13]。
2) 视景系统基础软件模块是在综合分析三维视景应用软件的共有特点基础上,为提高开发效率,独立抽象和开发的可复用软件模块,能够实现与主控计算机间的数据传输,提供友好的人机交互界面显示和文件读写功能。
3) 应用软件部分根据具体的视景开发需求实现不同的视景应用程序。
图1 视景仿真软件架构设计
2 视景仿真软件的基础软件模块设计
基于OGRE图形引擎的基础软件模块部分的设计与实现,是后续视景软件开发的基础。基础软件模块结构如图2所示,包括OGRE主体框架模块、文件路径管理模块、场景数据管理模块、网络通信模块和人机交互模块共五大模块。
图2 卫星视景基础软件模块
2.1OGRE主体框架模块
OGRE主体框架模块是在OGRE图形引擎的基础上进行开发的基础。各部分的初始化和配置工作需要按照OGRE相关要求进行,这部分模块主要负责主体视景程序的构建和初始化工作,是视景软件系统的入口点。同时,主体框架模块是推进整个渲染进程的渲染泵。本文的设计抽象出了所有视景应用的共有部分,从而避免了针对相同问题的重复开发,提高了代码的可复用性,提高了开发效率,同时也符合面向对象的开发思想。当需要开发新的场景,或者扩展不同的视景应用时,可以在BaseApp类基础上进行继承,复用已有的接口。
图3 TinyXML库解析XML文件流程
2.2文件路径管理模块
能够统一管理文件和路径,提供简单易用的接口,减少每次文件读写时进行的代码修改工作。
这里将相关功能抽象为文件和路径类型(PATHMANAGER类),该类型全局共享,所有数据和方法均采用static关键字进行标注,不需要生成实例对象。同时将配置文件编译成XML格式,基于TinyXML库读取XML配置文件,不必每次对视景程序进行重新编译,大大简化了操作步骤,提高了开发效率。TinyXML库解析XML文件流程如图3所示[15]。
2.3场景数据管理模块
针对不同视景仿真的场景,构建多种场景素材,用于三维模拟演示。场景数据管理模块封装了与场景显示相关的场景数据,包括地形、天空、三维模型等常见的视景应用数据。场景数据模块结构如图4所示。其中地形系统主要生成地形数据和地形静态实体,包括树木、石块、草地等;天气系统主要包括天气变化,包括雨、雪等不同天气,实现方式为添加粒子效果。通过使用OGRE中的粒子系统,可以很方便地进行粒子效果模拟。
图4 场景数据模块结构图
2.4网络通信模块
图5 网络程序接口流程
网络通信模块负责与仿真平台进行数据交互和传输等相关工作,实现实时仿真数据驱动的三维模拟演示。网络通信模块采用UDP协议方式实现。UDP协议是面向数据报的协议,不需要建立连接,也无需重传确认,在点对点的简单环境当中干扰因素较少,不需要对网络数据进行反复确认。所以这里的协议构建基于UDP协议进行,保证网络传输具有较好的响应效率[15]。视景仿真系统网络接口流程如图5所示。
2.5人机交互模块
图6 加载CEGUI库流程图
友好的图形操作界面负责在视景程序中对用户的功能选项进行响应。OGRE图形引擎并没有提供与图形界面相关的工具或者接口,图形界面的开发需要依赖于第三方库或者是操作系统接口API,这里选用CEGUI库进行图形界面的开发。加载CEGUI库流程如图6所示,初始化完成之后,在帧监听当中加入对应的代码,使得图形界面能够捕获到系统输入,并进行用户事件响应。
同时通过第三方的OIS组件库,结合OGRE图形引擎,实现对人机交互的监听工作,包括用户的鼠标操作和键盘事件等。
3 卫星视景仿真软件开发与实现
在上述视景基础软件模块的基础上,根据卫星视景开发的特点和需求,进行了卫星视景仿真软件的开发。
3.1三维模型与场景构建
卫星视景仿真主要包括卫星模型、地球模型和星空背景等。
卫星与地球的三维模型主要通过3ds Max建模软件进行构建,采用适当的材质系统和纹理贴图进行外观设计与调整;然后使用第三方插件OgreMax工具对建模软件生成的资源素材进行格式转换,并将转换后的资源文件存放在OGRE图形引擎资源路径当中。同时基于场景数据管理模块,采用天空盒原理的方式进行星空背景构建,如图7所示。
图7 3ds Max下卫星三维模型编辑
3.2多线程程序设计
为了协调各个程序功能之间的逻辑关系,进行多线程控制以避免逻辑混乱[16,17]。在视景应用当中,主要任务分为实时渲染、网络数据传输和图形界面交互等。在程序实现中,将这几个任务抽象成为多个线程,其中渲染线程的主要流程如图8所示。
图8 渲染线程流程图
4 卫星视景仿真软件效果验证
本文用于仿真验证的卫星编队构型如图9所示,采用一颗主星、三颗从星的编队方式,构成空间圆编队。其中主星位于圆心处,三颗从星构成同一平面的等边三角形,四颗卫星进行姿态调整进而完成对深空的观测任务。针对任务要求,整个仿真过程为6335 s,0~800 s为轨迹优化与姿态调整阶段;800~1000 s为编队姿态保持阶段;1000~6335 s为自由漂浮阶段,整个仿真过程持续时间约为2小时。在各个阶段,四颗卫星的编队构型以及自身姿态均不完全相同,因此采用卫星视景仿真软件可以直观真实地模拟再现整个过程。这里采用的卫星轨道模型与姿态控制算法为实验室现有的算法,如图10所示,不再赘述。
图9 卫星编队构型
图10 卫星轨道与姿态控制simulink模型
在实验室视景计算机、实时仿真计算机和主控计算机的驱动下,卫星飞行视景仿真效果如图11所示。实时仿真计算机运行实时仿真程序(这里为基于xPC Target下的实时仿真程序)。通过以太网通信的方式,主控计算机将实时仿真数据发送给运行有卫星视景仿真软件的视景计算机,进而驱动卫星视景仿真软件进行卫星飞行过程的模拟与演示。
图11 卫星编队仿真视景效果图
5 结 语
本文基于OGRE图形引擎对卫星视景仿真软件中的基础开发模块进行设计与实现,采用了模块化可复用的架构设计。这些基础模块是可复用的视景应用模块,是开发的基本组成部分。基于这些模块的设计,进行了卫星视景仿真软件的开发,并实现了卫星飞行的三维视景演示。本套视景仿真软件克服了数值仿真阶段不够直观的特点,并且降低了开发以及维护的难度,节约了实验成本,使用方便,效果逼真,极大地缩短了仿真算法的设计周期。本套视景仿真软件取得了满意的效果,达到了预期希望,具有广阔的应用前景。
[1] Curlett B P.A Software Framework for Aircraft Simulation[R].NASA TM-214639,2008.
[2] 吴金华.基于Vega的SAR成像系统实时交互仿真研究[D].南京:南京理工大学,2011.
[3] Starzyk J A,Raif P.Cognitive agent and its implementation in the blender game engine environment[C]//Computational Intelligence for Human-like Intelligence (CIHLI),2013 IEEE Symposium on.IEEE,2013:1-8.
[4] 张欣光,刘芸,唐硕,等.基于STK的卫星视景仿真软件的设计与实现[J].飞行器测控学报,2011,30(4):73-76.
[5] 肖笛.电子对抗中三维仿真关键技术的研究与实现[D].南京:南京航空航天大学,2010.
[6] 上官右柏.基于OGRE的港口仿真[D].武汉:华中科技大学,2011.
[7] 张利强,郑昌文,胡晓惠,等.一种基于HLA的卫星仿真系统的设计与实现[J].系统仿真学报,2009,21(20):6487-6491,6497.
[8] 董加强,任松.基于OpenGL的卫星在轨运行可视化仿真系统设计与实现[J].计算机测量与控制,2008,16(6):824-826,855.
[9] 王成,雷小永,戴树岭.卫星在轨运行视景仿真中的真实感实现[C]//第九届全国虚拟现实与可视化学术会议,2009:87-90.
[10] 吴青,宋成果,刘怀汉,等.基于OGRE 3D的三维内河航道仿真系统研究[J].武汉理工大学学报:交通科学与工程版,2014,38(3):585-588.
[11] 罗会兰,胡思文.基于OGRE引擎的虚拟场景浏览[J].计算机工程与设计,2013,34(5):1744-1751.
[12] 林巧民,林萍,王汝传.基于OGRE的智能游戏引擎的设计与实现[J].南京邮电大学学报:自然科学版,2010,30(2):71-76.
[13] 孙逊,杜小菁,马春艳,等.高动态飞行器姿态解算及三维视景仿真研究[J].系统仿真学报,2007,19(14):3266-3269.
[14] 罗秋鹏,高晓光,杨建国.空战三维视景仿真设计与实现[J].电光与控制,2008,15(10):33-36,73.
[15] 佩措尔德.Windows程序设计[M].方敏,译.5版.北京:清华大学出版社,2010.
[16] 骆斌,费翔林.多线程技术的研究与应用[J].计算机研究与发展,2000,37(4):407-412.
[17] 李刚,金蓓弘.基于线程的并发控制技术研究与应用[J].计算机工程,2007,33(14):43-45.
DESIGN AND REALISATION OF SATELLITE VISUAL SIMULATION SOFTWARE BASED ON OGRE
Sun ShihangZong QunXu Rui
(SchoolofElectricalandAutomationEngineering,TianjinUniversity,Tianjin300072,China)
For the needs of satellite visual simulation, we designed and developed the OGRE graphics engine-based satellite visual simulation software to carry out the simulation and demonstration of entire flight process. Satellite visual simulation software makes underlying rendering based on OGRE graphics engine, builds three-dimensional solid model in combination with 3ds Max modelling software, and generates the satellite sky scene on the basis of self-developed scene editing tools. The functional module of the simulation software includes OGRE main frame module, file path management module, scene data management module, network communication module and human-computer interaction module. Operational result showed that the satellite visual simulation software can realistically simulate the satellite flying scene. It is capable of making real-time screen simulation and data monitoring, therefore has broad application prospects.
Visual simulationOGREModular designSatellite visualReal-time simulation
2015-06-30。国家高技术研究发展计划项目(2013AA 122602);天津市应用基础与前沿技术研究计划项目(11JCZDJC25100)。孙诗行,硕士生,主研领域:三维视景软件开发。宗群,教授。徐锐,硕士。
TP311.52
A
10.3969/j.issn.1000-386x.2016.10.045