Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Simulink でのマニピュレーター重力ダイナミクスの計算

この例では、マニピュレーター アルゴリズム ブロックを使用して、マニピュレーター ロボットの重力によるダイナミクスを計算および比較する方法を説明します。

重力加速度が異なる 2 つの類似したロボット モデルを指定します。KUKA LBR ロボット モデルを MATLAB® ワークスペースに読み込んで、そのコピーを作成します。最初のロボット モデル lbr では、標準重力ベクトル [0 0 -9.81] を指定します。コピー lbr2 では、既定の重力ベクトル [0 0 0] を使用します。これらのロボット モデルは、モデル内のブロックの [剛体ツリー] パラメーターでも指定されます。

load('exampleLBR.mat','lbr')
lbr.DataFormat = 'column';
lbr2 = copy(lbr);
lbr.Gravity = [0 0 -9.81];

重力ダイナミクス モデルを開きます。必要に応じて、"Load Robot Models" コールバック ボタンを使用して、MATLAB コードで指定されたロボット モデルを再度読み込みます。

open_system('gravity_dynamics_model.slx')

Forward Dynamics ブロックは、初期速度、トルク、または外力のない与えられた lbr ロボット コンフィギュレーションの重力によるジョイント加速度を計算します。次に、Inverse Dynamics ブロックは、lbr2 ロボットを使用して無重力で同じ加速度を得るためにジョイントに必要なトルクを計算します。最後に、Gravity Torque ブロックは、lbr ロボットの重力に抗するために必要なトルクを計算します。

モデルを実行します。わずかに数値が異なるほか、重力トルクと重力による加速度に必要なトルクは反対方向で同じ値です。

参考

ブロック

クラス

関数

関連するトピック