的inverseKinematics
和generalizedInverseKinematics
类让您访问逆运动学(IK)算法。您可以使用这些算法生成一个机器人配置,以实现指定的目标和约束的机器人。该机器人配置是一个关节位置列表,这些关节位置在机器人模型的位置限制之内,并且不违反机器人的任何约束。
MATLAB®金宝app支持两种实现IK解决方案的算法:BFGS投影算法和Levenberg-Marquardt算法。这两种算法都是迭代的、基于梯度的优化方法,从对解决方案的最初猜测开始,并寻求最小化特定的成本函数。如果两种算法中的任何一种都收敛到成本在指定公差内接近于零的配置,那么它就找到了逆运动学问题的解。然而,对于一些组合的初始猜测和期望的末端执行器的姿态,算法可能退出没有找到一个理想的机器人配置。为了处理这个问题,算法使用了随机重启机制。如果启用,随机重新启动机制将从随机机器人配置中重新启动迭代搜索,只要该搜索未能找到实现所需末端执行器姿态的配置。这些随机的重新启动一直持续到找到一个合格的IK解决方案,最大时间已经过去,或者达到迭代限制。
若要设置算法,请指定SolverAlgorithm
属性是'BFGSGradientProjection'
要么'LevenbergMarquardt'
。
broyden - cher- goldfarb - shanno (BFGS)梯度投影算法是一种准牛顿法,它利用过去迭代中代价函数的梯度来生成近似的二阶导数信息。该算法使用二阶导数信息来确定当前迭代中要采取的步骤。采用梯度投影法处理机器人模型的关节极限所产生的代价函数的边界极限。对计算的方向进行修改,使搜索方向始终有效。
该方法是默认的算法,在寻找解方面比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年。
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。
贝尔采卡斯,迪米特里,P。非线性规划。贝尔蒙特:《雅典娜科学》,1999年。
[3]戈德法布,唐纳德。“在线性不等式和平等约束下,将大卫的变度量方法推广到最大化。”应用数学的暹罗杂志。第17卷,第4期(1969):739-64。doi: 10.1137 / 0117067。
[4] Nocedal,豪,和Stephen莱特。数值优化。纽约,NY:施普林格,2006。
[5]苏吉哈拉,Tomomichi。用Levenberg-Marquardt方法求解不关心逆运动学的可解性。IEEE机器人学报第27卷第5期(2011):984-91。doi: 10.1109 / tro.2011.2148230。
赵,建民,和Norman I. Badler。反运动学定位使用非线性规划的高度铰接图形。ACM图形事务第13卷第4期(1994年):313-36。doi: 10.1145/195826.195827。
generalizedInverseKinematics
|inverseKinematics
|rigidBodyTree