您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > 第八章 机器人可视化仿真系统的建立
机器人可视化仿真系统的建立主要内容1、前言2、可视化仿真系统概述3、机器人学的数学基础4、机器人OpenGL形态建模基础5、模块化机器人三维模型的建立6、外部数据导入的OpenGL模型创建1、前言随着机器人研究的不断深入和机器人领域的不断发展,机器人仿真系统作为机器人设计和研究的工具,发挥着越来越重要的作用,而机器人形态建模技术正是机器人仿真系统的核心技术之一。机器人的运动是由关节的运动引起的,而关节的位置是由连杆的长度和排列方式决定的,与连杆的具体形状并无关系。因此,我们在研究机器人的运动机理时,可以对机器人进行某种抽象,将连杆抽象为一条直线,而将关节抽象为一点。但是,为了真实地仿真机器人的动作,在进行三维图形显示时又必须使每个杆件尽可能与实物完全一致,这样才能达到仿真的目的,这一过程称为机器人的形态建模。现在比较常用的机器人形态建模技术有以下三种:⑴商用图形软件包,如AutoCAD、UGII、Solidwork等。⑵VRML(VirtualRealityModelingLanguage)语言。⑶OpenGL、DirectX等图形开发接口。OpenGL是SiliconGraphics公司在工作站上三维图形规范的微机板,是一个与硬件无关的图形软件接口。OpenGL提供了基本的三维图形功能:由点线和多边形产生复杂三维实体;三维图形变换;着色,材质,纹理,光照,阴影等真实感处理手段等,完全满足可视化仿真形态模型的要求。2、可视化仿真系统仿真是利用数学模型在计算机上对系统进行实验研究的过程。可视化仿真则是数学模拟和科学计算可视化技术相结合的产物,它一般包括两方面内容:一是将传统数字仿真计算的结果转换为图形和图像形式;二是仿真交互界面可视化,即具有可视交互和动画展示能力,要求能够实时跟踪显示仿真计算结果。如图1所示为可视化仿真系统结构。其中数学模型着重反映系统的特征规律,而形态模型着重反映系统的物理构成,它们构成了可视化仿真的基础。系统可视交互形态模型数学模型动画展示数字模拟图1可视化仿真系统的结构可视化仿真软件的核心是数字模拟,同时又要具备可视化交互和可视化过程展现的特征,还须有实时性的特点。据此,规划如图2所示软件功能结构。可视化仿真系统模型交互数字模拟图形仿真数学模型形态模型3D系统过程展示2D性能曲线展示图2可视化仿真软件结构框图图中各模块具有较强的独立性,相互之间又以数据信息进行连接。对于一个确定的系统而言,形态模型中除属性部分不确定外,是相对稳定的;而数学模型的变化也仅仅是激励参数的改变,因此在模型交互部分将支持参数的交互编辑;数字模拟是针对系统数学模型的数值求解过程,应尽量使用现有的成熟算法或成熟软件,确保结果的可靠性;图形仿真部分一般包括以三维图形表现的系统过程和以二维曲线形式表现的系统性能,它们是可视化仿真的重要特征。3、机器人的数学基础一.机器人的位置与姿态的描述用固联在机器人末端执行器上的坐标系原点在基础坐标中的位置来代表机器人末端的位置,用这个坐标系在基础坐标系下的投影(即方向余弦)来表示机器人末端的姿态。基础坐标系通常固联在机器人的基础上。通常,采用一个矩阵T来表示机器人末端的位置与姿态。zyxnnnnzyxoooozyxaaaaxyzpppp0001xxxxyyyyezzzznoapnoapTnoap其中是机器人末端的三个互相垂直的单位矢量,它们描述了机器人末端的姿态。是机器人末端的位置矢量。二、机器人坐标系的建立1)划分机器人模块,建立机器人各关节的坐标系创建的坐标系为正交的笛卡尔系,创建的基本过程是先给机器人各关节、杆件(基座为杆件0)编号,一般以关节转轴为Z轴,基座关节处的X轴方向可以任取,其他关节则以相邻两关节转轴的公垂线方向(离开前一关节)为X轴,Y轴与Z轴和X轴构成右手系。建立了坐标系即可以清晰的描述各杆件之间的关系,从而可以进一步求解关节变量。2)计算出各关节的DH参数,确定关节变量所谓D-H(Denevie-Hartenberg)参数最初是在解决由关节变量定手部位姿的机器人运动学正问题提出来的,它包括4个基本参数,如下图所示。1i连杆i轴1i轴1iZ1iY1iX1iiiXiZiYi连杆1iaiaid1iiiiaZZX从到沿测量的距离(杆件长度)1iiiiZZX从到沿旋转的角度(扭转角)1iiiidXXZ从到沿测量的距离(横距)(移动关节的关节变量)1iiiiXXZ从到沿旋转的角度(关节角)(旋转关节的关节变量)11124.iiiiiiiXXZZdi-1ii-1坐标系{i}相对于坐标系{i-1}的变换T1)绕轴转角;)沿轴移动a;3)绕轴转角;)沿轴移动图8连杆坐标系3)求解各关节坐标系之间的齐次变换矩阵前面的变换是相对于动坐标系描述的,按照“从左到右”的原则,我们得到:111(,)(,)(,)(,)iiiiiiTRotXTransXaRotZTransZd相邻连杆变换矩阵的一般表达式为:1111111111cos()sin()0sin()cos()cos()cos()sin()sin()sin()sin()cos()sin()cos()cos()0001iiiiiiiiiiiiiiiiiiidTd(根据熊有伦的《机器人学》)9自由度机器人的运动学建模与DH参数建立9自由度机器人DH参数表X0X1Z2X3Z7Z9Z4X4Z5Z6X2X5X7X816522020018013516014018523456789Z0Z1X6Z8X91dZ3图109自由度机器人DH坐标系4、机器人OpenGL形态建模基础现实世界的三维物体需要在计算机中以二维平面的形式来表现。这在OpenGL中是通过一系列的变换来完成的。这些变换包括取景变换、几何变换、投影变换、剪切变换、视口变换等。在算法上,它们是通过矩阵操作来实现的。OpenGL的变换关系在机器人的仿真系统中是非常重要的,其中的几何变换正是我们用来建立机器人关节运动坐标系的基础。用OpenGL中的几何变换命令可以方便的按D-H法建立起机器人的坐标系。4.1几何变换几何变换是建立模型的基础,通过它我们才能把模型的各个部分画在正确的位置并对模型进行位置与姿态的控制。基本的几何变换有平移、旋转和缩放。1.平移变换OpenGL中的平移变换命令为glTranslatef(x,y,z),其对应的变换矩阵为1000100010001zyxT10001000100011zyxT相应的逆阵可以由glTranslatef(-x,-y,-z)得出。三维空间中物体的平移通过平移物体的各个点来实现。对于由一组多边形面表示的物体,可将各表面的顶点作平移,然后绘制更新后的位置。2.旋转变换OpenGL中的旋转变换命令为glRotatef(θ,x,y,z),它有4个参数,第一个参数指定旋转的度数,后三个参数构成一个向量,依次代表该向量的x、y、z分量。物体绕该向量旋转时,遵循右手规则。其中比较简单的情况是分别绕三个坐标轴的旋转。例如:绕x轴的旋转表示为:glRotatef(θ,1,0,0),其对应的变换矩阵为:10000cos()sin()0()0sin()cos()00001xR110000cos()sin()0()0sin()cos()00001xR相应的逆阵可以由glRotatef(-θ,1,0,0)得出。绕y轴的旋转表示为:glRotatef(θ,0,1,0)。10000)cos(0)sin(00100)sin(0)cos()(Ry10000)cos(0)sin(00100)sin(0)cos()(1Ry相应的逆阵可以由glRotatef(-θ,0,1,0)得出。绕z轴的旋转表示为:glRotatef(θ,0,0,1)。1000010000)cos()sin(00)sin()cos()(Rz1000010000)cos()sin(00)sin()cos()(1Rz相应的逆阵可以由glRotatef(-θ,0,0,1)得出。3.缩放变换OpenGL中的缩放变换命令为glScalef(x,y,z),其对应的变换矩阵为1000000000000zyxS10000100001000011zyxS相应的逆阵可以由glScalef(1/x,1/y,1/z)得出。缩放变换使得物体大小和相对于坐标原点的位置发生变化,如果变换参数不同,则物体的相关尺寸也发生变化。我们可以用相同的缩放(x=y=z)来保持物体的原有形状。4.2取景变换取景变换改变观察点的位置和方向,包括平移和旋转两个操作。作取景变换有两种方法:第一种方法是用glTranslatef()和glRotatef()函数。缺省情况下,观察点位于原点,方向指向负z轴,这时如果将物体画在原点,在屏幕上是显示不出物体的。因此需要经过平移变换将观察点与物体分离开来,可以用glTranslatef()来实现。如果想观察物体的不同侧面,可以用glRotatef()来实现。第二种方法是用gluLookAt()函数。通常,我们会在原点或其它一些方便的位置建立模型,然后从一个任意点观察此模型,gluLookAt()正好能实现这个目的,它的函数原形为:voidgluLookAt(Gldoubleeyex,GLdoubleeyey,GLdoubleeyez,Gldoublecenterx,GLdoubleentery,Gldoublecenterz,GLdoubleupx,GLdoubleupy,GLdoubleupz);它有三组参数集合,分别定义视点的位置、瞄准的参考点并标识向上的方向。改变这三组参数,我们就可以从不同的位置来观察物体了。4.3投影变换投影变换就是将三维物体变换为二维图形,以便在平面上显示。OpenGL提供了两种投影方式:平行投影和透视投影。透视投影沿汇聚路径将点投影到显示平面上。对同样大小的物体来说,它会引起“近大远小”的现象,也就是离视点近的物体显示起来比离视点远的物体要大。在透视投影中,景物中的平行线投影后不再平行而是成了汇聚线。OpenGL中中的透视投影变换函数为:voidgluPerspective(GLdoublefovy,GLdoubleaspect,GLdoublezNear,GLdoublezFar);其中fovy为y方向上的视角,aspect为高度与宽度的比率,near和far分别为近剪切面和远剪切面离视点的距离,投影体积如图4所示。图4gluPerspective()投影示意图4.4视窗变换经过投影变换,三维物体转化为二维图形。要把它显示在显示屏上,还需要进行视窗变换。视窗就是一个用来绘制场景的矩形区域。视窗变换决定把场景中的点怎样映射到绘图区。OpenGL提供了一个定义视窗大小的函数:voidglViewport(GLintx,GLinty,GLsizeiwidth,GLsizeiheight);其中,x和y定义视窗左下角在窗口中的位置;width和height分别是视窗的宽度和高度,它们都以像素为单位。视窗的一个重要作用是当应用程序窗口大小变化时,视窗能跟着作相应变化,它还可以用来实现多窗口视图。这些变换过程对机器人形态模型的建立至关重要,只有彻底理解了这些变换过程,才能为机器人正确建立起形态模型。5、基于OpenGL的机器人形态模型的建立5.1基于OpenGL的形态模型建立的一般过程三维图形及动画场景的显示,就是把所建立的三维空间模型,经过计算机的
本文标题:第八章 机器人可视化仿真系统的建立
链接地址:https://www.777doc.com/doc-47496 .html