基于OpenGL的工业机器人运动学实验仿真系统
2021-07-27郑雪峰
郑雪峰, 姚 鑫, 陈 龙
(杭州电子科技大学电子信息学院,杭州310018)
0 引 言
近年来随着国家工业4.0计划的实施,工业自动化发展进程不断推进。机器人技术作为实现工业生产自动化的核心技术,国家对这方面的人才需求相应增大[1-4]。在高校开展机器人相关课程就有了十分重大的意义[5-6]。
基于上述的问题,提出一种基于OpenGL的6轴机器人运动学仿真实验系统以代替传统的机器人实验[7-8]。该系统使用Visual Studio作为开发环境,C#作为开发语言,使用OpenGL搭建三维仿真空间,通过加载机器人关节的STL文件建立6轴机器人仿真模型,运用齐次变换(Denavit-Hartenberg,D-H)及机器人正向动力学知识计算关节的位置,用OpenGL的平移、旋转变换移动机器人关节模拟机器人的运动[9-12]。三维空间视角变换及物体的移动涉及的内容相对抽象,机器人运动学的D-H参数的选取也是学生较难理解的知识点。通过软件仿真直观地理解复杂抽象的问题,提高学生学习理论知识的兴趣,编程设计也可提高学生的编程水平。
1 OpenGL仿真场景
1.1 OpenGL视角和摄像机
OpenGL三维仿真场景是将一个三维空间投影到一个二维的屏幕上,视角确定屏幕上显示内容,摄像机则确定了观察者的位置。将摄像头理解成人的眼睛,摄像头的参数则代表了人眼睛的位置以及人目光的方向。视角参数可以看成摄像机的光学参数,及摄像头的焦距及景深。
使用glViewPort(GLIntx,GLInty,GLSizei Width,GLSizei Height)设置视口,其中前两个参数为窗口左下角位置,后两个参数为窗口大小。
设置视角参数函数为gluPerspective(double fovY,double aspectRatio,double zNear,double zFar)其参数的示意图如图1所示,fovY为图1中的θ角,决定了视角的大小。aspectRatio为视角的宽高比,即图1的aspect。zNear为图1所示的近平面距离,zFar为图1所示的远平面距离。摄像机参数的矩阵形式为:
图1 视角参数示意图
式中:R为右向量;U为上向量;D为方向向量;P为位置向量。其物理含义如图2所示,这些参数决定了摄像头的朝向及位置。
图2 摄像机参数示意图
1.2 OpenGL物体平移旋转变换
模拟机器人的运动需要将机器人关节进行平移和旋转变换,OpenGL为物体的平移、旋转提供了相应的函数。其基本原理是将需要变换的向量左乘一个变换矩阵来实现。平移变换可由glTranslated(doublex,doubley,doublez)函数实现:
式中,(Tx,Ty,Tz)组成的齐次矩阵即是模型的变换矩阵,可将物体向x,y,z方向移动Tx,Ty,Tz的距离。
旋转变换可由glRotated(double angle,doublex,doubley,doublez)函数实现。
绕x轴旋转:
绕y轴旋转:
绕z轴旋转:
式中,cosθ和sinθ组成的齐次矩阵可以实现将物体向3轴方向旋转运动。
此外,旋转还有一种绕任意轴的旋转矩阵:
式中,(rx,ry,rz)向量为旋转轴。
2 6轴机器人模型及其动力学原理
2.1 机器人正向运动学分析
正向运动学的计算是从机器人底座开始建连杆坐标系,使用齐次变换依次计算得到机器人第六轴末端的状态,其中的难点在于连杆坐标系的建立和D-H参数的选择[13-15]。
本实验的坐标系将从机器人底座的原点开始,依次在每个旋转轴末端建立右手坐标系,具体建立步骤为:
步骤1以关节的旋转轴作为zi轴;
步骤2xi轴为zi轴与zi-1轴的公垂线;
步骤3xi和zi的交点作为oi;
步骤4利用右手坐标系确定yi。
机器人的D-H变换中,一个关节坐标系到另一个关节的坐标系的变换,可由4个参数来描述:θi为关节角度;di为关节距离;ai为连杆长度;αi为连杆扭角。其中关节角度为z方向旋转角,关节距离为z方向移动距离,连杆长度为x方向移动距离,连杆扭角为x方向旋转角度。本实验中从xi-1,yi-1,zi-1坐标系变换到xi,yi,zi坐标系的变换顺序为z平移、x平移和x旋转旋转。从原点坐标系到第1轴末端坐标系的变换可以表示为:
式中,T zi、T xi、R xi、R zi分别为4个齐次变换矩阵。其形式如下:
H i齐次变换矩阵可以简化为:
2.2 机器人D-H参数选择
机器人D-H参数需要实际机器人的机械结构确定,使用机器人模型为某公司的AIR10P机器人,其机械结构图如图3所示。
图3 AIR10P机器人机械结构图(mm)
根据图3及第2.1节介绍的连杆坐标系建立方法及齐次变换顺序,最终D-H参数选择见表1。
表1 AIR10P机器人D-H参数表
表中,θ为其初始值,实际值应是初始值加上关节旋转角度。
3 OpenGL中机器人模型的构建
3.1 三维仿真环境的建立
建立1个三维的仿真环境,首先需要根据本文第1节的内容确定视口及视角大小,设置的代码为:
其中视口的大小为初始窗口的大小,初始视角为60°,视角宽高比为窗口的宽高比,可视最近距离为1个像素,最远为64 000个像素。
根据机器人体积的大小,摄像头初始位置为(0,2 000,1 000),注视中点为(0,0,200),初始向上向量为(0,0,1)。
在三维空间中绘制一个网格地面作为参照平面,绘制使用Gl.glBegin(Gl.GL_QUADS)命令,使用Gl.glVertex3d(·)函数矩形4个点,并将网格设置成白灰相间的颜色。
OpenGL三维空间比较抽象,为更具体的理解三维空间的方向,使用Gl.glBegin(Gl.GL_LINES)指令绘制红、黄、蓝3条直线,分别为三维空间的x,y,z3个方向。最终得到的三维空间如图4所示。
图4 三维空间仿真图
3.2 机器人模型的导入
机器人3D模型组件的分部件模型如图5所示。其中:图5(a)为机器人模型底座;图5(b)为机器人模型肩部(连杆1);图5(c)为机器人模型上臂(连杆2);图5(d)为机器人模型肘部(连杆3);图5(e)为机器人模型前臂(连杆4);图5(f)为机器人模型腕部(连杆5);图5(g)为机器人模型的法兰盘(连杆6)。
图5 机器人部件STL模型
STL格式的三维图形本质是由众多三角形组成的,要在OpenGL中将STL模型显示出来,需要将模型的三角形顶点坐标读取出来,每个顶点包括一个三维坐标及一个三维的法向量,并用OpenGL的画三角指令画出即可。使用关键的代码为:
由于STL文件中并没有物体颜色的描述,为使机器人模型更逼真,可使用glMaterialfv(int face,int pname,float[]@params);函数设置机器人的材质特性,光照特性及颜色。机器人部件坐标的计算则根据第3节机器人的正向运动学计算得出,然后使用OpenGL中模型的平移、旋转变换,移动到响应的坐标,最终构建的顺序如图6(a)~(h)所示。
图6 机器人模型搭建顺序图
为模拟机器人运动,只需要改变机器人关节角度θ的值即可。模拟机器人的6个关节从起始状态运动到30°的运动状态图如图7(a)~(d)所示。
图7 机器人运动过程图
4 结 语
本实验基于OpenGL框架设计了一种6轴机器人的仿真实验,并实现了6轴机器人的正向运动学在三维环境中的仿真功能。该实验将应用于本科生的实验教学,达到以下的教学目的。
(1)使用C#语言以及OpenGL框架作为实验平台,提高学生的编程水平。
(2)掌握三维空间状态矩阵的平移、旋转变化在OpenGL及机器人运动学中的具体应用,使学生能够深刻理解矩阵变换的物理意义。
(3)在仿真软件中实现了机器人的正向运动学,使学生通过实践理解D-H变换及D-H参数较抽象的知识的理解。
本实验的设计重在培养学生的实践能力,让学生在学习编程的同时,充分调动学生的主动性,激发学生的学习热情,取得了良好的教学效果。