基于OpenGL事件驱动的雷达目标仿真系统
2016-10-19李彦龙
李彦龙,刘 建,孟 凡
(1.91404部队装备部,河北 秦皇岛066001;2.中国船舶重工集团公司第七二四研究所,南京211153)
基于OpenGL事件驱动的雷达目标仿真系统
李彦龙1,刘建2,孟凡2
(1.91404部队装备部,河北 秦皇岛066001;2.中国船舶重工集团公司第七二四研究所,南京211153)
简要介绍了OpenGL核心库、实用工具函数库在雷达目标仿真系统中的应用。提出一种基于事件驱动的雷达目标仿真系统的实现方法。应用该方法实现的仿真案例不仅具有友好的人机交互,而且在多任务操作系统中运行性能更加稳定。
事件驱动; 雷达目标仿真;OpenGL
0 引 言
在近现代战争中,雷达在远距离发现和定位目标方面发挥着越来越重要的作用,被誉为现代战争的“眼睛”。雷达的显控分系统实时显示探测到目标的原始视频,实时刷新目标的方位、距离等重要信息。同时,显控分系统作为整个雷达的终端还需要完成对整部设备内各分系统的控制,是整个雷达系统和操作员的交互平台[1]。因此,雷达显控分系统的仿真不仅可以作为雷达模拟器通过对雷达系统的虚拟操作完成训练任务,也可以作为雷达系统的重要仿真系统,与作战系统其他设备配合完成各种作战任务[2]。
近年来,雷达系统仿真技术不断发展,其需求量不断增大。目标模拟功能在雷达显控分系统中发挥出越来越重要的作用。该功能可以为验证数据处理算法提供理想的模拟试验环境。目前,在用的早期开发的一些仿真系统存在运行资源调度不合理、操作繁琐、可靠性差等问题。本文采用OpenGL的事件驱动交互功能,设计了雷达目标仿真系统。实现的系统可靠性高,通用性强,有很好的可移植性。通过此方法模拟出的目标更加接近于真实目标。同时,该方法开发的成本低廉。
1 基于事件驱动的雷达目标仿真
所谓事件驱动,即跟随当前时间点上出现的事件,调用可用资源执行相关的任务,使出现的任务得以解决。从事件的角度来说,事件驱动程序的基本结构由事件收集器、事件发送器和事件处理器组成。事件收集器专门负责收集所有事件,如键盘、鼠标事件。事件发送器负责将收集器收集到的事件分发到目标对象中。事件处理器做具体的事件响应工作。对于框架使用者来说,能看到的是事件处理器。
由于windows本身是基于事件驱动模型的,所有的窗体和程序所对应的类都有一个事件表,用来绑定事件和被调用函数。近年来随着信息技术的飞速发展,事件驱动机制广泛应用于计算机软件编程领域。本文应用了该机制并结合OpenGL的事件驱动交互功能设计了一种雷达目标仿真方法。
OpenGL的全称是“OpenGraphicsLibrary”,即“开放性图形库”。它为程序开发人员定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口,是一个功能强大、调用方便的底层3D图形函数库。OpenGL具有高图形质量、高性能、高稳定性的特点,并具有充分的可扩展性。其中,OpenGL的GLUT(OpenGLUtilityToolkit,OpenGL实用函数工具包)函数库可以设置各种消息处理函数,而且与平台无关,主要包括窗口初始化功能、事件处理、窗口和菜单管理、回调函数注册和几何建模功能[3-4]。
在GLUT中有20个回调函数用于响应用户事件。最重要的回调函数是glutDisplayFunc。当GLUT认为需要重新显示窗口内容时都将执行这一函数注册的回调函数。另外一些重要的回调函数注册函数有:函数glutReshapeFunc用于注册窗口大小改变这一事件发生时GLUT将调用的函数,glutKeyboardFunc和glutMouseFunc用于注册键盘和鼠标事件发生时的回调函数。这两个函数主要用于人机交互处理。在没有其他事件处理时,GLUT将调用函数glutldleFunc注册的函数,而函数glutTimerFunc则注册处理定时器事件的函数。
1.1基于事件驱动的交互控制实现原理
雷达仿真系统中,人机的交互通常借助于键盘、鼠标或操纵球等硬件输入方式。在OpenGL程序中,交互设备输入有GLUT中的子程序处理。GLUT中有响应从标准输入设备事件的函数,对每一种设备指定一个回调函数来处理从该设备发生的输入。本方案通过事件驱动方式调用GLUT函数库响应键盘、鼠标事件,实现人机交互。
对某一区域开窗显示是雷达目标仿真系统的一个重要功能。该仿真系统中使用开窗功能可以更加清楚地观察到模拟目标运行的轨迹。当雷达操作员需要重点放大显示某一区域时,可以根据当前鼠标位置和键盘输入执行开窗显示(B显)功能。假设当前鼠标位置为(xm,ym),当操作人员单击键盘的Ctrl+↑,可实现以(xm,ym)为中心的扇形区域N倍放大。
对于键盘输入,本仿真系统用以下函数指定当键盘上的一个键被按下时调用的函数:glutKeyboardFunc(keyFun)。被指定的函数有3个参数:keyFun(GLubytekey、GLintxMouse和GLintyMouse),其中参数key为键盘字符值或对应的ASCII码,(xMouse,yMouse)为当前鼠标位置。当指定的键被按下后就可以用鼠标位置来调用开窗显示的功能。交互控制实现流程图如图1所示。
图1 交互控制实现流程图
系统通过设置GLUT函数库的键盘回调注册函数来实现对键盘事件的响应。系统内部通过OpenGL几何变换函数实现对相应扇形区域的放大显示。OpenGL中的几何变换是通过齐次坐标系下变换矩阵来实现的。上述N倍放大扇形区域采用的变换矩阵为
(1)
OpenGL核心库中提供了距离单元和方位单元上的平移、缩放和旋转的变换控制函数。开窗显示可以基于OpenGL的几何变换函数来实现:首先通过函数glTranslatef(-xm,-ym,0)将扇形区域中心点(xm,ym)平移到坐标原点位置;然后通过函数glScalef(N,N,1.0)将扇形区域参照坐标原点放大N倍,N根据具体需要设置;最后通过函数glTranslatef(xm,ym,0)将扇形区域中心点平移到原来位置
1.2仿真系统坐标变换
雷达显示器的种类很多,其中使用最广泛的是平面显示器。平面显示器提供了360°范围内全部平面信息,因此也叫全景显示器或环视显示器,简称PPI(平面位置显示)显示器或P型显示器。对于雷达PPI显示器,一般以正北方向为0°,扫描线沿顺时针旋转。 因此,雷达扫描的坐标系如图2所示,目标参数表示为(D,θ),其中D表示目标距离,θ 表示目标方位角[5]。
图2 雷达扫描坐标系
屏幕中心为原点(0, 0,0),x轴水平向右,y轴垂直向上, z轴正向指向屏幕外侧。对于两坐标雷达来说,使用二维笛卡尔坐标系,即屏幕中心坐标为(0,0),窗口范围是(-1,-1)到(1,1),如图3所示。
图3 OpenGL二维笛卡尔坐标系
在雷达PPI显示器上显示目标,首先需要实现雷达扫描坐标系到OpenGL二维笛卡尔坐标系的变换。假设雷达扫描坐标系中目标参数为(D,θ),则对应到OpenGL的二维笛卡尔坐标系中的(x,y)值的转换公式如下:
(2)
其中Dmax为雷达当前量程。
1.3目标仿真的实现步骤与结果
雷达目标仿真系统中目标的仿真为试验雷达系统各项功能的验证提供了基本平台,尤其适用于验证数据处理不同算法的运行效果。根据上述原理在本系统中模拟出了多种比较典型的运动目标航路。
利用OpenGL核心库中的绘图函数进行目标的仿真绘制。绘制步骤如下:
(1) 设定目标初始值;
(2) 根据运动学公式(3)、(4)、(5)、(6),对模拟目标在各个时刻的参数进行计算,最后得出一个输出结果。
(3)
(4)
(5)
(6)
其中,Sx表示目标切向位移,Sy表示目标法向位移,Vx表示目标切向速度,Vy表示目标法向速度,ax表示目标切向加速度,ay表示目标法向加速度。瞬时的法向速度永远为0,因此不需要计算。
(1) 在计算出模拟目标的各个时刻的参数后,将目标的方位、距离参数以消息的方式传给CPU;
(2) 根据实际需要设置目标显示的颜色和大小,通过GLUT调用绘制函数,根据接收到的参数信息完成对目标的绘制。其相应仿真代码框架如下:
glBegin(GL_POINTS);//开始绘制点集
glVertex2f(x1,y1);
……
glVertex2f(xn,yn);
glEnd();
在本试验中,目标初始方位300°,初始距离为22.3km,x方向速度为300m/s,y方向速度为0m/s,分别模拟了匀速直航和蛇形运动两种运动形式。
首先根据初始值在MATLAB环境中实现了目标航迹的仿真,效果如图4、图5所示。将目标的初始值应用于本案例中,实现的效果如图6、图7所示。通过
图4 采用本文方法实现匀速直航仿真图
图5 采用本文方法实现蛇形运动仿真图
图6 采用本文方法的匀速直航实现效果图
图7 采用本文方法的蛇形运动实现效果图
在仿真环境和真实案例中的应用效果可以看出该方法可行。试验表明,本文提出的实现方法在多任务操作系统下可以模拟多种复杂的雷达目标航路,取得了良好的效果,为雷达数据处理算法提供了可靠的测试环境。
2 结束语
本文提出了利用OpenGL实用工具函数库GLUT实现基于事件驱动的雷达目标仿真系统的思想,对该系统中两个重要的功能进行了介绍。试验结果表明,本文提出的实现方法可以对雷达目标仿真系统的基本功能进行仿真,实现了友好的人机交互效果。该系统为验证数据处理算法提供了理想的试验环境,对雷达系统仿真的开发提供了新的思路。
[1]丁鹭飞, 陈建春. 雷达原理[M]. 北京: 电子工业出版社,2009:268-295.
[2]何永喜,张国兵,张旗. 基于OpenGL技术的雷达终端显示设计与仿真[J]. 信息化研究, 2012.4,38(2)
[3]DaveShreiner,MasonWoo,JackieNeider,TomDavis.OpenGL编程指南 [M]. 6版. 北京:人民邮电出版社,2008:469-472.
[4]DonaldHearn,MPaulineBaker. 计算机图形学[M]. 3版. 北京:电子工业出版社,2009:101-122.
[5]MerrillISkolnik. 雷达手册[M]. 北京: 电子工业出版社,2010:162-171.
AnOpenGLevent-drivenradartargetsimulationsystem
LIYan-long1,LIUJian2,MENGFan2
(1.EquipmentDepartmentofUnit91404ofthePLANavy,Qinhuangdao066001,China;2.No.724ResearchInstituteofCSIC,Nanjing211153)
TheapplicationsoftheOpenGLcorelibraryandtheutilitytoolfunctionlibraryinradartargetsimulationsystemarebrieflyintroduced.Animplementationmethodoftheevent-drivenradartargetsimulationsystemisproposed.Thesimulationsystemsinsomecaseshavefriendlyman-machineinteractionandmorestableoperationperformanceinthemulti-taskoperatingsystemthroughthismethod.
eventdriven;radartargetsimulation;OpenGL
2016-03-11;
2016-05-20
李彦龙(1981-),男,助理工程师,硕士,研究方向:雷达装备试验及保障;刘建(1982-),工程师,研究方向:数据处理与数据融合;孟凡(1982-),工程师,硕士,研究方向:雷达数据处理。
TN955.2
A
1009-0401(2016)03-0032-04