摘 要:采用Creator 和Vega 平台以及Simulink仿真开发工具对空面导弹的飞行视景仿真技术进行了研究。提出了一种空面导弹飞行视景仿真系统的体系构架,利用获取的DED真实地形数据,通过Creator建立大地形三维模型;借助VC/MFC开发平台,实现了Simulink数字仿真系统与视景仿真的通信;在Vega中实现视景仿真系统的软件开发调试。仿真结果表明,该系统能够为空面武器系统研制阶段的参数优化和效能评估提供有效的验证平台。
关键词:Vega;视景仿真;Simulink
视景仿真是虚拟现实技术的一种表现形式,可以使用户产生身临其境的感觉,使仿真环境与用户之间有一种真实的交流。根据仿真的目的不同,可以用三维模型再现真实的环境,然后采用计算机图形处理技术,达到非常逼真的效果。利用视景仿真技术,在计算机上就可以进行反复多次的模拟实验,从而取代耗资巨大的物理和实物实验,甚至可以进行由于各种原因和条件限制而无法实现的实验,具有投资少、效益高、可重复、无风险、周期短等突出优点,因此视景仿真在军事、工业等领域得到迅速推广[1]。
近年来,航空制导武器飞行视景仿真系统在系统研发、模拟训练、作战研究、方案设计等领域成为研究热点。武器飞行视景仿真系统克服了实弹发射在飞行试验中受到的发射场地、气候条件以及经费问题等诸多同素制约的难题。在节省研制费用和缩短研制时间的同时,为导弹提供验证和分析手段,为具有末端成像制导的精确制导导弹的制导系统仿真及毁伤效果评估提供验证平台[2]。
本文采用视景仿真软件Vega、数字仿真软件Simulink,结合VC++/MFC,建立空面武器飞行视景仿真模型,并通过二次开发获得武器视景仿真所需要的设计方案。
1 视景仿真系统开发环境
为了达到精确和逼真的效果,在仿真系统中,需要建立导弹或制导炸弹的数字仿真模型,以及复杂的三维场景模型。在系统中实现数字仿真模型与图形仿真的通信,同时,在图形仿真过程中,对这种复杂的三维场景模型进行实时渲染。Paradigm公司提供的建模工具Multigen Creator 和开发工具Vega无疑是在虚拟现实领域领先的建模和仿真软件平台,也成为图形仿真的首选;而Matlab中的Simulink仿真模块是实现数字仿真的最佳选择。
1.1 Vega
Vega是一个用于建立实时仿真和虚拟现实应用程序开发的高性能软件环境和工具库。Vega包括友好的图形环境界面Lynx、完整的C语言应用程序接口API、丰富的相关实用库函数和一批可选的功能模块。由于Vega大幅度地减少了源代码的编程,使软件的维护和实时性能的进一步优化变得更加容易,从而大大提高了工作效率[3]。
1.2 Creator
Multigen Creator是一套高逼真度、最佳优化的实时三维建模工具, 它能够满足视景仿真、交互式仿真以及其他应用领域的要求。它是惟一将多变性建模、矢量建模和地形生成集成在一个软件包中的手动建模工具,能进行矢量编辑和建模、地形表面生成等。其强大的建模功能可为众多不同类型的图像发生器提供建模系统及工具,它的诸如层次细节(LOD)、多边形筛选、逻辑筛选、绘图优先级以及分离面等高级实时功能,使得OpenFlight (. fit)格式在实时三维领域中成为最流行的图像生成格式,并成为视景仿真领域的行业标准[4]。
1.3 Simulink
Matlab是一种功能强、效率高、便于进行科学和工程计算的交互式软件包。Matlab提供了强大的Simulink系统仿真软件。Simulink提供航空航天飞行器推进系统、控制系统、动力学模块及六自由度和三自由度模型库,可以进行固定质量或者变质量体系的建模与仿真;提供重力场、磁场、大气和风的标准环境模型。可以利用各种转换模块,方便实现坐标转换,能够完成各物理量的单位制转换,也可以方便地构造出导弹飞行所需的数字模型。
2 视景仿真系统体系构架
空面导弹飞行视景仿真系统体系构架如图1所示。导弹弹道计算模块根据导弹外形参数、飞行环境等数据计算出导弹的飞行状态数据,并通过网络通信接口将导弹状态数据提供给Vega视景仿真程序,最终起到控制导弹飞行弹道以及姿态的作用。导弹飞行数据库模块起到存储飞行弹道以及姿态的作用,也可以利用存储的数据进行仿真结果的再现、对比和校验。网络通信模块主要负责导弹弹道计算模块与视景仿真程序模块的网络通信与同步。Vega视景仿真程序模块利用Creator生成的三维模型,并加载ADF应用文件程序,通过接收仿真数据,对导弹的视景仿真输出进行控制、调整。
在导弹飞行视景仿真中,Vega视景仿真程序模块实时提取导弹状态数据库中的当前飞行状态,并产生相应的控制事件流程,然后根据事件流程,通过运行仿真引擎,触发相应的场景特效,达到实时表现飞行三维视景状态的目的。
3 空面导弹飞行视景仿真环境开发关键技术
3.1真实三维地形的建立
三维地形建模是指将一定范围内的真实地形高程数据(例如DED数据)、地貌特征数据,结合包含真实地形表面细节的纹理,根据适当的地形转换算法生成具有一定序列、能够近似表示为部分地球表面状况的多边形集合。地形建模的整体流程如图2所示。
航天飞机雷达地形测绘使命SRTM(Shuttle Radar Topography Mission)数据主要由美国太空总署(NASA)和国防部国家测绘局(NIMA)联合测量。2002年2月1日上午11时4分,美国“奋进”号航天飞机在佛罗里达州卡那维拉尔角的航天发射中心发射升空,“奋进”号上搭载的SRTM系统对超过1.19亿平方公里、覆盖面积达到80%的地表进行了数据采集。通过SRTM数据转化为DED数据,如图3所示,然后利用Creator的地形算法使其转化为与真实地形类似的三维地形模型。
Creator的地形算法主要有Polymesh、Delaunay、CAT、TCT等,考虑到所生成的导弹飞行地形需要较高的实时性和精确性的特点,多边形数量不应受限,且必须设置LOD,所以选用Polymesh算法较为合适,如图4所示。
3.2 Simulink的外部通信
Simulink的Aerospace Blockset仿真模块提供了大量的在Simulink环境中使用的航空航天模块。Aerospace Blockset将航空航天领域通用的标准模块在Simulink环境下进行了集成,能够方便地组合导弹的系统结构,并在此基础之上进行完整的开发及测试工作,完成导弹系统的概念设计。同样可以使用Simulink建立导弹弹道的计算模块,向视景仿真系统提供仿真数据。
ActiveX是Widnows对象集成的一个标准协议,它是组件对象模型(com)的一个子集,其目的是通过一个通用机构,实现软件之间相互提供服务的目的。Matlab提供了引擎组件(ActiveX),可以由它来完成控制Matlab的任务,也可以控制Simulink仿真模块的运行,并且可以获取其中的仿真结果。因此可以通过导弹弹道计算模块程序对Matlab引擎操纵来实现对Simulink的控制,从而完成弹道计算数据的处理,并可以提取相关的计算数据,通过网络通信模块传输到Vega视景仿真程序模块。Simulink外部通信关键代码如下:
Engine *ep; //定义Matlab引擎指针
if (!(ep=engOpen(NULL)))
//测试是否启动Matlab引擎成功
{
cout <<"Can't start Matlab engine!" <<endl;
exit(1);
}
eng EvalString(ep," open('E:\matlab\\missile_fly.mdl')");
//打开导弹弹道仿真模型
eng EvalString(ep,"sim('missile_fly')"); //开始仿真
…
xyz = engGetVariable(ep,"xyz");
memcpy(arrxyz,mxGetPr(xyz),N*sizeof(double));
… //从Matlab工作空间获取仿真结果,并
通过网络传输到Vega视景仿真程序模块
engClose(ep); //销毁引擎,释放内存
通过这种方式,可以将Simulink的仿真结果经网络数据传输到Vega仿真程序模块,实现对弹道的控制。
3.3 Vega编程接口的应用
Vega 是美国MultiGen-Paradigm 公司开发的用于虚拟现实、视景仿真等领域的世界领先的应用软件工具。Vega提供完整的C语言编程接口,利用该编程接口可以方便、快捷地在VC/MFC中完成开发。基于Vega 图形驱动的导弹视景仿真系统开发步骤如图5所示。
(1)由于MFC采用图形界面,因此必须建立独立的线程显示Vega三维视景,以免MFC应用程序和Vega在同一线程,造成程序锁死。下面是一个MFC建立线程的简单代码:
m_pVegaThread=AfxBeginThread(runVegaProc,this,TH
READ_PRIORITY_NORMAL,0,0,NULL)
(2)在独立线程建立后,在线程中初始化Vega 系统并创建共享内存,调用Vega 的API 函数vgInitWinSys();
(3)利用ADF 文件(Vega 模型文件) 进行资源初始化,读取ADF 文件中的数据,装载数据库,调用Vega 的API 函数vgDefineSys (" missile_fly.adf " ) ;
(4)调用配置系统和模块的函数vgConfigSys ( ) ,完成资源配置;
(5)调用帧循环函数,对三维视景进行绘制。在循环中,接收导弹弹道计算模块所计算的数据,对数据进行处理,并根据数据对导弹的姿态进行控制;
(6) 调用函数VgExit(0) ,终止当前Vega程序。
4 可视化仿真结果显示
视景仿真系统能将导弹寻找和命中目标的飞行过程以及爆炸场景以三维的影像直观地显示出来。通过显示的结果能够直观地判断导弹最终能否击中目标,由此可以衡量和检验导弹导引性能的优劣。图6是导弹飞行的场景,主通道显示导弹飞行,左侧上方通道显示目标物,左侧下方通道显示导弹跟随视角。
本文利用Creator 和Vega 平台以及Simulink实现了导弹的飞行视景仿真,为空面导弹系统研制阶段的参数优化和效能评估提供了一种可视化验证平台,对类似武器系统的视景仿真具有一定的参考价值。
参考文献
[1] 郑向平.基于Creator 和Vega 的某防护系统可视化仿真研究 [J]. 系统仿真学报,2008,20:4082-4088.
[2] 胡令.导弹武器发射环境视景仿真研究[J].信息化纵横,2009(05):66-68,75.
[3] 王乘.Vega实时三维视景仿真技术[M]. 武汉:华中科技大学出版社,2004.
[4] 洪蕾.导弹飞行仿真可视化系统研究与实现[J].弹箭与制导学报,2007,27:91-94.