机械手模拟仿真实验文档

上传人:公**** 文档编号:545576374 上传时间:2023-10-27 格式:DOC 页数:17 大小:720KB
返回 下载 相关 举报
机械手模拟仿真实验文档_第1页
第1页 / 共17页
机械手模拟仿真实验文档_第2页
第2页 / 共17页
机械手模拟仿真实验文档_第3页
第3页 / 共17页
机械手模拟仿真实验文档_第4页
第4页 / 共17页
机械手模拟仿真实验文档_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《机械手模拟仿真实验文档》由会员分享,可在线阅读,更多相关《机械手模拟仿真实验文档(17页珍藏版)》请在金锄头文库上搜索。

1、机械手模拟仿真实验文档实验简介问题描述:应用仿真技术,建立一个具有四自由度的(虚拟)机械手,可完成在任意给定的两个三维空间点之间画一条直线的任务解决方案:首先使用VRML语言建模机械手模型,再使用Matlab中的Simulink仿真环境模拟机械手四个关节的运动状态,然后在此基础之上编写Matlab程序完成所需功能。重点难点:如何建立世界坐标系,并得到每个坐标点与四个关节旋转角度的对应关系?如何计算机械手臂沿两点直线移动过程中四个关节的运动姿态(即旋转角度)?一、机械手建模为了实现对机械手的仿真实现,我们首先建立一个模拟四个关节(四个自由度)可运动的机械手,效果如下图1.1所示。该机械手的模型分

2、为底座,四个关节以及顶端的画笔,我们重点来弄清楚四个关节的运动情况,地下的红色小立方体可以在水平面的方向左右(即顺时针或逆时针)旋转正负90度,其余的三个颜色分别标记为绿色、蓝色和灰色的三个立方体,它们可以绕着各自的底平面心前后旋转运动,其运动幅度均为正负90度。建立机械手模型时,采用了MATLAB支持的虚拟现实建模语言VRML。1.1虚拟现实建模语言VRMLVRML(VirtualRealityModelingLanguage)即虚拟现实建模语言,是一种用于建立真实世界的场景模型或者人们虚构的三维世界的场景建模语言,是一种面向Web面向对象的三维造型语言,其实质为一种解释性语言,常用的编辑环

3、境有VrmlPad,VRML文件的后缀名为.wrl,使用浏览器浏览时需要相应插件的支持,可下载cortona3d.msi安装即可由于VRML在互联网和可视化的广泛应用,Matlab对于虚拟现实也进行了有力的支持,Matlab提供了Simulink接口和Matlab接口来与虚拟现实进行交互,相应的详细说明文档请查看Matlab帮助文档中的VirtualRealityToolbox内容。1.2机械手模型的概述面两幅图1.2和1.3显示的分别为初始机械手模型和旋转一定角度的机械手模型。图1.2机械手初始状态图1.3旋转后的机械手状态实验室中实物机械手总共有六个关节,也就是说该机械手有六个自由度,每个

4、关节由一个电机来控制,每个关节在空间的运动范围为-90度到+90度,在试验模拟中为了简化系统,我们使用了四个自由度的模型系统,在MatlabSimulink仿真实验中,只需要实时给出每个关节的旋转角度就可以动态地控制机械手的运动状态。从上面的模型示意图中我们可以很清楚的看到,该机械手的模型分为底座,四个关节以及顶端的画笔,我们重点来弄清楚四个关节的运动情况,地下的红色小立方体可以在水平面的方向左右(即顺时针或逆时针)旋转正负90度,其余的三个颜色分别标记为绿色、蓝色和灰色的三个立方体,它们可以绕着各自的底平面中心点前后旋转运动(视线正视方向),其运动幅度均为正负90度。1.3机械手模型的建立机

5、械手模型的建立需要VRML语言支持,具体的设计请参考VRML虚拟现实应用技术张德丰著,电子工业出版社,在这部分将简要的介绍有关VRML编程的基本知识。VRML语言其实非常简单,是一种描述性的解释语言,VRML的对象称之为节点,子节点的集合可以构成复杂的景物,节点可以通过实例得到复用,通过路由或者script脚本语言的交互可以生成更加复杂逼真的动态虚拟世界。例如底盘模型是一个圆锥体和圆柱体的组合,相关的VRML代码如下所示。#DEFHandTransform#定义一个形变children#并列的子节点#Base:aconeandacylinderShape#定义一个形体appearanceApp

6、earance#外观节点materialMaterial#材质节点#颜色属性设置diffuseColor1.00.00.0emissiveColor0.10.10.1geometryCone#定义一个圆锥体#圆锥体的属性设置bottomRadius0.5height0.3Shape#定义一个形体appearanceAppearance#外观节点materialDEFWhiteMaterial#材质节点#颜色属性设置diffuseColor1.01.01.0emissiveColor0.10.20.2geometryCylinder#定义一个圆柱体#圆柱体的属性设置radius0.4height

7、0.29#从以上的代码片段来看,我们很容易使用VRML建模语言快速高效地得到我们所需要的模型,是一种优秀的所见即所得方式。模型建立最核心的部分是,我们需要在相关关节适当的地方放置一个CylinderSensor感知器,然后通过ROUTE的方式将感知到的旋转角度路由给相应的关节,这样就可以控制不同关节的旋转运动状态。具体的例子如下面代码片段所示。#ROUTEMoveFirstArm.rotation_changedTOBaseJoint.rotationROUTEMoveSecondArm.rotation_changedTOSecondJoint.rotationROUTEMoveThirdA

