massMatrix
ジョイント空間の質量行列
説明
例
Robotics System Toolbox™ loadrobotから Boston Dynamics Atlas® ヒューマノイド ロボットのモデルを読み込みます。rigidBodyTree オブジェクトとして返されます。データ形式が "row" に設定されていることを確認します。すべてのダイナミクス計算について、データ形式は "row" または "column" でなければなりません。
atlas = loadrobot("atlas", DataFormat="row", Gravity=[0 0 -9.81]);
atlas のランダムなコンフィギュレーションを生成します。
q = randomConfiguration(atlas);
コンフィギュレーション q における質量行列を取得します。
H = massMatrix(atlas,q)
H = 30×30
12.6255 0.0673 -11.7110 1.5771 -0.0523 0.2264 -0.3481 0.0131 -0.0208 -0.0003 -0.0139 1.1938 -1.0678 0.0436 -0.0168 -0.0021 0.0355 0.0001 0 0 0 0 0 0 0 0 0 0 0 0
0.0673 22.6221 -0.4342 0.2640 -0.4184 0.2375 -0.1990 0.0215 -0.0216 -0.0002 0.1002 0.8340 0.7765 0.7280 -0.1353 -0.0328 -0.0290 -0.0003 0 0 0 0 0 0 0 0 0 0 0 0
-11.7110 -0.4342 21.2537 0.1411 1.3433 -0.2200 -0.2161 -0.0154 0.0024 0.0003 -0.0000 -0.6666 1.4631 0.0209 0.0006 0.0020 -0.0358 -0.0003 0 0 0 0 0 0 0 0 0 0 0 0
1.5771 0.2640 0.1411 0.9953 0.2206 0.1062 -0.3046 0.0043 -0.0153 -0.0003 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0.0523 -0.4184 1.3433 0.2206 1.5017 -0.2365 -0.3980 -0.0170 -0.0244 0.0003 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0.2264 0.2375 -0.2200 0.1062 -0.2365 0.1227 -0.0006 0.0151 0.0005 0.0001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0.3481 -0.1990 -0.2161 -0.3046 -0.3980 -0.0006 0.2930 -0.0008 0.0242 -0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0.0131 0.0215 -0.0154 0.0043 -0.0170 0.0151 -0.0008 0.0063 -0.0000 0.0004 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0.0208 -0.0216 0.0024 -0.0153 -0.0244 0.0005 0.0242 -0.0000 0.0070 -0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0.0003 -0.0002 0.0003 -0.0003 0.0003 0.0001 -0.0000 0.0004 -0.0000 0.0005 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0.0139 0.1002 -0.0000 0 0 0 0 0 0 0 0.0205 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1.1938 0.8340 -0.6666 0 0 0 0 0 0 0 0 0.4966 -0.1807 -0.0609 -0.0491 -0.0009 0.0171 -0.0002 0 0 0 0 0 0 0 0 0 0 0 0
-1.0678 0.7765 1.4631 0 0 0 0 0 0 0 0 -0.1807 0.8700 0.1437 0.2073 0.0070 -0.0285 -0.0005 0 0 0 0 0 0 0 0 0 0 0 0
0.0436 0.7280 0.0209 0 0 0 0 0 0 0 0 -0.0609 0.1437 0.3084 -0.0011 -0.0112 -0.0193 0.0001 0 0 0 0 0 0 0 0 0 0 0 0
-0.0168 -0.1353 0.0006 0 0 0 0 0 0 0 0 -0.0491 0.2073 -0.0011 0.2849 0.0184 -0.0105 -0.0004 0 0 0 0 0 0 0 0 0 0 0 0
⋮
show(atlas,q);

