基于Vega Prime的弹道视景准实时仿真研究*

2013-12-10 03:53齐竹昌
弹箭与制导学报 2013年1期
关键词:视景弹道内存

齐竹昌,刘 莉,龙 腾,邢 超

(北京理工大学宇航学院,北京 100081)

0 引言

随着计算机技术的发展,视景仿真技术在导弹武器研发中的应用越来越广泛。视景仿真技术采用计算机技术、图形图像技术、三维建模显示技术,根据仿真目的,构造出仿真对象的三维模型及仿真场景,再现真实环境,使用户产生身临其境的感觉。视景仿真技术现已成为弹道设计、航迹规划等一种直观、便捷的仿真分析手段[1]。

弹道视景仿真是将弹道仿真与视景仿真相结合,通过视景画面展现弹道仿真过程,避免了直接分析数据的枯燥性,方便了设计人员对导弹飞行中状态信息变化情况的分析。传统的弹道视景仿真设计流程中,通常将弹道仿真与视景仿真相分离,先进行弹道仿真,生成仿真结果数据文件,再通过视景仿真读取文件中的数据驱动视景画面更新[2-3]。这种设计流程易于程序实现,但不够灵活。在弹道设计阶段,需要不断修改弹道设计参数,每次修改都要生成一个数据文件,使仿真过于烦琐。同时对于视景仿真画面的更新,通常直接采用帧循环进行驱动,而未对画面更新时间进行限制。由于计算机处理速度很快,通常视景仿真时间远小于导弹真实飞行时间,即画面更新太快,对于飞行时间较短的战术导弹而言,设计人员很难在如此短的时间内看清楚导弹飞行状态的变化。文献[2]通过建立导弹视景仿真模型并调用Vega API函数完成了导弹飞行视景仿真,文献[3]以反坦克导弹为对象基于Visual C++和Vega进行了导弹虚拟仿真系统的开发,并将弹道仿真嵌入视景仿真中,但二者都未对仿真过程进行准实时性设计。所谓准实时仿真是指弹道视景仿真过程与导弹真实飞行过程在时间上基本一致。

文中通过分析导弹视景准实时仿真中存在的难题,基于Vega Prime对弹道视景准实时仿真进行了研究,建立了弹道视景仿真模型,分析了弹道视景仿真实现流程及关键技术。针对仿真中存在的问题,在Windows平台下通过定制高精度多媒体定时器实现了仿真的准实时性,以内存映射文件技术实现了弹道仿真程序与视景仿真跨进程的数据交互,最后在.NET框架下选用C++编程完成了弹道视景准实时仿真程序的开发。

1 弹道视景仿真模型的建立

弹道视景仿真模型包括弹道仿真模型与视景仿真模型,弹道仿真模型即导弹飞行动力学数学模型,视景仿真模型包括导弹三维模型、地形场景模型及二者组成的视景仿真文件。

1.1 弹道仿真模型

导弹是受多种力和力矩作用产生多种运动状态的复杂系统。导弹飞行动力学数学模型由导弹动力学方程、运动学方程、控制方程、几何关系方程及质量方程等组成。进行弹道仿真时,弹道仿真程序通过建立导弹飞行动力学模型,同时建立当地的大气模型和发动机推力模型等,外加一定的控制导引方程,在给定初始条件下,采用一定的仿真算法(一般是积分算法)和仿真步长,对导弹飞行全过程进行仿真,得到导弹在任一时刻的位置和姿态。为了在Windows平台下与视景仿真程序进行数据交互,选用C++语言在.NET框架下对弹道仿真程序进行设计与开发。

1.2 视景仿真模型

1.2.1 导弹三维模型

导弹三维模型是弹道视景仿真的仿真对象,模型的精细程度决定了视景仿真结果的逼真度。导弹通常是由头部、中部、尾部和弹翼组成,各部分分别以不同的参数进行描述,如表1所示。使用Multigen Creator[4]创建导弹三维模型时,首先是在Multigen Creator中根据导弹的几何外形参数通过点、线、面、体的顺序进行建模,并采用拉伸、旋转、布尔等操作,创建出导弹的三维模型,最后通过贴图进行视觉渲染,使模型显示更加逼真。通过Multigen Creator创建的导弹三维模型如图1所示。

图1 导弹三维模型图

表1 导弹参数描述表

1.2.2 仿真地形场景模型

仿真地形场景是描述导弹真实飞行的地形环境,地形场景建模的目标是得到高低起伏符合实际情况的地形地表轮廓。为了增加仿真场景逼真性,需要构建房屋、道路、河流、树木等标识特征。文中主要讨论战术导弹的弹道准实时视景仿真,导弹的射程较近,因此仿真场景不需太大,使用Multigen Creator三维地形工具根据地形的高程数据来构建地形模型,并使用纹理和贴图技术,以增加仿真场景的真实性和细节程度。

1.2.3 视景仿真文件

