乔晓慧 董云峰
北京航空航天大学宇航学院,北京100191
现代仿真系统的程序部署规模日益扩大,尤其是分布式系统仿真[1],更是越来越复杂,并且需要大量重复的仿真过程,人工操作方式效率过低,且耗费了大量的人力、物力和财力。而自动化仿真技术可以设计实现长期管理期间有人值守维护、无需人员操作的全新自动化流程,大大提高仿真效率和准确度。
在实现自动化的过程中,若仿真系统中应用到第三方软件,且该软件有二次编程的接口,可以通过编写程序直接实现自动化仿真。文献[2]针对这种情况已经实现了自动化仿真。但对于仿真系统里有第三方软件但无二次编程接口的情况,目前尚无公开文献提及。本文针对这种情况,提出了一种以图片识别为关键技术的自动化仿真技术,并以基于ADAM 和Matlab/Simulink 的红外导引头仿真系统为例,实现了红外导引头仿真过程中的仿真参数和系统配置的自动设置,极大的提高了仿真效率。
在利用HLA 框架的基础上搭建自动化操作平台框图如图1。
图1 自动化操作平台系统框图
其中,操作节点1,操作节点2,…,操作节点N分布在各个不同的仿真节点上,充当操作代理的角色,各个操作节点上存储着一个可执行程序的集合。总控制台由一台独立的计算机构成,配备有语音输入设备和数据手套输入设备,同时总控制台还和一个数据库后台相连接。整个系统启动后,操作人员从总控制台通过不同设备发出命令,通过网络将命令发送到各个操作节点,操作节点接收到命令后调度相应的可执行程序来完成所要求的任务。
对计算机当前运行状态的感知、识别是自动操作技术的基础,主要包括:匹配屏幕上出现的图像和识别指定位置的文字内容。对于这两项功能,现在均有成熟的软件可以利用:对于匹配屏幕上出现的图像可以采用Intel 公司的开源软件包OpenCV,而识别屏幕文字则可采用开源的FreeOCR。
OpenCV[3-4]是由Intel 公司资助的开源计算机视觉库。它由一系列C 函数和少量C ++类构成,实现图像处理和计算机视觉方面的很多通用算法,包括300 多个C/C ++ 函数的跨平台的中、高层API。它不依赖于其它的外部库,但也可以使用某些外部库。对非商业应用和商业应用都是免费的。OpenCV 具有的强大功能,大体如下:
1)对图像数据的操作,包括分配,释放,复制,设置和转换数据;
2)对图像和视频的输入输出,指文件和摄像头做为输入,图像和视频文件作为输出;
3)具有基本的数字图像处理能力,如可进行滤波,边缘检测,角点检测,采样和插值,色彩转换,形态操作,直方图和图像金字塔等操作;
4)可对各种结构进行分析,包括连接部件分析,轮廓处理,距离变换,各种距地计算,模板匹配,Hough 变换,多变形逼近,直线拟合,椭圆拟合和Delaunay 三角划分等;
5)对目标的识别,可采用特征算法和阴马尔科夫模型法。
具有基本的GUI 的功能,包括图像和视频的显示,键盘和鼠标事件处理以及滚动条等。
在自动化操作技术中,对计算机发出各种命令是必不可少的技术,主要包括模拟鼠标点击和模拟键盘输入。在Windows 平台下,有成熟可靠的API接口来实现这些功能。对于模拟鼠标点击有2 种技术手段:SendInput 模拟鼠标输入和PostMessage 发送鼠标点击消息;而对于模拟键盘输入可以采用3种技术手段:SendInput 模拟键盘输入,PostMessage发送键盘输入消息和使用ClipBoard 剪贴板。
自动化操作技术主要思路是靠编写程序来感知屏幕图像,并进一步判断控制对象软件的运行状态,在此基础上对控制对象软件进行模拟鼠标键盘的输入。而实际控制对象软件的运行环境是非常复杂的,软件在运行过程中发生各种各样的错误是不可避免的,因此自动化操作技术必须解决容错问题,本文提供了操作确认技术来解决容错问题,主要包括消极确认和积极确认。
在自动化操作技术中往往需要多个程序模块进行协调工作,而且工作方式是一个服务节点同时为多个客户端节点提供操作服务,这就需要一种合适的能同时提供一对一、一对多的通信方式,在Windows 平台下,Mailslot 通信技术能较好的满足这一要求。Mailslot 通信机制与普通电子邮件机制类似,各个通信节点均有自身唯一的名称和消息队列,只要知道对方的名称,即可向其发送消息。
红外导引头仿真工程的控制回路采用Matlab软件的Simulink 建模,被控对象模型在ADAMS 软件中实现。ADAMS 软件提供了和Matlab 软件联合仿真的信息交换机制,事先确定好联合仿真时2个软件之间需要交互的信息,然后在结构建模时定义出相应的状态变量,通过软件接口即可实现仿真过程中的信息交换,这样完整的控制回路闭环模型得以建立。在这样的基础上,在利用实验室现有的图像匹配与动作执行服务器获取图片和图片信息后,实现自动化只需要按照图2 流程建立程序。
图2 实现自动化仿真流程图
3.1.1 建立客户端与服务节点的通信管道
在本文中我们使用邮件槽为通信方式,Mailslot通信技术能较好的提供一对一、一对多的通信方式,使服务节点能为客户端节点提供很好的操作服务。
本文中的实现方式如下:
Missle 文件夹为存放图片的文件夹,Missle. ini文件中记录了各个图片的具体属性,例如:搜索区域,颜色区分,点击偏移等。该文件是在截取图片的过程中由截图工具获得的。
3.1.2 执行打开操作
在实现自动化的过程中,要执行打开操作的地方主要有打开Matlab 编辑窗口,打开对应的M 文件以及模型文件。
首先打开Matlab 编辑窗口,系统使用函数ShellExecute 实现。
ShellExecute 函数是Windows 系统内函数,可以根据要打开的文件路径来实现打开文件操作。
具体实现语句为:
ShellExecute(NULL ,_T("open")," C:ProgramFiles MATLAB R2006b bin matlab. bat",NULL,NULL,SW_SHOW);
然后执行打开M 文件的操作。在成功打开MATLAB 软件后,在编辑窗口中直接输入打开文件指令,打开文件。然后使用函数InputChar,Function-InputChar 模拟键盘操作。
具体实现语句如下:
InputChar 函数中第一个和第二个参数为要输入点的中心坐标,由SendInPut 获取,该软件可以方便快捷地获得相对屏幕左上角的以分辨率为单位的屏幕坐标,即屏幕左上角的坐标为(0,0)。
具体实现语句如下:MoveWindowTo(ptLeftTop,lWidth,lHeight);
FunctionInputChar("ENTER")。
LockWindow("Editor")是锁定新打开的Editor窗口获得窗口句柄,以便使下面的操作转换到对Editor 窗口的操作。
FunctionInputChar("F5")模拟快捷键F5 运行SeekerTracking.m 文件。
LockWindow("MATLAB")锁定MATLAB 窗口,获得窗口句柄,以便使以下操作转换到对MATLAB窗口的操作。
在成功实现打开Matlab 软件以及M 文件之后,需要打开模型文件,具体语句如下:
运行模型文件就要成功点击运行按钮。具体实现语句如下:
在这个过程中采用了自动容错机制,具体语句如下:
在这个过程中多次应用了容错机制。这种容错机制采用了进一步判断控制对象软件的运行状态来自动化容错的思想。例如本系统中在成功点击了运行按钮后,运行按钮会变成暂停按钮,这种状态的变化就可以作为点击运行成功与否的判断依据。
3.1.3 修改工况并进行运算
飞行器飞行的速度工况是由几个方向的速度耦合得到的,自动化仿真系统的目标是要实现能自动读入多种工况,并依据读入的信息自动进行修改。
以修改一种工况为例:
3+2* sin(2* pi* u(1)+1.2* pi)+4* cos(2*pi* u(1)+1.2* pi)
首先双击打开飞行模块,双击操作由连续使用两次ClickOnePhoto 来实现。双击要修改的速度模块(以先修改X 方向为例),使用LockWindow("Function Block Paramters")获得新打开的窗后句柄,使以下操作都是针对新打开的窗口。然后由语句InputChar(58,143,"3 +2* sin(2* pi* u(1)+1.2* pi)+4* cos(2* pi* u(1)+1.2* pi)")实现填写工况,如图3。
图3 修改x 方向速度
在表达式框中输入新的速度表达式,使用语句ClickOnePhoto("OK",300)确定输入并关闭函数窗口,再以同样的方法改变Z 轴方向速度,直到整个自动化仿真过程完成。
文中提出了基于图片识别的自动化技术,并以实现红外导引头系统仿真自动化为例,进行了详细说明。这对于分布式仿真,大规模作战仿真系统这种有高可靠性要求的项目更是必不可少,能大大减少人工操作带来的错误,促进相应的实际研究项目的顺利进行。
[1]陈家照,何全明,关正西.基于HLA 的某导弹发射训练仿真系统开发[J].系统仿真学报,2006,18(12):3393-3402.(Chen Jiazhao,He Quanming,Guan Zhengxi. Development of Missile Launching Training Simulation System Based on HLA[J]. Journal of System Simulation,2006,18(12):3393-3402.)
[2]李志强,张向刚. 基于虚拟仪器的电视导引头自动测试系统的设计[J]. 仪器仪表学报,2008,29(4):662-664.(Li Zhiqiang,Zhang Xianggang.Design of the Automatic Test System on Technology of the Virtual Instrument for Television Homing Seeker[J].Chinese Journal of Scientific Instrument,2008,29(4):662-664.)
[3]秦小文,温志芳,乔维维. 基于OpenCV 的图像处理[J].电子测试,2011,7(7):39-40.(Qin Xiaowen,Wen Zhifang,Qiao Weiwei.Image Processing Based on OpenCV[J].Electronic Test ,2011,7(7):39-40.)
[4]黎松,平西建,丁益洪.开放源代码的计算机视觉类库OpenCV 的应用[J]. 计算机应用与软件,2005,8(8):134-135.(Li Song,Ping Xijian,Ding Yihong.Application of Open Source Computer Vision Library[J]. Computer Applications and Software,2005,8(8):134-135.)