APP下载

基于GL Studio的虚拟仪表开发和关键技术研究

2015-12-05

机械工程与自动化 2015年6期
关键词:余弦航向纹理

周 尧

(空军第一航空学院,河南 信阳 464000)

基于GL Studio的虚拟仪表开发和关键技术研究

周 尧

(空军第一航空学院,河南 信阳 464000)

介绍了GL Studio开发平台在虚拟仪表设计与开发中的关键技术。应用该平台设计、开发了某型近导指示虚拟仪表,并且对该虚拟仪表和普通仪表的指示精度作了进一步比较。采用虚拟仪表代替普通仪表可以减少误差的来源,提高指示精度。

虚拟仪表;GL Studio;驱动程序

0 引言

虚拟现实技术已经被广泛应用到军事、工业、航空、生活等各个方面,它是计算机技术与虚拟仪器技术相结合的产物,尤其在军事训练中有着至关重要的作用。应用虚拟现实技术构建一套全数字化的虚拟系统,可以减少人力物力的投入,节约资源和成本,减少不必要的损失,并且能够得到满意的效果。针对大型训练系统操作面板大,需要显示仪表多,逻辑关系复杂等问题,无论是使用Open GL还是3D MAX都不能很好地解决建模难度大、组件复用性差、难以维护、并且对计算机硬件要求高等缺点。GL tudio是一款专业的虚拟仪表仿真平台,它以上手快、开发界面友好、编程要求低、开发效率更高、结果逼真、复用性强等优点被广泛应用到工程实践中。本文介绍GL Studio开发平台在虚拟仪表设计与开发中的关键技术。

1 GL Studio 的特点

GL Studio是DISTI公司推出的一款具有独立平台的快速原型工具,并且它可以在Windows NT、IRIX和Linux操作系统上运行。GL Studio工具包括设计器和生成器,使用GL Studio设计器不需要编程知识,它以所见即所得的方式来完成仪表面板的制作,通过在编辑器代码栏编写简单的源代码来控制各部件之间的逻辑关系。代码生成器把设计对象以C++源代码的形式生成,具有广泛的适用性,并且设计结果可以根据用户需要在工程中被创建成可执行文件(EXE)、动态链接库文件(DLL)和ActiveX控件(它可被单独使用,也可被植入到其他设计中联合应用),用于完成嵌入式系统的交互仿真。

2 GL Studio开发平台在虚拟仪表设计与开发中的关键技术

首先进行前期的准备工作,通常是对需要仿真的仪表面板的数码照片进行预处理,即调整照片的曝光程度和对比度等;然后,根据仪表中各部件的功用,把需要有动作响应的部件用Photoshop等图片处理软件切割下来,再进行一定的图片修复,最终生成GL Studio需要的纹理图片。GL Studio的开发流程如图1所示。

图1 GL Studio的开发流程图

2.1 纹理生成的关键点

纹理生成的关键点如下:

(1) 生成的纹理图片格式一定要合适,虽然GL Studio支持多种格式的纹理,如JPEG、TIFF、BMP、PNG等,但是,应用PNG格式会比较有利于后面的处理,因为GL Studio在处理贴图的时候会自动把纹理的像素调整为2的n次幂,而PNG格式的图片正好是以2的n次幂形式存储的,这样就可以缩短系统处理时间,减少繁琐的调整。

(2) 要对仪表实体的外观表现有一定的把握,根据仪表的控制部件和显示部件的运动方式对图片进行合理的分割和布局,再根据后期仪表逻辑的代码实现对各部件恰当的命名,使得逻辑控制代码具有较强的可读性,降低后期开发与维护的难度。

2.2 逻辑控制与行为事件

仪表的纹理图片按照GL Studio的要求在编辑器中调整好大小和位置后,就要对需要响应的控制部件设置控制逻辑和行为事件。在编辑器的代码栏设置变量属性和初值,根据GL Studio中提供的库函数设置动作代码和事件回调函数。如指针的旋转需调用Display Object->DynamicRotate()函数,而且必须在代码栏顶部的头文件中包含声明语句:#include

