施釉机器人的虚拟建模和交互技术

2016-02-23 09:30崔建国李占贤刘琬钰李炜武金艺
关键词:施釉坐标值鼠标

崔建国,李占贤,刘琬钰,李炜,武金艺

(华北理工大学 机械工程学院,河北 唐山 063000)

施釉机器人的虚拟建模和交互技术

崔建国,李占贤,刘琬钰,李炜,武金艺

(华北理工大学 机械工程学院,河北 唐山 063000)

施釉机器人;虚拟示教系统;OpenGL;人机交互

利用虚拟实现技术在仿真环境中,对施釉机器人进行虚拟示教,完成复杂轨迹的规划。在VS2010开发环境下,采用工业标准图形接口OpenGL进行示教系统的开发,并完成三维虚拟模型的建立。应用GLUT实用工具库进行三维环境的设置,以机器人的自由度、工作空间为基础,绘制机器人的三维模型,并且建立示教辅助平面,配合针对示教的计算方法以及计算机的输入设备,实现人机交互操作。开发出五自由度施釉机器人的虚拟现实系统,并且针对机器人的示教过程,完成了满足示教使用的计算方法。施釉机器人可以完成符合运动学规律的交互运动,证明了示教系统的实用性和计算方法的正确性。

虚拟示教技术对改善工业机器人的运动控制具有非常重要的意义[1],借助于虚拟现实系统中的人机交互装置,可控制虚拟机器人的关节,在程序中记录相应关节角度变化的具体情况,通过编写好的程序接口,完成对机器人的控制[2]。

OpenGL是作为一种三维图形工业标准,具有良好的跨平台移植性[3]。利用OpenGL内嵌的三维绘图函数,完成施釉机器人三维图形的绘制。OpenGL还提供了人机交互的相应接口,利用这些接口可以实现使用鼠标和键盘对虚拟机的控制。

1 环境设置

示教系统采用的是VS2010作为开发环境,VS2010本身已经安装上OpenGL相应的函数库,所以在C语言程序中包含相应的头文件即可[4]。

GLUT作为实用工具库,VS2010并没有进行预装,在此,需要手动安装一下,将GLU32.lib glut.lib glut32.lib以及glut.h分别放置到VS2010安装目录下的lib和include文件夹中,将glut.dll和glut32.dll放置到系统目录下的system32文件夹中。在程序开始时,直接调用GLUT头文件即可。

2 模型建立

2.1 施釉机器人的结构分析

首先需要对施釉机器人运动副进行分解,并对其结构进行分析,确定需要添加的杆长以及预留出来的角度变量[5]。

施釉机器人具有5个转动副,在三维建模过程中,将每个转角设置成全局变量,方便不同的函数对其值进行方便地获取和更改。示教机器人主要由杆组成,采取实心圆柱体作为建模基本素材。

2.2 在编程环境绘制施釉机器人

2.2.1OpenGL的坐标系

将示教机器人显示在计算机上,首要工作是模型的变换,将机器人摆放在虚拟场景中预设的位置[6]。在OpenGL环境中,世界坐标系的y轴正方向向上,z轴正方向垂直于屏幕,x轴正方向为水平向右。三维模型的坐标系是根据自身形状特点建立的,因模型而异,本次建模主要使用圆柱作为建模素材,圆柱作为GLUT内嵌建模函数,其z轴在圆柱的中心轴上,原点在圆柱的一侧[7]。

2.2.2三维模型的素材

施釉机器人的三维模型主要用到圆柱形,要对OpenGL提供的gluCylinder()进行再封装处理。预留出改变颜色的接口,方便对施釉机器人每段杆进行颜色区别,封装程序代码如下:

void M_SolidCylinder (GLUquadric* quad, GLdouble base, GLdouble top,

GLdouble height, GLint slices, GLint stacks,

GLfloat red, GLfloat blue, GLfloat green)

{

glColor3f(red, blue, green);

gluCylinder(quad, base, top, height,

slices, stacks);

DrawCircleArea(0.0, 0.0, height, top, slices);

DrawCircleArea(0.0, 0.0, 0.0, base, slices);

}

2.2.3层次建模

三维模型的摆放要以世界系为基准,然后再利用OpenGL提供的函数进行模型变换。调用函数M_SolidCylinder(),通过函数提供的接口完成参数设置,然后再根据模型的空间位置要求,调用变换函数,完成不同部位的绘制。

施釉机器人属于串联机器人,每一个构建的空间位置,都与其上一系列运动副的角度变化有关,所以对本机器人实施层次建模[8]。如图1所示,机器人的末端机械臂(TOP)的位置姿态受前5个角度值共同制约。

图1 层次建模

下面开始绘制机器人的主体部分:

首先建立基座(BASE),基座采用圆柱形,调用M_SolidCylinder(),然后将圆柱型的截面半径设置成390 mm,高为10 mm,即M_SolidCylinder(Robot, 390, 390, 10, 20, 30, 0, 0, 0),这样基座薄板模型就建立完成,然后就改半径参数和高度参数分别绘制出高度为310 mm、290 mm,截面半径为100 mm、80 mm的2个圆柱。

