主要内容

逆运动学设计

设计逆运动学解算器、构型和路径点

描述

逆运动学设计可以为URDF机器人模型设计逆运动学求解器。您可以调整逆运动学求解器并添加约束以实现所需的行为。使用这个应用程序,你可以:

  • 从URDF文件或MATLAB工作区导入URDF机器人模型。

  • 调整逆运动学求解器和约束条件。

  • 创建联合配置并导出路径点。

  • 导出求解器设置,约束,和联合配置到MATLAB®工作区。

打开逆运动学设计器App

  • MATLAB工具条:在应用程序选项卡,在机器人与自主系统,点击逆运动学设计逆运动学设计器图标

  • MATLAB命令提示符:输入inverseKinematicsDesigner

例子

全部展开

这个例子展示了如何创建、加载和保存逆运动学设计器会话,以及将机器人加载到会话中。完整的文件附呈,以供参考iksessiondata.mat负载的会话inverseKinematicsDesigner函数或跟随此示例创建它。

创建会话

开放逆运动学设计通过使用inverseKinematicsDesigner函数。

inverseKinematicsDesigner

将机器人加载到会话中

使用loadrobot从命令窗口加载rigidBodyTree例如将通用UR5e放入工作区。importrobot还可以用来导入rigidBodyTree对象从任何机器人URDF文件。

uniUR5e = loadrobot (“universalUR5e”);

点击新会话并选择uniUR5e从对话框中的表格中,单击好吧.该表包含所有的rigidBodyTree工作区中的对象。如果您在表中没有看到您的对象,请验证它在您的工作区中,然后单击刷新

方法从机器人系统工具箱™附带的机器人模型列表中进行选择,从而加载机器人刚体的树下拉对话框和单击好吧

从提供的模型库加载机器人

现场帆布现在包含机器人模型,和现场的浏览器现在显示了机器人所有的刚体。

添加碰撞对象

对象中添加一个碰撞对象现场帆布,碰撞对象必须在工作区中。为了方便起见,本示例提供了一个简单的框来使用。有关创建碰撞对象的更多信息,请参见collisionMeshcollisionBoxcollisionSphere,collisionCylinder

加载collisionobjectMAT文件,它将保存一个collisionBox命名盒子你的工作空间。点击添加碰撞对象,并选择盒子,从桌子上。点击好吧把它加到现场帆布

现场帆布现在包含机器人和碰撞对象。我们将在本例中保留该对象,但如果您想删除碰撞对象,请在现场的浏览器场景,右键单击碰撞对象的名称,单击删除

可以查看对象的位置和欧拉方向现场检验员中选择对象时现场帆布现场的浏览器.列出的属性将根据所选碰撞对象的类型而更改。

保存会话

单击保存此会话保存会话.如果这是第一次保存会话,请命名该文件并选择保存它的位置。该文件将被保存为一个包含所有会话数据和设置的MAT (*. MAT)文件。

加载保存会话

单击,加载会话文件公开会议逆运动学设计应用程序或将MAT文件指定为inverseKinematicsDesigner.本示例中提供了此会话的一个示例,如下所示iksessiondata.mat

