机械手模拟仿真实验文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
机械手模拟仿真实验文档
实验简介
问题描述:应用仿真技术,建立一个具有四自由度的(虚拟)机械手,可完成在任意给定的两个三维空间点之间画一条直线的任务
解决方案:首先使用VRML语言建模机械手模型,再使用Matlab中的Simulink仿真环境模拟机械手四个关节的运动状态,然后在此基础之上编写Matlab程序完成
所需功能。
重点难点:如何建立世界坐标系,并得到每个坐标点与四个关节旋转角度的对应关系?
如何计算机械手臂沿两点直线移动过程中四个关节的运动姿态(即旋转角
度)?
一、机械手建模
为了实现对机械手的仿真实现,我们首先建立一个模拟四个关节(四个自由度)可运动的机械手,效果如下图1.1所示。
图 1.1 四个自由度的机械手模型
该机械手的模型分为底座,四个关节以及顶端的画笔,我们重点来弄清楚四个关节的运
动情况,地下的红色小立方体可以在水平面的方向左右(即顺时针或逆时针)旋转正负90度,其余的三个颜色分别标记为绿色、蓝色和灰色的三个立方体,它们可以绕着各自的底平面心前后旋转运动,其运动幅度均为正负90度。
建立机械手模型时,采用了MA TLAB支持的虚拟现实建模语言VRML。
1.1 虚拟现实建模语言VRML
VRML(Virtual Reality Modeling Language)即虚拟现实建模语言,是一种用于建立真实世界的场景模型或者人们虚构的三维世界的场景建模语言,是一种面向Web面向对象的三维造型语言,其实质为一种解释性语言,常用的编辑环境有VrmlPad,VRML文件的后缀名为.wrl, 使用浏览器浏览时需要相应插件的支持,可下载cortona3d.msi安装即可由于VRML在互联网和可视化的广泛应用,Matlab对于虚拟现实也进行了有力的支持,Matlab提供了Simulink接口和Matlab接口来与虚拟现实进行交互,相应的详细说明文档请查看Matlab帮助文档中的Virtual Reality Toolbox内容。
1.2 机械手模型的概述
下面两幅图 1.2和1.3显示的分别为初始机械手模型和旋转一定角度的机械手模型。
图1.2 机械手初始状态图1.3 旋转后的机械手状态
实验室中实物机械手总共有六个关节,也就是说该机械手有六个自由度,每个关节由一个电机来控制,每个关节在空间的运动范围为-90度到+90度,在试验模拟中为了简化系统,
我们使用了四个自由度的模型系统,在Matlab Simulink仿真实验中,只需要实时给出每个关节的旋转角度就可以动态地控制机械手的运动状态。
从上面的模型示意图中我们可以很清楚的看到,该机械手的模型分为底座,四个关节以及顶端的画笔,我们重点来弄清楚四个关节的运动情况,地下的红色小立方体可以在水平面的方向左右(即顺时针或逆时针)旋转正负90度,其余的三个颜色分别标记为绿色、蓝色和灰色的三个立方体,它们可以绕着各自的底平面中心点前后旋转运动(视线正视方向),其运动幅度均为正负90度。
1.3 机械手模型的建立
机械手模型的建立需要VRML语言支持,具体的设计请参考《VRML虚拟现实应用技术》张德丰著,电子工业出版社,在这部分将简要的介绍有关VRML编程的基本知识。
VRML语言其实非常简单,是一种描述性的解释语言,VRML的对象称之为节点,子节点的集合可以构成复杂的景物,节点可以通过实例得到复用,通过路由或者script脚本语言的交互可以生成更加复杂逼真的动态虚拟世界。
例如底盘模型是一个圆锥体和圆柱体的组合,相关的VRML代码如下所示。
############################################################################# DEF Hand Transform #定义一个形变
{
children #并列的子节点
[
#Base : a cone and a cylinder
Shape #定义一个形体
{
appearance Appearance #外观节点
{
material Material # 材质节点
{
#颜色属性设置
diffuseColor 1.0 0.0 0.0
emissiveColor 0.1 0.1 0.1
}
}
geometry Cone #定义一个圆锥体
{
#圆锥体的属性设置
bottomRadius 0.5
height 0.3
}
}
Shape #定义一个形体
{
appearance Appearance #外观节点
{
material DEF White Material # 材质节点
{
#颜色属性设置
diffuseColor 1.0 1.0 1.0
emissiveColor 0.1 0.2 0.2
}
}
geometry Cylinder #定义一个圆柱体
{
#圆柱体的属性设置
radius 0.4
height 0.29
}
}
]
}
############################################################################### 从以上的代码片段来看,我们很容易使用VRML建模语言快速高效地得到我们所需要的模型,是一种优秀的所见即所得方式。模型建立最核心的部分是,我们需要在相关关节适当的地方放置一个CylinderSensor感知器,然后通过ROUTE的方式将感知到的旋转角度路由给相应的关节,这样就可以控制不同关节的旋转运动状态。具体的例子如下面代码片段所示。
#########################################################
ROUTE MoveFirstArm.rotation_changed TO BaseJoint.rotation
ROUTE MoveSecondArm.rotation_changed TO SecondJoint.rotation
ROUTE MoveThirdArm.rotation_changed TO ThirdJoint.rotation