8、rm.rotation_changedTOThirdJoint.rotationROUTEMoveForthArm.rotation_changedTOForthJoint.rotationROUTEMoveHand.translationchangedTOHand.translation在VrmlPad环境中,我们可以对相应的代码进行编辑调试及运行,使用VrmlPad软件可以大大简化我们的编程工作量,所以强烈建议使用该开发环境而非简单的文本编辑器。二、机械手运动仿真Matlab中的Simulink软件模块可以对动态系统进行仿真分析,可以使用该模块来对现实中真实系统进行建模,用虚拟的方法实现功

9、能上等价的系统。有关Simulink模块的详细介绍请查看Matlab自带的帮助文档。2.1机械手仿真模拟图机械手仿真模拟模块图m.mdl如图2.2所示。该模拟图的绘制是在Matlab环境下实现的,在Matlab命令行输入simulink即可打开仿真模块,然后选择相应的控件,设置参数以及连线即可以实现简单的仿真模拟图的绘制,具体请参考Matlab模拟仿真工具箱帮助文档。nt.rctsticntstic-noint.irnt日tic-nVRSinkThirdJoint.-cfcatinn图2.2机械手仿真模拟图m.mdl下面我们分别来介绍有四个输出分别为Outl到Out4的Pose模块,以及有四个

10、输入的VRSink模拟仿真模块。2.2.1Pose模块Pose模块实际上是一个子系统模块,其功能是从工作区间获得输入,然后格式化输出四个关节节点旋转的角度值,Pose子系统的模块如图2.3所示。具体来讲,左边OrderSignal为命令信号,命令信号的来源为控制台的workspace,经过一个四路分解为四个角度值anglel,angle2,angle3和angle4并写入保存到当前workspace,然后再经过一个简单的复合为相应的四个角度输出值Outl,Out2,Out3和Out4。右边的010指的是相应的旋转轴,而0l0下面的求和符号代表的是绕相应旋转轴旋转的角度值222VRSink模块V

11、RSink模块是一个Simulink仿真模块,该模块的四个输入端分别连到VRML仿真文件Machine_hand.wrl中定义的四个关节点的旋转角度,右键打开VRSink参数设置,可以看到如图2.4所示的对话框。参数设置说明如下:在FieldsWritten下面是四个参数的设置,必须与VRML文件中的相应关节点一致,WorldFileName下的Machine_hand.wrl是相应的VRML仿真文件名。这样左边的Pose子系统将工作区的命令信号分解为相应的角度值分别连到仿真文件相应的关节点,这样一个命令序列随着时间的变化就可以达到仿真实验的目的效果。2.3主程序%clear;add_path

12、;%添加相应的文件夹路径unit=100;temp=fromfile(cmd.txt,unit);%将预先得到的命令文件解析为相应的角度值leng=size(temp,2);stoptime=unit*leng/1000;OrderSignal.signals.values=temp;%设置OrderSinal的信号源OrderSignal.time=0:unit/1000:stoptime-unit/1000;%设置时间load_system(m);%装载m.mdl仿真图set_param(m,StopTime,num2str(stoptime);%设置仿真时间open_system(m/V

13、RSink);%打开仿真环境,开始模拟仿真实验%接下来介绍一下命令文件cmd.txt中的命令格式,从文件中取出任意一条命令格式如下:T4800#1P1500S300#2P1500S300#4P1500S300#3P1500S300#6P1500S300#5P1000S300每一条命令对应着机械手的各个关节在某一时刻的状态,从上面的命令格式我们可以看出,红色标记的T4800指的是上一个状态到这条指令的状态的变化时间,本命令为4800毫秒绿色标记的#1P15OO指的是关节1的状态值为1500,状态的变化范围为500-2500,其中500对应-90度而2500对应+90度,1500为中间状态,对应0

14、度角,其他关节类似。蓝色标记的S300为机械手臂关节1的步进电机的速度调节值,一般默认设置为300,在此不做过多解释。三、使虚拟机械手沿任意两点画直线3.1程序描述VRML三维虚拟手臂模型及Simulink仿真环境建立后,整个matlab程序在此基础之上完成的功能可以用一句话总结:输入起始和终止两点,使仿真环境中的虚拟手臂沿着两点确定的直线,从起点移动到终点。3.2实现步骤3.2.1建立世界坐标系构建出机械手臂的三维虚拟模型后,首先最基础的工作是建立这样一个三维世界坐标系,以机械手底座的中心为坐标原点,整个手臂竖立时正好处在Z轴正方向上,而X轴正方向指向外,Y轴正方向指向右。在坐标系中,整个手臂竖立时,从下往上三截部分长度分别为0.5,0.5,0.625个单位(最后一截包含了手臂头,所以略长)。手臂顶端为我们需要关注的目标点,按照建立的坐标系,整个手臂竖立时,手臂顶端的坐标点为(0,0,1.625),而此时四个关节对应的旋转角度均为90,即该坐标点对应的关节角度向量为(90,90,90,90)。下图3.1为我们建立的世界坐标系的示意图。O这一截长度为o“5方这一截长度为0.50坐标系原点I轴手臂头顶端r即我们关注的目标点.手臂如图竖貢时该点坐标为:0r0r1.625)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号