第八章 机器人可视化仿真系统的建立20122.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第八章 机器人可视化仿真系统的建立20122.pptx》由会员分享,可在线阅读,更多相关《第八章 机器人可视化仿真系统的建立20122.pptx(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、机器人可视化仿真系统的建立主要内容1、前言2、可视化仿真系统概述3、机器人学的数学基础4、机器人OpenGL形态建模基础5、模块化机器人三维模型的建立6、外部数据导入的OpenGL模型创建1、前言 随着机器人研究的不断深入和机器人领域的不断发展,机器人仿真系统作为机器人设计和研究的工具,发挥着越来越重要的作用,而机器人形态建模技术正是机器人仿真系统的核心技术之一。机器人的运动是由关节的运动引起的,而关节的位置是由连杆的长度和排列方式决定的,与连杆的具体形状并无关系。因此,我们在研究机器人的运动机理时,可以对机器人进行某种抽象,将连杆抽象为一条直线,而将关节抽象为一点。但是,为了真实地仿真机器人
2、的动作,在进行三维图形显示时又必须使每个杆件尽可能与实物完全一致,这样才能达到仿真的目的,这一过程称为机器人的形态建模。现在比较常用的机器人形态建模技术有以下三种:商用图形软件包,如AutoCAD、UGII、Solidwork等。VRML(Virtual Reality Modeling Language)语言。OpenGL、DirectX等图形开发接口。OpenGL是Silicon Graphics公司在工作站上三维图形规范的微机板,是一个与硬件无关的图形软件接口。OpenGL提供了基本的三维图形功能:由点线和多边形产生复杂三维实体;三维图形变换;着色,材质,纹理,光照,阴影等真实感处理手段
3、等,完全满足可视化仿真形态模型的要求。2、可视化仿真系统 仿真是利用数学模型在计算机上对系统进行实验研究的过程。可视化仿真则是数学模拟和科学计算可视化技术相结合的产物,它一般包括两方面内容:一是将传统数字仿真计算的结果转换为图形和图像形式;二是仿真交互界面可视化,即具有可视交互和动画展示能力,要求能够实时跟踪显示仿真计算结果。如图1所示为可视化仿真系统结构。其中数学模型着重反映系统的特征规律,而形态模型着重反映系统的物理构成,它们构成了可视化仿真的基础。图1 可视化仿真系统的结构 可视化仿真软件的核心是数字模拟,同时又要具备可视化交互和可视化过程展现的特征,还须有实时性的特点。据此,规划如图2
4、所示软件功能结构。图2 可视化仿真软件结构框图 图中各模块具有较强的独立性,相互之间又以数据信息进行连接。对于一个确定的系统而言,形态模型中除属性部分不确定外,是相对稳定的;而数学模型的变化也仅仅是激励参数的改变,因此在模型交互部分将支持参数的交互编辑;数字模拟是针对系统数学模型的数值求解过程,应尽量使用现有的成熟算法或成熟软件,确保结果的可靠性;图形仿真部分一般包括以三维图形表现的系统过程和以二维曲线形式表现的系统性能,它们是可视化仿真的重要特征。3、机器人的数学基础一机器人的位置与姿态的描述一机器人的位置与姿态的描述 用固联在机器人末端执行器上的坐标系原点在基础坐标中的位置来代表机器人末端
5、的位置,用这个坐标系在基础坐标系下的投影(即方向余弦)来表示机器人末端的姿态。基础坐标系通常固联在机器人的基础上。通常,采用一个矩阵T来表示机器人末端的位置与姿态。其中是机器人末端的三个互相垂直的单位矢量,它们描述了机器人末端的姿态。是机器人末端的位置矢量。二、机器人坐标系的建立二、机器人坐标系的建立1)划分机器人模块,建立机器人各关节的坐标系 创建的坐标系为正交的笛卡尔系,创建的基本过程是先给机器人各关节、杆件(基座为杆件0)编号,一般以关节转轴为Z轴,基座关节处的X轴方向可以任取,其他关节则以相邻两关节转轴的公垂线方向(离开前一关节)为X轴,Y轴与Z轴和X轴构成右手系。建立了坐标系即可以清
6、晰的描述各杆件之间的关系,从而可以进一步求解关节变量。2 2)计算出各关节的)计算出各关节的)计算出各关节的)计算出各关节的DHDH参数,确定关节变量参数,确定关节变量参数,确定关节变量参数,确定关节变量所谓所谓D-HD-H(Denevie-HartenbergDenevie-Hartenberg)参数最初是在解决由关节变)参数最初是在解决由关节变量定手部位姿的机器人运动学正问题提出来的,它包括量定手部位姿的机器人运动学正问题提出来的,它包括4 4个基个基本参数,如下图所示。本参数,如下图所示。图8 连杆坐标系3)求解各关节坐标系之间的齐次变换矩阵 前面的变换是相对于动坐标系描述的,按照“从左
7、到右”的原则,我们得到:相邻连杆变换矩阵的一般表达式为:(根据熊有伦的机器人学)9自由度机器人的运动学建模与DH参数建立 9自由度机器人DH参数表图10 9自由度机器人DH坐标系4、机器人OpenGL形态建模基础 现实世界的三维物体需要在计算机中以二维平面的形式来表现。这在OpenGL中是通过一系列的变换来完成的。这些变换包括取景变换、几何变换、投影变换、剪切变换、视口变换等。在算法上,它们是通过矩阵操作来实现的。OpenGL的变换关系在机器人的仿真系统中是非常重要的,其中的几何变换正是我们用来建立机器人关节运动坐标系的基础。用OpenGL中的几何变换命令可以方便的按D-H法建立起机器人的坐标
8、系。4.1 几何变换 几何变换是建立模型的基础,通过它我们才能把模型的各个部分画在正确的位置并对模型进行位置与姿态的控制。基本的几何变换有平移、旋转和缩放。1.平移变换OpenGL中的平移变换命令为glTranslatef(x,y,z),其对应的变换矩阵为相应的逆阵可以由glTranslatef(-x,-y,-z)得出。三维空间中物体的平移通过平移物体的各个点来实现。对于由一组多边形 面表示的物体,可将各表面的顶点作平移,然后绘制更新后的位置。2.旋转变换 OpenGL中的旋转变换命令为glRotatef(,x,y,z),它有4个参数,第一个参数指定旋转的度数,后三个参数构成一个向量,依次代表
9、该向量的x、y、z分量。物体绕该向量旋转时,遵循右手规则。其中比较简单的情况是分别绕三个坐标轴的旋转。例如:绕x轴的旋转表示为:glRotatef(,1,0,0),其对应的变换矩阵为:相应的逆阵可以由glRotatef(-,1,0,0)得出。绕y轴的旋转表示为:glRotatef(,0,1,0)。相应的逆阵可以由glRotatef(-,0,1,0)得出。绕z轴的旋转表示为:glRotatef(,0,0,1)。相应的逆阵可以由glRotatef(-,0,0,1)得出。3.缩放变换OpenGL中的缩放变换命令为glScalef(x,y,z),其对应的变换矩阵为 相应的逆阵可以由glScalef(1
10、/x,1/y,1/z)得出。缩放变换使得物体大小和相对于坐标原点的位置发生变化,如果变换参数不同,则物体的相关尺寸也发生变化。我们可以用相同的缩放(x=y=z)来保持物体的原有形状。4.2 取景变换 取景变换改变观察点的位置和方向,包括平移和旋转两个操作。作取景变换有两种方法:第一种方法是用glTranslatef()和glRotatef()函数。缺省情况下,观察点位于原点,方向指向负z轴,这时如果将物体画在原点,在屏幕上是显示不出物体的。因此需要经过平移变换将观察点与物体分离开来,可以用glTranslatef()来实现。如果想观察物体的不同侧面,可以用glRotatef()来实现。第二种方
11、法是用gluLookAt()函数。通常,我们会在原点或其它一些方便的位置建立模型,然后从一个任意点观察此模型,gluLookAt()正好能实现这个目的,它的函数原形为:void gluLookAt(Gldouble eyex,GLdouble eyey,GLdouble eyez,Gldouble centerx,GLdoubleentery,Gldouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);它有三组参数集合,分别定义视点的位置、瞄准的参考点并标识向上的方向。改变这三组参数,我们就可以从不同的位置来观察物体了。4.3 投影变换 投
12、影变换就是将三维物体变换为二维图形,以便在平面上显示。OpenGL提供了两种投影方式:平行投影和透视投影。透视投影沿汇聚路径将点投影到显示平面上。对同样大小的物体来说,它会引起“近大远小”的现象,也就是离视点近的物体显示起来比离视点远的物体要大。在透视投影中,景物中的平行线投影后不再平行而是成了汇聚线。OpenGL中中的透视投影变换函数为:void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar);其中fovy为y方向上的视角,aspect为高度与宽度的比率,near和far分别为近剪切面和远剪
13、切面离视点的距离,投影体积如图4所示。图4 gluPerspective()投影示意图4.4 视窗变换 经过投影变换,三维物体转化为二维图形。要把它显示在显示屏上,还需要进行视窗变换。视窗就是一个用来绘制场景的矩形区域。视窗变换决定把场景中的点怎样映射到绘图区。OpenGL提供了一个定义视窗大小的函数:void glViewport(GLint x,GLint y,GLsizei width,GLsizei height);其中,x和y定义视窗左下角在窗口中的位置;width和height分别是视窗的宽度和高度,它们都以像素为单位。视窗的一个重要作用是当应用程序窗口大小变化时,视窗能跟着作相应
14、变化,它还可以用来实现多窗口视图。这些变换过程对机器人形态模型的建立至关重要,只有彻底理解了这些变换过程,才能为机器人正确建立起形态模型。5、基于OpenGL的机器人形态模型的建立5.1 基于基于OpenGL的形的形态态模型建立的一般模型建立的一般过过程程 三维图形及动画场景的显示,就是把所建立的三维空间模型,经过计算机的复杂处理,最终在计算机二维屏幕上显示的过程。设计三维图形软件要经过以下步骤:A图元建立三维模型。B设置观看物体的窗口和观看点(视点)。C设定各物体的属性(如色彩、光照、纹理映射等)D如果要物体动起来,还要进行图形变换(如几何变换、取景变换等)。E三维图形的二维化(投影变换和视
15、窗变换)。流程如下:利用OpernGL的库函数,我们按步骤实现三维图形软件的设计。流程如下:一、建立三维模型建立三维模型三维模型的生成是OpenGL形态建模的核心工作,在5.2节中有专门论述。二二设设置窗口和置窗口和视视点点 1设置窗口 图形显示的区域称为窗口。在绘制新的图形前,窗口可能已 经存在 一些图形 OpenGL存储了这些图形绘图状态的信息,所以必须清除当前窗口的内容,以免影响绘图的效果。流程顺序为:关键程序代码为:BOOL CPowerCubeView:PreCreateWindow(CREATESTRUCT&cs)cs.style|=WS_CLIPCHILDREN|WS_CLIPS
16、LBLINGS;return Cview:PreCreateWindow(cs);/定义窗口及设置风格,此两风格是OpenGL作图窗口必须具备的。WS_CLIPCHILDREN仅对父窗体,在父窗体重绘时不对子窗体占有的区域进行绘制。WS_CLIPSIBLINGS 仅对子窗体。在重绘时不对兄弟窗体占有的区域进行绘制(在相互重叠时)。glClearColor(0.0f,0.0f,0.0f,1.0f);/设置窗口背景色。glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);/清除窗口的颜色缓存和深度缓存。2定义视点 为了能够从各个角度观察机器人的形态,并实
17、现缩放功能,我们需要综合利用前面介绍的取景变换的两种方法。OpenGL中参考坐标系的定义如图5a所示,机器人基础坐标系定义如图5b 所示。这时,需要将视点定义在正x轴进行观察,参考点定义在原点,向上矢量方向为z轴方向,这样就将图2-5a的坐标系变为图5b所示坐标系。用 gluLookAt(m_zoom,0,0,0,0,0,0,0,1.0);来实现。参数m_zoom实现模型的缩放功能,视点离模型越近,显示的模型越大。为了从不同角度观察模型,需要将视点绕z轴或y轴旋转,用如下方式实现:glRotated(m_yRotate,0.0,1.0,0.0);glRotated(m_zRotate,0.0,
18、0.0,1.0);其中m_yRotate和m_zRotate两个参数分别控制视点绕y轴和z轴旋转的角度。图5 坐标系 m_zoom,m_yRotate,m_zRotate三个参数大小的改变是通过鼠标器来驱动的。用鼠标器的左键控制模型的观察角度,右键控制模型的缩放。当鼠标器左键按下时,记录当时鼠标器在屏幕上的位置,当鼠标器按下并移动时,计算前面记录点的坐标与鼠标器当前点坐标之差。以x坐标值的变化作为视点绕z轴转动的角度变化量,y坐标值的变化作为视点绕y轴转动的角度变化量,从而达到对模型观察角度的控制。用同样的原理,实现对模型缩放的控制。这些对视点的控制方法在模型运动时同样起作用。为使模型总是处于
19、窗口中心,需要将视点沿y轴或z轴移动,用如下方式实现:glTranslated(0.0,m_yMove,m_zMove);其中m_yMove和m_zMove两个参数分别控制视点沿y轴和z轴移动的步长。m_yMove和m_zMove两个参数大小的改变是通过“坐标显隐”对话框中的“步 长”编 辑 键 输 入 的。而 它 们 对 视 点 的 控 制 是 通 过 键 盘(Left,Right,Up,Down键)实现的。三动画三动画 三维动画,就是把空间物体通过各种三维图形变换,把它投影到视口中。一般动画采用“画-擦除-再画”的方式,这样会出现图形间断,产生闪烁现象。可以采用双缓存技术来解决这个问题。正
20、在显示的图形存在前缓存中,而将下一幅要显示的图形绘制在后缓存中,当后缓存中的内容被要求显示时,就会被拷贝到前缓存,显示硬件不断读前缓存中的内容,并把结果显示在屏幕上。这样就提高了图形显示的交替速度,减少图形间断时间,从而减少图形闪烁。OpenGL支持双缓存技术,可以调用glDrawBuffer(GL_BACK)将绘制的图形画在后缓存,当完整的画面在后台视频缓存中画出后,调用SwapBuffers()函数,与前视频缓存交换,显示画面。在交换前台和后台缓存的内容之前,必须进行同步工作,以免在前一幅画面还没有显示完毕,就被交换出视频缓存。OpenGL提供了两个同步操作函数:glFlush()和glF
21、inish()。动画中前后两幅图形的交换是时间驱动的,我们通过Windows的计时器来实现。调用SetTimer(t)函数,它每隔时间t生一个WM_TIMER消息,然后为这个消息提供一个控制函数,在控制函数中取关节角的数值,输入给模型绘制函数,调用InvalidateRect(NULL,FALSE)重画窗口,这样就形成了动画效果。调用KillTimer()函数可以停止始终消息的发送,用它可以控制运动的停止。四三四三维图维图形的二形的二维维化化 三维图形是通过二维视口(屏幕)来观看的,因此,对三维图形要进行透视变换和视窗变换。仿真软件采用透视投影方式,用透视投影来显示景物会更真实,这是因为眼球的
22、成像方式正是透视投影的原理。用如下方法实现:gluPerspective(45,aspect,0.01,100.0);/aspect=width/height;经过投影变换后,模型失去了深度信息,因此必须进行消隐处理。在OpenGL中用如下方法实现:glClearDepth(1.0f);glEnable(GL_DEPTH_TEST);视窗是一个用来绘制场景的矩形区域,视窗变换决定把场景中的点怎样映射到绘图区,用如下方法实现:glViewport(0,0,width,height);width和height为生成的窗口的宽与高。视窗的高宽比与视景体的高宽比一致才使得图形看起来协调,这一点在编程很
23、重要的。5.2 PowerCube模块化机器人三维模型的建立模块化机器人三维模型的建立图 6 PowerCube模块化机器人三维模型 这里所研究的是德国Amtec公司生产的9自由度PowerCube模块化机器人。这种机器人主要用于科学研究和工业化生产,它的最大优点就是可以根据需要自己随意组装,所有的关节都实现了零件式的标准化生产。它的关节模块分为两种,一种是最常用的转动关节,有三种规格,分别是110,90和70;另一种是线性关节,所有的关节通过都CAN总线与控制计算机相连。本文中的9自由度机器人由移动导轨、两个110转动关节、三个90转动关节、一个70转动关节、一个两自由度腕部关节及一个线性抓
24、手组成,如图6所示。要对机器人进行远程仿真及控制,第一步要做的工作就是建立机器人的三维模型。建立机器人的三维模型不仅涉及到机器人的具体型态、尺寸,而且与机器人关节运动的情况息息相关,这对于日后机器人的运动学、动力学分析异常重要。机器人三维模型建立的步骤为:机器人关节尺寸的确定 对机器人各个关节进行具体的测量或计算,取得机器人各个关节的具体尺寸大小。或者用一些三维制图软件由机器人的机械图中导出。机器人的基本结构参数 列出机器人的结构参数,为下一步的建模工作做准备。机器人坐标系的建立 为机器人各个关节建立运动坐标系,使得各个坐标系的Z轴与运动副的轴线重合。实现各个坐标系之间的变换 相邻两个关节之间
25、的相对位姿关系可以一个变换矩阵来表示,通过对一个坐标进行坐标旋转和坐标平移,即可建立两坐标之间的变换矩阵。构架OpenGL的标准程序框架 利用Visual C+开发环境,构建仿真系统的基本程序构架。下面将就上述步骤中的难点及重点分别做出论述。一、9自由度PowerCube模块化机器人的基本结构参数PowerCube模块化机器人都是由标准化生产的模块组成的,它的各个模块大小都是有统一的参数的。前面已经提到,本文中讨论的9自由度机器人由两个110转动关节、三个90转动关节、一个70转动关节、一个两自由度腕部关节及一个线性抓手组成,它的基本结构参数如下表所示:二、机器人坐标系的建立 为了研究机器人的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八章 机器人可视化仿真系统的建立20122 第八 机器人 可视化 仿真 系统 建立 20122
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内