主要内容

交互式构建ABB Yumi机器人的轨迹

这个例子展示了如何使用interactiveRigidBodyTree对象移动机器人,设计轨迹,并重播它。

装载机器人可视化和构建环境

加载“abbYumi”机器人模型。使用初始化交互图形interactiveRigidBodyTree.保存当前坐标轴。

robot = loadrobot(“abbYumi”'重力',[0 0 -9.81]);Iviz = InteractiveIgidodytree(机器人);AX = GCA;

构建由碰撞盒组成的环境,该碰撞盒代表楼层,带有物体的两个架子和中心表。

飞机= collisionBox (1.5, 1.5, 0.05);飞机。姿势= trvec2tform([0.25 0 -0.025]);表演(飞机,“父”、ax);leftShelf = collisionBox (0.25, 0.1, 0.2);leftShelf。姿势= trvec2form([0.3 -。65年0.1]);[~, patchObj] = show(leftShelf,“父”,斧头);patchbj.facecolor = [0 0 1];RightShelf = CollisionBox(0.25,0.1,0.2);RightShelf.Pose = TRVEC2TFORM([0.3 .65 0.1]);[〜,patchobj] = show(右手,“父”,斧头);patchbj.facecolor = [0 0 1];左翼=芯片杆菌(0.01,0.07);Leffidget.Pose = TRVEC2TFORM([0.3-0.65 0.225]);[〜,patchobj] = show(左翼,“父”,斧头);patchbj.facecolor = [1 0 0];RightWidget = CollisionBox(0.03,0.02,0.07);rightWidget.Pose = TRVEC2TFORM([0.3 0.65 0.225]);[〜,patchobj] = show(右翼,“父”,斧头);patchbj.facecolor = [1 0 0];Centerable = CollisionBox(0.5,0.3,0.05);Centrable.positable = TRVEC2TFORM([0.0.75 0 0.025]);[〜,patchobj] = show(centerable,“父”,斧头);patchobj.facecolor = [0 1 0];

图形交互可视化包含一个轴对象。轴对象包含80个类型的贴片,行,表面。此对象表示Yumi_base_link。

交互式生成配置

使用交互式可视化来移动机器人并设置配置。当图形初始化后,机器人处于其家庭配置中,双臂交叉。放大并点击末端执行器以获得更多信息。

要选择身体作为末端执行器,请右键单击身体以选择它。

也可以从命令行分配标记体:

iviz。MarkerBodyName =“gripper_r_base”

设置主体之后,使用提供的标记元素移动标记,选择的主体随之移动。拖动中央灰色标记将在笛卡尔空间中移动标记。红色、绿色和蓝色的轴将标记沿着xyz-axes。圆圈旋转围绕等同颜色的轴的标记。

您还可以通过右键单击联合来移动各个关节,然后单击切换标记控制方法。

markercontrolmethod.对象的属性设置为“JointControl”

这些步骤也可以通过直接更改对象的属性来完成。

iviz。MarkerBodyName =“yumi_link_2_r”;iviz。MarkerControlMethod =“JointControl”

图形交互可视化包含一个轴对象。轴对象包含72个类型的贴片物体,线,表面。此对象表示Yumi_base_link。

改变为联合控制产生了一个黄色标记,允许直接设置接头位置。

迭代地移动机器人,直到您有所需的配置。使用。保存配置AddConfiguration..每次调用将当前配置添加到StoredConfigurations财产。

AddConfiguration(IVIZ)

定义轨迹的航路点

在本例中,提供一组配置。垫文件。

加载配置,并将它们指定为存储的配置集。第一个配置是通过更新配置财产和调用AddConfiguration.,您可以交互方式,但其余的只是通过分配来添加StoredConfigurations直接的财产。

加载abbYumiSaveTrajectoryWaypts.matremoveConfigurations (iviz)%清除存储配置%以有效的起始配置开始iviz.configuration = hiveConfig;

图形交互可视化包含一个轴对象。轴对象包含72个类型的贴片物体,线,表面。此对象表示Yumi_base_link。

AddConfiguration(IVIZ)%指定整套航点iviz。StoredConfigurations = [startingConfig,......Graspapproachconfig,......graspPoseConfig,......graspdepartconfig,......placeApproachConfig,......PlaceConfig,......sitedepartconfig,......startingConfig];

生成轨迹并回放

一旦存储了所有航点,构造机器人遵循的轨迹。对于此示例,使用梯形速度曲线使用trapveltraj..梯形速度曲线意味着机器人在每个航点处平滑地停止,但是在运动中实现最大速度。

numSamples = 100 * (iviz大小。StoredConfigurations那2) + 1; [q,~,~, tvec] = trapveltraj(iviz.StoredConfigurations,numSamples,'时间结束',2);

通过迭代生成来重放生成的轨迹问:矩阵,它表示在每个航点之间移动的一系列联合配置。在这种情况下,速率控制对象用于确保播放速度反映实际执行速度。

iviz.showmarker = false;Showfigure(IVIZ)RatectRobj = RateControl(NumSamples /(Max(TVEC)+ TVEC(2)));为了i = 1:numsamples iviz.configuration = q(:,i);等待(ratectrlobj);结尾

图形交互可视化包含一个轴对象。axis对象包含70个类型为patch, line的对象。此对象表示Yumi_base_link。

图中显示机器人在所有定义的路径点之间执行平滑的轨迹。