基于OpenGL的语音控制数控加工仿真的研究

时间:2022-07-04 01:29:51

基于OpenGL的语音控制数控加工仿真的研究

摘 要:利用OpenGL技术在VC++编程平台上开发数控加工仿真系统,并结合语音识别技术实现语音控制。简要介绍OpenGL及其三维仿真技术,以及语音识别的原理和技术。通过应用微软语音应用程序软件开发工具包Speech SDK进行二次开发,旨在通过语音输入加工参数和操作命令,经过数控程序译码进行代码校验和数据处理,实现对刀具和工件加工过程的动态模拟仿真,体现语音识别技术为数控加工领域所带来的便利。

关键词:OpenGL; 数控加工; 语音识别; Speech SDK

中图分类号:TP391.9 文献标识码:A

文章编号:1004-373X(2010)11-0121-04

Research on NC Machining Simulation Controlled by Speech Recognition Based on OpenGL

SHI Jun, FU Gang

(Northern Science & Technology College, Shenyang Institute of Aeronautical Engineering, Shenyang 110034, China)

Abstract: The NC machining simulation system was developed with OpenGL technology on the VC++ programming platform, and the speech control was implemented in combination with the speech recognition technology. The OpenGL and its 3D simulation technology as well as principles and technology of speech recognition are introduced briefly. The secondary development of the system is performed with Microsoft speech application software development kit Speech SDK to input the machining parameters and operating commands by noice, carry out NC code checking and data processing through NC program decoding, and realize the dynamic simulation of the cutter movement and the workpiece machining process. It embodies the convinece caused by the speech recognition technology for the field of numerical control.

Keywords: OpenGL; NC machining; speech recognition; simulation; Speech SDK

0 引 言

数控加工仿真是利用计算机图形学的手段对零件的切削加工过程进行动态模拟的技术,是实现虚拟制造的主要手段。通过数控加工仿真,可以验证数控程序的正确性、监测加工过程、代替或减少实际加工中的试切工作、节省资源、避免风险[1]。计算机图形软件开发接口OpenGL为三维几何建模提供了有力的支持,是进行图形化编程、数据可视化、实体仿真的重要工具。因此借助OpenGL强大的图形能力,建立数控加工仿真系统,实现高质量的实体动态仿真。

以往的数控加工仿真系统需要输入大量的加工参数和控制命令,并根据仿真结果调整参数后反复仿真,以取得最佳的加工效果,这样却带来了工作量大、重复操作的问题。若结合语音识别技术,实现语音控制数控加工仿真,不仅可以更加方便、快捷地输入参数和命令,解放操作人员的双手,减少工作量,而且适合远程控制,从而进一步提高加工效率、增加经济价值。

1 OpenGL及其三维建模

OpenGL是由SGI公司在其GL(Graphics Library)的基础上发展起来的三维图形库,作为三维图形API的标准。OpenGL可以与Visual C++紧密接合,便于实现数控加工仿真的有关计算和图形算法,并可保证算法的正确性和可靠性。

OpenGL在图形显示的过程中首先将物体转化为描述几何性质的顶点与描述图像的像素。几何顶点数据经过运算器、逐个顶点操作转化成像素数据;对于像素数据,图像操作的结果被存储在纹理组装用的内存中。像素数据经过光栅化、逐个片元处理形成图形片元。最后,图形片元再经过逐个操作,得到最后的像素值送入帧缓冲器,从而实现图形的显示。OpenGL的工作流程[2]如图1所示。

在OpenGL中进行主要的图形操作并在计算机屏幕上渲染绘制出三维图形的基本步骤如下:

(1) 根据基本图形单元建立物体模型,并对所建立的模型进行数学描述;

(2) 把物体模型放在三维空间中的合适位置,并设置视点;

(3) 确定物体的色彩、光照条件、纹理方式等;

(4)进行从物体模型的数学描述及其色彩信息到计算机屏幕像素的转换,即光栅化。

图1 OpenGL工作流程图

2 语音识别技术

语音识别(Speech Recognition)是计算机通过识别和理解过程把语音信号转变为相应的文本或命令的技术,它属于多维模式识别和智能接口的范畴。语音识别技术是一项集声学、语言学、计算机、信息处理、人工智能于一身的综合技术。

语音识别分为两步。第一步是根据识别系统的类型选择一种能够满足要求的识别方法,采用语音分析方法分析出这种识别方法所要求的语音特征参数,把这些参数作为标准模式存储起来,形成“模板”,这一过程称为 “训练”。第二步就是“识别”阶段,根据实际需要选择语音特征参数,这些特征参数的时间序列构成了测试模板,将其与己存在的参考模板逐一进行比较,进行测度估计,最后经由专家知识库判决,最佳匹配的参考模板即为识别结果。语音识别的原理[3]如图2所示。

