这个逆线性
和generalizedInverseKinematics
类使您可以访问反向运动学(IK)算法。您可以使用这些算法生成机器人配置,以实现机器人的指定目标和约束。此机器人配置是在机器人模型的位置限制内且不违反机器人具有的任何约束的关节位置列表。
MATLAB®金宝app支持两种实现IK解决方案的算法:BFGS投影算法和Levenberg-Marquardt算法。这两种算法都是迭代的、基于梯度的优化方法,从对解的初始猜测开始,并寻求最小化特定的成本函数。如果任一算法收敛到在指定公差内代价接近于零的配置,它就找到了逆运动学问题的解。然而,对于一些初始猜测和期望的末端执行器位姿的组合,算法可能会在没有找到理想机器人配置的情况下退出。为了处理这个问题,该算法使用了一个随机重启机制。如果启用,随机重新启动机制将重新启动从一个随机机器人配置的迭代搜索,只要搜索未能找到一个配置,以实现所需的末端执行器姿态。这些随机重启将继续进行,直到找到合格的IK解决方案、超过最大时间或达到迭代限制。
要设置算法,请指定SolverAlgorithm
财产“BFGSGradientProjection”
或“LevenbergMarquardt”
.
Broyden-Fletcher-Goldfarb-Shanno(BFGS)梯度投影算法是一种拟牛顿法,它使用过去迭代的代价函数梯度生成近似的二阶导数信息。该算法使用该二阶导数信息来确定当前迭代中要采取的步骤。采用梯度投影法处理机器人模型关节极限产生的代价函数的边界极限。将修改计算的方向,以便搜索方向始终有效。
该方法是默认算法,与Levenberg-Marquardt方法相比,它在寻找解决方案方面更为稳健。对于接头极限附近的配置或初始猜测不接金宝搏官方网站近解决方案时,该方法更有效。如果您的初始猜测接近解决方案,需要更快的解决方案,请考虑莱文伯格·马夸特方法。
Levenberg-Marquardt (LM)算法在InverseKinematics
类是一种误差阻尼最小二乘法。误差阻尼因子有助于防止算法逃逸局部极小值。如果初始猜测接近解,LM算法将进行优化,以更快地收敛。然而,该算法不能很好地处理任意初始猜测。考虑使用该算法来寻找一系列沿末端执行器的期望轨迹的姿态的IK解。一旦为一个姿势找到机器人配置,该配置通常是对轨迹中下一个姿势的IK解决方案的良好初始猜测。在这种情况下,LM算法可能会产生更快的结果。否则,请使用金宝搏官方网站蓄热梯度投影相反
每个算法都有特定的可调参数来改进解决方案。金宝搏官方网站这些参数在SolverParameters
对象的属性。
BFGS算法的求解器参数有以下字段:
最大迭代次数
-允许的最大迭代次数。默认值为1500。
MaxTime
—算法在超时前运行的最大秒数。默认值是10。
梯度公差
-代价函数梯度的阈值。如果梯度的大小低于这个阈值,算法将停止。必须是正的标量。
SolutionTolerance
-由解生成的末端执行器位姿与期望位姿之间误差的阈值。在这个计算中包括为对象中每个姿态组件指定的权重。必须是正的标量。
EnforceJointLimits
-指示在计算解决方案时是否考虑了接头极限。JointLimits
机器人模型的属性在吗rigidBodyTree
.默认情况下,执行联合限制。
AllowRandomRestarts
-指示是否允许随机重新启动。当算法接近不满足约束的解决方案时,会触发随机重启。使用随机生成的初始猜测。最大迭代
和MaxTime
仍然遵守。缺省情况下,开启随机重启功能。
阶跃公差
-求解器允许的最小步长。较小的步长通常意味着解接近收敛。默认值是10-14年.
LM算法的解算器参数除了蓄热梯度投影方法需要:
ErrorChangeTolerance
-末端执行器位姿误差变化的阈值。如果姿态误差的所有元素的变化都小于这个阈值,则算法返回。必须是正的标量。
阻尼偏差
-阻尼的常数项。LM算法有一个阻尼特性,由这个常数控制,与代价函数一起工作,以控制收敛速度。要禁用阻尼,请使用使用错误阻尼
参数。
使用错误阻尼
- 1(默认),是否使用阻尼指示器。将该参数设置为假
禁用阻尼。
在使用逆运动学算法时,对对象的每次调用都返回关于算法如何执行的解决方案信息。解决方案信息以结构形式提供,包含以下字段:
迭代
—算法运行的迭代次数。
NumRandomRestarts
-由于算法陷入局部最小值而导致的随机重启次数。
PoseErrorNorm
-与所需末端效应器姿势相比,解决方案的姿势误差的大小。
出口滞后
-提供算法执行的更多细节以及导致返回的原因的代码。有关每种算法类型的退出标志,请参见出口标志.
地位
-描述解决方案是否在公差范围内的字符向量(“成功”
)或算法所能找到的最佳可能解(“最佳可用”
).
在解决方案信息中,退出标志提供了有关特定算法执行的更多详细信息。看这张照片地位
属性,以确定算法是否成功。每个退出标志代码都有一个已定义的描述。
“BFGSGradientProjection”
算法退出标志:
1.
-找到了局部最小值。
2.
—达到的最大迭代次数。
3.
—算法运行超时。
4.
-最小步长。步长小于最大值阶跃公差
领域SolverParameters
所有物
5.
—没有退出标志。有关“LevenbergMarquardt”
仅限算法。
6.
—搜索方向无效。
7.
- Hessian不是正半定的。
“LevenbergMarquardt”
算法退出标志:
1.
-找到了局部最小值。
2.
—达到的最大迭代次数。
3.
—算法运行超时。
4.
-最小步长。步长小于最大值阶跃公差
领域SolverParameters
所有物
5.
-末端效应器姿势错误的更改低于ErrorChangeTolerance
领域SolverParameters
所有物
Badreddine, Hassan, Stefan Vandewalle和Johan Meyers。湍流直接数值模拟中最优控制的顺序二次规划(SQP)。计算物理杂志.256(2014): 1 - 16。doi: 10.1016 / j.jcp.2013.08.044。
Dimitri P. Bertsekas非线性规划.马萨诸塞州贝尔蒙特:雅典娜科学公司,1999年。
[3]戈德法布,唐纳德。大卫东变度量法在线性不等式和等式约束下最大化的推广应用数学杂志.第17卷第4期(1969):739-64。doi: 10.1137 / 0117067。
Nocedal, Jorge和Stephen Wright。数值优化. 纽约州纽约:斯普林格,2006年。
[5] 杉原智美。“通过Levenberg–Marquardt方法实现的可解性非相关逆运动学。”IEEE机器人学报Vol. 27, No. 5(2011): 984-91。doi: 10.1109 / tro.2011.2148230。
[6] 赵建民和诺曼·贝德勒。“使用非线性规划对高度铰接的图形进行反向运动学定位。”图形上的ACM事务第13卷第4期(1994年):313-36页。内政部:10.1145/195826.195827。
rigidBodyTree
|generalizedInverseKinematics
|逆线性