主要内容

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财产。

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

还有闭环关节约束约束两个刚体,使受约束的运动类似于两个刚体之间的附加关节。它们的约束输入类型及其关联的约束对象是:

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

创建广义逆运动学求解器对象。指定RigidBodyTree而且ConstraintInputs属性。

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对象指定为第一个输入参数。例如,释放名为obj,使用以下语法:

发行版(obj)

全部展开

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

例子

全部折叠

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

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

负载exampleRobots.matlbr

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

gik = generalizedInverseKinematics;

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

gik。RigidBodyTree = lbr;

告诉解算器期望一个PositionTarget对象和一个constraintAiming而且constraintPositionTarget对象作为约束输入。

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

创建两个约束对象。

  1. 尸体的来历命名tool0位于(0.0 0.5 0.5)相对于机器人的基本框架。

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

posTgt = constraintPositionTarget (“tool0”);posTgt。TargetPosition = [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.75 -0.5 1])

{

画一条从目标位置到基准点原点的线段。的起源tool0框架与线段的一端重合,其z-axis与线段对齐。

持有Plot3 ([0.0 0.0],[0.5 0.0],[0.5 0.0],“- o”)举行

{

扩展功能

版本历史

介绍了R2017a

全部展开

Baidu
map