主要内容

一步一步地造一个机器人

本示例逐步介绍了构建机器人的过程,向您展示了不同的机器人组件以及如何调用函数来构建机器人。显示了代码部分,但尺寸和变换的实际值取决于您的机器人。

  1. 创建刚体对象。

    body1=刚体(“body1”);

  2. 创建关节并将其指定给刚体。定义关节的“原始位置”特性,原位.使用齐次变换将关节设置为父变换,tform.使用trvec2tform函数将平移向量转换为同构变换。儿童关节转移设置为单位矩阵。

    jnt1=刚体关节(“jnt1”,“革命的”)jnt1.HomePosition=pi/4;tform=trvec2tform([0.25,0.25,0]);%用户定义setFixedTransform(jnt1,tform);body1.Joint=jnt1;

  3. 创建刚体树。此树由要附着刚体的基础坐标系初始化。

    机器人=刚体树;

  4. 将第一个主体添加到树中。指定要将其附着到树的底部。前面定义的固定变换是从底部(父级)到第一个主体。

    addBody(机器人,body1,“基地”)

  5. 创建第二个实体。定义此实体的属性并将其附着到第一个刚体。定义相对于上一个实体框架的变换。

    body2=刚体(“body2”);jnt2=刚体关节(“jnt2”,“革命的”);jnt2.HomePosition=pi/6;%用户定义tform2=trvec2tform([1,0,0]);%用户定义setFixedTransform(jnt2,tform2);body2.Joint=jnt2;addBody(robot,body2,“body1”);%将body2添加到body1

  6. 添加其他机构。将阀体3和4连接到阀体2上。

    body3=刚体(“body3”);body4=刚体(“body4”); jnt3=刚体关节(“jnt3”,“革命的”); jnt4=刚体关节(“jnt4”,“革命的”); tform3=trvec2tform([0.6,-0.1,0])*eul2tform([-pi/2,0,0]);%用户定义tform4=trvec2tform([1,0,0]);%用户定义setFixedTransform(jnt3,tform3);setFixedTransform(jnt4,tform4);jnt3.HomePosition=pi/4;%用户定义车身3.关节=jnt3车身4.关节=jnt4添加车身(机器人,车身3,“body2”);%将body3添加到body2addBody(机器人,body4,“body2”);%将body4添加到body2

  7. 如果要控制特定的末端效应器,请将其定义为具有固定关节的刚体。对于此机器人,将末端效应器添加到车身4这样您就可以为它进行转换。

    bodyEndEffector=刚体(“endeffector”); tform5=trvec2tform([0.5,0,0]);%用户定义固定转移(体效应器关节,T或M5);addBody(机器人、bodyEndEffector、,“body4”);
  8. 现在您已经创建了机器人,您可以生成机器人配置。对于给定的配置,您还可以使用转化。获取从末端效应器到底部的变换。

    config=randomConfiguration(robot)tform=getTransform(robot,config,“endeffector”,“基地”)
    config=1×2带字段的结构数组:JointName JointPosition tform=-0.5484 0.8362 0-0.8362-0.5484 0 0 0 0 1.0000

    笔记

    此转换特定于此示例中指定的维度。机器人的值因定义的转换而异。

  9. 可以使用从现有机器人或其他机器人模型创建子树子树。指定要用作新子树基础的主体名称。可以通过添加、更改或删除主体来修改此子树。

    newArm=子树(机器人、,“body2”);拆下车身(新臂,“body3”);拆下车身(新臂,“endeffector”)

  10. 您还可以将这些子树添加到机器人。添加子树类似于添加实体。指定的实体名称用作附着的基础,子树上的所有变换都是相对于该实体框架的。在添加子树之前,必须确保所有实体和关节的名称都是唯一的。创建实体和关节的副本,重命名它们,并在子树上替换它们。调用添加子树将子树附着到指定的主体。

    newBody1=复制(getBody)(newArm,“body2”));newBody2=复制(getBody)(newArm,“body4”)); newBody1.姓名=“新博客1”;newBody2.名称=“新博客2”;新球头1.关节=刚球头关节(“newJnt1”,“革命的”);新球座2.球节=刚球座球节(“newJnt2”,“革命的”)tformTree=trvec2tform([0.2,0,0]);%用户定义固定式转换(新杆1.接头,T或T轴);更换杆体(新杆,“body2”,newBody1);更换车身(newArm,“body4”,newBody2);添加子树(robot,“body1”,newArm);

  11. 最后,您可以使用展示细节查看您制造的机器人。验证关节类型是否正确。

    展示详情(机器人)
    Idx机构名称关节名称关节类型父名称(Idx)子名称-------------------------------------------------------1 body1 jnt1旋转底座(0)body2新车身1(6)body2 jnt2旋转车身1(1)body3(3)body4(4)body3 jnt3旋转车身2(2)body4 jnt4旋转车身2(2)endeffector(5)5端部效应器端部效应器固定体4(4)6新座1新座1旋转体1(1)新座2(7)7新座2新座2旋转体1(6)--------------------

另见

|

相关话题