展示机器人模型的细节
将一个刚体和相应的关节添加到刚体树中。每个rigidBody
对象包含rigidBodyJoint
对象,且必须添加到rigidBodyTree
使用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 ) --------------------
对现有的进行更改rigidBodyTree
对象。你可以在刚体树中替换关节,体和子树。
加载示例机器人如下rigidBodyTree
对象。
负载exampleRobots.mat
查看Puma机器人使用的详细信息showdetails
.
showdetails (puma1)
-------------------- 机器人:身体(6)Idx身体名称联合名称联合类型父母名字(Idx)孩子的名字(s ) --- --------- ---------- ---------- ---------------- ---------------- 1 L1 jnt1转动基地(0)L2 (2) 2 L2 jnt2转动L1 (1) L3 (3) 3 L3 jnt3转动L2 (2) L4 (4) 4, jnt4转动L3(3)一两百(5)5 L5 jnt5转动L4(4) 16种(6)6 16种jnt6转动L5 (5 ) --------------------
找一个特定的机构来检查属性。的独生子L3
身体是L4
的身体。你也可以复制一个特定的主体。
body3 = getBody(puma1,“L3”);childBody = body3。孩子{1}
名称:'L4'关节:[1x1 rigidBodyJoint]质量:1 CenterOfMass:[0 0 0]惯性:[1 1 1 0 0 0]Parent: [1x1 rigidBody] Children: {[1x1 rigidBody]}视觉效果:{}碰撞:{}
body3Copy = copy(body3);
更换上的接头L3
的身体。您必须创建一个新的联合
对象和用法replaceJoint
以确保下游体的几何形状不受影响。调用setFixedTransform
如有必要,可以在两个体之间定义一个变换,而不是使用默认的单位矩阵。
newJoint = rigidBodyJoint(“移动”);replaceJoint (puma1“L3”, newJoint);showdetails (puma1)
-------------------- 机器人:身体(6)Idx身体名称联合名称联合类型父母名字(Idx)孩子的名字(s ) --- --------- ---------- ---------- ---------------- ---------------- 1 L1 jnt1转动基地(0)L2 (2) 2 L2 jnt2转动L1 (1) L3 3 L3棱镜(3)固定L2 (2) L4 (4) 4, jnt4转动L3(3)一两百(5)5 L5 jnt5转动L4(4) 16种(6)6 16种jnt6转动L5 (5 ) --------------------
删除整个主体并使用得到结果子树removeBody
.被移除的主体包含在子树中。
subtree = removeBody(puma1,“L4”)
NumBodies: 3 Bodies: {[1x1 rigidBody] [1x1 rigidBody] [1x1 rigidBody]} Base: [1x1 rigidBody] BodyNames: {'L4' 'L5' 'L6'} BaseName: 'L3' Gravity: [0 0 0] DataFormat: 'struct'
删除修改后的L3
的身体。添加原复制L3
Body toL2
体,然后是返回的子树。机器人模型保持不变。查看详细的对比showdetails
.
removeBody (puma1“L3”);addBody (puma1 body3Copy,“外语”) addSubtree (puma1“L3”子树)showdetails (puma1)
-------------------- 机器人:身体(6)Idx身体名称联合名称联合类型父母名字(Idx)孩子的名字(s ) --- --------- ---------- ---------- ---------------- ---------------- 1 L1 jnt1转动基地(0)L2 (2) 2 L2 jnt2转动L1 (1) L3 (3) 3 L3 jnt3转动L2 (2) L4 (4) 4, jnt4转动L3(3)一两百(5)5 L5 jnt5转动L4(4) 16种(6)6 16种jnt6转动L5 (5 ) --------------------
使用Puma560®机器人的Denavit-Hartenberg (DH)参数来构建机器人。每个刚体一次添加一个,通过关节对象指定的子到父转换。
DH参数定义了机器人的几何形状,与每个刚体如何连接到它的父刚体有关。为方便起见,在矩阵中设置Puma560机器人的参数[1].Puma机器人是一个串行链操作器。DH参数相对于矩阵中的前一行,对应于前一个关节附件。
Dhparams = [0 pi/2 0 0;0.0203 -pi/2 0.15005 0;0 /2 0.4318 0;0 - /2 0;0 0 0 0];
创建一个刚体树对象来构建机器人。
robot = rigidBodyTree;
创建第一个刚体并将其添加到机器人中。添加刚体:
创建一个rigidBody
对象,并给它一个惟一的名称。
创建一个rigidBodyJoint
对象,并给它一个惟一的名称。
使用setFixedTransform
指定使用DH参数的体到体转换。DH参数的最后一个元素,θ
,被忽略,因为角度依赖于关节位置。
调用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.和B.阿姆斯特朗-海卢夫里。PUMA 560机器人模型参数的一致性研究。1994年IEEE机器人与自动化国际会议论文集, IEEE计算。Soc。出版社,1994年,1608-13页。DOI.org (Crossref), doi: 10.1109 / ROBOT.1994.351360。
机器人
- - - - - -机器人模型rigidBodyTree
对象机器人模型,指定为rigidBodyTree
对象。
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。