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
入力引数
ロボット モデル。rigidBodyTree
オブジェクトとして指定します。関数 gravityTorque
を使用するには、DataFormat
プロパティを 'row'
または 'column'
に設定します。
ロボット コンフィギュレーション。ロボット モデル内の固定されていないすべてのジョイント位置を含むベクトルとして指定します。コンフィギュレーションは、homeConfiguration(robot)
、randomConfiguration(robot)
を使用するか、独自のジョイント位置を指定することによって生成できます。configuration
のベクトル形式を使用するには、robot
の DataFormat
プロパティを 'row'
または 'column'
に設定します。
出力引数
各ジョイントの重力補正トルク。ベクトルとして返されます。
詳細
ロボット ダイナミクスを操作するときは、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.
拡張機能
使用上の注意および制限:
rigidBodyTree
オブジェクトの作成時には、ロボット モデルにボディを追加する上限として MaxNumBodies
を指定する構文を使用します。また、DataFormat
プロパティを、名前と値のペアとして指定しなければなりません。以下に例を示します。
robot = rigidBodyTree("MaxNumBodies",15,"DataFormat","row")
データの使用量を最小限に抑えるには、上限をモデル内の必要なボディ数に近い数にします。すべてのデータ形式がコード生成用でサポートされています。ダイナミクス関数を使用するには、データ形式を "row"
または "column"
に設定しなければなりません。
関数 show
および showdetails
ではコード生成はサポートされません。
バージョン履歴
R2017a で導入gravityTorque
で、動的なメモリ割り当てを無効にしたコード生成がサポートされるようになりました。動的なメモリ割り当ての無効化の詳細については、動的メモリ割り当てしきい値の設定 (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)