图2 语音识别原理框图

目前应用较为广泛的语音识别技术有矢量量化(Vector Quantization,VQ)、动态时间规整(Dynamic Time Warping,DTW)、隐马尔可夫模型(Hidden Markov Models,HMM)以及人工神经元网络(Artificial Neural Network,ANN)等[4]。

3 语音控制数控加工仿真系统的设计与实现

3.1 功能设计

根据数控机床的零件加工流程和计算机仿真的基本原理,将语音控制数控加工仿真系统的功能模块化,如图3所示。

(1) 在语音识别控制模块中,采用微软公司开发的Speech SDK 5.1在VC++的编程平台下进行二次开发,实现小词汇量、孤立词、非特定人的语音识别系统。语音识别训练是针对本系统的命令和待识别词或短语进行的。

图3 语音控制数控加工仿真系统功能模块图

(2) 通过对数控加工程序进行词法和语法分析来检验数控程序的正确性、有效性;数据处理负责提取与仿真有关的命令和状态信息,从而进行参数设置、插补运算和续效性设置等操作[5]。

(3) 加工仿真模块根据分析得到的加工指令,动态模拟刀具运动和进给切削工件的加工轨迹,并由语音控制操作。

(4) 信息管理模块使用Microsoft SQL Server 2000作为后台数据库,存储工件模型和刀具模型的参数和图像信息,可以实现信息的添加、修改、删除和查询操作。用户直接选择合适的刀具和工件,节省输入参数的时间,增强仿真效果,为加工仿真提供数据支持。

3.2 语音识别控制

微软公司推出的Microsoft Speech SDK 5.1语音开发工具包提供了语音识别和语音合成的接口,并采用了HMM建模技术,通过大量的语音数据训练,得到了精确广泛的声学模型,并具有较强的抗噪声能力。

在进行语音识别工作前需要编写一个*.XML的文法文件。SDK通过一个语音识别引擎来识别用户的语音。文法中定义了需要识别的字和短语。简单的文法例子如下[6]:

开始

暂停

加速

……

在和

中插入的是一组待识别的字或短语,而中插入的是以

为可选择的可能匹配用户语音的字或短语。

在程序中需要定义以下语音识别所需的接口对象:

CComPtrm_Recognizer; //用于访问语音引擎;

CComPtrm_RecoContxt; //用于接收和发送与语音消息相关的事件消息,装载和卸载文法;

CComPtr m_RecoGrammar; //用于建立、载入、激活语法和规则;

CComPtr m_Audio;//定义声音处理时的语音对象;

实现语音识别控制的主要步骤[7]如下:

(1) 初始化COM端口,通过调用函数CoInitialize(NULL)来实现;

(2) 通过m_Recognizer对象调用CoCreateInstance()函数创建一个独占型语音识别引擎,用CLSID_SpInprocRecognizer标志设置,只允许该程序使用识别引擎;

(3) 调用ISpRecognizer::CreateRecoContext创建识别上下文接口(ISpRecoContext);

(4) 通过m_RecoContxt对象调用SetNotifyWindowMessage()函数告诉操作系统哪个是我们的识别消息,需要进行处理;

(5) 通过m_RecoContxt对象调用SetInterest()函数来告诉识别引擎,什么是我们感兴趣的事件;

(6) 通过m_RecoContxt对象调用CreateGrammar()函数建立一个Rule对象,再调用LoadCmdFromFile()函数从XML文件中装载对应的语法规则;

(7) 通过m_RecoGrammar 对象调用SetRule-State()函数激活语法规则,开始接收音频输入并进行识别;

(8) 截获识别消息(WM_RECOEVENT),通过event.RecoResult()获取识别结果,分析判别后对参数或程序状态进行设置。

当用户向系统发出一个语音指令后,系统界面马上显示指令结果,让用户确定所发出的指令是否被系统听见,是否被正确识别。对于参数设置,需要进行短语分割和数字转换,对于操作命令则直接识别后改变加工仿真的状态。由于本系统所需识别的词汇具有一定的局限性和规律性,系统可以根据已经识别的字或短语通过联想预先选取可能出现的后续词,从而减少系统匹配的时间,提高系统的识别速度。

3.3 数控程序译码

系统在利用OpenGL技术进行动态加工仿真之前需要对数控加工程序进行分析、计算、判别以及译码等处理。对于检查出来的词法错误可以自动改正,对于出现不合理的数值和参数的语法错误则提示错误原因供用户参考。

