VxWorks下基于WindML与Mesa的雷达三维仿真界面设计与实现
摘要 #
雷达仿真界面是显示雷达信息最直观的图形界面。本文针对以往雷达二维图形仿真界面存在俯仰角参数表示不直观、运动目标状态显示不准确、人机操作界面不友好等问题,以VxWorks实时多任务操作系统为应用平台,通过在WindML3.0中应用Mesa4.0技术实现图形三维显示效果,创新性地设计实现了一套高稳定性、高可靠性和强实用性的雷达三维仿真界面。该界面改进了以往二维图形显控界面的缺点,同时兼顾二维仿真界面显示,实现了二维和三维雷达仿真界面的完美兼容。
关键词:VxWorks;Mesa;雷达仿真界面;三维
Abstract #
Radar system is based on radar simulation interfaces. According to the disadvantages of former radar two-dimensional simulation interfaces, such as unintuitive representation of pitch angle, inaccurate display of moving targets, and unfriendly man-machine interface, the author presents a stable and high-performance radar three-dimensional simulation interface in the VxWorks real-time multitask operating system by applying Mesa4.0 in WindML3.0. The new interface is well compatible with the former interface and improves it to achieve the expected effect.
0 引言 #
雷达显控仿真界面是显示雷达信息最直观的图形界面,是雷达信息系统与操作员之间最重要的人机交互手段。因此,雷达仿真界面的视觉效果对操作员及时准确地进行数据判断具有很大影响。
雷达仿真界面设计任务主要包括:
- 显示雷达威力范围信息,供雷达操作员观察;
- 对雷达目标航迹进行可视化显示,显示目标运动的全过程;
- 通过观察视角的旋转、缩放、拉近、延伸等交互操作,使目标航迹能完整反映雷达目标的运动信息。
传统的雷达图像仿真界面一般为二维显示界面,通过PPI圆显示。这种显示方式存在以下问题:
- 对于具备三坐标信息的某些型号雷达,目标方位显示不准确;
- 俯仰角度变化体现不直观。
本文基于VxWorks实时多任务操作系统,通过将Mesa4.0裁剪移植至WindML3.0,设计实现了一套雷达三维仿真界面。该软件设计不仅充分满足了雷达仿真界面的功能性,并可与传统二维仿真界面进行无缝转换,充分考虑了人性化设计,具有友好、直观的人机界面。
1 WindML3.0及Mesa4.0简介 #
本文软件在VxWorks实时多任务嵌入式操作系统下开发,通过在WindML3.0下移植及裁剪Mesa4.0,实现了雷达三维图形的仿真显示功能。下面分别对WindML3.0以及Mesa4.0进行介绍。
1.1 WindML3.0简介 #
WindML(Wind Media Library)是嵌入式实时操作系统VxWorks中的一个多媒体组件库,为其提供了图形图像、字体、视音频等多媒体功能。
WindML3.0沿用了WindML2.0的基本2D图形库,包含点、直线、矩形、椭圆、多边形这五种基本的2D图形绘制API。但WindML3.0仍存在部分缺陷,例如:
- 在图形绘制上仍没有得到根本上的改观;
- 不支持三维显示;
- 不支持反走样处理等高级图像处理功能。
本文利用Mesa4.0在WindML3.0中的移植来弥补这些缺陷。
1.2 Mesa4.0简介 #
Mesa是一个基于OpenGL规范开发的3D图形库开源库,用于渲染交互式三维图形系统。Mesa自发布以来已经得到成熟应用,各种设备驱动程序允许Mesa库在许多不同的环境中使用(从软件仿真到GPU硬件加速)。同时,也可以很好地应用在不同的操作系统中,如Linux、Windows、Unix等。
相对于Mesa的最新版本,Mesa4.0版本对VxWorks系统提供了更加完整的适配支持,因此在WindML的应用中具有良好的兼容性。
2 雷达三维仿真界面设计实现 #
雷达三维仿真界面是在以往传统的雷达二维仿真界面设计的基础上,对雷达显示区域进行改进,使二维与三维仿真界面良好兼容,更形象直观地体现俯仰角和目标运动状态变化信息。该设计实现的关键在于将Mesa4.0移植入WindML3.0中,并合理裁剪应用。
2.1 WindML3.0下移植Mesa4.0 #
Mesa4.0的移植原理主要为:利用其开源特性,将Mesa4.0源码编译成用户所需的WindML3.0下的链接库。示例编译步骤如下:
- 在Tornado平台下,建立Toolchain为SIMNTgnu的Download工程;
- 添加文件,将Mesa4.0的源文件添加到工程目录中;
- 在
C:\Tornado2.0\target\h下建立GL文件夹,将gl.h、glext.h、glu.h、uglglutshapes.h、uglMesa.h拷贝至GL文件夹下; - 设置Builds选项卡中的C/C++编译器选项,添加Mesa的include和src路径,并编译生成
.a文件; - 将生成的
.a文件链接到PRJ_LIBS选项卡中,编译工程,生成.out下载文件,完成WindML3.0下Mesa4.0的移植。
2.2 Mesa4.0在WindML3.0中的使用 #
《WindML Driver for Mesa 4.0》中可以找到在WindML中使用Mesa的典型应用示例。示例步骤流程图如图1所示。
图 1 WindML中使用Mesa应用流程图
2.3 Mesa4.0的裁剪 #
Mesa4.0三维图形库是针对WindML2.0开发的,能够正确地应用于WindML2.0的开发应用。当应用于WindML3.0的窗口系统时,容易出现窗口失去响应的问题。因此,针对窗口问题,需要对Mesa4.0源码进行裁剪。
对于Mesa4.0的裁剪,主要需要修改更改绘图页面的选择和图形上下文的相应代码。
2.3.1 更改绘图页面 #
在Mesa4.0对于WindML的程序中,使用了两个变量firstPage和secondPage分别表示绘图页和显示页。当处于直接绘图模式时,firstPage = secondPage;当处于双缓冲模式时,firstPage和secondPage轮流维护绘图页和缓冲页。
由于WindML3.0的双缓冲模式,其页面处理由窗口系统自行完成,这对Mesa4.0来说相当于直接绘图模式。因此,Mesa4.0的双缓冲绘图方法不适用于WindML3.0的窗口系统。
为实现该功能,需要手动更改Mesa中有关直接绘图模式的代码。具体为:在创建UGL/Mesa环境的函数中,设置firstPage的pageId为绘图页面的pageId;设置firstPage所维护的缓冲区地址为绘图页面的地址,如图2所示。
图 2 firstPage的更改
2.3.2 更改图形上下文的相应代码 #
在Mesa4.0对于WindML的程序中,创建了一个图形上下文。在某个窗口界面绘图时,会与WindML3.0的窗口系统所创建的图形上下文产生冲突。因此,需要修改Mesa4.0中有关图形上下文的代码。
具体做法:在直接绘图模式设置绘图页面之前,销毁Mesa创建的图形上下文,并将Mesa图形上下文赋值为UGL的图形上下文。
2.3.3 销毁保护 #
由于销毁了Mesa创建的图形上下文,因此在销毁Mesa前(uglMesaDestroyContext),必须对Mesa图形上下文的有效性进行判断。当Mesa上下文中的图形上下文与UGL中的不同时,方可进行销毁。
2.4 界面效果图 #
利用VxWorks在Windows下的模拟器对二维和三维仿真界面效果图做了对比(如图3所示)。相比于二维界面,三维界面能更直观地体现运动目标信息和俯仰角变化状态,在视觉效果和界面上也更加友好。并且,通过按键控制,可以实现三维和二维图像的渐进转换,良好兼容了这两种显示模式(如图4所示)。
图 3 雷达二维/三维仿真界面实现效果对比图
图 4 三维界面转换至二维界面效果图
3 结语 #
本文针对传统雷达二维仿真界面显示中存在的不直观、反映目标运动过程不准确等问题,应用Mesa4.0在WindML3.0中的移植实现了三维界面仿真效果以及雷达目标航迹的仿真。结果十分清晰直观地反映了参数的变化情况并模拟了目标的运动过程,并且和二维仿真界面有着良好的兼容性,取得了令人满意的效果。
参考文献 #
[1] 秦啸, 宋慧娟, 穆朝义. 基于WindML媒体库的图形界面开发[J]. 电子技术与软件工程, 2013(17): 100-101.
[2] 练学辉, 朱佳丽, 乔大雷. 基于WindML的图形开发与应用[J]. 雷达与对抗, 2015, 35(1): 65-68.
[3] 章国华. 基于VxWorks的图形软件WindML3.0的研究[J]. 武汉船舶职业技术学院学报, 2014, 13(2): 68-71.
[4] 毛子鹰, 高贵明. WindML中Mesa的应用[J]. 雷达与对抗, 2009(3): 67-70.
作者:朱长发 蒋昕祎 李兴 王宝欣 王嘉颖
(上海航天技术研究院,上海 201100)