メインコンテンツ

forwardDynamics

ジョイントのトルクと状態が指定された場合のジョイント加速度

説明

jointAccel = forwardDynamics(robot) は、ジョイント速度と外力がないものとして、ロボットのホーム コンフィギュレーションにおける重力によるジョイント加速度を計算します。

jointAccel = forwardDynamics(robot,configuration) は、ロボット コンフィギュレーションのジョイント位置も指定します。

ホーム コンフィギュレーションの状態、ジョイント速度がない状態、トルクがない状態を指定するには、該当する入力引数に [] を使用します。

jointAccel = forwardDynamics(robot,configuration,jointVel) は、ロボットのジョイント速度も指定します。

jointAccel = forwardDynamics(robot,configuration,jointVel,jointTorq) は、ロボットに加えられるジョイント トルクも指定します。

jointAccel = forwardDynamics(robot,configuration,jointVel,jointTorq,fext) は、各ジョイントに加えられる力を含む外力行列も指定します。

すべて折りたたむ

与えられたロボット コンフィギュレーションに外力と重力がかかった結果のジョイント加速度を計算します。ロボット全体に対して重力が指定されている状態で、レンチが特定のボディに適用されています。

Robotics System Toolbox™ loadrobotから KUKA iiwa 14 ロボット モデルを読み込みます。ロボットは、rigidBodyTree オブジェクトとして指定されています。

データ形式を "row" に設定します。すべてのダイナミクス計算について、データ形式は "row" または "column" でなければなりません。

重力を設定します。既定では、重力はゼロと仮定されます。

kukaIIWA14 = loadrobot("kukaIiwa14",DataFormat="row",Gravity=[0 0 -9.81]);

kukaIIWA14 ロボットのホーム コンフィギュレーションを取得します。

q = homeConfiguration(kukaIIWA14);

ロボットにかかる外力を表すレンチ ベクトルを指定します。関数 externalForce を使用して外力行列を生成します。ロボット モデル、レンチがかかるエンドエフェクタ、レンチ ベクトル、および現在のロボット コンフィギュレーションを指定します。wrench"iiwa_link_ee_kuka" ボディ座標系を基準に指定されるため、ロボット コンフィギュレーション q を指定する必要があります。

wrench = [0 0 0.5 0 0 0.3];
fext = externalForce(kukaIIWA14,"iiwa_link_ee_kuka",wrench,q);

kukaIIWA14 がホーム コンフィギュレーションにあるときにエンドエフェクタ "iiwa_link_ee_kuka" に外力を適用した状態で、重力による結果のジョイント加速度を計算します。ジョイント速度とジョイント トルクはゼロと仮定されます (空のベクトル [] として入力)。

qddot = forwardDynamics(kukaIIWA14,q,[],[],fext)
qddot = 1×7

   -0.0023   -0.0112    0.0036   -0.0212    0.0067   -0.0075  499.9920

入力引数

すべて折りたたむ

ロボット モデル。rigidBodyTree オブジェクトとして指定します。関数 forwardDynamics を使用するには、DataFormat プロパティを 'row' または 'column' に設定します。

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

ジョイント速度。ベクトルとして指定します。ジョイント速度の数は、ロボットの自由度と等しくなります。jointVel のベクトル形式を使用するには、robotDataFormat プロパティを 'row' または 'column' に設定します。

ジョイント トルク。ベクトルとして指定します。各要素は特定のジョイントに加えられるトルクに対応します。jointTorq のベクトル形式を使用するには、robotDataFormat プロパティを 'row' または 'column' に設定します。

外力行列。n 行 6 列または 6 行 n 列の行列として指定します。ここで、n はロボットのボディの数です。形状は robotDataFormat プロパティに依存します。'row' データ形式では n 行 6 列の行列を使用します。'column' データ形式では 6 行 n 列の行列を使用します。

行列には、指定したボディに関連する位置のゼロ以外の値のみがリストされます。力の行列を一緒に追加することで、複数のボディに対する複数の力を指定できます。

指定した力またはトルクの行列を作成するには、externalForce を参照してください。

出力引数

すべて折りたたむ

ジョイント加速度。ベクトルとして返されます。ジョイント加速度のベクトルの次元は、ロボットの自由度と等しくなります。各要素は robot の特定のジョイントに対応します。

詳細

すべて折りたたむ

参照

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

拡張機能

すべて展開する

バージョン履歴

R2017a で導入

すべて展開する