主要内容

inverseKinematics

创建逆运动学解算器

描述

inverseKinematics系统对象™创建一个逆运动学(IK)求解计算联合配置所需的末端执行器构成基于刚体指定树模型。为你创建一个刚体树模型机器人使用rigidBodyTree类。这个模型定义了所有联合解算器执行的约束。如果一个解决方案是可行的,在指定的联合限制机器人模型遵守。

指定更多的约束除了末端执行器构成,包括目标约束、位置范围,或定位目标,可以考虑使用generalizedInverseKinematics。该对象允许您计算多约束动力学解决方案。金宝搏官方网站

封闭的本土知识分析解决方案,请参阅金宝搏官方网站analyticalInverseKinematics

计算联合配置所需的末端执行器构成:

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

  2. 调用对象的参数,就好像它是一个函数。

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

例子

本土知识= inverseKinematics创建一个逆运动学求解器进行求解。使用解算器,指定一个刚体的树模型RigidBodyTree财产。

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

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象

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

创建刚体动力学解算器和指定树。

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

修改树刚体模型。

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

重新分配刚体动力学解算器树。如果解决或一步函数被调用之前修改刚体树模型,使用释放允许的属性被改变。

本土知识。RigidBodyTree = RigidBodyTree;

算法求解逆运动学,指定为“BFGSGradientProjection”“LevenbergMarquardt”。每个算法的细节,请参阅逆运动学算法

参数与指定的相关算法,指定为一个结构。结构中的字段特定于算法。看到解算器参数

使用

描述

例子

(configSol,solInfo本土知识]= (endeffector,构成,权重,initialguess)找到一个共同配置,达到指定的末端执行器构成。指定一个初始猜测的配置和你想要的重量公差的六个组成部分构成。解决方案信息相关的执行算法,solInfo,返回联合配置的解决方案,configSol

输入参数

全部展开

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

末端执行器构成,指定为一个4×4齐次变换。这个变换定义所需的刚体中指定的位置和姿态endeffector财产。

重量的公差,指定为一个six-element向量。前三个元素对应的重量误差方向所需的姿势。最后三个元素对应权值的错误xyz位置所需的姿势。

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

使用向量形式,设置DataFormat对象的属性指定的RigidBodyTree财产,要么“行”“列”

输出参数

全部展开

机器人配置,作为一个结构数组返回。结构数组包含这些字段:

  • JointName字向量的联合中指定的名称RigidBodyTree机器人模型

  • JointPosition——相应的关节的位置

这个关节配置所需的计算解决方案,实现末端执行器构成公差内的解决方案。

请注意

对于转动关节,如果超过一定范围的联合限制2 *π联合包装发生位置,然后返回的关节位置是最靠近关节的下界。

使用向量形式,设置DataFormat对象的属性指定的RigidBodyTree财产,要么“行”“列”

解决方案信息,作为一个结构返回。解决方案信息结构包含这些字段:

  • 迭代——由算法的迭代次数。

  • NumRandomRestarts——数量的随机重启是因为算法陷入局部最小值。

  • PoseErrorNorm——解决方案的姿势错误的大小相比,所需的末端执行器构成。

  • ExitFlag-代码更多细节算法执行什么导致它回来。每个算法类型退出的旗帜,明白了出口标志

  • 状态字向量描述解决方案是否在公差(“成功”),或者能找到的最好的可能的解决方案的算法(“最好的”)。

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名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) - - - - - - - - - - - - - - - - - - - - -

生成一个随机配置。获得终端执行器的转换(16种),随机配置的基础。使用这个变换作为一个目标终端执行器的姿势。显示此配置。

randConfig = puma1.randomConfiguration;tform = getTransform (puma1 randConfig,“哈佛”,“基地”);显示(puma1 randConfig);

图包含一个坐标轴对象。坐标轴对象包含13个补丁,类型的对象。这些对象是基础,L1, L2, L3、L4、L5、16种。

创建一个inverseKinematics对象的puma1模型。指定重量的不同组件构成。使用一个取向角的大小重量低于组件的位置。使用机器人的家庭配置作为一个初始猜测。

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

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

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

显示新生成的解决方案配置。解决方案是一个稍微不同的联合配置,达到相同的末端执行器的位置。多个调用本土知识对象可以给相似或不同的联合配置。

显示(puma1 configSoln);

图包含一个坐标轴对象。坐标轴对象包含13个补丁,类型的对象。这些对象是基础,L1, L2, L3、L4、L5、16种。

引用

[1]Badreddine,哈桑,斯蒂芬·范德维尔和约翰·迈耶斯。“序贯二次规划(SQP)湍流的直接数值模拟的最优控制。”计算物理学杂志。256 (2014):1 - 16。doi: 10.1016 / j.jcp.2013.08.044。

[2]Bertsekas,迪米特里P。非线性规划。贝尔蒙特,MA:雅典娜科学,1999。

[3]戈德法布,唐纳德。“延长Davidon变量度量方法在线性不等式和等式约束下最大化。”暹罗在应用数学》杂志上。17卷,4号(1969):739 - 64。doi: 10.1137 / 0117067。

[4]Nocedal,豪尔赫和斯蒂芬·莱特。数值优化。纽约:施普林格出版社,2006年。

[5]苏吉哈拉,Tomomichi。“Levenberg-Marquardt Solvability-Unconcerned逆运动学的方法。”IEEE机器人27卷,5号(2011):984 - 91。doi: 10.1109 / tro.2011.2148230。

[6]赵、健民,诺曼。Badler。“逆运动学定位使用非线性规划高度灵活的数字。”ACM交易图片13卷,4号(1994):313 - 36。doi: 10.1145/195826.195827。

扩展功能

版本历史

介绍了R2016b

全部展开

在未来的发布行为改变