主要内容

逆运动学算法

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

选择一种算法

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

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

蓄热梯度投影

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

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

Levenberg-Marquardt

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

解算器参数

每个算法都有特定的可调参数来改善解。参数中指定了这些参数SolverParameters属性。

蓄热梯度投影

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

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

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

  • GradientTolerance-成本函数梯度上的阈值。如果梯度的幅度低于这个阈值,算法就会停止。必须是正标量。

  • SolutionTolerance-由解生成的末端执行器位姿与期望位姿之间的误差大小的阈值。为对象中姿势的每个组件指定的权重都包含在这个计算中。必须是正标量。

  • EnforceJointLimits-在计算解决方案时是否考虑了关节极限的指标。JointLimits机器人模型的属性是否在rigidBodyTree.默认情况下,强制执行联合限制。

  • AllowRandomRestarts—允许随机重启时的指示灯。当算法接近不满足约束的解时,将触发随机重启。使用随机生成的初始猜测。MaxIteration而且MaxTime仍然遵守。缺省情况下,随机重启是启用的。

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

Levenberg-Marquardt

LM算法的求解器参数有以下额外的字段蓄热梯度投影方法需要:

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

参考文献

Badreddine, Hassan, Stefan Vandewalle和Johan Meyers。湍流流动直接数值模拟中序列二次规划(SQP)的最优控制。计算物理杂志.256(2014): 1 - 16。doi: 10.1016 / j.jcp.2013.08.044。

[2] Bertsekas, Dimitri P。非线性规划.贝尔蒙特,马萨诸塞州:雅典娜科学,1999年。

[3]戈德法布,唐纳德。Davidon变度量法在线性不等式和不等式约束下的极大化问题的推广。SIAM应用数学杂志.第17卷第4期(1969):739-64。doi: 10.1137 / 0117067。

[4] Nocedal, Jorge和Stephen Wright。数值优化.纽约,纽约:施普林格,2006。

[5]苏吉哈拉,Tomomichi。Levenberg-Marquardt方法的解性-无关逆运动学IEEE机器人汇刊第27卷第5期(2011):984-91。doi: 10.1109 / tro.2011.2148230。

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

另请参阅

||

相关的话题

Baidu
map