Main Content

centerOfMass

重心の位置とヤコビアン

説明

com = centerOfMass(robot) は、base 座標系を基準として、ホーム コンフィギュレーションでのロボット モデルの重心位置を計算します。

com = centerOfMass(robot,configuration) は、base 座標系を基準として、指定したジョイント コンフィギュレーションでのロボット モデルの重心位置を計算します。

[com,comJac] = centerOfMass(robot,configuration) は、重心ヤコビアンも返します。重心ヤコビアンは重心速度をジョイント速度に関連付けます。

すべて折りたたむ

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

lbr = loadrobot("kukaIiwa14")
lbr = 
  rigidBodyTree with properties:

     NumBodies: 10
        Bodies: {[1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]  [1x1 rigidBody]}
          Base: [1x1 rigidBody]
     BodyNames: {'iiwa_link_0'  'iiwa_link_1'  'iiwa_link_2'  'iiwa_link_3'  'iiwa_link_4'  'iiwa_link_5'  'iiwa_link_6'  'iiwa_link_7'  'iiwa_link_ee'  'iiwa_link_ee_kuka'}
      BaseName: 'world'
       Gravity: [0 0 0]
    DataFormat: 'struct'

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

lbr.DataFormat = "row";

ロボットのホーム コンフィギュレーションでの重心の位置とヤコビアンを計算します。

[comLocation,comJac] = centerOfMass(lbr);
show(lbr);
hold all
plot3(comLocation(1),comLocation(2),comLocation(3),Marker="x",MarkerSize=30,LineWidth=5);

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 30 objects of type patch, line. These objects represent world, iiwa_link_0, iiwa_link_1, iiwa_link_2, iiwa_link_3, iiwa_link_4, iiwa_link_5, iiwa_link_6, iiwa_link_7, iiwa_link_ee, iiwa_link_ee_kuka, iiwa_link_0_mesh, iiwa_link_1_mesh, iiwa_link_2_mesh, iiwa_link_3_mesh, iiwa_link_4_mesh, iiwa_link_5_mesh, iiwa_link_6_mesh, iiwa_link_7_mesh.

入力引数

すべて折りたたむ

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

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

出力引数

すべて折りたたむ

重心位置。[x y z] ベクトルとして返されます。このベクトルは、ボディ座標系を基準とした、指定した configuration の重心の位置を、メートル単位で表します。

重心ヤコビアン。3 行 n 列の行列として返されます。ここで、n はロボットの速度の自由度です。

参照

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

拡張機能

バージョン履歴

R2017a で導入

すべて展開する