メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

逆運動学のアルゴリズム

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

アルゴリズムの選択

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

fmincon SQP アルゴリズムは、最適化問題における拘束の処理に特に適しており、複数の拘束を含む複雑な IK のシナリオに対する確実な選択肢となります。

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

BFGS 勾配投影

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

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

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

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

fmincon SQP

逆運動学ソルバーに使用される fmincon アルゴリズム バリアントは逐次二次計画法 (SQP) の手法であり、非線形目的関数を解くのに優れています。この手法は、ランダム リスタートを必要とせず、BFGS 投影アルゴリズムやレーベンバーグ・マルカート アルゴリズムよりも解に収束するまでの反復が少なくなります。fmincon SQP ソルバーの詳細については、fmincon (Optimization Toolbox) 関数を参照してください。

このアルゴリズムには Optimization Toolbox™ が必要です。

ソルバー パラメーター

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

BFGS 勾配投影

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

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

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

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

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

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

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

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

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

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

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

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

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

fmincon SQP

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

  • MaxIterations — 許可される最大反復回数。既定値は 1500 です。これは fmincon 関数の MaxIterations オプションにマッピングされます。

  • SolutionTolerance — 解から生成されたエンドエフェクタ姿勢と目的の姿勢との間における誤差の大きさのしきい値。この計算には、オブジェクトの姿勢の各コンポーネントに指定された重みが含まれます。正のスカラーとして指定します。これは fmincon 関数の ObjectiveLimit オプションにマッピングされます。

  • StepTolerance — ソルバーによって許可される最小ステップ サイズ。通常、ステップ サイズが小さいほど、解が収束に近づきます。既定値は 1e–6 です。これは fmincon 関数の StepTolerance オプションにマッピングされます。

  • GradientTolerance — コスト関数の勾配しきい値。勾配の大きさがこのしきい値未満になると、アルゴリズムは停止します。正のスカラーとして指定します。これは fmincon 関数の OptimalityTolerance オプションにマッピングされます。

  • EnforceJointLimits — 解の計算でジョイント制限を考慮するかどうかを示します。JointLimitsrigidBodyTree ロボット モデルのプロパティです。既定では、アルゴリズムでジョイント制限が適用されます。これは fmincon 関数の lb (Optimization Toolbox) 引数と ub (Optimization Toolbox) 引数にマッピングされます。

  • ConstraintTolerance — 拘束違反のしきい値。これは、ソルバーでジョイント位置の範囲の違反をどの程度まで許容するかを示します。既定値は 1e-6 で、非負の数値スカラーでなければなりません。これは fmincon 関数の ConstraintTolerance オプションにマッピングされます。

これらのパラメーターがマッピングされる fmincon のオプションの詳細については、fmincon 関数の options (Optimization Toolbox) 引数を参照してください。

解法情報

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

  • 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 フィールド未満です。

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

  • 1 — 1 次の最適性の尺度が GradientTolerance 未満で、最大拘束違反が ConstraintTolerance 未満でした。

  • 0 — 反復回数が MaxIterations を超えたか、関数評価の回数がMaxFunctionEvaluations (Optimization Toolbox)の最大の既定値を超えました。

  • -1 — 出力関数またはプロット関数によって停止されました。

  • -2 — 実行可能解が見つかりませんでした。

  • -3 — 現在の反復での目的関数が SolutionTolerance を下回り、最大拘束違反が ConstraintTolerance 未満でした。

詳細については、fmincon 関数の exitflag (Optimization Toolbox) 引数を参照してください。

参考文献

[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.

参考

| |

トピック