主要内容

interactiveRigidBodyTree

与刚体树机器人模型交互

描述

interactiveRigidBodyTree对象创建一个图形,其中显示机器人模型rigidBodyTree对象,使您能够使用交互式标记直接修改机器人配置。的rigidBodyTree对象定义了机器人模型中不同连接刚体的几何形状以及这些刚体的关节极限。

若要使用逆运动学计算新配置,请单击并拖动图中的交互式标记。该标记支持拖动中心标记金宝app,沿特定轴进行线性运动,以及围绕每个轴旋转。您可以通过右键单击不同的主体并选择来更改末端执行器将主体设置为标记体

要保存机器人模型的当前配置,请使用addConfiguration对象的功能。的StoredConfigurations属性包含已保存的配置。

默认情况下,机器人模型的关节限制是机器人的唯一约束。要添加其他约束,请使用addConstraint对象的功能。有关可用约束对象的列表,请参见机器人约束逆运动学

创建

描述

例子

viztree= interactiveRigidBodyTree (机器人为指定的机器人模型创建交互式刚体树对象和相关图形。的机器人参数设置RigidBodyTree财产。要与模型交互,单击并拖动图中的交互标记。

viztree= interactiveRigidBodyTree (机器人“帧”,“关闭”)关闭为机器人模型中的每个关节绘制的框架轴。

viztree= interactiveRigidBodyTree (___、名称、值)除以前语法中的任何输入参数组合外,还使用一个或多个名称-值对参数设置属性。将每个属性名用引号括起来。例如,“RigidBodyTree”,机器人使用指定的机器人模型创建交互式刚体树对象。

属性

全部展开

刚体树型机器人,指定为rigidBodyTree对象。机器人模型定义了刚体的几何形状和连接刚体的关节。要访问所提供的机器人模型,请使用loadrobot函数。从URDF文件或Simscape™多体™模型,使用importrobot函数。

您可以在创建对象时设置此属性。创建对象后,此属性为只读。

逆运动学求解器,指定为ageneralizedInverseKinematics系统对象。默认情况下,求解器使用最大迭代次数为2的Levenberg-Marquardt算法。增加最大迭代次数可以降低图中的帧率。

您可以在创建对象时设置此属性。创建对象后,此属性为只读。

与交互标记相关联的刚体名称,指定为字符串标量或字符向量。属性中索引最高的主体RigidBodyTree财产。若要使用图形更改此属性,请右键单击刚体并选择将主体设置为标记体

例子:“r_foot”

数据类型:字符|字符串

此属性是只读的。

交互式标记的当前姿态,指定为4 × 4齐次变换矩阵。

数据类型:

此属性是只读的。

与交互标记相关联的刚体的当前姿态,指定为4 × 4齐次变换矩阵。

数据类型:

逆运动学求解器的约束,指定为一个或多个约束对象的单元格数组:

默认情况下,逆运动学求解器只考虑关节的极限RigidBodyTree财产。要添加或删除机器人模型上的约束,请使用addConstraint而且removeConstraints分别为对象函数。或者,您可以将约束对象的新单元格数组分配给属性。

例子:{constraintAiming(“头”、“ReferenceBody”、“right_hand”)}

数据类型:细胞

目标位姿的方向和位置权重分别为二元向量,取向位置

若要增加匹配所需方向或位置的优先级,请增加相应的权重值。

例子:(1 - 4)

数据类型:

图形中交互式标记的可见性,指定为逻辑1真正的)或0或().集ShowMarker在图中隐藏交互标记。

数据类型:逻辑

交互标记的控件类型,指定为“InverseKinematics”“JointControl”.默认情况下,该图通过使用末端执行器设置为的逆运动学计算机器人的所有关节构型MarkerBodyName属性值。若要控制所选刚体上特定关节的位置,请将此属性设置为“JointControl”

数据类型:字符|字符串

交互标记的相对规模,指定为正的正实数。若要增加或减少图中标记的大小,请调整此属性。

数据类型:

