主要内容

inverseKinematics

创建逆运动学求解器

描述

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

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

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

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

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

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

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

创建

描述

例子

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

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

属性

全部展开

除非另有说明,属性是nontunable,这意味着您不能在调用对象之后更改它们的值。对象在调用时锁定,而释放函数打开它们。

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

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

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

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

本土知识= inverseKinematics (“RigidBodyTree”rigidbodytree)

修改刚体树模型。

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

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

本土知识。RigidBodyTree = RigidBodyTree;

求解逆运动学的算法,指定为“BFGSGradientProjection”“LevenbergMarquardt”.各算法的详细介绍请参见逆运动学算法

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

使用

描述

例子

configSolsolInfo本土知识]= (endeffector构成权重initialguess找到达到指定末端执行器位姿的关节构型。为配置指定一个初始的猜测值,并在6个组件的公差上指定您想要的权重构成.与算法执行相关的解信息,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模型。为姿势的不同组成部分指定重量。使用一个比位置组件更低的方向角大小权重。使用机器人的家庭配置作为初始猜测。

本土知识= inverseKinematics (“RigidBodyTree”, puma1);权重= [0.25 0.25 0.25 1 1 1];initialguess = puma1.homeConfiguration;

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

[configSoln, solnInfo] =动力学(“哈佛”,重量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。

Dimitri P. Bertsekas非线性规划.马萨诸塞州贝尔蒙特:雅典娜科学公司,1999年。

[3]戈德法布,唐纳德。大卫东变度量法在线性不等式和等式约束下最大化的推广应用数学杂志.第17卷第4期(1969):739-64。doi: 10.1137 / 0117067。

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

[5]苏吉哈拉,Tomomichi。由Levenberg-Marquardt方法求解的无关逆运动学。IEEE机器人学报Vol. 27, No. 5(2011): 984-91。doi: 10.1109 / tro.2011.2148230。

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

扩展功能

介绍了R2016b