导弹飞行仿真系统可视化设计与实现
2013-05-14王会霞
王 成 王会霞
北京航天自动控制研究所,北京 100854
导弹武器系统研制需要较长的时间,从设计到定型必须进行多次飞行试验,而实弹射击成本高、周期长,给导弹设计与研制带来不便。利用系统仿真、虚拟现实和可视化技术模拟实弹打靶,可以快速方便的获取导弹飞行仿真数据,弥补实弹飞行信息不足的缺陷,为导弹设计与研制方面相关的研究提供了参考依据。
飞行仿真系统一直是系统仿真领域的研究热点,广泛应用于飞行器设计、飞行性能测试、导航、制导与控制等系统的研发,已成为我国军事训练、高校院所教学与研究的重要方向。文献[1-2]采用基于OpenGL的三维图形库实现飞行仿真和导弹攻击过程,文献[3]采用基于OSG的可视化引擎实现飞行仿真系统,文献[4-5]采用基于STK的开发包实现了飞行过程与任务实现的仿真,文献[6]采用Matlab建立飞行动力学与飞行器运动模型,然后通过Fligtgear图形引擎实现飞行仿真。
这些文献虽然采用了不同的方法实现了导弹、飞机等飞行器的飞行仿真系统,但过于侧重视景仿真、三维模型创建、观察视角的选取,对于飞行仿真数据、性能数据的可视化观测、飞行器部件的动态变化只是简单实现或忽略,影响了对飞行仿真系统关键部件动态变化的实时观察和飞行数据的实时观测与分析验证。在此背景下本文提出了一种以系统仿真、虚拟现实和可视化技术为基础的导弹飞行仿真系统,旨在为导弹设计中对飞行数据分析验证和舵面、喷管等动态部件的实时观察提供一个解决方案,提高导弹设计效率,验证仿真系统正确性。
1 系统结构
一般六自由度半实物导弹仿真系统由弹载计算机、仿真计算机、飞行转台、测量器件、伺服执行机构等组成(结构图如图1所示),其中,弹载计算机装载了弹上控制系统,负责导弹飞行时序和导航、制导与姿态控制。仿真计算机装载了导弹飞行仿真系统,负责弹体模型的数学解算和可视化仿真。
图1 六自由度半实物导弹仿真系统组成
根据功能划分,导弹飞行仿真系统由3部分组成: 1)导弹数学仿真建模; 2)仿真管理; 3)可视化仿真。导弹数学仿真模型部分包含:弹体质量模块、受力与力矩模块、运动方程模块、弹性振动模块、弹道计算模块、地球模块和大气模块等。仿真管理部分包含:仿真状态管理模块、仿真数据管理模块。可视化仿真部分包含:三维场景模块、舵面与喷管运动模块、二维弹下点模块、数据动态曲线模块、三维特效模块和音效模块(结构图如图4所示)。
图2 导弹飞行仿真系统结构图
仿真管理部分发送仿真开始指令后,由导弹数学仿真模型部分解算出导弹飞行仿真数据,然后传输给仿真管理部分中的数据管理模块,该模块经过数据处理、图形坐标系转换等步骤后再传输给可视化仿真部分。其仿真流程图如图3。
图3 导弹飞行仿真系统流程图
本文侧重于可视化仿真设计与实现,因此导弹数学仿真建模部分不再详述,只重点介绍仿真管理部分与可视化仿真部分。
2 仿真管理
仿真管理部分包含仿真状态管理与仿真数据管理2个模块,其中仿真状态管理模块负责仿真的开始、暂停、结束、数据回放与功能切换等仿真状态的控制,仿真数据管理模块负责仿真数据的处理、保存、图形坐标系转换等功能。
导弹数学仿真模型部分解算出导弹飞行仿真数据后,不能直接传递给可视化仿真部分使用,需要解决2个问题: 1)数学仿真与可视化仿真周期不一致的过实时问题; 2)图形坐标系转换的问题。
2.1 仿真过实时处理
数学仿真周期一般是1~2ms,而对于一个实时可视化仿真系统其帧速率不低于30fps,即30ms左右的仿真周期,两者差距较大,这造成可视化仿真相对于数学仿真的过实时现象,即可视化仿真只能按渲染周期而不能按数学仿真周期反映出数学仿真的内容。
采用数据选取与仿真回放的方式可以解决这个问题。在实时仿真时,仿真数据管理模块开辟出一块公用内存,数学仿真按照其周期对其写入,可视化仿真按照其周期对其读取,由于两者仿真周期相差n倍(n=可视化仿真周期/数学仿真周期),这相当于数学仿真数据每运行n次,可视化仿真读取1次,这样可视化仿真虽不能反映出数学仿真的每一组数据,但能保证与数学仿真同步。同时,仿真数据管理模块保存数学仿真的每一组数据并写入到文件中,再采用数据回放功能读取这些仿真数据,按照渲染周期对数学仿真数据进行回放,这虽不是实时同步反映数学仿真内容,但能反映数学仿真的所有数据。
2.2 图形坐标系转换
导弹数学仿真模型部分解算出的导弹的位置、姿态角、弹道倾角、航向角等飞行仿真数据,是在惯性坐标系、弹体坐标系下的表示方式,而可视化仿真是OGRE[7]图形坐标系的表示方式,需要转换。
惯性坐标系(X,Y,Z)与图形坐标系(Xo,Yo,Zo)的转换公式如下:
弹体坐标系(Xd,Yd,Zd)与图形坐标系(Xo,Yo,Zo)的转换公式如下:
其中,
φ,ψ,γ分别是俯仰角、偏航角和滚转角。
3 可视化仿真设计与实现
3.1 三维场景模块
三维场景包括导弹几何模型建模、加载与驱动,大地形、天空背景的加载与渲染。
导弹的几何模型采用建模软件3dsMax来创建,导出为*.3ds文件,由开源可视化引擎OGRE进行加载(如图4所示)。导弹几何模型包括静态节点(弹体)、动态节点(舵面,尾喷管)和特效节点(如金属表面特效、尾喷火焰特效、爆炸特效等)。
图4 导弹几何模型与渲染效果
三维大地形通过读取一张精细像素的HeightMap(即高程图),实时生成了一个长宽范围为4000km×4000km,高度范围为10km的三维几何地形模型,采用Octree(八叉树)和LOD(Levels of Detail)技术,以摄像机视点为根节点,动态管理地形网格与顶点的生成与删除,使得三维场景既能有一定粒度的细节显示,又能保持良好的实时性能。然后采用多层混合纹理技术,一方面用地形全貌纹理图(4096×4096像素)粘贴在三维地形上,用于表征地形主要特征,另一方面用包含细节纹理信息的Normal图(即法向量贴图),通过NormalMap(即凹凸映射)[8]技术将地形细节体现在三维地形之上,使得三维地形在整体主要特征和局部细节都有较好的体现(如图5所示)。
图5 三维大地形实现流程
天空背景主要包含天空、云层、雾、夜景等模型。天空模型采用Skybox(天空盒)技术,将天空视为一个六面都贴有天空背景纹理的正方体盒,将太阳、月亮、星空背景都包含于内。随着仿真时间的步进,天空模型会按照一定速度调整太阳、月亮、星空背景的位置、亮度和光照效果,使天空背景会出现白天、黑夜的更替(如图6)。雾化效果采用指数雾的方法,即:雾化因子fog = exp(-abs(eyeDis * fogDensity)),其中,fogDensity是雾化密度,eyeDis是距离视点的距离。云层模型则采用BillBorad(公告板)技术,建立小朵云模型,以脚本方式编辑云轨迹图并用若干小朵云填充,从而建立云层模型。随着仿真时间的步进,云层模型会按照给定的运动规律飘动,可实现导弹的穿云效果(如图6所示)。
图6 天空背景的白天、黑夜与导弹穿云效果
3.2 舵面与喷管运动模块
导弹的动态部件主要包含舵面与喷管,本文创建了3个子窗口用于舵面的三视图观察,创建了1个子窗口用于发动机尾喷管的观察。该模块输入舵面和发动机在俯仰、偏航、滚转方向上的偏角、合成摆角,输出为舵面、喷管等部件的三维动态实时变化窗口。
3.3 数据动态曲线模块
该模块输入导弹的位置、姿态、攻角、侧滑角、所在经纬度、高度、发动机推力、舵偏角和气动力等弹道参数和运动参数,输出为这些数据的动态曲线图表。为能实时观测飞行仿真数据,本文创建了2个子窗口用于这些参数的动态曲线绘制,在具体实现中,采用STL容器中的deque数据结构来管理,每次收到数据后,判断是否达到最大长度,若否,则插到数据队列末(即deque.push_back);若是,则队头数据出队(即deque.pop_first),然后插到数据队列末。每次更新时只绘制deque里的数据,这样既能够保证动态数据信息量的同时,也能保证仿真系统的实时性能。另外,采用Windows的GDI绘制动态曲线时,需要先擦除旧图,再绘制新图,由于需观测的飞行数据较多,当屏幕刷新较快时,会随机地出现屏幕闪烁和曲线大锯齿不连续的情况,本文采用双缓存技术、曲线与背景颜色混合技术较好地优化这种现象(如图7所示)。
图7 动态曲线优化前(左图)后(右图)比较
3.4 二维弹下点模块
该模块用来显示导弹在飞行过程中的二维态势,输入导弹的所在经纬度、偏航角等参数,输出为导弹的二维弹下点轨迹窗口。二维弹下点模块加载的地图是*.gst[9]文件,这是一种比较流行的GIS文件格式,它包含了诸如:街道、河流、山脉、深林、地貌等信息图层,每个图层以*.tab,*.dat等格式存储,比较全面地反映出二维地理信息。
3.5 三维特效模块
该模块用来显示三维场景中出现的光照效果与三维特效,主要包括以下几种:
1)弹体金属材质效果。采用高光、环境映射等技术实现弹体、舵面的金属表面材质;
2)尾喷火焰效果。采用粒子系统技术,定义尾喷火焰粒子颜色、生命周期、粒子半径、初始速度等因素,实现导弹尾部喷管的火焰喷射效果;
3)空气摩擦效果。表现导弹飞行时弹头、舵面与空气摩擦的情况;
4)弹体与舵面热效应。表现导弹飞行时空气摩擦产生的热效用在弹体与舵面的分布情况;
5)爆炸效果。表现导弹在命中目标后爆炸的效果。
3.6 音效模块
该模块采用基于OpenAL的开源音效库,用来实现导弹飞行时的声音、舵面机动时摩擦声音和爆炸时的音效。
4 仿真实验与结果
实现时计算机硬件配置:PC机为ThinkCentreM6288T,显卡为NVIDIA GeForce GT420,硬盘120G。运行平台为WindowsXP。软件工具有:Visual Studio C/C++ 2005,OpenGL的glut库,OGRE1.4.3,Cg,3dsmax9.0。系统运行效果如图8所示。
图8 导弹飞行仿真系统运行界面
导弹动态部件的观察窗口如图9所示。
图9 导弹动态部件观察
飞行数据动态曲线的观察窗口如图10所示。
图10 部分导弹飞行数据的动态曲线表
二维弹下点轨迹窗口如图11所示。
图11 二维弹下点轨迹
三维场景特效如图12所示,从左至右、从上至下,分别是金属材质、尾喷火焰、爆炸效果、热效应、空气摩擦及两者综合效果。
5 结论
本文通过对导弹数学仿真建模、仿真管理、可视化设计与实现,建立了一个以系统仿真、虚拟现实和
图12 三维特效
可视化技术为基础的导弹飞行仿真系统,实现了导弹设计中对飞行仿真数据和舵面、喷管等动态部件实时观察的需求。系统可用于导弹设计与研制的仿真数据生成与验证、动态部件观察等相关工作中,也可作为飞行仿真系统研究的平台应用于飞行器及相关仿真系统中。
[1] Hong GeYao.The Realization of Flight Simulation System Based on OpenGL[C].2010 Second International Conf-erence on Information Technology and Computer Science,2010:198-201.
[2] 李海军,李科杰,刘宵.基于OpenGL的导弹攻击过程与可视化仿真[J].系统仿真学报,2004,16(3):530-
533.(Li Haijun,Li Kejie,Liu Xiao.The Visual Simula-tion of Missile’s Attack Course Based on OpenGL[J].Journal of System Simulation,2004,16(3):530-533.)
[3] Xiaoyan Hu,Bo Sun.Visual Simulation System for FlightSimulation Based on OSG[J].ICALIP,2010:562-565.
[4] Analytical Graphics Inc.STK Software Suite[EB/OL].[2009,5]http://www.agi.com/viewer.
[5] 杜耀珂.基于STK的卫星实时视景仿真系统设计[J].空间控制技术与应用,2009,35(2):60-64.(Du Yaoke.The Real Time Visual Simulation System for Satellite Based on STK[J].Aerospace Control and Application,2009,35(2):60-64.)
[6] 郭为刚,韩维.基于Matlab/Flightgear飞机飞行性能的可视化仿真系统[J].实验技术与管理,2010,(10):110-112.(Guo Weigang,Han Wei.Visual Simulation System of Flight Performance Based on Matlab/Flightgear[J].Expermantal Technology and Management,2010,(10):110-112.)
[7] OGRE.Pro Ogre 3D Programming [EB/OL].[2008,3]http://www.ogre.org.
[8] CSDN.Some Detail Discussion for Normal Map [EB/OL].[2007,4]http://blog.csdn.net/cywater2000.
[9] 曹洁,肖铁.基于MapX的导航程序设计与开发[J].工业仪表与自动化装置,2010,(1):109-111.(Cao Jie,Xiao Tie.Design and Develop of Navigation System Based on Mapx[J].Industrial Instrumentation and Automation,2010,(1):109-111.