主要内容

generalizedInverseKinematics

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

描述

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

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

将约束输入指定为约束对象和调用generalizedInverseKinematics把这些物体传递进去。要创建约束对象,请使用以下对象:

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

关于封闭形式的解析逆运动学解,见金宝搏官方网站analyticalInverseKinematics

求解广义逆运动学约束:

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

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

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

创建

描述

例子

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

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

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

属性

全部展开

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

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

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

此属性是只读的。

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

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

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

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

gik = generalizedInverseKinematics (...“RigidBodyTree”rigidbodytree,“ConstraintInputs”, {“位置”“目标”});

创建相应的约束对象。

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

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

configSol = gik (initialGuess positionTgt aimConst);

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

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

gik = generalizedInverseKinematics (...“RigidBodyTree”rigidbodytree,“ConstraintInputs”, {“位置”“目标”});

修改刚体树模型。

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

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

gik。RigidBodyTree = RigidBodyTree;

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

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

使用

描述

configSolsolInfo) = gik (initialguessconstraintObj,…,constraintObjN找到一个关节构型,configSol,基于最初的猜测和用逗号分隔的约束描述对象列表。约束描述的数量取决于ConstraintInputs财产。

输入参数

全部展开

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

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

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

输出参数

全部展开

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

结构数组包含以下字段:

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

  • JointPosition-对应关节的位置

向量输出是一个关节位置的数组JointPosition用于结构输出。

该关节构型是实现目标末端执行器位姿在解公差内的计算解。

请注意

对于转动关节,如果关节极限超过2 *π,关节位置缠绕发生时,返回的关节位置是最接近关节下界的位置。

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

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

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

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

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

    • 违反:对应约束类型的约束违背向量。0表示约束已满足。

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

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

对象的功能

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

发行版(obj)

全部展开

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

例子

全部折叠

创建一个广义逆运动学求解器,将机械臂固定在一个特定的位置并指向机器人基座。创建约束对象,将必要的约束参数传递给求解器。

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

负载exampleRobots.matlbr

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

gik = generalizedInverseKinematics;

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

gik。RigidBodyTree = lbr;

告诉解算器期望aPositionTarget对象和一个constraintAimingconstraintPositionTarget对象作为约束输入。

gik。ConstraintInputs = {“位置”“目标”};

创建两个约束对象。

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

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

posTgt = constraintPositionTarget (“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”)举行

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

兼容性的考虑

全部展开

未来版本中的行为改变

扩展功能

介绍了R2017a