Main Content

geometricJacobian

ロボット コンフィギュレーションの幾何学的ヤコビアン

説明

jacobian = geometricJacobian(robot,configuration,endeffectorname) は、指定されたエンドエフェクタ名のベースおよびロボット モデルのコンフィギュレーションを基準として幾何学的ヤコビアンを計算します。

すべて折りたたむ

ロボットの特定のエンドエフェクタおよびコンフィギュレーションの幾何学的ヤコビアンを計算します。

RigidBodyTree オブジェクトとして指定されている Puma ロボットを読み込みます。

load exampleRobots.mat puma1

ランダムなコンフィギュレーションのために、Puma ロボット上のボディ 'L6' の幾何学的ヤコビアンを計算します。

geoJacob = geometricJacobian(puma1,randomConfiguration(puma1),'L6')
geoJacob = 6×6

    0.0000   -0.7795   -0.7795   -0.4592    0.5643   -0.6612
    0.0000    0.6264    0.6264   -0.5714   -0.7789   -0.2282
    1.0000    0.0000    0.0000    0.6801   -0.2734   -0.7146
    0.4544    0.3107    0.1746   -0.0000         0         0
   -0.5577    0.3866    0.2173   -0.0000         0         0
   -0.0000    0.7036    0.3304    0.0000         0         0

入力引数

すべて折りたたむ

ロボット モデル。rigidBodyTree オブジェクトとして指定します。

ロボット コンフィギュレーション。ジョイント位置のベクトル、またはロボット モデル内のすべてのボディのジョイント名およびジョイント位置を含む構造体として指定します。コンフィギュレーションは、homeConfiguration(robot)randomConfiguration(robot) を使用するか、構造体内で独自のジョイント位置を指定することによって生成できます。configuration のベクトル形式を使用するには、robotDataFormat プロパティを "row" または "column" に設定します。

エンドエフェクタ名。string スカラーまたは文字ベクトルとして指定します。エンドエフェクタは、ロボット モデル内の任意のボディです。

データ型: char | string

出力引数

すべて折りたたむ

指定された configuration をもつエンドエフェクタの幾何学的ヤコビアン。6 行 n 列の行列として返されます。ここで n は、ロボットの自由度の数です。ヤコビアンは、ジョイント空間の速度を、ベース座標系に対して相対的に、エンドエフェクタの速度にマッピングします。エンドエフェクタの速度は以下と等価です。

Equation for calculating linear velocities of the end effector using the Jacobian and joint velocities

ω は角速度、υ は線形速度、 はジョイント空間の速度です。

詳細

すべて折りたたむ

ダイナミクス プロパティ

ロボット ダイナミクスを操作するときは、rigidBody オブジェクトの以下のプロパティを使用してマニピュレーター ロボットの個々のボディの情報を指定します。

  • Mass — キログラム単位の剛体の質量。

  • CenterOfMass — 剛体の重心位置。[x y z] の形式のベクトルとして指定します。このベクトルは、ボディ座標系を基準とした剛体の重心位置をメートル単位で記述します。オブジェクト関数 centerOfMass は、ロボットの重心を計算する際にこれらの剛体プロパティ値を使用します。

  • Inertia — 剛体の慣性。[Ixx Iyy Izz Iyz Ixz Ixy] の形式のベクトルとして指定します。ベクトルは、キログラム平方メートル単位でボディ座標系を基準としています。慣性テンソルは、次の形式の正定値行列です。

    A 3-by-3 matrix. The first row contains Ixx, Ixy, and Ixz. The second contains Ixy, Iyy, and Iyz. The third contains Ixz, Iyz, and Izz.

    Inertia ベクトルの最初の 3 要素は、慣性テンソルの対角要素である慣性モーメントです。最後の 3 要素は、慣性テンソルの非対角要素である慣性乗積です。

マニピュレーター ロボット モデル全体に関連する情報については、以下の rigidBodyTree オブジェクト プロパティを指定します。

  • Gravity — ロボットにかかる重力加速度。[x y z] ベクトルとして指定します (m/s2)。既定では重力加速度はありません。

  • DataFormat — 運動学およびダイナミクス関数の入出力データ形式。"struct""row"、または "column" として指定します。

ダイナミクス方程式

マニピュレーターの剛体ダイナミクスは次の方程式で制御されます。

ddt[qq˙]=[q˙M(q)1(C(q,q˙)q˙G(q)J(q)TFExt+τ)]

次のようにも記述されます。

M(q)q¨=C(q,q˙)q˙G(q)J(q)TFExt+τ

ここで、次のようになります。

  • M(q) — 現在のロボット コンフィギュレーションに基づくジョイント空間の質量行列。この行列はオブジェクト関数 massMatrix を使用して計算します。

  • C(q,q˙) — コリオリ項。q˙ で乗算され、速度積を計算します。オブジェクト関数 velocityProduct を使用して速度積を計算します。

  • G(q) — 指定した重力 Gravity の位置を維持するためにすべてのジョイントに必要な重力トルクおよび力。重力トルクはオブジェクト関数 gravityTorque を使用して計算します。

  • J(q) — 指定したジョイント コンフィギュレーションの幾何学的ヤコビアン。幾何学的ヤコビアンはオブジェクト関数 geometricJacobian を使用して計算します。

  • FExt — 剛体にかかる外力の行列。外力はオブジェクト関数 externalForce を使用して生成します。

  • τ — 各ジョイントにベクトルとして直接かかるジョイントのトルクと力。

  • q,q˙,q¨ — それぞれ個々のベクトルとしての、ジョイント コンフィギュレーション、ジョイント速度、ジョイント加速度。回転ジョイントの場合は、ラジアン単位 (rad/s と rad/s2) で値をそれぞれ指定します。直進ジョイントの場合は、メートル単位 (m/s と m/s2) で指定します。

ダイナミクスを直接計算するには、オブジェクト関数 forwardDynamics を使用します。この関数は、上記の入力の指定した組み合わせに対してジョイント加速度を計算します。

特定の動きの組み合わせを得るには、オブジェクト関数 inverseDynamics を使用します。この関数は、指定したコンフィギュレーション、速度、加速度、外力を得るために必要なジョイント トルクを計算します。

参照

[1] Featherstone, Roy. Rigid Body Dynamics Algorithms. Springer US, 2008. DOI.org (Crossref), doi:10.1007/978-1-4899-7560-7.

拡張機能

バージョン履歴

R2016b で導入