【信息科学与控制工程】
在对来袭目标的拦截过程中,使用实测的目标航路数据和射表或微分方程拟合的弹道轨迹数据提前虚拟闭环[1]校射,可以提高后期对目标的拦截概率。其中弹目偏差的误差大小是制约校射效果的主要因素。
随着我国科技兴军战略的提出,视景仿真技术与军事领域的结合不断紧密,视景仿真技术在军事领域体现出了良好的可控性、安全性、无破坏性、不受空间和场地限制、费用低等优点[2]。采用视景仿真技术,直观地显示偏差数值,逼真地再现虚拟闭环较射过程,具有良好的人机交互性。
本文针对直线线性插值求取迎弹面上的弹着点误差较大问题,采用三次样条曲线插值[3],求取弹着点和弹目偏差,同时基于Vgea Prime的可视化仿真系统使得虚拟闭环校射过程直观逼真,具有沉浸式的打击感。
弹目偏差的定义是目标迎弹面上的有向二维矢量[4]。 目标迎弹面[5]的定义为与高炮到目标向量垂直的平面。通过目标以目标与观测点连线作为法线的平面为观目垂直面,通过目标以目标与火炮所在位置中心作为法线的平面为炮目垂直面,在实际情况中,我们可以把观目垂直面近似看作炮目垂直面,因为目标观测点和火炮位置中心的距离和目标和火炮中心位置的距离比值很小,这样可以大大减少计算量。
弹目偏差是定义在炸目坐标系[6]下的,如图1所示,其中Tg点为目标中心且为炸目坐标系的坐标原点,O点为观测点,O点到Tg 的连线为y轴(也叫炮目连接线),过Tg点且与O点和Tg点连线垂直的平面为迎弹面(即Q平面),z轴在Q平面内且与炮目连接线垂直,向上为正,x轴、y轴和z轴互相垂直。Tg-xy 构成右手系。Z*为弹道与Q平面的交点,即为实际弹着点。ΔεE和ΔβE 表示的是观目线和观炸线间的张角。在炸目坐标系下,在Q平面内向量为弹目偏差。
(1)
图1 炸目坐标系
基于弹丸轨迹是离散的数据点,即使弹道解算周期再短也难以保证恰好有数据点落在Q平面上。采用三次样条插值算法,使用Q平面前后的数据点,拟合出恰好在Q平面上的数据点,用于计算弹目偏差。在工程实践中经常用到插值,最简单的插值是在相邻的两个数据点之间线性插值,显然直线无法很好地拟合弹丸轨迹且精度低。
在已知的弹道数据有N个点,已知横坐标a=x0<x1<x2<…<xn=b,对应纵坐标为:y0,y1,…,yn-1,yn,对应z轴坐标为z0,z1,…,zn-1,zn。
这N个数据点每两个相邻点xi、xi+1构成一个子区间[xi,xi+1],共有n个子区间。为了获得精度高、比较平滑且符合弹道的曲线,使用3次样条插值,第i个子区间的插值函数Si(x)为:
Si(x)=a0+a1x+a2x2+a3x3
(2)
为了保证曲线的连续性和光滑性[7],必须对每个区间插值函数有一些要求,主要包括:
1) 连续性。除了两个边界节点外,任意一个节点xi同时属于[xi-1,xi]和[xi,xi+1]区间,边界的节点等于数据点的边界值,有如下限制条件:
Si(xi)=Si-1(xi),i=1,2,…,n-1
(3)
S0(x0)=y0
(4)
Sn-1(xn-1)=yn-1
(5)
2) 光滑性。除了两个边界节点外,任意一个中间节点的一阶导数和二阶导数连续,有如下限制条件:
(6)
(7)
根据前面所述,我们只需求出每个子区间的插值函数的4个系数a0、a1、a2、a3就能完全确认这n个插值函数。但在实际中,为了数学推导的方便,采用间接的表达方式,有:
(8)
式(8)中:hi=xi+1-xi, i=0,1,…,n-1; x∈[xi,xi+1], φ(x)=(2x+1)(x-1)2, φ1(x)=x(x-1)2。
式(8)就是插值函数的最终表达式,其中只有mi是未知的,其他都可以根据已知条件求得。剩下就是如何求得mi,把式(8)代入约束式(3)~式(5)中,经过整理可得:
λimi-1+2mi+μimi+1=gi, i=1,…,n-1
(9)
式(9)中:
在此基础上加入自然边界条件进行约束:即两个边界点的二阶导数为给定的值,其中最常见的为0,即在两个边界点上有:
(10)
根据式(9),结合边界条件式(11),可以推导出求解系数mi 的矩阵为:
(11)
式(11)中,除mi 都是可以根据已知条件求得,矩阵可由追赶法求解[8]。为简化计算,降低维数,将数据点的x坐标作为自变量,y、z作为因变量,假定Q平面在子区间k中,弹道与Q平面的交点Z*坐标为(xq,yq,zq),则可得如下条件:
yq=SYk(xq)
(12)
zq=SZk(xq)
(13)
式(12)、(13)中:SYk(·)在子区间k(可由数据点确定),是以x为自变量、y为因变量的插值函数;SZk(·)是在子区间k,是以x为自变量、z为因变量的插值函数。假定高炮观测中心的坐标为(xg,yg,zg),目标坐标为(xt,yt,zt),基于Q平面和弹目连接线的垂直关系可得式(14)~(16)。
(14)
(15)
(16)
将式(14)~(15)代入式(16)中,再与式(12)~(13)联立,即可求得Z*点的坐标。
已知Z*点、Tg点和O点都是基于地理直角坐标系下的,而弹目偏差定义在炸目坐标系下的,炸目坐标系是以O点为原点的地理直角坐标系经偏航β、俯仰ε、旋转α和平移而得,变换公式为:
(17)
(18)
式(17)、(18)中:x、y、z对应当前坐标;x′、y′、z′对应变换后的坐标;ε、β、α分别为绕X、Y、Z轴的逆时针的旋转角度;Δx、Δy、Δz分别为坐标系原点沿X,Y,Z轴的平移量。
经过变换,在炸目坐标系下的Z*点、Tg点和O点坐标可由上式变换求得,在图1中,若O点坐标为(x0,y0,z0),Tg点坐标为(xg,yg,zg),Z*的坐标为(xz,yz,zz),则ΔεE和ΔβE为:
(19)
弹目偏差实际使用时还需要改作地理坐标系中的方位角与高低角的增量Δεq和Δβq,即:
(20)
Vega Prime[9]作为一款功能强大的视景仿真开发工具,具有界面友好、简单易用、面向对象等特点,在同类产品中处于领先地位,它的主要应用方向有军事仿真渲染、仪器仪表界面、训练模拟器和城市漫游渲染。用户通过与视景仿真系统的交互,获得与真实世界相同的响应。
基于Vega Prime的视景仿真框架[10]由模型构建、LynX Prime图形界面配置和仿真程序设计3部分组成。
模型构建:使用Creator对所需地形场景和静态实体模型建模。
LynX Prime图形界面配置:通过图形化界面根据Vgea Prime最简流程基础上,对仿真场景初始化参数设置,主要包括场景创建、视景通道建立、模型引入、观察者视点设置、特效建立和碰撞检测应用等,配置文件为仿真系统提供“素材”,生成配置文件(.acf),仿真系统通过外部引用的方式引入配置文件,生成初始的仿真画面。
仿真程序设计:主要包括两部分:一是通过消息中间件[11](消息队列)传来的数据,分为MFC的控制信息和数据处理接收线程接收的弹丸轨迹和目标航迹;二是满足画面的要求的仿真画面开发,包括虚拟场景漫游、碰撞检测响应、视点通道控制、界面管理线程、视景仿真帧循环等内容。整个视景仿真系统如图2所示。
图2 视景仿真系统框图
为了便于视景仿真系统的后期扩展,因此将不同的功能模块化。主要有动画显示模块、人机交互界面模块、数据处理模块和算法模块。各模块功能如下:
1) 动画显示模块:没有数据时,生成仿真画面;接收到数据时,生成相对应的高炮发射弹丸拦截直升机的动画效果。
2) 人机交互界面模块:在以MFC为基础的界面下,设置某个区域为三维动画显示区域,并提供视点切换和复位功能。
3) 数据处理模块:接收到数据根据通信协议,取出数据帧对应位的数据,将十六进制数据转换为十进制并存储到链表中。
4) 算法模块:根据弹目偏差定义、Q平面和三次样条插值,获得迎弹面上真实弹着点,并实时解算弹目偏差。
仿真系统接收到消息队列传来的数据后,目标进入高炮的射程内,弹丸发射,弹丸到达目标附近,计算弹目偏差。若击中目标,仿真结束,若不满足条件,则继续接收校射过的弹道数据,仿真系统则继续发射弹丸,再次计算偏差,不断虚拟闭环校射,直至击中目标。仿真过程流程如图3所示。
图3 仿真过程流程框图
本文使用的建模软件是Multigen Creator (以下简称Creator),该软件在军事仿真等领域应用广泛,Creator模型的后缀为flt(OpenFlight),也是仿真领域的标准,可以被Vega、Virtools、Quest3D等软件兼容。Creator采用广告片等技术对模型进行实时渲染,满足实时性的要求。因此本文使用Creator对所需的高炮、直升机和戈壁滩地形进行建模。
建模就是通过视觉角度(即光影效果、点线面、材质、贴图)去构建真实的物品。高炮模型主要由8×8轮式装甲车、弹药箱和炮台组成,炮台部分有turretDOF、barrelDOF和gunDOF节点,依次是炮架的左右旋转节点、炮管的上下移动节点和炮管的自旋节点。直升机设计了两个旋翼[12],分别为大直径六叶旋翼和尾部的四叶旋翼,依次为maintiltDOF节点和tailrotorDOF节点,同时添加了损坏后的模型和正常模型。建模效果如图4、图5所示:
图4 高炮模型效果图
空旷的场景可以更好地展示系统的仿真效果,所以我们对戈壁滩地形建模。但根据实际场景,一个戈壁滩可能几十、几百平方公里,需要加载大量的数据。因此我们将戈壁滩地形等分成9个小模块,不同模块的部分会被切分到不同文件中。采用这种分块批量处理的方式,使得每个模块单独成为一个文件,能有效缓解数据读入内存时对系统造成的压力。在视景仿真程序中导入地形模块时,Creator会自动生成一个母文件,以外部引用[13]的方式把这些子文件包含进去。戈壁滩地形效果如图6所示。
图5 直升机模型效果图
图6 戈壁滩地形效果图
一个简洁、美观、大方的界面不仅能有效地显示整个视景仿真过程中各项数据,还能提供给用户与系统之间友善的交互性操作。为了满足更多区域的展示画面的需求,且能观察仿真画面里的态势。兼顾以上二者,工具栏提供按键,将悬浮式的常规控制对话框和视景通道隐藏,使得仿真画面占据整个屏幕下方。界面整体效果如图7所示。
图7 界面整体效果示意图
仿真初期,主视角在炮口的右侧,可以实时观察高炮周围的态势。视角的观察范围有限,右下角视景通道可用于观察目标周围。在配置文件中添加Channel、Observer和Transform实例,在视景通道UsedBy属性中选择主窗口,即该通道选择主窗口显示,观察者选择新建的观察者实例。观察者实例属性页中LookFromTarget选项选择Transform实例,在该实例中即可设置视景通道相对于目标的位置和观察目标的运动方式。
通道的显示与隐藏通过自定义消息、消息队列和线程通信[15]实现。在自定义消息头文件中增加如下定义:
#define WM_TargetChannel_MSGWM_USER+42
线程通信和消息队列都在WinUser.h头文件中已经实现,只需调用PostThreadMessage和PeekMessage方法即可。功能区的按键创建点击事件处理函数,给VPThread传递自定义信息:
∷PostThreadMessage(VPThreadID,WM_TargetChannel_MSG,(WPARAM)(true),0);
其中WPARAM为传递的参数即为真,最后在主线程中调用PeekMessage函数接收自定义消息:
PeekMessage(&msg,NULL,WM_USER+1,WM_USER+42,PM_REMOVE);
拿到为真的参数用于作为视景通道的显示或隐藏的标志量,首先要获得该视景通道的指针:
mTargetchannel=vpChannel::find("TargetChannel");
其中引号内的是配置文件中的通道实例名称,调用setDrawArea显示画面:
mTargetchannel ->setDrawArea(0.75,1,0.65,1);
括号中4个数字依次表示的是视景在仿真画面中占据的左右上下位置,范围为0到1,视景通道位置关系如图8所示。
图8 视景通道位置关系示意图
视景通道的位置参数都为0或都为1可隐藏视景通道,待需要时再显示。
在拦截目标的过程中,偏差量会实时变化。弹目偏差的数值实时显示在仿真画面的左上角,更直观。在配置文件中创建Overlay2Dtext实例,在主视景通道中显示,Text属性栏中设置初始字样、字体和颜色。Origin属性栏设置其在画面中的位置。在程序中,实时的显示偏差需要拿到配置文件中该实例的指针:
m_PianChaOverlay2DText=vpOverlay2DText::find("PianChaOverlay2DText ");
当弹丸穿过迎弹面时,产生偏差,将所要显示的字符和数字拼成字符指针dest,调用setString[16]函数:
m_PianChaOverlay2DText ->setString(dest)。
仿真系统分为3个阶段,没有接收到数据系统处于就绪状态、直升机进入视野拦截阶段和击毁直升机成功拦截。
在就绪阶段,采用多视角的方式展示战场态势,主要有四个视点。左上为沿着炮口方向向上观察的视点;右上为全局视点,从高处观察整个战场态势;左下为高炮视点;右下直升机视点,观察目标周围态势。多视点效果如图9所示。
图9 多视点效果图
在直升机拦截目标阶段,当接收到外部数据时,直升机来袭。目标进入主视点视野内,右上方是直升机,左上方是实时显示的弹目偏差的高低角和方位角,即为最终返回给火控设备的偏差量,弹丸发射处于视野中部,高炮和目标的连线上,如首次未成功拦截,后续会继续发射弹丸拦截目标。仿真画面效果如图10所示。
图10 仿真画面图
当火控设备接收到偏差量进行校正后,仿真系统再次接收到数据后,多次校射后若弹丸击中目标,触发爆炸效果,仿真结束,目标爆炸效果如图11所示。
图11 目标爆炸效果图
相对于传统直线线性插值求取迎弹面上的弹着点,3次样条曲线插值求取的弹着点使得实时解算弹目偏差的更准确、更接近真实值。基于Vega Prime的视景仿真系统,画面逼真打击感强,使得虚拟闭环校射真实直观,同时具备可控性、安全性、无破坏性,不受气候影响、不受空间和场地限制、费用低等,具有工程应用价值。但仿真系统对外部数据过分依赖,在外部数据出现问题时,无法保证本身计算的正确性。下一步研究方向是减少对弹道解算的依赖,内置弹道解算模块,以实现只依赖火控信息,实现整个拦截过程的可视化。
[1] 吴映锋,李文才,王长城.基于虚拟脱靶量预测的准闭环校射方法[J].火力与指挥控制,2016,41(03):101-105.
[2] 黄勇,孟庆鑫.浅谈仿真技术在军事领域内的应用[J].计算机与网络,2015,41(6):63-67.
[3] IDAIS H,YASIN M,PASADAS M,GONZALEZ P.Optimal knots allocation in the cubic and bicubic spline interpolation problems[J].Mathematics and Computers in Simulation,2019,164:131-145.
[4] 薄煜明.现代火控理论与应用基础[M].北京:科学出版社,2012.
[5] 郑百源,程远增,任锁柱,等.基于DM642的数字图像处理的弹目偏差提取[J].太原理工大学学报,2010,41(01):19-23.
[6] 李殿元,钱龙军.基于弹道重构的脱靶量分析[J].指挥控制与仿真,2019,41(04):135-140.
[7] 王洁,李一悰,阳港,等.一种基于三次样条插值的相位展开拉线处理方法[J].光学与光电技术,2019,17(05):23-29.
[8] 吴宇航,阎少宏,彭美叶.一类特殊反对角方程组的追赶法及其实现[J].华北理工大学学报(自然科学版),2016,38(04):27-31.
[9] 肖仁强,吴盘龙,周竹青.步战车低空打击视景仿真系统设计与实现[J].指挥控制与仿真,2017,39(05):80-84.
[10] 刘青松,谢晓方,曹建,等.基于Vega Prime的图像制导炸弹视景仿真[J].计算机与现代化,2017(02):49-52.
[11] BELGHOUL A,BAIOU M,TOUMANI F.MIND:An approach to optimize communication time via middleware tuning[J].Information Systems,2019,82:17-32.
[12] 杨磊松,李松超.一种小型筒射无人机外形设计与气动分析[J].兵器装备工程学报,2018,39(06):90-93.
[13] 李婷婷.基于Vega Prime的无人直升机飞行模拟训练系统研究与实现[J].直升机技术,2019(01):38-42.
[14] 张乐,韩佳盈,张蛟,等.MFC框架下的Vega Prime三维视景程序开发技术[J].火力与指挥控制,2014(3):159-162.
[15] MOON Y,LIM M.An Enhanced File Transfer Mechanism Using an Additional Blocking Communication Channel and Thread for IoT Environments.[J].Sensors (Basel,Switzerland),2019,19(6):1271-1283.
[16] 李婷婷.基于Vega Prime的无人直升机飞行模拟训练系统研究与实现[J].直升机技术,2019(01):38-42.
Citation format:CHEN Hao, QU Yi, WU Panlong, et al.Design and Implementation of Miss Distance Simulation System[J].Journal of Ordnance Equipment Engineering,2020,41(09):154-159.