Main Content

逆運動学のアルゴリズム

inverseKinematics クラスと generalizedInverseKinematics クラスを使用すると、逆運動学 (IK) アルゴリズムにアクセスできます。これらのアルゴリズムを使用すると、ロボットに対して指定したゴールと拘束を達成するためのロボット コンフィギュレーションを生成できます。このロボット コンフィギュレーションは、ロボット モデルの位置範囲内にあり、かつロボットがもついずれの拘束にも違反しないジョイント位置のリストです。

アルゴリズムの選択

MATLAB® は IK の解を得るための 2 つのアルゴリズムをサポートしています。BFGS 投影アルゴリズムと、レーベンバーグ・マルカート アルゴリズムです。どちらのアルゴリズムも、解の初期推定から始め、特定のコスト関数を最小化することを探索する、反復的な勾配ベースの最適化手法です。いずれかのアルゴリズムが、コストが 0 に近い、指定した許容誤差内の値に収まるコンフィギュレーションに収束すると、逆運動学問題の解が見つかったことになります。しかし、初期推定と目的のエンドエフェクタ姿勢の組み合わせによっては、理想的なロボット コンフィギュレーションを見つけることなくアルゴリズムが終了する場合があります。これに対処するために、アルゴリズムではランダム リスタート メカニズムを活用しています。ランダム リスタート メカニズムを有効にすると、目的のエンドエフェクタ姿勢を達成するコンフィギュレーションの検出に失敗した場合に、ランダムなロボット コンフィギュレーションから反復検索が再開されます。このランダム リスタートは、要件を満たす IK の解が見つかるか、最大時間が経過するか、反復回数制限に達するまで続きます。

アルゴリズムを設定するには、SolverAlgorithm プロパティを 'BFGSGradientProjection' または 'LevenbergMarquardt' に指定します。

BFGS 勾配投影

Broyden-Fletcher-Goldfarb-Shanno (BFGS) 勾配投影アルゴリズムは準ニュートン法で、過去の反復におけるコスト関数の勾配を使用して、2 次導関数の近似情報を生成します。アルゴリズムはこの 2 次導関数の情報を使用して、現在の反復を取り込むステップを決定します。ロボット モデルのジョイント制限によって生成されるコスト関数の範囲制限を扱うために、勾配投影法が使用されます。計算される方向は、探索方向が常に有効になるように変更されます。

この手法は既定のアルゴリズムで、レーベンバーグ・マルカート法と比較して、よりロバストに解を求めることができます。ジョイント制限に近いコンフィギュレーションや、初期推定が解に近くない場合に、より効果的です。初期推定が解に近く、より迅速に解が必要な場合は、レーベンバーグ・マルカート法を検討してください。

レーベンバーグ・マルカート

InverseKinematics クラスで使用されるレーベンバーグ・マルカート (LM) アルゴリズム バリアントは、誤差減衰型の最小二乗法です。誤差減衰係数は、アルゴリズムが局所的最小値から発散するのを防ぎます。LM アルゴリズムは、初期推定が解に近い場合に非常に速く収束するよう最適化されています。しかし、このアルゴリズムは、どのような初期推定でもうまく扱えるわけではありません。目的とするエンドエフェクタの軌跡に沿った一連の姿勢に対する IK の解を求める場合に、このアルゴリズムの使用を検討してください。1 つの姿勢についてロボット コンフィギュレーションが見つかると、多くの場合、そのコンフィギュレーションが軌跡上で次に来る姿勢の IK の解に対する良好な初期推定になります。この場合、LM アルゴリズムの方が迅速に結果が得られる場合があります。そうでない場合は、代わりにBFGS 勾配投影を使用してください。

ソルバー パラメーター

各アルゴリズムには、解を改善するための特定の調整可能なパラメーターがあります。これらのパラメーターは、オブジェクトの SolverParameters プロパティで指定されます。

BFGS 勾配投影

BFGS アルゴリズムのソルバー パラメーターには次のフィールドがあります。

  • MaxIterations — 許可される最大反復回数。既定値は 1500 です。

  • MaxTime — タイムアウトする前にアルゴリズムが実行される最大秒数。既定値は 10 です。

  • GradientTolerance — コスト関数の勾配しきい値。勾配の大きさがこのしきい値未満になると、アルゴリズムは停止します。正のスカラー値でなければなりません。

  • SolutionTolerance — 解から生成されたエンドエフェクタ姿勢と目的の姿勢との間における誤差の大きさのしきい値。この計算には、オブジェクトの姿勢の各コンポーネントに指定された重みが含まれます。正のスカラー値でなければなりません。

  • EnforceJointLimits — 解の計算でジョイント制限を考慮するかどうかのインジケーター。JointLimits は、rigidBodyTree のロボット モデルのプロパティです。既定では、ジョイント制限が適用されます。

  • AllowRandomRestarts — ランダム リスタートを許可するかどうかのインジケーター。ランダム リスタートは、アルゴリズムが拘束を満たさない解に近づいたときにトリガーされます。ランダムに生成された初期推定が使用されます。MaxIterationMaxTime には引き続き従います。既定では、ランダム リスタートは有効です。

  • StepTolerance — ソルバーによって許可される最小ステップ サイズ。通常、ステップ サイズが小さくなると、解が収束に近づいたことを示します。既定値は 10-14 です。

