主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

inverseKinematics

逆運動学ソルバーの作成

説明

inverseKinematics系统对象™は,指定された剛体ツリーモデルに基づいて目的のエンドエフェクタ姿勢のジョイントコンフィギュレーションを計算するための,逆運動学(IK)ソルバーを作成します。rigidBodyTreeクラスを使用して,ロボットの剛体ツリーモデルを作成します。このモデルは,ソルバーが強制するすべてのジョイント拘束を定義します。求解が可能な場合,ロボットモデルで指定されているジョイント制限に従います。

照準拘束,位置の範囲,方向ターゲットなど,エンドエフェクタ姿勢以外の拘束をさらに指定するには,generalizedInverseKinematicsの使用を検討してください。このオブジェクトにより,複数拘束の反向の解を計算できます。

本土知识の閉形式解析解の詳細については,analyticalInverseKinematicsを参照してください。

目的のエンドエフェクタ姿勢に対するジョイントコンフィギュレーションを計算するには,以下を実行します。

  1. inverseKinematicsオブジェクトを作成して,そのプロパティを設定します。

  2. 関数と同様に,引数を指定してオブジェクトを呼び出します。

系统对象の機能の詳細については,系统对象とはを参照してください。

作成

説明

本土知识= inverseKinematicsは,逆運動学ソルバーを作成します。このソルバーを使用するには,RigidBodyTreeプロパティで剛体ツリーモデルを指定します。

