このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
gravityTorque
重力を補正するジョイント トルク
説明
例
ロボット コンフィギュレーションの重力トルクの計算
Robotics System Toolbox™ loadrobot
から Techman™ TM12 を読み込みます。ロボットは、rigidBodyTree
オブジェクトとして指定されています。
robot = loadrobot("tm12");
データ形式を "row"
に設定します。すべてのダイナミクス計算について、データ形式は "row"
または "column"
でなければなりません。Gravity
プロパティを更新します。
robot.DataFormat = "row";
robot.Gravity = [0 0 -9.81];
ロボットのランダムなコンフィギュレーションを取得します。
q = randomConfiguration(robot);
各ジョイントの重力補正トルクを計算します。
gtau = gravityTorque(robot,q)
gtau = 1×6
0.0000 60.4466 16.4834 -2.2469 0.6922 0
入力引数
robot
— ロボット モデル
rigidBodyTree
オブジェクト
ロボット モデル。rigidBodyTree
オブジェクトとして指定します。関数 gravityTorque
を使用するには、DataFormat
プロパティを 'row'
または 'column'
に設定します。
configuration
— ロボット コンフィギュレーション
ベクトル
ロボット コンフィギュレーション。ロボット モデル内の固定されていないすべてのジョイント位置を含むベクトルとして指定します。コンフィギュレーションは、homeConfiguration(robot)
、randomConfiguration(robot)
を使用するか、独自のジョイント位置を指定することによって生成できます。configuration
のベクトル形式を使用するには、robot
の DataFormat
プロパティを 'row'
または 'column'
に設定します。
出力引数
gravTorq
— 各ジョイントの重力補正トルク
ベクトル
各ジョイントの重力補正トルク。ベクトルとして返されます。
詳細
ダイナミクス プロパティ
ロボット ダイナミクスを操作するときは、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
を使用します。この関数は、指定したコンフィギュレーション、速度、加速度、外力を得るために必要なジョイント トルクを計算します。
参照
[1] Featherstone, Roy. Rigid Body Dynamics Algorithms. Springer US, 2008. DOI.org (Crossref), doi:10.1007/978-1-4899-7560-7.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用に関するメモと制限:
rigidBodyTree
オブジェクトの作成時には、ロボット モデルにボディを追加する上限として MaxNumBodies
を指定する構文を使用します。また、DataFormat
プロパティを、名前と値のペアとして指定しなければなりません。次に例を示します。
robot = rigidBodyTree("MaxNumBodies",15,"DataFormat","row")
データの使用量を最小限に抑えるには、上限をモデル内の必要なボディ数に近い数にします。すべてのデータ形式がコード生成用でサポートされています。ダイナミクス関数を使用するには、データ形式を "row"
または "column"
に設定しなければなりません。
関数 show
および showdetails
ではコード生成はサポートされません。
バージョン履歴
R2017a で導入R2024a: 静的なメモリ割り当てのサポート
gravityTorque
で、動的なメモリ割り当てを無効にしたコード生成がサポートされるようになりました。動的なメモリ割り当ての無効化の詳細については、動的メモリ割り当てしきい値の設定 (MATLAB Coder)を参照してください。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)