主要内容

inverseKinematics

创建逆运动学求解器

描述

inverseKinematics系统对象™创建一个逆运动学(IK)求解器,根据指定的刚体树模型计算所需末端执行器姿态的关节配置。为您的机器人创建一个刚体树模型rigidBodyTree类。这个模型定义了求解器强制执行的所有联合约束。如果可行,则服从机器人模型中指定的关节极限。

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

有关封闭形式的解析IK解,请参见金宝搏官方网站analyticalInverseKinematics

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

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

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

有关系统对象如何工作的详细信息,请参见什么是系统对象?

创建

描述

例子

本土知识= inverseKinematics创建一个逆运动学求解器。方法中指定刚体树模型,才能使用求解器RigidBodyTree财产。

本土知识= inverseKinematics (名称,值用一个或多个指定的附加选项创建逆运动学求解器名称,值对参数。名字属性名和价值对应的值。名字必须出现在单引号内().您可以以任意顺序指定多个名称-值对参数Name1, Value1,…,的家

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放功能解锁它们。

如果属性为可调,您可以随时更改其值。

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

刚体树模型,指定为rigidBodyTree对象。如果您修改了刚体树模型,请将刚体树重新分配给此属性。例如:

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

ik =逆运动学(“RigidBodyTree”rigidbodytree)

修正刚体树模型。

addBody (rigidbodytree rigidBody (“界面”),“基地”

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

本土知识。RigidBodyTree =刚体树;

求解逆运动学的算法,指定为二者之一“BFGSGradientProjection”“LevenbergMarquardt”.具体算法请参见逆运动学算法

与指定算法相关联的参数,以结构形式指定。结构中的字段是特定于算法的。看到解算器参数

使用

描述

例子

configSolsolInfo= ik(endeffector构成权重initialguess找到实现指定末端执行器姿态的关节构型。的六个组成部分的公差上指定一个初始的猜测配置和你想要的权重构成.与算法执行相关的解信息,solInfo,返回联合构型解,configSol

输入参数

全部展开

末端执行器名称,指定为字符向量。末端执行器必须是一个体上的rigidBodyTree对象中指定的inverseKinematics系统对象。

末端执行器姿态,指定为一个4乘4齐次变换。方法中指定的刚体的期望位置和方向endeffector财产。

位姿公差的权重,指定为六元素向量。前三个元素对应于所需姿态的方向误差权重。最后三个元素对应于误差的权重xyz想要的姿势的位置。

机器人构型的初始猜测,指定为结构数组或向量。使用这个初始猜测来帮助求解器得到一个所需的机器人配置。解决方案不能保证接近这个最初的猜测。

要使用向量形式,请设置DataFormat属性中赋值的对象的RigidBodyTree属性“行”“列”

输出参数

全部展开

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

  • JointName属性中指定的关节名称的字符向量RigidBodyTree机器人模型

  • JointPosition-对应的关节位置

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

请注意

对于转动关节,如果关节极限超过的范围2 *π,此时关节位置发生包覆,则返回的关节位置为最接近关节下界的位置。

要使用向量形式,请设置DataFormat属性中赋值的对象的RigidBodyTree属性“行”“列”

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

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

  • NumRandomRestarts-由于算法卡在局部最小值而随机重启的次数。

  • PoseErrorNorm-与期望的末端执行器位姿相比,解的位姿误差的大小。

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

  • 状态-描述溶液是否在公差范围内的字符向量(“成功”)或算法能找到的最佳可能解(“最好的”).

对象的功能

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

发行版(obj)

全部展开

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

例子

全部折叠

生成机器人模型的关节位置,以实现所需的末端执行器位置。的inverseKinematics系统对象采用逆运动学算法求解有效关节位置。

加载示例机器人。的puma1机器人是一个rigidBodyTree具有六个转动关节的六轴机械臂模型。

负载exampleRobots.matshowdetails (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);

图中包含一个轴对象。axis对象包含13个类型为patch、line的对象。这些物体代表基,L1, L2, L3, L4, L5, L6。

创建一个inverseKinematics对象的puma1模型。为姿态的不同组成部分指定权重。为方向角使用比位置分量更低的量级权重。使用机器人的家庭配置作为初始猜测。

ik =逆运动学(“RigidBodyTree”, puma1);权重= [0.25 0.25 0.25 1 1 1];initialguess = puma1.homeConfiguration;

计算关节位置使用本土知识对象。

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

显示新生成的解决方案配置。解决方案是稍微不同的关节配置,以实现相同的末端执行器位置。对本土知识对象可以给出相似或非常不同的关节构型。

显示(puma1 configSoln);

图中包含一个轴对象。axis对象包含13个类型为patch、line的对象。这些物体代表基,L1, L2, L3, L4, L5, L6。

参考文献

Badreddine, Hassan, Stefan Vandewalle和Johan Meyers。紊流直接数值模拟中最优控制的顺序二次规划(SQP)计算物理杂志.256(2014): 1-16。doi: 10.1016 / j.jcp.2013.08.044。

[2]贝尔采卡斯,Dimitri P。非线性规划.贝尔蒙特,马萨诸塞州:雅典娜科学,1999年。

Goldfarb, Donald。Davidon的变量度量方法在线性不等式和等式约束下的最大化的扩展应用数学杂志.第17卷第4期(1969):739-64。doi: 10.1137 / 0117067。

Nocedal, Jorge,和Stephen Wright。数值优化.纽约,纽约州:施普林格,2006。

[5]杉原,友道。用Levenberg-Marquardt方法求解无相关逆运动学IEEE机器人汇刊Vol. 27 No. 5(2011): 984-91。doi: 10.1109 / tro.2011.2148230。

[6]赵建民和Norman I. Badler。高铰接图形的逆运动学定位使用非线性规划。ACM图形学汇刊第13卷第4期(1994):313-36。doi: 10.1145/195826.195827。

扩展功能

版本历史

在R2016b中引入

全部展开

在未来的版本中改变行为