Main Content

Inverse Kinematics

エンドエフェクタの姿勢を実現するジョイント コンフィギュレーションの計算

  • Inverse Kinematics block

ライブラリ:
Robotics System Toolbox / Manipulator Algorithms

説明

Inverse Kinematics ブロックは、逆運動学 (IK) ソルバーを使用して、指定された剛体ツリー モデルに基づいて目的のエンドエフェクタ姿勢のジョイント コンフィギュレーションを計算します。rigidBodyTree クラスを使用して、ロボットの剛体ツリー モデルを作成します。剛体ツリー モデルはソルバーが強制するすべてのジョイント拘束を定義します。

RigidBodyTree パラメーターとブロック マスク内の目的のエンドエフェクタを指定します。[ソルバー パラメーター] タブでアルゴリズム パラメーターを調整することもできます。

目的のエンドエフェクタの [姿勢]、姿勢の許容誤差の [重み]、ジョイント コンフィギュレーションの [InitialGuess] を入力します。ソルバーは、[ソルバー パラメーター] タブで指定した許容誤差内のエンドエフェクタの姿勢を満たすロボット コンフィギュレーション [Config] を出力します。

端子

入力

すべて展開する

エンドエフェクタの姿勢。4 行 4 列の同次変換として指定します。この変換は、[エンドエフェクタ] パラメーターで指定された剛体の位置と向きの目標値を定義します。

データ型: single | double

姿勢の許容誤差の重み。6 要素ベクトルとして指定します。ベクトルの最初の 3 要素は、目標とする姿勢に対する向きの誤差の重みに対応します。ベクトルの最後の 3 要素は、目標とする姿勢に対する xyz 位置の誤差の重みに対応します。

データ型: single | double

ロボット コンフィギュレーションの初期推定。ジョイント位置のベクトルとして指定します。位置の数は、[剛体ツリー] パラメーターの固定されていないジョイントの数と等しくなります。この初期推定を使用して、目標とするロボット コンフィギュレーションにソルバーを誘導するのに役立てます。ただし、解がこの初期推定に近いことは保証されていません。

データ型: single | double

出力

すべて展開する

目的のエンドエフェクタの姿勢を解くロボット コンフィギュレーション。ベクトルとして指定します。ロボット コンフィギュレーションは剛体ツリー モデルのジョイント位置のベクトルです。位置の数は、[剛体ツリー] パラメーターの固定されていないジョイントの数と等しくなります。

データ型: single | double

解法情報。バスとして返されます。解法情報バスには次の要素が含まれます。

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

  • PoseErrorNorm — 解におけるエンドエフェクタの姿勢と目的のエンドエフェクタの姿勢との間における誤差の大きさ。

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

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

パラメーター

すべて展開する

ブロック パラメーター

剛体ツリー モデル。rigidBodyTree オブジェクトとして指定します。ブロック マスクに指定する前にロボット モデルを MATLAB® ワークスペースで作成します。

目的の姿勢に対するエンドエフェクタ名。rigidBodyTree オブジェクトのボディのリストを表示するには、[剛体ツリー] パラメーターを指定してから、[ボディの選択] をクリックします。

選択して [情報] 端子を有効にし、ソルバーの解の診断情報を取得します。

ソルバー パラメーター

逆運動学の求解アルゴリズム。'BFGSGradientProjection' または 'LevenbergMarquardt' として指定します。各アルゴリズムの詳細については、逆運動学のアルゴリズムを参照してください。

選択して [剛体ツリー] モデルで指定されたジョイント制限を適用します。

解を最適化するための最大反復回数。正の整数として指定します。反復回数を増やすと実行時間が長くなりますが、解が向上する場合があります。

タイムアウトする前にアルゴリズムが実行される最大秒数。正のスカラーとして指定します。最大時間を増やすと実行時間が長くなりますが、解が向上する場合があります。

コスト関数の勾配しきい値。正のスカラーとして指定します。勾配の大きさがこのしきい値未満になると、アルゴリズムは停止します。勾配の大きさが低い場合は通常、ソルバーが解に収束したことを示します。

解から生成されたエンドエフェクタの姿勢と目的の姿勢との間における誤差の大きさのしきい値。正のスカラーとして指定します。この計算には、姿勢の各コンポーネントに指定された Weights が含まれます。

ソルバーによって許可される最小ステップ サイズ。正のスカラーとして指定します。通常、ステップ サイズが小さくなると、解が収束に近づいたことを示します。

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

依存関係

このパラメーターは [ソルバー]Levenberg-Marquadt のときに有効になります。

このチェック ボックスを選択して誤差減衰を有効にして、Damping bias パラメーターを指定します。

依存関係

このパラメーターは [ソルバー]Levenberg-Marquadt のときに有効になります。

コスト関数の減衰。正のスカラーとして指定します。Levenberg-Marquadt アルゴリズムには、このスカラーによって制御される減衰機能があり、コスト関数とともに動作して収束速度を制御します。

依存関係

このパラメーターは [ソルバー]Levenberg-Marquadt で、[誤差減衰を使用]on のときに有効になります。

  • インタープリター型実行 — MATLAB インタープリターを使用してモデルをシミュレートします。このオプションでは起動時間が短縮されますが、シミュレーション速度は [コード生成] より遅くなります。このモードでは、ブロックのソース コードをデバッグできます。

  • コード生成 — 生成される C コードを使用してモデルをシミュレートします。シミュレーションをはじめて実行すると、Simulink® によってブロック用の C コードが生成されます。モデルが変更されない限り、この C コードは後続のシミュレーションで再利用されます。このオプションでは起動時間が長くなりますが、後続のシミュレーションの速度は [インタープリター型実行] に匹敵します。

調整可能: No

参照

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

拡張機能

バージョン履歴

R2018b で導入