目前配置的刚体树机器人模型,指定为n元向量。n非固定关节的数量是多少RigidBodyTree财产。

例子:[1 PI 0 0.5 3.156]'

数据类型:

存储的机器人配置,指定为n——- - - - - -p矩阵。矩阵的每一列都是一个存储的机器人配置。n非固定关节的数量是多少RigidBodyTree财产。p是存储的机器人配置的数量。要添加或删除存储的配置,请使用addConfigurationremoveConfigurations对象函数。

数据类型:

对象的功能

addConfiguration 存储当前配置
addConstraint 加入逆运动学约束
removeConfigurations StoredConfigurations财产
removeConstraints 去除逆运动学约束
showFigure 显示交互式刚体树形图

例子

全部折叠

使用interactiveRigidBodyTree对象在图形中手动移动机器人。该物体使用图中的交互式标记来跟踪不同刚体的所需姿态rigidBodyTree对象。

负载机器人模型

使用loadrobot函数访问所提供的机器人模型rigidBodyTree对象。

机器人=装载机器人(“阿特拉斯”);

可视化机器人和保存配置

创建一个交互式树对象和相关图形,指定加载的机器人模型和它的左手作为末端执行器。

viztree = interactiveRigidBodyTree(机器人,“MarkerBodyName”“l_hand”);

图交互式可视化包含一个轴对象。axis对象包含patch、line、surface类型的179个对象。这个物体代表骨盆。

点击并拖动交互标记来更改机器人配置。您可以单击并拖动任意轴进行线性运动,使用红色、绿色和蓝色圆圈绕轴旋转主体,并拖动交互式标记的中心以在3-D空间中定位它。

interactiveRigidBodyTree对象使用逆运动学来确定实现所需末端执行器姿态的配置。如果相关刚体不能到达标记点,则图形从逆运动学求解器中呈现最佳构型。

以编程方式设置当前配置。对象中非固定关节的数目RigidBodyTree配置财产。

currConfig = homeConfiguration(viztree.RigidBodyTree);currConfig(1:10) = [0.2201 -0.1319 0.2278 -0.3415 0.4996 ....0.0747 0.0377 0.0718 -0.8117 -0.0427]';viztree。配置= currConfig;

图交互式可视化包含一个轴对象。axis对象包含patch、line、surface类型的179个对象。这个物体代表骨盆。

中保存当前机器人配置StoredConfigurations财产。

addConfiguration (viztree)

若要将末端执行器切换到不同的刚体,请右键单击图中所需的刚体并选择将主体设置为标记体.使用此过程选择右手框架。

您还可以设置MarkerBodyName属性设置为特定的主体名称。

viztree。MarkerBodyName =“r_hand”

图交互式可视化包含一个轴对象。axis对象包含patch、line、surface类型的179个对象。这个物体代表骨盆。

将右手移到新位置。以编程方式设置配置。标记移动到末端执行器的新位置。

currConfig(1:18) = [-0.1350 -0.1498 -0.0167 -0.3415 0.4996 0.0747 0.0377 0.0718 -0.8117 -0.0427 0 0.4349 -0.5738 0.0563 -0.0095 0.0518 0.8762 -0.0895]';viztree。配置= currConfig;

图交互式可视化包含一个轴对象。axis对象包含patch、line、surface类型的179个对象。这个物体代表骨盆。

保存当前配置。

addConfiguration (viztree)

添加约束

默认情况下,机器人模型只尊重关节的极限rigidBodyJoint对象。RigidBodyTree财产。要添加约束,请生成机器人约束对象,并将它们指定为单元格数组约束财产。要查看机器人约束的列表,请参见逆运动学.为骨盆指定一个姿态目标,使其固定在原位。为右脚指定一个位置目标,将其提升到其当前位置的前面和前面。

fixedWaist = constraintPoseTarget(“骨盆”);raiseRightLeg = constraintPositionTarget(“r_foot”“TargetPosition”,[10 0 0.5]);

