主要内容

逆运动学算法

inverseKinematicsgeneralizedInverseKinematics类可以让您访问逆运动学(IK)算法。您可以使用这些算法来生成机器人配置,以实现机器人的指定目标和约束。这个机器人构型是在机器人模型的位置限制范围内的关节位置列表,并且不违反机器人的任何约束。

选择算法

MATLAB®金宝app支持实现IK解决方案的两种算法:BFGS投影算法和Levenberg-Marquardt算法。这两种算法都是迭代的,基于梯度的优化方法,从对解决方案的初始猜测开始,并寻求最小化特定成本函数。如果任意一种算法收敛到在给定公差范围内代价接近于零的构型,那么它就找到了运动学逆问题的解。然而,对于初始猜测和期望末端执行器姿态的某些组合,算法可能无法找到理想的机器人配置。为了解决这个问题,算法使用了随机重启机制。如果启用,随机重启机制从随机机器人配置中重新启动迭代搜索,每当搜索未能找到实现所需末端执行器位姿的配置时。这些随机的重新开始会一直持续下去,直到找到一个合格的IK解决方案,或者已经经过了最长时间,或者达到了迭代限制。

要设置算法,请指定SolverAlgorithm属性“BFGSGradientProjection”“LevenbergMarquardt”

BFGS梯度投影

Broyden-Fletcher-Goldfarb-Shanno (BFGS)梯度投影算法是一种准牛顿方法,它利用过去迭代的代价函数的梯度来生成近似的二阶导数信息。该算法使用该二阶导数信息来确定当前迭代中要采取的步骤。采用梯度投影法对机器人模型的关节极限所产生的代价函数进行边界限制处理。对计算的方向进行修正,使搜索方向始终有效。

这种方法是默认算法,在寻找解方面比Levenberg-Marquardt方法更健壮。金宝搏官方网站对于接近关节极限的构型或初始猜测不接近解时,它更有效。如果您最初的猜测接近解决方案,并且需要更快的解决方案,请考虑Levenberg-Marquardt方法。

Levenberg-Marquardt

的Levenberg-Marquardt (LM)算法变体InverseKinematics类是一种误差阻尼最小二乘法。误差阻尼因子有助于防止算法逃避局部最小值。LM算法经过优化,如果初始猜测接近解,收敛速度会快得多。然而,该算法不能很好地处理任意的初始猜测。考虑使用这个算法来寻找沿期望的末端执行器轨迹的一系列姿势的IK解。金宝搏官方网站一旦找到了一个姿态的机器人构型,该构型通常是对轨迹中下一个姿态的IK解的一个很好的初步猜测。在这种情况下,LM算法可能会产生更快的结果。否则,请使用BFGS梯度投影代替。

解算器参数

每个算法都有特定的可调参数来改进解决方案。金宝搏官方网站中指定了这些参数SolverParameters属性。

BFGS梯度投影

BFGS算法的求解器参数有以下字段:

  • MaxIterations-允许的最大迭代次数。默认值是1500。

  • MaxTime-算法运行超时前的最大秒数。默认值是10。

  • GradientTolerance-代价函数梯度的阈值。如果梯度的大小低于这个阈值,算法就会停止。必须是一个正标量。

  • SolutionTolerance-从解生成的末端执行器姿态与期望姿态之间的误差大小的阈值。在此计算中包含了为物体中姿态的每个组成部分指定的权重。必须是一个正标量。

  • EnforceJointLimits-在计算解时是否考虑了接头极限的指示。JointLimits机器人模型的一个属性是否在rigidBodyTree。默认情况下,强制执行联合限制。

  • AllowRandomRestarts—允许随机重启时指示灯。当算法逼近不满足约束条件的解时,将触发随机重启。使用随机生成的初始猜测。MaxIterationMaxTime仍然服从。缺省情况下,允许随机重启。

  • StepTolerance-求解器允许的最小步长。较小的步长通常意味着解接近收敛。默认值是10-14年

Levenberg-Marquardt

LM算法的解算器参数除了BFGS梯度投影方法需要:

  • ErrorChangeTolerance-迭代之间末端执行器位姿误差变化的阈值。如果姿态误差的所有元素的变化小于该阈值,则算法返回。必须是一个正标量。

  • DampingBias-阻尼的常数项。LM算法具有由该常数控制的阻尼特性,该常数与代价函数一起控制收敛速度。要禁用阻尼,使用UseErrorDamping参数。

  • UseErrorDamping- 1(默认值),表示是否使用阻尼。将此参数设置为使阻尼失效。

解决方案信息

在使用逆运动学算法时,对对象的每次调用都会返回关于算法执行情况的解信息。解决方案信息以包含以下字段的结构形式提供:

  • 迭代-算法的迭代次数。

  • NumRandomRestarts-由于算法陷入局部最小值而随机重启的次数。

  • PoseErrorNorm-与期望的末端执行器姿态相比,解决方案的姿态误差的大小。

  • ExitFlag-提供更多关于算法执行的细节以及导致算法返回的原因的代码。有关每种算法类型的退出标志,请参见出口标志

  • 状态-描述解决方案是否在公差范围内的字符向量(“成功”)或算法能找到的最佳解(“最好的”).

出口标志

在解决方案信息中,退出标志提供了有关特定算法执行的更多细节。看看这个状态属性,以确定算法是否成功。每个退出标志代码都有一个定义的描述。

“BFGSGradientProjection”算法退出标志:

  • 1-找到局部最小值。

  • 2-最大迭代次数。

  • 3.—操作过程中算法超时。

  • 4-最小步长。步长小于StepToleranceSize田野SolverParameters财产。

  • 5—没有退出标志。有关“LevenbergMarquardt”算法。

  • 6—搜索方向无效。

  • 7-黑森不是正半定的。

“LevenbergMarquardt”算法退出标志:

  • 1-找到局部最小值。

  • 2-最大迭代次数。

  • 3.—操作过程中算法超时。

  • 4-最小步长。步长小于StepToleranceSize田野SolverParameters财产。

  • 5-末端执行器位姿误差的变化低于ErrorChangeTolerance田野SolverParameters财产。

参考文献

[1]巴德丁、哈桑、斯特凡·范德瓦尔和约翰·迈耶斯。紊流直接数值模拟中最优控制的顺序二次规划(SQP)。计算物理杂志。56(2014): 1-16。doi: 10.1016 / j.jcp.2013.08.044。

贝采卡斯,迪米特里·P。非线性规划。贝尔蒙特,马萨诸塞州:雅典娜科学,1999年。

唐纳德,戈德法布。在线性不等式及等式约束下Davidon变度量法的极值推广SIAM应用数学杂志。Vol. 17, No. 4(1969): 739-64。doi: 10.1137 / 0117067。

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

[5]杉原,友道。Levenberg-Marquardt方法的可解性-无相关逆运动学IEEE机器人技术汇刊Vol. 27, No. 5(2011): 984-91。doi: 10.1109 / tro.2011.2148230。

[10]赵建民,诺曼·巴德勒。基于非线性规划的高关节图形逆运动学定位。ACM图形学汇刊第13卷,第4号(1994):313-36。doi: 10.1145/195826.195827。

另请参阅

||

相关的话题