系统加载文本格式的数控加工程序,并按行存入数组,程序中设置不同的变量存储相关参数。根据各功能字之间用空格隔开等特点,分析出代码中所指定的命令和参数值,修改对应的变量。同时应考虑续效指令,若当前行指令代码没有出现同组其他指令时,相应变量会保持不变。对于绝对值或是增量值指令(G90/G91),应采用直接替换参数或累加增量的方法,确保零件轮廓坐标的准确性。系统还能根据刀具的参数信息和刀具补偿参数计算出刀具中心轨迹,用于实现刀具的仿真。数控程序译码流程图如图4所示。

图4 数控程序译码流程图

3.4 加工仿真

在仿真环境中建立刀具和工件的几何模型。刀具和工件根据用户选择的模型以及语音输入的参数可以通过OpenGL直接编程生成,并且通过glTranslatef(),glRotatef(),glScalef(),gluLookAt(),gluPerspective()等函数可以实现模型的平移、旋转、缩放、视图变换、正投影和透视投影等操作[8-10]。

系统根据数控程序译码阶段得到的命令和状态信息设置模拟加工参数。通过正投影的XY平面和XZ平面两个视角同时动态模拟刀具的旋转和相对工件运动形成的加工轨迹。系统界面还同时显示数控加工代码的当前作用指令、刀具的各项指标以及切削液状态等信息,供用户实时观察及时查错。零件轮廓由直线和圆弧组成,对于直线段,根据起点坐标、终点坐标以及进给速度F依据比例关系计算单位时间刀具移动的位移。对于圆弧,则应确定单位时间内刀具移动形成圆弧的弧长为一定值。通过余旋定理把弧长转换成角度,也就是单位时间内刀具移动形成圆弧的圆心角为一定值。设angB为连接圆弧起点和圆心的直线与X轴的夹角,angE为连接圆弧终点和圆心的直线与X轴的夹角,angleL即为计算求得的单位时间内刀具切削圆弧所形成的圆心角。实现刀具切削圆弧轨迹的程序段如下,根据测试结果angleL要小于0.1,否则绘制出的圆弧会出现偏差。

glPushMatrix();//保存矩阵状态

glColor3f(1.0f, 1.0f, 0.0f); //设置颜色

glBegin(GL_LINE_STRIP);//设置连续直线段拟和圆弧

for(float angle =angB; angle

{

x=sin(angleL);

y=cos(angleL);

glVertex2f(x, y);//指定下一个绘制的点

}

glEnd(); //完成绘制

glPopMatrix();//恢复矩阵状态

定义OpenGL的显示模式为双缓冲,调用glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE)函数进行设置,即所有的OpenGL绘制命令在非显示缓冲区中执行,绘制完成后调用glutSwapBuffers()函数将其内容拷贝到显示缓冲区中进行图形显示,这样使得图像转换更为平滑,有效地改善了屏幕刷新时的闪烁问题。

4 结 语

语音控制数控加工仿真系统经过大量测试得到的数据表明,在语音识别方面,在实验室条件下可以达到98%的识别率,即使在小噪声的环境下也可以保证95%以上的识别率,基本满足系统的使用需求;在加工仿真方面,采用OpenGL图形处理策略实现的刀具模拟、刀具轨迹显示以及加工过程的仿真,提高了显示的真实感与实时性。语音识别技术与数控仿真相结合,在一定程度上为数控加工降低了工作量、提高了生产效率、降低了生产成本,进一步推动语音识别技术在更广泛领域的应用,也推动东北老工业基地的发展和振兴。

参考文献

[1]罗生梅,许奇武.OpenGL在数控加工仿真中的应用[J].组合机床与自动化加工技术,2008(4):89-91.

[2]高恩婷.基于VC++的OpenGL三维应用程序的设计[J].苏州大学学报:自然科学版,2007,23(4):37-41.

[3]王炳锡,屈丹,彭煊.实用语音识别基础[M].北京:国防工业出版社,2005.

[4]韩纪庆,张磊,郑铁然.语音信号处理[M].北京:清华大学出版社,2004.

[5]马银戌,严忠.基于VB和OpenGL的数控车削仿真系统研究[J].机械工程师,2008(8):43-44.

[6]Microsoft Inc.. Speech API帮助文档[EB/OL].\. \\Microsoft Speech SDK 5.1\\Docs\\Help\\sapi.chm,2008.

[7]初琦.Speech SDK在语音机器人开发中的应用[J].北京工业职业技术学院学报,2008,7(4):32-36.

[8]Richard S Wright, Jr Benjamin Lipchak.OpenGL超级宝典[M].3版.北京:人民邮电出版社,2005.

[9]王永超.基于OpenGL的虚拟车床几何建模[J].现代电子技术,2008,31(12):165-168.

[10]林忠,黄陈蓉.数控车床虚拟加工的仿真技术与实现[J].机械设计与制造,2008(9):165-167.

上一篇:基于NiosⅡ的多功能数码相框设计 下一篇:牛顿法与解析法在Pt100铂热电阻温度计算中的特...