主要内容

interactiveRigidBodyTree

与刚体树机器人模型

自从R2020a

描述

interactiveRigidBodyTree对象创建一个图,显示了一个使用一个机器人模型rigidBodyTree对象,并使您能够直接修改机器人配置使用一个交互式标记。的rigidBodyTree对象定义了不同的几何连接刚体在机器人模型和联合限制这些尸体。

使用逆运动学计算新配置,单击并拖动互动标记在图中。中心的标记支持拖拽标记金宝app,线性运动沿着特定的轴,并对每个轴旋转。你可以改变终端执行器通过不同的身体右键单击并选择体设置为标志的身体

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

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

创建

描述

例子

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

viztree= interactiveRigidBodyTree (机器人“帧”,“关闭”)关闭机器人各关节的坐标系坐标轴绘制模型。

viztree= interactiveRigidBodyTree (___、名称、值)集属性使用一个或多个名称-值对参数除了任何输入参数组合在以前的语法。在报价附上每个属性的名字。例如,“RigidBodyTree”,机器人创建一个交互式刚体树对象与指定的机器人模型。

属性

全部展开

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

你可以设置这个属性,当你创建对象。创建对象后,这个属性是只读的。

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

你可以设置这个属性,当你创建对象。创建对象后,这个属性是只读的。

名字与交互式标记相关的刚体,指定为一个字符串标量或特征向量。默认情况下,此属性设置为最高的身体指数RigidBodyTree财产。使用图来改变这个属性,右键单击一个刚体和选择体设置为标志的身体

例子:“r_foot”

数据类型:字符|字符串

这个属性是只读的。

目前提出的交互式标记,指定为一个4×4齐次变换矩阵。

数据类型:

这个属性是只读的。

刚体的姿态与交互式标记,指定为一个4×4齐次变换矩阵。

数据类型:

限制逆运动学求解程序,指定为一个单元阵列的一个或多个约束对象:

默认情况下,逆运动学解算器方面的共同限制RigidBodyTree财产。添加或删除约束机器人模型,使用addConstraintremoveConstraints对象的功能。或者,您可以指定一个新单元阵列的约束对象的属性。

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

数据类型:细胞

重量在方向和位置的目标构成,分别指定为一个双元素向量,(取向位置]

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

例子:(1 - 4)

数据类型:

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

数据类型:逻辑

控制交互式标记类型,指定为“InverseKinematics”“JointControl”。默认情况下,这个数字计算所有机器人的联合配置使用逆运动学的效应将结束MarkerBodyName属性值。控制一个特定关节的位置选择的刚体,设置该属性“JointControl”

数据类型:字符|字符串

交互式标记的相对规模,指定为一个正实数。增加或减少的大小标记在图中,这个属性调整。

数据类型:

当前配置刚体树的机器人模型,指定为一个n元向量。nnonfixed关节数量吗RigidBodyTree财产。

例子:(1π0 0.5 - 3.156)的

数据类型:

存储机器人配置,指定为一个n——- - - - - -p矩阵。矩阵的每一列是一个存储机器人配置。nnonfixed关节数量吗RigidBodyTree财产。p是存储机器人的数量配置。添加或删除存储配置,使用addConfigurationremoveConfigurations对象的函数,分别。

数据类型:

对象的功能

addConfiguration 存储当前配置
addConstraint 添加逆运动学约束
removeConfigurations 删除配置StoredConfigurations财产
removeConstraints 消除逆运动学约束
showFigure 节目互动刚体树图

例子

全部折叠

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

负载机器人模型

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

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

想象机器人并保存配置

创建一个交互式树对象和关联图,指定加载机器人模型和其左手效应。

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

图交互式可视化包含一个坐标轴对象。坐标轴对象包含X, Y ylabel包含179个对象类型的补丁,线,面。

单击并拖动互动标记改变机器人的配置。您可以单击并拖动任何轴的线性运动,身体一个轴旋转使用红色,绿色和蓝色的圆圈,拖的中心位置在三维空间的互动标记。

interactiveRigidBodyTree对象使用逆运动学来确定一个配置,达到所需的末端执行器构成。如果相关的刚体不能达到标记,图呈现的最佳配置的逆运动学解算器。

