主要内容

rigidBody

创建刚体

描述

rigidBodyObject表示刚体。刚体是任何树形结构机器人操作器的构件。每一个rigidBody有一个rigidBodyJoint物体附着在它上面,它定义了刚体如何运动。将刚体装配成一个树形结构的机器人模型rigidBodyTree

将一个关节对象设置为联合财产之前调用addBody将刚体添加到机器人模型中。当刚体处于刚体树中时,不能直接修改它的属性,因为这会破坏刚体之间的关系。使用replaceJoint修改整个树结构。

创建

描述

例子

身体= rigidBody (的名字使用指定的名称创建刚体。默认情况下,身体有一个固定的关节。

输入参数

全部展开

刚体的名称,指定为字符串标量或字符向量。该名称对主体必须是唯一的,以便可以在rigidBodyTree对象。

属性

全部展开

刚体的名称,指定为字符串标量或字符向量。该名称必须是主体的唯一名称,以便可以在rigidBodyTree对象。

数据类型:字符|字符串

rigidBodyJoint对象,指定为句柄。缺省情况下,关节为“固定”类型。

刚体的质量,以千克为单位的数字标量。

刚体的质心位置,记为[x y z]向量。这个矢量描述了质心相对于车身的位置,单位为米。

刚体的惯量,称为[Ixx Iyy Izz Iyz Ixz Ixy]相对于车身的矢量,单位为千克平方米。向量的前三个元素是惯性张量.最后三个元素是惯性张量的非对角元素。惯性张量是一个正半定对称矩阵:

刚体父体,指定为rigidBody对象句柄。刚体关节定义了刚体相对于母体如何移动。该属性为空,直到刚体被添加到rigidBodyTree机器人模型。

的单元格数组,指定为刚体子元素rigidBody对象句柄。这些刚体子体都附着在刚体物体上。该属性为空,直到刚体被添加到rigidBodyTree机器人模型,并且至少有一个其他主体被添加到树中,这个主体作为它的父体。

可视几何图形,指定为字符串标量或字符向量的单元格数组。每个字符向量描述一个视觉几何图形的类型和来源。例如,如果一个网格文件,link_0.stl,是附着在刚体上的,视觉上是网:link_0.stl.视觉几何图形添加到刚体使用addVisual

碰撞几何图形,指定为字符向量的单元格数组。每个字符向量描述了碰撞对象的类型和碰撞几何的相关参数。要修改刚体的碰撞几何图形,请使用addCollisionclearCollision功能。

对象的功能

复制 创建一个刚体的深层拷贝
addCollision 添加碰撞几何体刚体
addVisual 添加可视化几何数据刚体
clearCollision 清除所有附加的碰撞几何图形
clearVisual 清除所有视觉几何图形

例子

全部折叠

在刚体树中添加刚体和相应的关节。每个rigidBody对象包含一个rigidBodyJoint对象,且必须加到r中igidBodyTree使用addBody

创建刚体树。

rbtree = rigidBodyTree;

创建一个具有唯一名称的刚体。

body1 = rigidBody (“b1”);

创建一个转动关节。默认情况下,rigidBody物体有一个固定的关节。通过分配一个新的rigidBodyJoint对象的界面。联合财产。

jnt1 = rigidBodyJoint (“jnt1”“转动”);界面。联合= jnt1;

将刚体添加到树中。指定刚体附加到的刚体名称。因为这是第一个主体,所以使用树的基本名称。

basename = rbtree.BaseName;basename addBody (rbtree界面)

使用showdetails在树上确认刚体和关节的添加是否正确。

showdetails (rbtree)
-------------------- 机器人:身体(1)Idx的身体名称联合名称联合类型父母名字(Idx)孩子的名字(s ) --- --------- ---------- ---------- ---------------- ---------------- 1 b1 jnt1转动基(0 ) --------------------

使用Puma560®机器人的Denavit-Hartenberg (DH)参数来构建机器人。每个刚体每次添加一个,由关节对象指定子到父的转换。

DH参数定义了机器人的几何形状与每个刚体如何连接到它的父体有关。为方便起见,在矩阵中设置Puma560机器人的参数[1].Puma机器人是一种链式机械手。DH参数相对于矩阵中的前一行,对应于前一个关节连接。

Dhparams = [0 pi/2 0 0;0.4318 00 0 0.0203 -pi/2 0.15005 0;0 pi/2 0.4318 0;0 -pi/2 0 0;0 0 0 0];

创建一个刚体树对象来构建机器人。

机器人= rigidBodyTree;

创建第一个刚体并将其添加到机器人上。添加刚体:

  1. 创建一个rigidBody对象,并给它一个唯一的名称。

  2. 创建一个rigidBodyJoint对象,并给它一个唯一的名称。

  3. 使用setFixedTransform使用DH参数指定体对体转换。DH参数的最后一个元素,θ,因为角度取决于关节位置。

  4. 调用addBody将身体的第一个关节连接到机器人的基本框架上。

body1 = rigidBody (“界面”);jnt1 = rigidBodyJoint (“jnt1”“转动”);setFixedTransform (jnt1 dhparams (1:)“dh”);界面。联合= jnt1; addBody(robot,body1,“基地”

创建和添加其他刚体到机器人。在调用时指定前面的主体名称addBody把它。每个固定变换都是相对于之前的关节坐标系的。

body2 = rigidBody (“body2”);jnt2 = rigidBodyJoint (“jnt2”“转动”);body3 = rigidBody (“body3”);jnt3 = rigidBodyJoint (“jnt3”“转动”);body4 = rigidBody (“body4”);jnt4 = rigidBodyJoint (“jnt4”“转动”);body5 = rigidBody (“body5”);jnt5 = rigidBodyJoint (“jnt5”“转动”);body6 = rigidBody (“body6”);jnt6 = rigidBodyJoint (“jnt6”“转动”);: setFixedTransform (jnt2 dhparams (2),“dh”);: setFixedTransform (jnt3 dhparams (3),“dh”);: setFixedTransform (jnt4 dhparams (4),“dh”);: setFixedTransform (jnt5 dhparams (5),“dh”);: setFixedTransform (jnt6 dhparams (6),“dh”);body2。联合= jnt2; body3.Joint = jnt3; body4.Joint = jnt4; body5.Joint = jnt5; body6.Joint = jnt6; addBody(robot,body2,“界面”) addBody (body3的机器人“body2”) addBody (body4的机器人“body3”) addBody (body5的机器人“body4”) addBody (body6的机器人“body5”

通过使用showdetails显示函数。showdetails列出MATLAB®命令窗口中的所有主体。显示用给定的配置显示机器人(默认为home)。调用修改轴限制并隐藏轴标签。

showdetails(机器人)
-------------------- 机器人:(6)尸体Idx身体名称联合名称联合类型父母名字(Idx)孩子的名字(s ) --- --------- ---------- ---------- ---------------- ---------------- 1 body1 jnt1转动基地(0)body2 (2) 2 body2 jnt2转动界面(1)body3 (3) 3 body3 jnt3转动body2 (2) body4 (4) 4 body4 jnt4转动body3 (3) body5 (5) 5 body5 jnt5转动body4 (4) body6 (6)6 body6 jnt6转动body5 (5 ) --------------------
显示(机器人);轴([-0.5,0.5,-0.5,0.5,-0.5,0.5])轴

参考文献

P. I. Corke和B. Armstrong-Helouvry。“PUMA 560机器人模型参数间的一致性搜索”。1994年IEEE国际机器人和自动化会议论文集, IEEE第一版。Soc。出版社,1994,第1608-13页。DOI.org (Crossref), doi: 10.1109 / ROBOT.1994.351360。

兼容性的考虑

全部展开

未来版本中的行为改变

参考文献

约翰·J·克雷格机器人学导论:力学与控制.阅读,MA: Addison-Wesley, 1989。

[2]西西里岛舞蹈,布鲁诺。机器人技术:建模,规划和控制。伦敦:施普林格,2009年。

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

介绍了R2016b