inverseKinematicsDesigner (“iksessiondata.mat”

的用法现场帆布然后在里面移动一个机器人逆运动学设计应用程序。

载入现有的会话(iksessiondata.mat)或参考Create Inverse Kinematics Designer Session示例来创建会话。

inverseKinematicsDesigner

现场帆布控制

中的坐标轴工具栏现场帆布来控制视图。

旋转的现场帆布,选择旋转3D按钮,并在场景中单击和拖动。

点击平移按钮,在场景中点击并拖动以在现场帆布

选择“放大”或“缩小”按钮,然后单击并向上或向下拖动以放大或缩小现场帆布分别。

单击Restore View按钮以恢复到原始的默认视图。

移动机器人

移动机器人使用约束,如预设的标记位姿目标约束。Marker - Pose - Target约束是用来移动机器人的最简单的约束。这个约束在机器人模型的最后一个身体上设置一个目标姿势。在本例中,标记体设置为tool0.控件中的红色、绿色和蓝色线性和圆形指示器显示在所选标记体的顶部现场帆布.点击和拖动线性或圆形指示器将分别改变目标位置和欧拉方向。的左下角所示的轴颜色对应现场帆布

moverobot_ikd.gif

点击标记构成约束打开约束选项卡。从约束选项卡,以米为单位设置笛卡尔位置,以度为单位设置欧拉方向,以及位置和方向的权重和公差。标记体可以在约束选项卡下终端执行器的身体列表或在标记的身体列表中逆运动学选项卡。点击应用保存更改,然后单击密切的约束退出约束选项卡。注意,指定的欧拉角是用XYZ序列。

控件中的“标记姿态目标”约束旁边的复选框,也可以打开或关闭“标记姿态目标”约束限制浏览器

解决方案的细节

当标记位姿目标被移动时,它设置目标位姿,逆向运动学求解器求解所选标记体达到目标位姿的配置。如果无法找到目标姿态的解,机器人将移动到最佳可用解,而标记体将不移动到标记姿态目标。的约束图标可以直观地识别这种解决方案限制浏览器.带有红色x的图标表示未满足约束,而绿色复选框表示正在满足约束。

若要查找有关求解器未能到达解决方案的原因的更多信息,请单击报告状态以查看求解器的解决方案的细节。的数量迭代而且随机重启次数列出求解器分别执行的次数。的约束违反显示可以在命令窗口中显示的所有冲突的结构数组。状态将显示成功如果求解器成功求解目标姿势,或者最佳可用如果解算器显示的是它找到的最佳可用解,如果它不能达到目标姿势。Exit Flag提供了关于特定求解器算法执行的更多细节。看到逆运动学算法有关不同出口标志类型的详细信息。

若要排除求解器无法到达解决方案的故障,请参见解决约束冲突对于一些技巧。

这个例子展示了如何使用逆运动学设计方法创建关节配置并检查碰撞现场检验员.此示例使用来自的数据和技能创建逆运动学设计器会话,使用场景画布和移动机器人.在继续之前请参考这些示例。

负载会话

使用inverseKinematicsDesigneriksessiondata.mat会话文件加载机器人与场景中的基本碰撞对象。

inverseKinematicsDesigner

创建配置

使用配置面板创建、修改和查看配置信息。

移动机器人前,请单击存储配置以保存机器人当前的关节配置,如图所示现场帆布.的表中添加配置配置面板的默认配置名称碰撞状态,价值作为一个向量。每个配置的名称和值都可以通过双击各自的元素进行编辑。将此配置重命名为首页,并将其价值[0.00 0.00 0.00 0.00 0.00 0.00 0.00]

Snag_671cc01d.png

创建另一个配置,但这一次使它与盒子碰撞。设置末端执行器到盒子的中心在(-0.5 - 0.5 0)使用标记位姿约束,并存储配置。当需要在多个配置之间切换视图时,选中一个配置,单击快速配置或者单击“前进”或“后退”按钮切换当前配置。

检查碰撞

点击检查碰撞>检查所有的配置更新所有存储配置的碰撞状态。选择需要检查的配置,单击快速配置,然后单击检查碰撞>检查当前配置更新碰撞状态当前所选配置的。

碰撞检查后,碰撞状态的第一和第二配置包含通过而且失败分别。选择碰撞检查失败的配置。那些尸体现场的浏览器对所选配置进行更新,以显示红色x或绿色检查图标,分别表示主体发生碰撞或无碰撞。标记为碰撞的车辆也将在现场帆布.请注意,法兰而且tool0显示为无碰撞,即使它们在位置上似乎是碰撞的。这是因为这些主体只是框架,不包含碰撞网格。如果您打算检查碰撞,请在导入任何机器人之前确保机器人的物理身体包含碰撞网格。

选择该框,或者在现场的浏览器,或在现场帆布,然后检查窗格。的窗格包含位置、方向、碰撞状态,以及自上次碰撞检查以来所有已知碰撞的列表。的已知的碰撞列表显示与所选物体碰撞的所有物体。从列表中选择任意一个主体并单击选择检查身体将开关现场检验员的身体。

创建配置路径

要创建路径,需要将配置按顺序添加到表中。由于第二个配置与方框冲突,请选中它并单击delete。

设置目标标记的姿势在后面的盒子(-0.9 0.0 0.1),并保存配置。此配置将是目标配置,因此将其重命名为目标

快速配置首页在at框上添加一个附加配置(-0.5 0.5 0.5)充当…之间的中间结构首页而且目标.如果一个配置需要修改,捕捉到该配置,调整目标标记姿势,保存一个新的配置,并删除旧的配置。单击移动配置按钮以移动新配置首页而且目标配置。

点击检查碰撞>检查所有的配置检查所有的配置是否发生碰撞。如果配置不通过,请根据需要进行调整。

将配置导出为路径点

保存会话也将保存会话中存储的配置,但是要将配置作为路径点导出到MATLAB™工作区,请单击出口>配置.选择要导出的所有配置,在中指定路径点矩阵的名称路径矩阵的名字并点击出口.检查工作区中包含路径点的矩阵。注意,路径点矩阵的大小取决于导出的配置数和机器人的关节数,并将以行格式导出。本例的路径点矩阵的维数是3x6。

相关的例子

参数

使用逆运动学选项卡来管理会话、添加和编辑约束、检查配置冲突、导入和导出求解器、约束和配置。只有在创建或加载会话之后,此选项卡中的参数和按钮才可用。

参数/按钮 描述
新会话

点击新会话方法从工作空间或机器人库中的机器人列表中加载指定的机器人新会话对话框。

公开会议

点击公开会议加载已保存的会话mat文件。

保存会话

点击保存会话将当前会话保存为一个mat文件。

进口
添加碰撞对象

点击添加碰撞对象方法将碰撞对象从工作区添加到场景中添加碰撞对象对话框。

添加约束

点击添加约束为逆运动学求解器添加约束约束选项卡。

编辑约束

点击编辑约束来编辑所选求解器约束约束选项卡。

刷新解算器

点击刷新解算器以当前构型作为初始猜想,运行逆运动学求解器。

解算器设置

点击解算器设置来编辑逆运动学求解器设置解算器选项卡。

报告状态

点击报告状态来查看最新的逆运动学求解器的解的状态解决方案报告对话框。

标记构成约束

点击标记构成约束来编辑标记姿态目标约束选项卡。

标记的身体

从装载机器人模型中要受标记位姿目标约束约束的物体列表中选择一个物体。默认情况下,标记的身体设置为机器人模型中的最后一个主体。

检查碰撞
  • 点击检查碰撞>检查当前配置检查与场景中碰撞对象的碰撞的当前配置。

  • 点击检查碰撞>检查所有配置检查所有存储的配置是否与场景中的碰撞对象发生碰撞。

  • 选择忽略Self-Collisions忽略机器人身体之间的碰撞。

出口
  • 点击导出>求解器和约束方法将当前求解器和约束作为对象导出到工作区导出求解器和约束对话框。

  • 点击出口>配置导出配置信息配置面板将工作区作为矩阵使用出口中转地点对话框。

这些参数指定了逆运动学求解器的设置。要访问这些参数,请打开解算器选项卡。要打开“求解器”选项卡,在“逆运动学”选项卡上,选择解算器设置

参数 描述
规划求解算法

逆运动学求解算法,指定为以下选项之一:

  • 蓄热梯度投影(默认)

  • Levenberg-Marquardt

有关如何选择求解器的更多信息,请参见选择一种算法

马克斯迭代 逆运动学求解器要运行的最大迭代次数,指定为正整数。默认是50
最大时间

逆运动学求解器搜索解的最大时间,指定为正标量,单位为秒。默认是5

实施联合限制

选择设置逆运动学求解器,从机器人模型执行关节限制。默认是

有关执行联合限制的详细信息,请参见解算器参数

允许随机重新启动

选择允许逆运动学求解器以不同的随机生成的初始猜测重新启动,如果算法接近一个不满足约束的解。默认是

有关执行联合限制的详细信息,请参见解算器参数

点击重置设置>重置设置而且重置设置>重置为默认设置将逆运动学求解器设置分别重置为上一次存储的值和默认设置。

编辑解算器设置后,单击适用于解算器对当前的逆运动学求解器进行修改。

点击添加约束逆运动学选项卡以打开约束选项卡来创建一个约束。设置约束的名称并选择所需的约束。的约束TAB还包含一个额外的部分,其中包含相应选定约束的参数:

约束参数设置完成后,单击应用以保存您的更改和密切的约束.所有未保存的更改将丢失。

点击构成约束约束选项卡以打开构成约束TAB节来创建约束。

参数 描述
终端执行器的身体 末端执行器主体,指定为从装载机器人模型中的主体列表中的一个选择。默认设置为加载的机器人模型中的最后一个主体。
参考的身体 引用体,指定为从装载机器人模型中的体列表中的一个选择。默认设置为装载的机器人模型中的第一个主体。
X 目标x末端执行器在参考坐标系中的位置参考的身体,以米为单位的标量表示。默认是0
Y 目标y末端执行器在参考坐标系中的位置参考的身体,以米为单位的标量表示。默认是0
Z 目标z末端执行器在参考坐标系中的位置参考的身体,以米为单位的标量表示。默认是0
欧拉X 目标欧拉x所述末端执行器体在参考坐标系中的旋转参考的身体,指定为一个以度为单位的标量。默认是0
欧拉Y 目标欧拉y所述末端执行器体在参考坐标系中的旋转参考的身体,指定为一个以度为单位的标量。默认是0
欧拉Z 目标欧拉z所述末端执行器体在参考坐标系中的旋转参考的身体,指定为一个以度为单位的标量。默认是0
位置公差 末端执行器位置的公差,指定为非负标量,单位为米。默认是0.01
位置重量 末端执行器位置的权值,指定为非负标量。默认是1
定向公差 末端执行器方向的公差,指定为以度为单位的非负标量。默认是1
取向的体重 末端执行器方向的权值,指定为非负标量。默认是1

点击笛卡尔的边界约束约束选项卡以打开笛卡尔的边界约束TAB节来创建约束。

参数 描述
终端执行器的身体 末端执行器主体,指定为从装载机器人模型中的主体列表中的一个选择。默认设置为加载的机器人模型中的最后一个主体。
参考的身体 引用体,指定为从装载机器人模型中的体列表中的一个选择。默认设置为装载的机器人模型中的第一个主体。
X 目标x末端执行器在参考坐标系中的位置参考的身体,以米为单位的标量表示。默认是0
Y 目标y末端执行器在参考坐标系中的位置参考的身体,以米为单位的标量表示。默认是0
Z 目标z末端执行器在参考坐标系中的位置参考的身体,以米为单位的标量表示。默认是0
欧拉X 目标欧拉x所述末端执行器体在参考坐标系中的旋转参考的身体,指定为一个以度为单位的标量。默认是0
欧拉Y 目标欧拉y所述末端执行器体在参考坐标系中的旋转参考的身体,指定为一个以度为单位的标量。默认是0
欧拉Z 目标欧拉z所述末端执行器体在参考坐标系中的旋转参考的身体,指定为一个以度为单位的标量。默认是0
X分钟 最低x约束末端执行器位置相对于参考坐标系的参考的身体,以米为单位的标量表示。默认是-0.5
Y敏 最低y约束末端执行器位置相对于参考坐标系的参考的身体,以米为单位的标量表示。默认是-0.5
Z分 最低z约束末端执行器位置相对于参考坐标系的参考的身体,以米为单位的标量表示。默认是-0.5
X最大值 最大x约束末端执行器位置相对于参考坐标系的参考的身体,以米为单位的标量表示。默认是0.5
Y马克斯 最大y约束末端执行器位置相对于参考坐标系的参考的身体,以米为单位的标量表示。默认是0.5
Z马克斯 最大z约束末端执行器位置相对于参考坐标系的参考的身体,以米为单位的标量表示。默认是0.5
X重量 约束的权重x有界的,指定为标量。默认是1
Y重量 约束的权重y有界的,指定为标量。默认是1
Z重量 约束的权重z有界的,指定为标量。默认是1

点击目标约束约束选项卡以打开目标约束TAB节来创建约束。

参数 描述
终端执行器的身体 末端执行器主体,指定为从装载机器人模型中的主体列表中的一个选择。默认设置为加载的机器人模型中的最后一个主体。
参考的身体 引用体,指定为从装载机器人模型中的体列表中的一个选择。默认设置为装载的机器人模型中的第一个主体。
X目标 目标x位置相对于参考的身体,以米为单位的标量表示。默认是0
Y的目标 目标y位置相对于参考的身体,以米为单位的标量表示。默认是0
Z目标 目标z位置相对于参考的身体,以米为单位的标量表示。默认是0
角公差 允许的最大角度公差,指定为以度为单位的非负标量。默认是1
限制重量 约束的权值,指定为标量。默认是1

点击联合边界约束约束选项卡以打开联合边界约束TAB节来创建约束。

参数 描述
上联合限制 上关节极限角,用a表示N-元素角的行向量,单位为度,其中N为机器人模型中活动关节的个数。默认是180 * 1 (1, N)
降低关节限制 下关节极限角,用a表示N-元素角的行向量,单位为度,其中N为机器人模型中活动关节的个数。默认是-180 * 1 (1, N)
联合限制重量 关节极限重量,指定为N-元素行向量N为机器人模型中活动关节的个数。默认是(1, N)

开始新的会话,并选择机器人模型作为rigidBodyTree要么从刚体的树列表或MATLAB工作区。要将机器人导入工作空间,请使用loadrobot函数或importrobot函数。

有关如何创建刚体树的更多信息,请参见建立基本刚体树模型

有关机器人系统工具箱™中包含的所有刚体树的完整列表,请参阅robotname输入的loadrobot

从MATLAB工作区中添加碰撞网格,指定为collisionBoxcollisionCylindercollisionSphere,或collisionMesh对象。的添加碰撞对象对话框可通过单击进入添加碰撞对象逆运动学选项卡。

从MATLAB工作空间导入逆运动学求解器,指定为ageneralizedInverseKinematics,或inverseKinematics对象。“工作区”中的求解器出现在可用的解决者表格选择解算器并单击进口将求解器导入逆运动学设计如果工作区中的求解器没有出现在可用的解决者表,点击刷新

从MATLAB工作区导入联合配置,指定为——- - - - - -N其中的双精度矩阵是构型的个数,和N是机器人中可移动关节的个数。工作区中的配置数据出现在工作区中的配置表格选择配置数据,单击进口将配置数据导入逆运动学设计应用程序。

如果工作区中的配置没有出现在工作区中的配置表,点击刷新

从工作区导入逆运动学约束,指定为constraintAimingconstraintPoseTargetconstraintCartesianBounds,或constraintJointBounds对象。中的约束对象出现在工作区中的配置表格选择所需的约束对象并单击进口将约束导入逆运动学设计应用程序。

如果工作区中的配置没有出现在在工作区中约束对象表,点击刷新

更改求解器和约束导出设置,将求解器和约束导出到MATLAB。要访问这些参数,在逆运动学选项卡上,选择导出>求解器和约束.完成所有设置和选择后,单击出口将求解器和约束导出到工作区。

参数 描述
出口解算器 选择在导出时包含逆运动学求解器。默认是
解算器名称 逆运动学求解器的名称。默认是ikSolver
出口限制 选择在导出时包含求解器约束。默认是
限制单元格数组名称

求解器约束单元格数组的名称,指定为字符串。默认是ikConstraints

若要启用此参数,请选择出口限制参数。

可用的约束

包含求解器约束的表,列出每个约束的名称、大小和类。从该表中选择约束并单击出口将约束导出到工作区。

若要启用此参数,请选择出口限制参数。

使用“导出路径点”对话框将配置导出为路径点。要访问这些参数,在逆运动学选项卡上,选择出口>配置.选择完成后,单击出口将路径点导出为——- - - - - -N数据类型矩阵到MATLAB工作区,其中是航路点的个数,和N为机器人中活动关节的个数。

参数 描述
路径矩阵的名字 路径点矩阵的名称。默认是waypointData
可用配置

包含可用配置的表,列出每个约束的名称、大小和类。从该表中选择配置并单击出口将配置作为路径点导出到工作区。

在“解决方案报告”对话框中查看最新的逆运动学解决方案的详细信息。要访问这些参数,在逆运动学选项卡上,选择报告状态

这些参数是只读的。

参数 描述
迭代 实现求解结果所需的迭代次数。
随机重启次数

解决方案随机重新启动的次数。当算法接近不满足约束的解时,将触发随机重启。求解器以随机生成的初始猜测重新启动。

约束违反

约束违反,表示为1 × -N结构数组,N会话中启用的约束的数量。选择1 xN结构体数组在命令窗口中打印每个违反约束的详细信息。看到约束违反的格式为更多的细节。

状态

解决方案的状态,表示为其中之一成功最佳可用

成功指示求解器成功达到满足所有约束的配置。

最佳可用指示解算器没有达到满足所有约束的配置,并显示它所能达到的最佳可用配置。

出口标志 解算器的退出标志。看到出口标志为更多的信息。

编程使用

全部展开

inverseKinematicsDesigner打开逆运动学设计应用程序。

inverseKinematicsDesigner (sessionFileName打开逆运动学设计app并加载之前从app中保存的指定的逆运动学会话MAT文件。

更多关于

全部展开

版本历史

介绍了R2022a

Baidu
map