主要内容

inverseKinematics

创建逆运动求解器

描述

inverseKinematics系统对象™创建一个逆运动学(IK)求解器,基于指定的刚体树模型计算所需的末端执行器姿态的关节构型。为你的机器人创建一个刚体树模型刚性小组细胞类。该模型定义了求解器强制执行的所有关节约束。如果一个解是可能的,机器人模型中规定的关节限制是遵守的。

要指定除末端执行器姿态之外的更多约束,包括瞄准约束、位置界限或方向目标,请考虑使用GeneralizedInverseWinematics..此对象允许您计算MultiStraint IK解决方案。金宝搏官方网站

对于封闭式分析IK解决方案,请参阅金宝搏官方网站AnalyticalInverseWinematics.

为计算所需末端执行器姿态的关节构型:

  1. 创造inverseKinematics对象,并设置其属性。

  2. 使用参数调用对象,就像它是一个函数一样。

要了解有关系统对象如何工作的更多信息,请参阅什么是系统对象?

创建

描述

例子

我知道= underedkinematics.创建反向运动求解器。要使用求解器,请指定刚性的身体树模型刚性小组细胞财产。

我知道= underedkinematics(名称,价值创建具有一个或多个指定的附加选项的反向运动求解器名称,价值对论点。的名字是属性名称和价值是相应的价值。的名字必须出现在单引号内('')。您可以以任何顺序指定多个名称值对参数name1,value1,...,namen,valuen

属性

展开全部

除非另有说明,否则属性是不可努力,这意味着在调用对象后无法更改其值。当您调用它们时,对象锁定释放功能解锁它们。

如果属性是调节,您可以随时更改它的值。

有关更改属性值的详细信息,请参见在MATLAB中使用系统对象进行系统设计

刚体树模型,指定为刚性小组细胞目的。如果修改刚体树模型,请将刚性车身树重新分配到此属性。例如:

创建IK求解器并指定刚体树。

ik = underedkinematics(“RigidBodyTree”rigidbodytree)

修改刚体树模型。

addBody (rigidbodytree rigidBody (“界面”),'根据'

将刚性车身树重新分配给IK求解器。如果是求解器还是在修改刚体树模型之前调用函数,使用释放允许更改属性。

ik.rigidbodytree =刚性小牛肉;

求解逆运动学的算法,指定为'bfgsgradient分解'或者'levenbergmarquardt'.有关每种算法的详细信息,请参阅逆运动学算法

与指定算法关联的参数指定为结构。结构中的字段特定于算法。看求解器参数

用法

描述

例子

configsol.solInfo本土知识]= (Endeffector.构成重量initialGuess.找到一个联合配置,实现指定的末端效应器姿势。为配置和所需权重指定初始猜测,对六个组件的公差构成.与算法执行相关的解信息,solInfo,与联合配置解决方案一起返回,configsol.

输入参数

展开全部

末端执行器名称,指定为字符向量。执行器的末端必须是一个物体刚性小组细胞在中指定的对象inverseKinematics系统对象。

末端执行器姿态,指定为4 × 4齐次变换。控件中指定的刚体的期望位置和方向Endeffector.财产。

姿势公差的重量,指定为六元素矢量。前三个元素对应于所需姿势方向误差的权重。最后三个元素对应于错误的权重XYZ.所需姿势的位置。

初始猜测机器人配置,指定为结构阵列或向量。使用此初始猜测来帮助将求解器指导到所需的机器人配置中。解决方案不保证接近此初始猜测。

要使用向量形式,设置DataFormat分配的对象的属性刚性小组细胞财产,要么“行”或者“列”

输出参数

展开全部

机器人配置,作为结构数组返回。结构数组包含以下字段:

  • 联合名称- 字符向量,用于指定的关节名称刚性小组细胞机器人模型

  • 兼职- 相应关节的位置

该关节构型是在解公差内实现所需末端执行器姿态的计算解。

请注意

对于旋转关节,如果关节限制超过一系列2 *π,则返回的关节位置是最接近关节下界的位置。

要使用向量形式,设置DataFormat分配的对象的属性刚性小组细胞财产,要么“行”或者“列”

解决方案信息,作为结构返回。解决方案信息结构包含这些字段:

  • 迭代- 算法运行的迭代次数。

  • numrandomrestart.- 随机重启的数量,因为算法卡在局部最小值中。

  • poseerronorm.- 与所需的末端效应器姿势相比,解决方案的姿势误差的大小。

  • ExitFlag-代码提供了更多的算法执行细节和导致它返回的原因。有关每种算法类型的退出标志,请参见退出标志

  • 状态- 描述解决方案是否在公差范围内的字符向量('成功')或最佳的解决方案可以找到算法(“最好的”)。

对象功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为system的对象的系统资源obj.,使用此语法:

释放(obj)

展开全部

运行系统对象算法
释放 释放资源并允许对系统对象属性值和输入特征
重启 重置内部状态系统对象

例子

全部收缩

为机器人模型产生接头位置,以实现所需的末端效应位置。的inverseKinematics系统对象使用逆运动算法来解决有效的关节位置。

机器人负载的例子。的puma1机器人是一个刚性小组细胞具有六个转动关节的六轴机械臂的模型。

加载examplerobotsmat.showdetails (puma1)
-------------------- 机器人:(6)尸体Idx身体名称联合名称联合类型父母名字(Idx)孩子的名字(s ) --- --------- ---------- ---------- ---------------- ---------------- 1 L1 jnt1转动基地(0)L2 (2) 2 L2 jnt2转动L1 (1) L3 (3) 3 L3 jnt3转动L2 (2) L4 (4) 4, jnt4转动L3(3)一两百(5)5 L5 jnt5转动L4(4) 16种(6)6 16种jnt6转动L5 (5)--------------------

生成随机配置。获取从末端效应器(L6)的转换为该随机配置。将此变换用作末端执行器的目标姿势。显示此配置。

randconfig = puma1.randomconfiguration;tform = getTransform(puma1,randconfig,“哈佛”'根据');显示(puma1 randConfig);

创建一个inverseKinematics对象的puma1模型。为姿势的不同组件指定权重。使用比位置部件的方向角度的较低幅度重量。使用机器人的主页配置为初始猜测。

ik = underedkinematics(“RigidBodyTree”,puma1);重量= [0.25 0.25 0.25 1 1];initialguess = puma1.homeconfiguration;

计算关节位置使用我知道目的。

[configSoln, solnInfo] =动力学(“哈佛”,重量tform initialguess);

显示新生成的解决方案配置。该解决方案是一种略微不同的关节配置,实现相同的末端效应位置。多次调用我知道对象可以给出相似或非常不同的关节构型。

显示(puma1 configSoln);

兼容性考虑因素

展开全部

未来发布的行为变化

参考

[1] Badreddine,Hassan,Stefan Vandewalle和Johan Meyers。“顺序二次编程(SQP),用于湍流直接控制中的最佳控制。”计算物理学报.256(2014):1-16。DOI:10.1016 / J.JCP.2013.08.044。

[2] Bertsekas,Dimitri P.非线性规划.贝尔蒙特,马:雅典娜科学,1999。

[3]唐纳德金霉法。“达瓦顿可变度量方法的扩展到线性不等式和平等约束下的最大化。”暹罗杂志上的应用数学.卷。17,4(1969):739-64。DOI:10.1137 / 0117067。

[4] Nocedal,Jorge和Stephen Wright。数值优化.纽约,纽约:斯普林斯,2006年。

[5]苏吉哈拉,Tomomichi。"用Levenberg-Marquardt方法解无关逆运动学"机器人上的IEEE交易卷。27,第5号(2011):984-91。DOI:10.1109 / Tro.2011.2148230。

赵建民和诺曼·巴德勒。高度关联图形的非线性规划逆运动学定位美国计算机学会图形汇刊第13卷,第4期(1994):313-36。doi: 10.1145/195826.195827。

扩展功能

介绍了R2016b