使用Multigen Creator创建的导弹三维模型和地形场景模型并不能直接用于视景仿真,而需要通过Vega Prime[5]进行加载配置,构建成视景仿真文件。视景仿真文件的创建是利用Vega Prime将导弹三维模型(.flt)与地形场景模型(.flt)相结合,生成.acf视景仿真文件,从而省去大量的编程操作,极大的降低了仿真成本。同时,为了便于从不同角度不同位置观察导弹的飞行状态,利用Vega Prime在仿真环境中加入不同的观察点和观察通道;为了增加仿真的逼真性,在仿真环境中加入碰撞检测和碰撞特效,视景仿真文件创建流程如图2所示。

图2 视景仿真文件配置流程

2 弹道视景准实时仿真总体框架设计

通过弹道仿真可以得到不同时刻导弹的位置和姿态等飞行状态信息,视景仿真程序需要将这些仿真结果数据实时地接收并应用于视景仿真中,来更新视景画面中导弹的位置和姿态,即存在弹道仿真与视景仿真之间跨进程的数据交互问题。同时,用计算机进行弹道数学仿真可在瞬间完成,仿真所花时间远小于导弹真实飞行时间,在如此短的时间内,分析人员很难看清导弹飞行状态的变化,即存在仿真实时性问题。因此,如何解决弹道视景仿真的实时性问题和弹道仿真程序与视景仿真程序之间快速数据交互问题成为弹道视景准实时仿真所必须解决的两大难题。

针对此问题,文中通过定制高精度多媒体定时器实现弹道仿真的准实时性,即计算机仿真所花费时间与导弹的真实飞行时间基本相同,在视景仿真中同样采用高精度多媒体定时器对画面帧更新进行控制,以保证弹道仿真结果数据与视景仿真所显示画面相一致,视景仿真画面显示时间与真实飞行时间基本相同。通过内存映射文件技术将弹道仿真结果数据在弹道仿真程序和视景仿真程序不同进程间进行交互,实现数据共享。弹道视景准实时仿真的基本框图如图3所示,弹道视景准实时仿真由三部分组成,弹道仿真模块、视景仿真模块及由内存映射文件构成的跨进程数据交互模块。

图3 弹道视景准实时仿真框图

3 关键技术与实现途径

3.1 弹道视景仿真准实时调度

在弹道仿真和视景仿真中加入定时器,使弹道解算和视景画面更新能够以固定时间间隔进行,同时使定时器的时间间隔与弹道仿真步长一致,如此便能保证弹道仿真的实时性。为了使弹道仿真有足够的计算精度,积分步长不应太大,文中仿真步长选取为1ms,因此所需的定时器定时精度也应达到1ms。

微软公司在Windows中提供了精确定时器的底层API支持,利用Windows多媒体定时器可以很精确地读出系统的当前时间,定时精度可达1ms,并且能在非常精确的时间间隔内完成一个事件、函数或过程的调用[6]。因此,选用1ms的积分步长,不仅能够满足弹道仿真的计算精度,同时使定时器满足精度要求;对于视景显示方面,由于人眼视觉暂留作用的影响,当画面更新速率达到25帧/s以上时,观察者看到的是流畅的画面,采用1ms定时间隔可以完全保证视景显示的流畅性。

由于多媒体定时器不依赖于消息机制,而是产生一个独立的线程,因此,在处理定时过程中需要用到多线程技术。采用多线程技术可以使应用程序更好的利用系统资源,更充分利用CPU的空闲时间片,用尽可能少的时间来对用户的要求做出响应,使程序整体运行效率得到较大的提高,同时也增强了应用程序的灵活性。因此,多线程技术的采用极大的减小了定时器对弹道实时解算的影响。

3.2 跨进程的数据交互

为了尽量减少数据传输对定时器工作的影响,数据传输应采用一种快速高效的传输方法或机制,文中采用了内存映射文件技术来解决弹道仿真与视景仿真之间的数据传输问题。内存映射文件是一种程序间数据快速交互的方法,是目前使用最广泛的数据共享与通信技术,尤其适用于管理大型数据流以及在单个计算机上运行的多个进程之间的数据交互[7]。文中采用内存映射文件技术在弹道仿真程序中将弹道仿真结果数据读入到共享内存中,而在视景仿真程序中通过读取内存中的数据来驱动视景仿真画面的更新,从而实现了弹道仿真与视景仿真不同进程间的快速数据交互。

3.3 弹道视景准实时仿真实现

图4为弹道视景准实时仿真的设计流程,由弹道仿真程序和视景仿真程序两部分组成。在弹道仿真程序中,首先进入弹道仿真主线程,在主线程中需要为1ms多媒体定时器创建一新的线程,在定时器线程中完成多媒体定时器的创建、弹道的解算及仿真结果数据的发送。1ms定时器创建完成后开始工作计时,当1ms时间间隔未到达时,积分解算函数处于等待状态;当1ms时间间隔到达时,积分解算函数进行弹道求解,并将解算得到的弹道参数通过内存映射文件读入指定的内存块中,同时更新积分初值,然后判断弹道仿真时间是否到达定时器预设值,若到达,定时器工作结束,删除定时器,结束定时器线程,弹道仿真结束;若未到达,定时器继续计时,进行弹道积分解算,直到仿真时间到达定时器预设值。