以编程方式设置当前配置。分配一个向量的长度等于nonfixed关节的数量RigidBodyTree配置财产。

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

图交互式可视化包含一个坐标轴对象。坐标轴对象包含X, Y ylabel包含179个对象类型的补丁,线,面。

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

addConfiguration (viztree)

末端执行器切换到另一个刚体,右键单击图并选择所需的身体体设置为标志的身体。使用这个过程选择右手坐标系。

你也可以设置MarkerBodyName财产的具体身体的名字。

viztree。MarkerBodyName =“r_hand”;

图交互式可视化包含一个坐标轴对象。坐标轴对象包含X, Y ylabel包含179个对象类型的补丁,线,面。

把右手移到一个新的位置。以编程方式设置的配置。结束的标记移动到新位置效应。

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

图交互式可视化包含一个坐标轴对象。坐标轴对象包含X, Y ylabel包含179个对象类型的补丁,线,面。

保存当前配置。

addConfiguration (viztree)

添加约束

默认情况下,机器人模型方面的共同限制rigidBodyJoint对象与RigidBodyTree财产。添加约束条件,生成机器人约束对象和指定的单元阵列约束财产。看到机器约束的列表,看看逆运动学。指定一个骨盆保持固定姿势目标中心位置。指定一个位置目标的右脚在前面前和高于其当前位置。

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

交互式应用这些约束刚体树对象作为单元阵列。右腿在结果图改变位置。

viztree。约束= {fixedWaist raiseRightLeg};

图交互式可视化包含一个坐标轴对象。坐标轴对象包含X, Y ylabel包含179个对象类型的补丁,线,面。

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

addConfiguration (viztree)

回放配置

回放配置,遍历索引和存储配置设置当前配置等于存储配置列向量在每个迭代。因为配置存储为列向量,使用第二个矩阵的维度。

i = 1:尺寸(viztree.StoredConfigurations, 2) viztree。配置= viztree.StoredConfigurations(:,我);暂停(0.5)结束

图交互式可视化包含一个坐标轴对象。坐标轴对象包含X, Y ylabel包含179个对象类型的补丁,线,面。

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

加载机器人模型

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

机器人= loadrobot (“abbIrb120”);

想象机器人并保存配置

创建一个交互式树对象使用interactiveRigidBodyTree函数。默认情况下,交互式标记设置为最高的身体指数RigidBodyTree财产。使用图来改变这个属性,右键单击一个刚体和选择体设置为标志的身体。另外,MarkerBodyName财产interactiveRigidBodyTree可以设置使用名称-值对。

iRBT = interactiveRigidBodyTree(机器人);

图交互式可视化包含一个坐标轴对象。坐标轴对象包含X, Y ylabel包含34个对象类型的补丁,线,面。

交互式地添加配置

单击并拖动互动标记改变机器人的配置。您可以单击并拖动任何轴的线性运动,身体一个轴旋转使用红色,绿色和蓝色的圆圈,拖的中心位置在三维空间的互动标记。

interactiveRigidBodyTree对象使用逆运动学来确定一个配置,达到所需的末端执行器构成。如果相关的刚体不能达到标记,图呈现的最佳配置的逆运动学解算器。

当机器人在使用所需的配置addConfiguration目标函数添加的配置StoredConfiguration对象的属性。

在这个例子中,使用交互式标记和创建6路点addConfiguration对象的功能。他们是保存在wayPoints.mat。可以使用访问存储配置iRBT.StoredConfigurations

负载(“wayPts.mat”);

使用路径点生成平滑的轨迹

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

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

想象机器人运动的轨迹

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

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

图交互式可视化包含一个坐标轴对象。坐标轴对象包含X, Y ylabel包含24块类型的对象。

限制

  • 如果interactiveRigidBodyTree对象被删除,而图仍然是开放的,图的交互性是禁用的,图的标题是更新。

提示

  • 最大化性能可视化复杂的机器人模型和复杂的网格,保证你启用硬件加速OpenGL。默认情况下,MATLAB®使用硬件加速OpenGL图形硬件是否支持它。金宝app有关更多信息,请参见opengl函数。

版本历史

介绍了R2020a