绘制好的图形不会出现在屏幕窗口上,还需要进行几何变换,通过上述绘制完成的模型进行平移旋转变换,即可绘制出机器人的基座,如图2所示。

图2 施釉机器人基座模型

图3 施釉机器人模型

然后建立机械臂(PART1)。机械臂(PART1)与基座存在一个绕Y轴旋转的旋转副,预留出旋转接口(rotate1)。

完成如下代码的绘制:

glTranslatef(0,0,370);

glRotatef(rotate1,0,0,1);

glutSolidCube(160);

同理,进行机械臂2、3、4、5的绘制工作。如图3所示,绘制工作完成。

3 人机交互

虚拟示教中非常重要的一项就是人机交互操作,使用鼠标拖动三维模型完成指定的动作,可极大地简化示教过程。然而在现有的三维虚拟环境中,使用鼠标进行模型拖动时,往往与示教者的视角有一定的关联,示教者实际进行实际示教过程中,往往需要多次变化观察角度,这就给示教过程带来了很大的困难。本文提出的示教方法,针对于施釉机器人结构特点,引入示教辅助面,并且限制辅助面的部分自由度,从而使得交互操作更加符合施釉机器人的特点。

基本流程为:(1)辅助平面的建立;(2)屏幕坐标与世界坐标的映射;(3)示教臂的拾取;(4)对可旋转辅助平面的操作;(5)机械臂的拖动计算。

3.1 辅助平面的建立

空间平面的建立至少需要3个点作为参考,人机交互的主要操作对象是杆2、3、4,如图4所示。杆施釉机器人的结构特点,保证了杆2、3、4在拖动过程中始终保持在一个平面内,故通过机器人的关节A、B、C三点可确定始终绕Y轴旋转平面YOZ,其旋转角度与rotate1保持同步,而rotate1由控件单独控制,示教者可在不改变rotate1的前提下进行视角变化,不会造成平面YOZ的旋转。由机器人的结构可知点A的坐标(0,690,0)不会随着平面的旋转而变化,所以确定所需平面,仅需求得B、C两点的坐标值。如图4所示,对每个机械臂建立本地坐标系。

图4 连杆坐标系

通过齐次坐标变换,得到关节变换矩阵T。将位姿矩阵作为以下分解:

变换矩阵表达式:

得到变换矩阵为:

在坐标系中,B、C点分别为为坐标系4的原点和(0,0,650)点,将其转换为世界坐标系中的结果为:

即可得到B、C两点的实时坐标值。

然后,由已确定的A、B、C点的坐标值,可确定唯一平面,即辅助旋转平面YOZ:

3.2屏幕坐标与世界坐标的映射

在显示屏幕上看到的三维模型,实际上是三维模型在二维屏幕上的映射,OpenGL将距离观察面的深度和窗口中的每一个像素联系起来,通过深度值得比较可以得到距离屏幕最近的像素点。基本思路是,先将鼠标的二维屏幕坐标值转化成OpenGL窗口坐标,将输入的顶点通过视口变换到[0,1]之间,然后将顶点缩放到[-1,1]之间,将坐标进行逆运算得到对应的世界坐标点[9]。

可表示为:

其中W为一个不用变量,Xw、Yw为屏幕二维坐标,Zw为读取像素的深度得到的,Xnd、Ynd、Znd是经归一化之后的点。Width、Height分别为窗口的宽高。MODELVIEW为模型矩阵变换矩阵,PROJECTION为投影变换矩阵。由此便可完成屏幕坐标与世界坐标的映射。

3.3 示教臂的拾取

拾取属于逻辑输入操作,OpenGL提供的拾取机制可以帮助用户识别屏幕上的对象,该机制可以进行拖动示教[10]。

为了用拾取操作实现以上功能,须要先将机械臂可拾取部分进行命名标记,当鼠标左键触发选择模式后,系统将会把鼠标点击到的可识别部分的信息,记录在事先设置的数组内存中,利用glRenderMode(GL_RENDER)函数的返回值判断是否有物体被选中,若返回值不为零,则对内存中被选中的物体进行处理,在DragPart5()处理函数中实现拖动示教。

3.4 对可旋转辅助平面的操作

可旋转辅助平面由键盘进行操作控制,这样可以平滑地在空间中过渡。然而在示教过程中,并不需要显示辅助平面,只有当示教者进行示教时,辅助平面才有其意义。所以,辅助平面的绘制应该在DragPart5()函数中进行绘制。

对辅助平面的操作主要是对rotate1角度的改变,由于机械臂同时受到rotate1角度的束缚,所以操作辅助平面的同时会改变机械臂的位姿,当然这也是理想结果。对于辅助平面的操作,不仅需要角度变化的平稳,还要时刻了解到实时角度的变化,所以本示教系统采用控件对其控制,如图5所示。

3.5 机械臂的拖动计算