入力引数
ロボット モデル。rigidBodyTree オブジェクトとして指定します。関数 massMatrix を使用するには、DataFormat プロパティを 'row' または 'column' に設定します。
ロボット コンフィギュレーション。ロボット モデル内の固定されていないすべてのジョイント位置を含むベクトルとして指定します。コンフィギュレーションは、homeConfiguration(robot)、randomConfiguration(robot) を使用するか、独自のジョイント位置を指定することによって生成できます。configuration のベクトル形式を使用するには、robot の DataFormat プロパティを 'row' または 'column' に設定します。
出力引数
ロボットの質量行列。n 行 n 列のサイズをもつ正定値の対称行列として返されます。ここで、n はロボットの速度の自由度です。
詳細
ロボット ダイナミクスを操作するときは、rigidBody オブジェクトの以下のプロパティを使用してマニピュレーター ロボットの個々のボディの情報を指定します。
Mass— キログラム単位の剛体の質量。CenterOfMass— 剛体の重心位置。[x y z]の形式のベクトルとして指定します。このベクトルは、ボディ座標系を基準とした剛体の重心位置をメートル単位で記述します。オブジェクト関数centerOfMassは、ロボットの重心を計算する際にこれらの剛体プロパティ値を使用します。Inertia— 剛体の慣性。[Ixx Iyy Izz Iyz Ixz Ixy]の形式のベクトルとして指定します。ベクトルは、キログラム平方メートル単位でボディ座標系を基準としています。慣性テンソルは、次の形式の正定値行列です。
Inertiaベクトルの最初の 3 要素は、慣性テンソルの対角要素である慣性モーメントです。最後の 3 要素は、慣性テンソルの非対角要素である慣性乗積です。
マニピュレーター ロボット モデル全体に関連する情報については、以下の rigidBodyTree オブジェクト プロパティを指定します。
Gravity— ロボットにかかる重力加速度。[x y z]ベクトルとして指定します (m/s2)。既定では重力加速度はありません。DataFormat— 運動学およびダイナミクス関数の入出力データ形式。"struct"、"row"、または"column"として指定します。
マニピュレーターの剛体ダイナミクスは次の方程式で制御されます。
次のようにも記述されます。
ここで、次のようになります。
— 現在のロボット コンフィギュレーションに基づくジョイント空間の質量行列。この行列はオブジェクト関数
massMatrixを使用して計算します。— コリオリ項。 で乗算され、速度積を計算します。オブジェクト関数
velocityProductを使用して速度積を計算します。— 指定した重力
Gravityの位置を維持するためにすべてのジョイントに必要な重力トルクおよび力。重力トルクはオブジェクト関数gravityTorqueを使用して計算します。— 指定したジョイント コンフィギュレーションの幾何学的ヤコビアン。幾何学的ヤコビアンはオブジェクト関数
geometricJacobianを使用して計算します。— 剛体にかかる外力の行列。外力はオブジェクト関数
externalForceを使用して生成します。— 各ジョイントにベクトルとして直接かかるジョイントのトルクと力。
— それぞれ個々のベクトルとしての、ジョイント コンフィギュレーション、ジョイント速度、ジョイント加速度。回転ジョイントの場合は、ラジアン単位 (rad/s と rad/s2) で値をそれぞれ指定します。直進ジョイントの場合は、メートル単位 (m/s と m/s2) で指定します。
ダイナミクスを直接計算するには、オブジェクト関数 forwardDynamics を使用します。この関数は、上記の入力の指定した組み合わせに対してジョイント加速度を計算します。
特定の動きの組み合わせを得るには、オブジェクト関数 inverseDynamics を使用します。この関数は、指定したコンフィギュレーション、速度、加速度、外力を得るために必要なジョイント トルクを計算します。
拡張機能
使用上の注意および制限:
rigidBodyTree オブジェクトの作成時には、ロボット モデルにボディを追加する上限として MaxNumBodies を指定する構文を使用します。また、DataFormat プロパティを、名前と値のペアとして指定しなければなりません。以下に例を示します。
robot = rigidBodyTree("MaxNumBodies",15,"DataFormat","row")
データの使用量を最小限に抑えるには、上限をモデル内の必要なボディ数に近い数にします。すべてのデータ形式がコード生成用でサポートされています。ダイナミクス関数を使用するには、データ形式を "row" または "column" に設定しなければなりません。
関数 show および showdetails ではコード生成はサポートされません。
バージョン履歴
R2017a で導入massMatrix で、動的なメモリ割り当てを無効にしたコード生成がサポートされるようになりました。動的なメモリ割り当ての無効化の詳細については、可変サイズの配列に対するメモリ割り当ての制御 (MATLAB Coder)を参照してください。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)