现以图2中的几种事件响应模型为例说明逻辑控制与行为事件。图2中,从状态1到状态2的变化必然有对应的事件响应关系来控制与之对应的部件的动作,其中的开关从状态1到状态2的变化是鼠标事件的响应,它可能对应一个设备的开启和关闭,也可能对应电路的接通与断开,这取决于它的回调函数所控制的对象。当鼠标左键按下,开关和警示灯的状态都发生改变,开关对象的回调响应函数如下:

ON_MOUSE_DOWN(MOUSE_LBUTTON)

{

if (self-> State ( ) = =1) // self指开关对象

{

Indicator->State(1); // Indicator指开关下面的警示灯对象

self -> State(2);

}

else

{

self->State(1);

Indicator->State(0);

}

return 1;

}

return 0 ;

图2 几种事件响应模型

2.3 驱动原理

由于实际控制面板上的仪表是机械仪表,其指针是在伺服电动机和测速发电机的共同作用下转动的。假设仪表内部的正余弦接收机接收来自惯导的即时航向正余弦输入信号,该信号分别送给正余弦信号接收机TpB1和用于检测当前航向的正余弦信号接收机TpB2。TpB1正余弦接收机转子产生与当前航向成正比的失调信号,该信号经过放大后进入电动机的控制绕组,电机开始工作,经减速器带动2个正余弦信号接收机TpB1、TpB2的转子转动,直到能量释放完毕停止。

虚拟面板上所有的动作都是通过数字信号来驱动的,例如指针的转动是通过GL Studio的函数实现的,而函数的参数则是通过数字量和角度之间的对应关系编写程序解算得到的,其中数字量是通过计算机运算处理直接得到的结果。

2.4 GL Studio驱动程序

GL Studio的库函数提供了一系列的驱动方法,以满足用户所期望的事件响应动作。在变量初始化以后,对函数进行声明和定义,并且编写驱动程序,用于测试对象的动作响应是否正确。现以某型近导指示器为例说明系统的测试驱动程序。在测试函数TestValues ( )中写入对象的测试方法:

SetAngle_HJ_Giv (angle_hj_giv); //设置给定航向角

SetRange (TestVal_2); //设置到航路点的距离

SetBiaoGan (TestVal_1); //设置标杆动作

SetAngle_HX_Giv (angle_hx_giv); //设置给定航向

……

……

……

SetAngle_HX_Current (angle_hx_current) ; //设置当前航向

SetAngle_HX_DT (angle_hx_dt); //设置电台航向

其中,左边旋钮的事件回调函数部分代码如下:

ON_MOUSE_DOWN(MOUSE_LBUTTON)

……

……//坐标的变换

if ((ev->eventType==EVENT_MOUSE) &&

((ev->eventSubtype==MOUSE_DRAG) ||(ev->eventSubtype==MOUSE_DOWN)))

// 如果是鼠标事件并且鼠标按下或者拖拽

就会有以下动作

{

static float angle_hxPerDeg = 18.0f / 180.0f;

float deltaAngle = self-> RelativeAngle (mev->lx,mev->ly) - self->RelativeAngle(_knobDownPos.x,_knobDownPos.y) ;

if (deltaAngle < -180.0f )

deltaAngle += 360.0f ;

else if (deltaAngle > 180.0f )

deltaAngle -= 360.0f ;

float delta_angle_hx = deltaAngle * angle_hxPerDeg;

angle_hx_giv += delta_angle_hx;

Lknob->DynamicRotateRelative (deltaAngle , Z_AXIS); // 旋钮绕Z轴旋转角度deltaAngle

……

}

return 0 ;

由于GL Studio和Windows的坐标原点不在同一点,GL Studio的原点在左下角,而Windows的原点在左上角,因此首先要进行坐标的变换,从而保证后续动作的正确性。

在Class Methods下的Calculate代码栏中写入以下代码:TestValues(time),用来调用测试函数。仿真结果如图3所示,测试结果表明虚拟仿真仪表能够比较精确地指示传输给它的信号量。

当完成了虚拟仪表的测试工作以后,就需要把虚拟仪表和真实仪表的性能进行实验对比。

2.5 测试与对比

在导航系统中,导航数据的获取需要以下步骤:接收机天线接收无线电信号,信号再经过译码电路进行变频、检波、译码得到并行单极性码,这样的码字不能被导航计算机直接使用,而要经过代码转换装置变成串行双极性码才能被使用。总之,计算机只能处理数字信号,但机械仪表是通过正余弦电压模拟信号来驱动的,所以经过一系列代码转换之后还要再转换成正余弦信号才能驱动仪表指针转动指示。