在视景仿真程序中,首先进入视景仿真主线程,仿真开始后,需要对Vega Prime运行环境进行初始化,然后对配置完成的视景仿真ACF文件进行加载,该文件包含了视景仿真的仿真对象、仿真场景及观察视窗和特效。下一步是对仿真对象(导弹和目标)定义和配置,完成仿真对象的初始位置和姿态的定义,然后进入仿真循环。在仿真循环中同样需要创建1ms多媒体定时器线程,1ms定时器创建完成后开始计时,当1ms时间间隔未到达时,画面保持;当1ms时间间隔到达时,通过内存映射文件从弹道仿真指定的内存块中读取导弹和目标的运动参数驱动视景画面更新。当仿真计时未到达预定值时,定时器继续计时工作,实时更新画面;当仿真计时到达预设值时,仿真循环结束,删除定时器,结束定时器线程,取消对象应用,退出Vega Prime应用程序环境,视景仿真结束。在弹道视景仿真中,为了使仿真更具有通用性,将弹道仿真程序与视景仿真程序相互独立开来,通过在视景仿真中调用弹道程序的方式实现弹道仿真与视景仿真的结合,由此便完成了弹道视景准实时仿真的程序开发。

图4 弹道视景准实时仿真流程图

4 仿真实例

文中以反坦克导弹为例进行了弹道视景准实时仿真程序的开发,在.NET框架下采用 C++调用Windows多媒体定时器、多线程、内存映射文件及Vega Prime API编写完成了弹道视景准实时仿真程序,图5为弹道视景准实时仿真程序运行效果图,仿真了导弹从发射准备段到命中目标的全过程,为了增加对目标的毁伤效果,在弹道设计中采用了二次爬升弹道方案,大大增加了导弹命中目标时的击顶落角,从图6中可以清晰地看到,导弹在命中目标时的击顶落角近45°,证明了二次爬升弹道的可用性。同时,通过仿真画面可以清楚地看到导弹在飞行过程中姿态的变化情况及二次爬升弹道的飞行轨迹。为了便于观察分析,将视景仿真视场分成四部分,即主视场、目标视场、导弹俯仰视场和导弹偏航滚转视场。通过不同的视场分析人员可以清晰地看到导弹飞行过程中的姿态位置变化和目标运动状态。为了增强仿真的逼真性,在仿真场景中增加了碰撞检测和烟火、粒子等特效,当导弹命中目标时,目标起火并飞散出粒子碎片,导弹命中目标时的效果如图6所示。

图5 弹道视景准实时仿真结果图

图6 导弹命中目标特效图

5 结论

文中分析了基于Vega Prime的弹道视景准实时仿真流程及其关键技术,采用多媒体定时器、多线程技术实现了弹道视景仿真的准实时性,采用内存映射文件技术实现了弹道仿真与视景仿真间的快速数据交互,在.NET环境下采用C++进行编程,实现了反坦克导弹攻击目标全过程的弹道视景准实时仿真,设计人员可以通过视景仿真画面直观清晰的观察导弹的飞行过程,为弹道设计合理性分析提供了参考。

[1]凌锋.飞行视景仿真系统研究与开发[D].西安:西北工业大学,2003.

[2]苏森煜,张晓东,娄术根,等.基于Vega的导弹飞行视景仿真[J].沈阳航空工业学院学报,2010,27(2):20-23.

[3]唐胜景,汪群山,王宪宗,等.基于Visual C++和Vega的导弹虚拟飞行仿真系统[J].北京理工大学学报,2007,27(5):413-416.

[4]The Multigen Creator Desktop Tutor[M].Multigen Paradigm Inc,2008.

[5]Lynx Prime user’s guide[M].Multigen Paradingm Inc,2008.

[6]常发亮,刘静.多线程下多媒体定时器在快速数据采集中的应用[J].计算机应用,2003,23(S1):177-178.

[7]孙文庆,刘秉权,肖镜辉.基于内存映射文件的数据共享技术研究与应用[J].微计算机应用,2005,26(2):192-194.

猜你喜欢
视景弹道内存
弹道——打胜仗的奥秘
虚拟现实技术在游戏设计中的应用及研究
某炮模拟训练系统中三维视景的设计与实现
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
一维弹道修正弹无线通信系统研制
基于预测和双缓冲区的直升机视景仿真
基于PID控制的二维弹道修正弹仿真
内存搭配DDR4、DDR3L还是DDR3?
消除弹道跟踪数据中伺服系统的振颤干扰