想要实现拖动机械臂能达到示教的效果,就要弄清楚空间坐标中,三点坐标与转动关节的关系。对于角度rotate2与rotate3而言,其运动在辅助面上,换言之,这两个角度的变化完成了一个平面运动。因此,要完成一个坐标的映射关系,将世界坐标系中的XZ坐标值映射到辅助平面上,得到一个新的X'坐标值,其关系为如图6、图7所示。

上式中,X、Y、Z为C点的世界坐标值,X’、Y’为C点在辅助平面上的坐标值,由于平面坐标绕世界坐标的Y轴转动,所以两个坐标系的Y轴重合,因此完成三维坐标点向二维辅助平面的转换。然后便可完成拖动操作,基本流程为:1)鼠标拾取到C点,建立辅助平面;2)鼠标在屏幕上移动,识别到辅助平面上的另一点;3)经识别到的点赋给C点在辅助平面上的坐标值(X’,Y’);4)根据(X’,Y’)的值,计算出rotate2、rotate3的数值。

由上图可知在辅助平面上,rotate2、rotate3的大小均与C点在辅助平面上的坐标值有关,rotate3可由公式直接求出:

rotate2无法直接求解出来,原因在于在拖拉过程中,只能得到鼠标映射到辅助平面上的坐标值即(X’,Y’),无法获取到点B的坐标,所以rotate2的角度需要进行分类后才能确定,公式如下:

3.6 实验结果

在三维虚拟场景中,调整好rotate1的值之后拾取C点,通过拖动鼠标可以使机械臂在辅助平面上仿真运动,每一个关节的变化与实际相符。图8所示为相关示例。

4 结论

(1)基于VS2010平台,采用GLUT实用函数库开发了施釉机器人的虚拟示教系统。在三维虚拟环境中,采用适当计算方法和示教方式,使施釉机器人的每个运动关节都可以按照实际情况转动,并且通过鼠标作为输入设备完成仿真控制。

(2)虚拟示教系统简化了对施釉机器人示教过程,限制模型自由度,配合鼠标使用,分离示教者观察角度与鼠标控制的关联。示教者在虚拟环境中可以多方面地观察机器人的角度变化、各个关节臂的位姿,而不影响交互的角度位置,使示教工作更加直观。

[1] 张爱红,张秋菊.基于虚拟现实技术的机器人示教方法[J].江南大学学报,2003,03:258-261.

[2] 杨静山,刘振宇.离线编程中的机器人建模方法研究[J].网络与信息,2010,10:42-44.

[3] 史扬,吴金平.OpenGLES 图形标准在嵌入式系统中的应用[J].工业控制计算机,2008,03:27-28.

[4] 陈家凤,陈越.基于VC 和OpenGL 的三维图形的开发[J].武汉科技学院学报,2005,05:49-51.

[5] 李占贤,李晨辉.施釉机器人机构参数优化设计[J].河北联合大学学报,2012,03:80-83.

[6] 柯新利.OpenGL 三维管线绘制中的坐标变换研究[J].地理空间信息,2008,03:53-55.

[7] 熊国辉.基于OPENGL 技术6R 机器人的仿真[D ].北京:北京邮电大学,2006.

[8] 孙群, 张龙, 赵颖. 基于虚拟样机技术的六自由度机械手建模与仿真[J]. 机械设计与制造, 2013, 07:178-181.

[9] 李志华,徐静,张庆顺,等.利用OpenGL 实现屏幕坐标与世界坐标的相互变换[J].河北建筑科技学院学报,2005,03:83-86.

[10] 孙妮芳,杨志强,陈诚,等.OpenGL 实现3D 模型的交互控制[J].计算机应用与软件,2007,10:207-209.

Technology of Glazing Robot Virtual Modeling and Interaction

CUI Jian-guo, LI Zhan-xian, LIU Wan-yu, LI Wei, WU Jin-yi

(College of Mechanical Engineering, North China University of Science and Technology, Tangshan Hebei 063009, China)

glazing robot;virtual teaching system;OpenGL;human-computer interaction

By using virtual reality technology in the simulation environment, the glazing robot was used to carry out the virtual teaching, and complete the complex trajectory planning. Applying the VS2010 development environment, the teaching system was developed by using the industrial standard graphic interface OpenGL, the 3D virtual model was completed in the development process. The 3D environment was set up by using the GLUT utility library, according to the robot's degree of freedom and the working space, the 3D model of the robot was drawn. Then, the virtual reality system of five degree of freedom robot was developed, and the teaching process of robot was completed. And the robot can complete the interactive motion with the kinematic rules. Finally, it was proved that the teaching system was practical and the calculation method was correct.

2095-2716(2016)02-0092-08

TP391.92

A

猜你喜欢
施釉坐标值鼠标
卫生陶瓷施釉工序常见缺陷分析及解决方法
基于MATLAB的曲面施釉轨迹优化仿真
试谈陶瓷元素在壁画创作中的运用技法
大跨度钢结构安装三维坐标拟合转换
精陶机电推出30通道、打印宽度2.1米的全数码大板施釉线
基于二分法迭代的凸模数控铣削加工编程*
基于宏程序的数控车削加工应用
鼠标折叠笔
物理坐标图像的应用赏析
45岁的鼠标