而虚拟仪表就是在计算机软件平台上开发出来的,所以它可以直接处理数字信号,这样就在原理上减少了一定的转换误差。我们把基于GL Studio开发的某型近距导航指示器应用到实际导航系统中与原有机械指示器作了测试和对比。由于某型近距导航指示器指示的信息量很大,这里以当前航向信号为例,对比指示结果,如表1所示。当前航向测试值分别为210°和280°时的指示情况对比如图4所示(仪表中最上面的白色指针在内刻度盘上的读数乘以10就是当前航向角度)。

图3 某型近距导航指示器仿真结果

表1 当前航向测试对比 (°)

2.6 结果分析

从图4中可以看出实际仪表和仿真仪表的指示结果都会和给定数据存在一定的误差,由于它们的读数要放大10倍,则它的误差也就会被放大10倍。经过对比,实际仪表要比虚拟仪表的指示误差大大约1°。虽然它们都有误差,但误差大小不同,误差来源也不同。实际仪表由于设计和工艺条件的限制,数据显示不会像

理想中那么精确,总会存在一定误差,主要是来自在数模转换过程中由于转换精度不能达到理想值而造成的转换误差和使用时间的增长、老化、磨损造成的机械误差。虽然进行了原边补偿和副边补偿,但还是不能得到无误差显示。

图4 输出结果截图对比

虚拟仪表是基于计算机软件技术平台开发的仪表,并且一般会应用到计算机数字系统中,用来完成虚拟指示功能。它可以作为计算机系统终端直接把经过处理的数据无误差显示,不需要经过数模或者模数转换,从而减少了转换误差。因此,虚拟仪表可以代替实际仪表完成它的功能,甚至能够达到更好的效果。

3 结束语

目前,虚拟仪表技术已经逐渐应用到各个行业的生产生活中,它以投资少、见效快的优点被工程设计人员所接受。使用专业的仪表仿真平台GL Studio能够使开发人员快速掌握系统开发流程和关键技术,高效地开发出指示精确、耐用、移植性强的虚拟仿真系统。因此,基于GL Studio的虚拟仪表开发技术具有一定的实用性和先进性。

[1] 于辉,赵经成.GL Studio虚拟仪表技术应用与系统开发[M].北京:国防工业出版社,2010.

[2] 黄新渊.虚拟现实技术及应用[M].北京:科学出版社,1999.

[3] 张文,朱元昌,樊世友,等.GL Studio及其在雷达面板仿真中的应用[J].测控技术,2002(12):50-52.

[4] 赵勃.数字/旋变转换器接口电路及控制软件设计[J].弹箭与制导学报,2004(11):284-286.

[5] 袁梅,白刚,陈炅.虚拟多功能显示系统设计[J].系统仿真学报,2006,18(6):1578-1581.

Design and Simulation of Virtual Instruments Based on GL Studio

ZHOU Yao

(The First Aviation University of Air Force, Xinyang 464000, China)

The key technology of virtual instrument design and simulation based on GL Studio is introduced in this paper, and a Short-Rang-Navigation instrument is developed. The instruction accuracy of virtual instrument is compared with that of ordinary instrument. The virtual instrument instead of ordinary instrument can reduce error sources, improve instruction precision.

virtual instruments; GL studio; driver

1672- 6413(2015)06- 0075- 03

2015- 08- 17;

2015- 09- 20

周尧(1985-),男,陕西户县人,讲师,硕士,主要从事飞行控制系统研究。

TP391.9∶TP216

A

猜你喜欢

余弦航向纹理
知坐标,明航向
基于BM3D的复杂纹理区域图像去噪
考虑几何限制的航向道模式设计
使用纹理叠加添加艺术画特效
TEXTURE ON TEXTURE质地上的纹理
两个含余弦函数的三角母不等式及其推论
基于干扰观测器的船舶系统航向Backstepping 控制
消除凹凸纹理有妙招!
分数阶余弦变换的卷积定理
图像压缩感知在分数阶Fourier域、分数阶余弦域的性能比较