• 沒有找到結果。

5.3.2.1基于OpenGL的机器人三维建模

本软件是在Visual C++环境下利用OpenGL建立了ABB IRB6600型工业机器人的三维简化 模型。下面介绍该型工业机器人三维建模的具体步骤:

1.建立应用程序与ODenGL的联系:在项目文件环境设置的Link域中,添加三个库文件 opengl32.1ib、glu32.1ib、glaux.1ib,然后打开工程的stdafx.h头文件,加入头文件91.h、

51

浙江大学硕上学位论文 第五章工业机器人切削加工离线编程系统及应用

glu.h、glaux.h,这样应用程序才能正确使用OpenGL提供的数据类型和函数。

2.绘图环境初始化:由于OpenGL独立于任何平台且没有窗口函数,因此,MFC无法直接 对其函数进行调用,需要进行相应绘图环境的设置。首先定义所需像素格式PIXFORMATDISCR-

IPTOR结构变量,设置某些结构成员的值,使其支持OpenGL及其颜色模式,并将其与设备描 述表相关联,然后才能调用OpenGL函数在窗口中生成图形。

3.场景的布置,也就是把机器人及其工作环境放置到空间的适当位置。首先在Robotview 类的PreCreateWindow0函数中修改生成窗口的样式,将其改为CS.styleJ=ws_cLIPCHILDREN IWS_CLIPSIBLINGS。其次设置好视口变换函数和投影模式。视口变换用于窗口或视图大小发 生变化时调用以避免图形变形失真。投影模式用于定义一个视图体,决定物体如何投影到屏 幕上。OpenGL提供两种投影模式:正交投影和透视投影。正交投影模式下的视图体是一个长 方体。透视投影模式下的视图体是一个平截头体,符合我们的心理习惯,即离视点近的物体 大,离视点远的物体小,远到极点即消失,成为灭点,因此选择透视投影模式,并通过调用 glClearColor(0.0,0.0,0.0,1.0)函数将屏幕的背景色设置为黑色,以参数GLFLAT调用glS—

hadeMode0函数指定期望的阴影模型为平坦阴影模型,并以参数GL_COLOR_BUFFER_BITIGL—

DEPTH_BUFFER_BIT调用glClear 0清空颜色缓存和深度缓存。最后,正确定义场景的光照模 型和物体的材质,这对于物体的真实感显示十分重要。OpenGL提供对环境光、散射光、镜面 反射光和辐射光的管理。物体的材质则决定了物体对光中RGB成分的反射率。至此,在Visual C++开发平台上,用OpenGL建立三维图形应用环境的工作已经完成。

4.在Orfl)raw()函数中完成工业机器人的三维建模。在Robotview视图类中定义了一个函 数DarwArm()专门负责工业机器人的三维建模,函数OnDraw()只需调用该函数即可生成机器 人的三维模型。对机器人各关节建模时,要注意设置正确的模型变换顺序,因为先旋转再平 移和先平移再旋转的效果是不同的,而且后面的变换是在前面模型变换基础上进行的。为简 化建模过程,可将其建模过程模块化:按结构特点将机器人分解为一个个小模块,再将这些 小模块按一定的方式集成为机器人整体模型。OpenGL提供了点、线、面3种几何图元的绘制 功能和旋转、平移变换功能。利用这些基本操作以及适当的变换,可绘制出相对复杂的三维 形体,因此,在Robotview视图类中定义了两个函数void myS01idCylinder(GLdoubleradius,

GLdouble height,int n_div)和void myPartSol idCylinder(GLdouble radius.GLdouble

height,int n_div),分别绘制完整的圆柱体和部分圆柱体,对应于关节本体及其连接部分

的模型。利用这些基本单元即可实现机器人各关节的建模。下面以伪代码的形式说明关节本 体模型函数的实现,另一个关节连接模型函数的实现与它相似,在此不再赘述。

52

浙江大学硕士学位论文 第五章工业机器人切削加工离线编程系统及应用

void mySol idCylinder(GLdouble radius。GLdouble height,int div)//生成圆柱体

定义圆柱上下两个面的正多边形:

计算圆柱上表面法向量,并绘制上表面:

计算圆柱侧面法向量,并绘制侧面:

计算圆柱下表面法向量,并绘制下表面:

在完成机器人三维建模基本单元的基础上,通过适当的旋转和平移变换,组装机器人各 关节模型,最终得到机器人各关节处于零位时的简化模型。其建模过程在函数Darwkrm0中 实现,该函数的伪代码如下所述:

void DrawArm0 //生成IRB6600型机器人的简化模型

glPushMatrix0:

定义基座材质,并用圆柱体表示基座:

定义第一轴材质和变换矩阵oT。,并用两关节本体和一关节连接模型绘制第一轴:

定义第二轴材质和变换矩阵1T:,并用一关节本体和一关节连接模型绘制第二轴:

定义第三轴材质和变换矩阵2T。,并用两关节本体和一关节连接模型绘制第三轴:

定义第四轴材质和变换矩阵3T4,并用一关节本体和一关节连接模型绘制第四轴:

定义第五轴材质和变换矩阵1’。,并用一关节本体和一关节连接模型绘制第五轴:

定义第六轴材质和变换矩阵5T6,并用一关节本体和一关节连接模型绘制第六轴:

glPopMatrix0:

其中,变换矩阵T见第二章机器人运动学正解部分,最终生成的机器人模型如图5.5所示。

另外,场景模型的创建工作在三维造型软件SolidWorks中完成,并将该模型另存为STL

(StereoLithography)文件,其中包含有三角面片的顶点和法矢量信息‘65嗣,然后设置场景 文件的路径和模型相对机器人基坐标系的位置,如图5.6所示,点击确定读取这些三角面片,

同时进行模型渲染,从而在OpenGL下建立了机器人工作环境模型。

另外,由于在实际应用中,切削加工轨迹与机器人模型相比,显得很小,因此,在视图 类Robotview中,增加了模型的局部(矩形)缩放和旋转变换功能,方便从不同角度观察机器 人末端的运动。

53

浙江大学硕士学位论文 第j章T业机器^切削加T离线编牲系统&应用

图5 ABB IRB6600型机器^简化三维模型

相關文件