主要内容

generalizedInverseKinematics

创建多约束逆运动学求解器

描述

generalizedInverseKinematics系统对象™ 使用一组运动学约束计算由指定的刚体树模型的关节配置rigidBodyTree对象。的generalizedInverseKinematics对象使用非线性求解器来满足约束条件或达到最佳逼近。

指定约束类型,ConstraintInputs,在调用对象之前。若要在调用对象之后更改约束输入,请调用释放(gik

将约束输入指定为约束对象并调用generalizedInverseKinematics将这些对象传递到其中。若要创建约束对象,请使用以下对象:

如果你唯一的约束是末端执行器的位置和方向,考虑使用逆线性作为你的解算器。

有关闭合形式解析逆运动学解决方案,请参见金宝搏官方网站分析线性与线性

要求解广义逆运动学约束,请执行以下操作:

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

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

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

创造

描述

例子

gik=广义微分方程返回一个没有指定刚体树模型的广义逆运动学求解器。指定一个rigidBodyTree模型和ConstraintInputs属性,然后再使用此解算器。

gik=广义微分方程('RigidBodyTree“rigidbodytree,”ConstraintInputs”,inputTypes)返回具有刚体树模型和指定的期望约束输入的广义逆运动学求解器。

gik= generalizedInverseKinematics (名称,值返回广义反向运动学解算器,其中每个指定的特性名称由一个或多个属性设置为指定值名称,值对参数。名称必须出现在单引号内('').可以以任意顺序指定多个名称-值对参数Name1, Value1,…,的家

性质

全部展开

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

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

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

此属性是只读的。

约束输入的数量,指定为标量。属性中指定的约束类型的数量ConstraintInputs财产。

约束输入类型,指定为字符向量的单元格数组。可能的约束输入类型及其关联的约束对象包括:

使用约束对象指定所需的参数,并在调用对象时将这些对象类型传递到对象中。例如:

建立广义逆运动学求解器对象。指定RigidBodyTreeConstraintInputs财产。

gik=广义微分方程组(...“RigidBodyTree”rigidbodytree,“ConstraintInputs”,{“位置”“瞄准”});

创建相应的约束对象。

positionTgt = constraintPositionTarget (“left_palm”);aimConst = constraintAiming (“right_palm”);

将约束对象传递给求解器对象并给出初始猜测。

configSol = gik (initialGuess positionTgt aimConst);

刚体树模型,指定为rigidBodyTree对象。在使用解算器之前定义此属性。如果修改刚体树模型,请将刚体树重新指定给此属性。例如:

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

gik=广义微分方程组(...“RigidBodyTree”rigidbodytree,“ConstraintInputs”,{“位置”“瞄准”});

修改刚体树模型。

addBody (rigidbodytree rigidBody (“body1”),“基地”

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

gik。RigidBodyTree = RigidBodyTree;

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

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

使用

描述

配置溶胶solInfo) = gik (initialguessconstraintObj,…,constraintObjN查找关节配置,配置溶胶,基于初始猜测和逗号分隔的约束描述对象列表。约束描述的数量取决于ConstraintInputs财产。

输入参数

全部展开

机器人配置的初始猜想,指定为结构数组或向量。的价值initialguess取决于DataFormat属性中指定的对象的RigidBodyTree属性中指定的gik

使用这个初始猜测来引导求解器找到目标机器人的配置。然而,解决方案不能保证接近这个最初的猜测。

属性定义的约束描述ConstraintInputs的属性gik,指定为一个或多个约束对象:

输出参数

全部展开

作为结构数组或向量返回的机器人配置解决方案取决于DataFormat属性中指定的对象的RigidBodyTree属性中指定的gik

结构数组包含以下字段:

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

  • 接合位置-对应关节的位置

向量输出是一个关节位置的数组接合位置对于结构输出。

此关节配置是在解决方案公差范围内实现目标末端效应器姿势的计算解决方案。

请注意

对于旋转运动类型,如果运动类型限制超过2*pi,关节位置缠绕发生时,返回的关节位置是最接近关节下界的位置。

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

  • 迭代-解算器运行的迭代次数。

  • NumRandomRestarts-由于求解器陷入局部最小值而导致的随机重新启动的次数。

  • ConstraintViolation—约束的信息,以结构数组的形式返回。数组中的每个结构都有以下字段:

    • 类型:对应约束输入的类型,如ConstraintInputs财产。

    • 违反:对应约束类型的约束冲突向量。0指示满足约束。

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

  • 状态-描述解决方案是否在每个约束所定义的公差范围内的字符向量(“成功”)。如果解决方案超出公差范围,则给出解算器可能找到的最佳解决方案(“最佳可用”).

对象的功能

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

发行版(obj)

全部展开

系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 使内部状态复位系统对象

例子

全部折叠

创建广义反向运动学解算器,将机械臂固定在特定位置并指向机器人基座。创建约束对象以将必要的约束参数传递到解算器中。

加载预定义的KUKA LBR机器人模型,指定为rigidBodyTree对象。

负载exampleRobots.matlbr

创建系统对象™ 用于求解广义逆运动学。

gik=广义微分方程;

配置System对象以使用KUKA LBR机器人。

gik。RigidBodyTree = lbr;

告诉解算器期望定位目标对象和一个constraintAiming约束位置目标对象作为约束输入。

gik。ConstraintInputs = {“位置”“瞄准”};

创建两个约束对象。

  1. 以身体的起源命名tool0位于(0.0 0.5 0.5)相对于机器人的基本框架。

  2. z-命名的主体的轴tool0指向机器人基架的原点。

posTgt=约束位置目标(“tool0”);posTgt。目标位置= [0.0 0.5 0.5];aimCon = constraintAiming (“tool0”);aimCon。TargetPoint = [0.0 0.0 0.0];

找到满足约束条件的配置。属性中指定的约束对象的顺序必须将它们传递给System对象ConstraintInputs财产。指定一个机器人配置的初始猜测。

q0 = homeConfiguration (lbr);解算器的初始猜测[q, solutionInfo] = gik (q0处,posTgt aimCon);

可视化求解器返回的配置。

显示(lbr q);标题([“规划求解状态:”[0.75 0.75 0.75 -0.5 1])

图中包含一个轴对象。标题为“Solver status: success”的axis对象包含19个类型为patch, line的对象。这些对象表示base_link, link_1, link_2, link_3, link_4, link_5, link_6, link_7, tool0, base。

绘制一条从目标位置到基地原点的线段。The origin of Thetool0帧与线段的一端重合,且其z-axis与线段对齐。

持有在…上[0.0 0.0],[0.5 0.0],[0.5 0.0],“--o”)持有

图中包含一个Axis对象。标题解算器状态为“成功”的Axis对象包含20个patch、line类型的对象。这些对象表示基本链接、链接链接1、链接2、链接3、链接4、链接5、链接6、链接7、工具0、基本。

兼容性考虑

全部展开

未来版本中的行为改变

扩展能力

介绍了R2017a