本土知识= inverseKinematics (名称,值は1つ以上の名称,值のペアの引数によって指定された追加オプションを使用して,逆運動学ソルバーを作成します。的名字はプロパティ名で,价值は対応する値です。的名字は一重引用符('')で囲まれていなければなりません。名前と値のペアの引数を複数,任意の順序で,Name1, Value1,…,的家のように指定できます。

プロパティ

すべて展開する

特に指定がない限り,プロパティは”調整不可能”です。つまり,オブジェクトを呼び出した後にプロパティ値を変更することはできません。オブジェクトは呼び出し時にロックされ,関数释放でロック解除されます。

プロパティが”調整可能”な場合は,いつでも値を変更できます。

プロパティ値の変更の詳細については,系统对象を使用したMATLABでのシステム設計を参照してください。

剛体ツリーモデル。rigidBodyTreeオブジェクトとして指定します。剛体ツリーモデルを変更したら、その剛体ツリーをこのプロパティに再割り当てします。次に例を示します。

本土知识ソルバーを作成し,剛体ツリーを指定します。

本土知识= inverseKinematics (“RigidBodyTree”rigidbodytree)

剛体ツリーモデルを変更します。

addBody (rigidbodytree rigidBody (“界面”),“基地”

本土知识剛体ツリーをソルバーに再割り当てします。剛体ツリーモデルを変更する前にソルバーまたは関数一步が呼び出された場合,释放を使用して,プロパティの変更を許可します。

本土知识。RigidBodyTree = RigidBodyTree;

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

指定したアルゴリズムに関連付けられたパラメーター。構造体として指定します。構造体のフィールドはアルゴリズムに固有です。ソルバーパラメーターを参照してください。

使用法

説明

configSolsolInfo本土知识]= (endeffector构成权重initialguessは,指定したエンドエフェクタ姿勢を達成するジョイントコンフィギュレーションを探します。コンフィギュレーションの初期推定と,构成の6成分に対する許容誤差の重みの目標値を指定します。アルゴリズムの実行に関連する解の情報solInfoが,ジョイントコンフィギュレーションの解configSolとともに返されます。

入力引数

すべて展開する

エンドエフェクタ名。文字ベクトルとして指定します。エンドエフェクタは,inverseKinematics系统对象内に指定されたrigidBodyTreeオブジェクト上のボディでなければなりません。

エンドエフェクタの姿勢。4行4列の同次変換として指定します。この変換は,endeffectorプロパティで指定される,剛体の位置と向きの目標値を定義します。

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

ロボットコンフィギュレーションの初期推定。構造体配列またはベクトルとして指定します。この初期推定を使用して,目標とするロボットコンフィギュレーションにソルバーを誘導するのに役立てます。解がこの初期推定に近いことは保証されていません。

ベクトル形式を使用するには,RigidBodyTreeプロパティで割り当てられているオブジェクトのDataFormatプロパティを“行”または“列”に設定します。

出力引数

すべて展開する

ロボットコンフィギュレーション。構造体配列として返されます。この構造体配列には次のフィールドが含まれます。

  • JointNameRigidBodyTreeロボットモデルで指定されたジョイント名の文字ベクトル

  • JointPosition——対応するジョイントの位置

このジョイントコンフィギュレーションは,目標とするエンドエフェクタ姿勢を解の許容誤差の範囲内で達成する,計算された解です。

メモ

回転ジョイントについて,ジョイント制限がジョイント位置のラッピングが発生する2 *πの範囲を超えた場合,返されるジョイント位置はジョイントの下限に最も近いものになります。

ベクトル形式を使用するには,RigidBodyTreeプロパティで割り当てられているオブジェクトのDataFormatプロパティを“行”または“列”に設定します。

解法情報。構造体として返されます。解法情報構造体には次のフィールドが含まれます。

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

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

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

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

  • 状态——解が許容誤差以内に収まっているか(“成功”),またはアルゴリズムが見つけられる最適解に達したか(“最好的”)を記述する文字ベクトル。

オブジェクト関数

オブジェクト関数を使用するには,系统对象を最初の入力引数として指定します。たとえば,objという名前の系统对象のシステムリソースを解放するには,以下の構文を使用します。

发行版(obj)

すべて展開する

一步 系统对象のアルゴリズムの実行
释放 リソースを解放し,系统对象のプロパティ値と入力特性の変更を可能にします。
重置 系统对象の内部状態のリセット

すべて折りたたむ

目標とするエンドエフェクタ位置を達成するための,ロボットモデルのジョイント位置を生成します。inverseKinematics系统对象は,逆運動学アルゴリズムを使用して有効なジョイント位置を求めます。

ロボットの例を読み込みます。puma1ロボットは6つの回転ジョイントをもつ6軸ロボットアームのrigidBodyTreeモデルです。

负载exampleRobots.matshowdetails (puma1)
-------------------- 机器人:(6)尸体Idx身体名称联合名称联合类型父母名字(Idx)孩子的名字(s ) --- --------- ---------- ---------- ---------------- ---------------- 1 L1 jnt1转动基地(0)L2 (2) 2 L2 jnt2转动L1 (1) L3 (3) 3 L3 jnt3转动L2 (2) L4 (4) 4, jnt4转动L3(3)一两百(5)5 L5 jnt5转动L4(4) 16种(6)6 16种jnt6转动L5 (5)--------------------

ランダムなコンフィギュレーションを生成します。そのランダムなコンフィギュレーションのエンドエフェクタ(16种)からベースへの変換を取得します。この変換をエンドエフェクタの目標姿勢として使用します。このコンフィギュレーションを表示します。

randConfig = puma1.randomConfiguration;tform = getTransform (puma1 randConfig,“哈佛”“基地”);显示(puma1 randConfig);

puma1モデルのinverseKinematicsオブジェクトを作成します。姿勢のさまざまな成分の重みを指定します。向きの角度については,位置のコンポーネントよりも小さな重みを使用します。ロボットのホームコンフィギュレーションを初期推定として使用します。

本土知识= inverseKinematics (“RigidBodyTree”, puma1);权重= [0.25 0.25 0.25 1 1 1];initialguess = puma1.homeConfiguration;

本土知识オブジェクトを使用してジョイント位置を計算します。

[configSoln, solnInfo] =动力学(“哈佛”,重量tform initialguess);

新しく生成された解のコンフィギュレーションを表示します。この解は,同じエンドエフェクタ位置を達成する,わずかに異なるジョイントコンフィギュレーションです。本土知识オブジェクトを複数回呼び出すと,同様のジョイントコンフィギュレーション,あるいはまったく異なるジョイントコンフィギュレーションが返されることがあります。

显示(puma1 configSoln);

互換性についての考慮事項

すべて展開する

将来のリリースで動作変更

参照

Badreddine, Hassan, Stefan Vandewalle和Johan Meyers。湍流直接数值模拟中最优控制的顺序二次规划(SQP)。acta photonica sinica, 2014, 40(4): 459 - 463。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]苏吉哈拉,Tomomichi。由Levenberg-Marquardt方法求解的无关逆运动学。机器人学报,2011,Vol. 27, No. 5(2011): 984-91。doi: 10.1109 / tro.2011.2148230。

赵建民,诺曼·i·巴德勒高度铰接图形的非线性规划逆运动学定位ACM图形学报第13卷第4期(1994年):313-36。doi: 10.1145/195826.195827。

拡張機能

R2016bで導入