レーベンバーグ・マルカート

LM アルゴリズムのソルバー パラメーターには、BFGS 勾配投影法で必要なフィールドに加え、次の追加のフィールドがあります。

  • ErrorChangeTolerance — 反復間におけるエンドエフェクタ姿勢の誤差の変化のしきい値。このアルゴリズムは、姿勢誤差のすべての要素に対する変化がこのしきい値より小さいかどうかを返します。正のスカラー値でなければなりません。

  • DampingBias — 減衰の定数項。LM アルゴリズムには、この定数によって制御される減衰機能があり、コスト関数とともに動作して収束速度を制御します。減衰を無効にするには、UseErrorDamping パラメーターを使用します。

  • UseErrorDamping — 1 (既定)。減衰を使用するかどうかのインジケーター。減衰を無効にするには、このパラメーターを false に設定してください。

解法情報

逆運動学アルゴリズムを使用している間、オブジェクトへの各呼び出しは、アルゴリズムがどのように実行されるかについての解法情報を返します。解法情報は、次のフィールドをもつ構造体として提供されます。

  • Iterations — アルゴリズムによって実行される反復回数。

  • NumRandomRestarts — アルゴリズムが局所的最小値で行き詰ったことを原因とするランダム リスタートの回数。

  • PoseErrorNorm — 解と目的のエンドエフェクタ姿勢との比較による、姿勢誤差の大きさ。

  • ExitFlag — アルゴリズムの実行と、アルゴリズムが戻った原因に関する詳細を提供するコード。各アルゴリズム タイプの終了フラグについては、終了フラグを参照してください。

  • Status — 解が許容誤差以内に収まっているか ('success')、またはアルゴリズムが見つけられる最適解に達したか ('best available') を記述する文字ベクトル。

終了フラグ

解法情報では、終了フラグによって、特定のアルゴリズムの実行に関する詳細が提供されます。アルゴリズムが成功したかどうかを知るには、オブジェクトの Status プロパティを確認します。それぞれの終了フラグ コードには定義済みの説明があります。

'BFGSGradientProjection' アルゴリズムの終了フラグは次のとおりです。

  • 1 — 局所的最小値が見つかりました。

  • 2 — 最大反復回数に到達しました。

  • 3 — 演算中にアルゴリズムがタイムアウトしました。

  • 4 — 最小ステップ サイズ。ステップ サイズが SolverParameters プロパティの StepToleranceSize フィールド未満です。

  • 5 — 終了フラグがありません。'LevenbergMarquardt' アルゴリズムにのみ関連します。

  • 6 — 無効な探索方向。

  • 7 — ヘッシアンが半正定値ではありません。

'LevenbergMarquardt' アルゴリズムの終了フラグは次のとおりです。

  • 1 — 局所的最小値が見つかりました。

  • 2 — 最大反復回数に到達しました。

  • 3 — 演算中にアルゴリズムがタイムアウトしました。

  • 4 — 最小ステップ サイズ。ステップ サイズが SolverParameters プロパティの StepToleranceSize フィールド未満です。

  • 5 — エンドエフェクタ姿勢誤差の変化が SolverParameters プロパティの ErrorChangeTolerance フィールド未満です。

参考文献

[1] Badreddine, Hassan, Stefan Vandewalle, and Johan Meyers. "Sequential Quadratic Programming (SQP) for Optimal Control in Direct Numerical Simulation of Turbulent Flow." Journal of Computational Physics. 256 (2014): 1–16. doi:10.1016/j.jcp.2013.08.044.

[2] Bertsekas, Dimitri P. Nonlinear Programming. Belmont, MA: Athena Scientific, 1999.

[3] Goldfarb, Donald. "Extension of Davidon’s Variable Metric Method to Maximization Under Linear Inequality and Equality Constraints." SIAM Journal on Applied Mathematics. Vol. 17, No. 4 (1969): 739–64. doi:10.1137/0117067.

[4] Nocedal, Jorge, and Stephen Wright. Numerical Optimization. New York, NY: Springer, 2006.

[5] Sugihara, Tomomichi. "Solvability-Unconcerned Inverse Kinematics by the Levenberg–Marquardt Method." IEEE Transactions on Robotics Vol. 27, No. 5 (2011): 984–91. doi:10.1109/tro.2011.2148230.

[6] Zhao, Jianmin, and Norman I. Badler. "Inverse Kinematics Positioning Using Nonlinear Programming for Highly Articulated Figures." ACM Transactions on Graphics Vol. 13, No. 4 (1994): 313–36. doi:10.1145/195826.195827.

参考

| |

関連するトピック