将这些约束应用到交互式刚体树对象作为单元格数组。结果图中的右腿会改变位置。

viztree。约束={固定腰抬高右腿};

图交互式可视化包含一个轴对象。axis对象包含patch、line、surface类型的179个对象。这个物体代表骨盆。

注意右腿位置的变化。也保存这个配置。

addConfiguration (viztree)

回放配置

要回放配置,迭代存储的配置索引,并在每次迭代中将当前配置设置为存储的配置列向量。因为构型存储为列向量,所以使用矩阵的第二维。

i = 1:size(viztree. storedconfigurations,2) viztree. storedconfigurations。Configuration = viztree.StoredConfigurations(:,i);暂停(0.5)结束

图交互式可视化包含一个轴对象。axis对象包含patch、line、surface类型的179个对象。这个物体代表骨盆。

使用interactiveRigidBodyTree对象可视化一个机器人模型,并交互式地创建路径点,并使用它们生成一个平滑的轨迹使用cubicpolytraj.有关更多信息,请参见interactiveRigidBodyTree对象和cubicpolytraj函数。

装载机器人模型

使用loadrobot函数访问所提供的机器人模型rigidBodyTree对象。

机器人=装载机器人(“abbIrb120”);

可视化机器人和保存配置

属性创建交互式树对象interactiveRigidBodyTree函数。默认情况下,交互标记被设置为中索引最高的正文RigidBodyTree财产。若要使用图形更改此属性,请右键单击刚体并选择将主体设置为标记体.另外,MarkerBodyName属性。interactiveRigidBodyTree可以使用名称-值对进行设置。

iRBT = interactiveRigidBodyTree(机器人);

图交互式可视化包含一个轴对象。axis对象包含34个类型为patch、line、surface的对象。该对象表示base_link。

交互添加配置

点击并拖动交互标记来更改机器人配置。您可以单击并拖动任意轴进行线性运动,使用红色、绿色和蓝色圆圈绕轴旋转主体,并拖动交互式标记的中心以在3-D空间中定位它。

interactiveRigidBodyTree对象使用逆运动学来确定实现所需末端执行器姿态的配置。如果相关刚体不能到达标记点,则图形从逆运动学求解器中呈现最佳构型。

当机器人处于所需的配置时,使用addConfiguration对象函数将配置添加到StoredConfiguration对象的属性。

在本例中,使用交互式标记和创建了6个路径点addConfiguration对象的功能。他们被保存在wayPoints.mat.存储的配置可以通过iRBT。StoredConfigurations

负载(“wayPts.mat”);

使用路径点生成平滑轨迹

使用cubicpolytraj函数生成路径点之间的平滑轨迹。定义与每个路点对应的时间点。定义生成轨迹的时间向量。的cubicpolyTraj函数为时间向量中的每个时间步生成一个配置tvec。

iRBT。StoredConfigurations = wayPts;%锚点TPTS = [0 2 4 6 8 10];%时间点Tvec = 0:0.1:10;%时间向量[q,qd,qdd,pp] = cubicpolytraj(iRBT.StoredConfigurations,tpts,tvec);

在轨迹上可视化机器人运动

定义模拟频率rateControl对象。使用showFigure函数可视化机器人模型并使用循环播放机器人的所有配置。

r = rateControl(10);iRBT。ShowMarker = false;隐藏标记showFigure (iRBT)i = 1:size(q',1) iRBT。配置= q(:,i); waitfor(r);结束

图交互式可视化包含一个轴对象。axis对象包含24个patch、line类型的对象。该对象表示base_link。

限制

  • 如果interactiveRigidBodyTree对象将在图形仍然打开时删除,图形的交互性将被禁用,并且图形的标题将被更新。

提示

  • 为了使具有复杂网格的复杂机器人模型可视化时的性能最大化,请确保启用了硬件加速OpenGL。默认为MATLAB®如果您的图形硬件支持,则使用硬件加速OpenGL。金宝app有关更多信息,请参见opengl函数。

R2020a中引入