Main Content

setFixedTransform

ジョイントの固定変換プロパティを設定

説明

setFixedTransform(jointObj,tform) は、rigidBodyJoint オブジェクトの JointToParentTransform プロパティを、指定された同次変換 tform で直接設定します。

setFixedTransform(jointObj,dhparams,"dh") は、Denavit-Hartenberg (DH) パラメーターを使用して ChildToJointTransform プロパティを設定します。JointToParentTransform プロパティは単位行列に設定されます。DH パラメーターは、[a alpha d theta] の順序で指定されます。

回転ジョイントの場合、ジョイント間の固定変換を指定する際に theta 入力は無視されます。この角度はジョイント コンフィギュレーションによって異なるからです。直進ジョイントの場合は、d 入力が無視されます。詳細については、剛体ツリー ロボット モデルを参照してください。

setFixedTransform(jointObj,mdhparams,"mdh") は、修正 DH パラメーターを使用して JointToParentTransform プロパティを設定します。ChildToJointTransform プロパティは単位行列に設定されます。修正 DH パラメーターは、[a alpha d theta] の順序で指定されます。

すべて折りたたむ

Puma560® ロボットの Denavit-Hartenberg (DH) パラメーターを使用して、ロボットを構築します。各剛体は 1 つずつ追加され、子から親への変換がジョイント オブジェクトによって指定されます。

DH パラメーターは、各剛体がどのように親に接続されているかを基準として、ロボットのジオメトリを定義します。わかりやすくするために、Puma560 ロボットのパラメーターを行列で設定します [1]。Puma ロボットは連続チェーンのマニピュレーターです。DH パラメーターは、前のジョイント接続に対応する行列内の前の行との相対値です。

dhparams = [0   	pi/2	0   	0;
            0.4318	0       0       0
            0.0203	-pi/2	0.15005	0;
            0   	pi/2	0.4318	0;
            0       -pi/2	0   	0;
            0       0       0       0];

剛体ツリー オブジェクトを作成して、ロボットを構築します。

robot = rigidBodyTree;

最初の剛体を作成し、ロボットに追加します。剛体を追加するには次を行います。

  1. rigidBody オブジェクトを作成し、一意の名前を付けます。

  2. rigidBodyJoint オブジェクトを作成し、一意の名前を付けます。

  3. setFixedTransform を使用して、ボディからボディへの変換を DH パラメーターを使用して指定します。DH パラメーターの最後の要素である theta は無視されます。これは、角度がジョイント位置に依存するためです。

  4. addBody を呼び出して、最初のボディのジョイントをロボットの base 座標系に接続します。

body1 = rigidBody('body1');
jnt1 = rigidBodyJoint('jnt1','revolute');

setFixedTransform(jnt1,dhparams(1,:),'dh');
body1.Joint = jnt1;

addBody(robot,body1,'base')

その他の剛体を作成し、ロボットに追加します。addBody を呼び出して接続するときには、前述のボディ名を指定します。各固定変換は、前のジョイント座標系と相対的です。

body2 = rigidBody('body2');
jnt2 = rigidBodyJoint('jnt2','revolute');
body3 = rigidBody('body3');
jnt3 = rigidBodyJoint('jnt3','revolute');
body4 = rigidBody('body4');
jnt4 = rigidBodyJoint('jnt4','revolute');
body5 = rigidBody('body5');
jnt5 = rigidBodyJoint('jnt5','revolute');
body6 = rigidBody('body6');
jnt6 = rigidBodyJoint('jnt6','revolute');

setFixedTransform(jnt2,dhparams(2,:),'dh');
setFixedTransform(jnt3,dhparams(3,:),'dh');
setFixedTransform(jnt4,dhparams(4,:),'dh');
setFixedTransform(jnt5,dhparams(5,:),'dh');
setFixedTransform(jnt6,dhparams(6,:),'dh');

body2.Joint = jnt2;
body3.Joint = jnt3;
body4.Joint = jnt4;
body5.Joint = jnt5;
body6.Joint = jnt6;

addBody(robot,body2,'body1')
addBody(robot,body3,'body2')
addBody(robot,body4,'body3')
addBody(robot,body5,'body4')
addBody(robot,body6,'body5')

関数 showdetails または関数 show を使用して、ロボットが正しく構築されていることを確認します。showdetails は、すべてのボディを MATLAB® コマンド ウィンドウにリストします。show は、指定されたコンフィギュレーション (既定はホーム) でロボットを表示します。axis の呼び出しは、軸の範囲を変更し、軸ラベルを非表示にします。

showdetails(robot)
--------------------
Robot: (6 bodies)

 Idx    Body Name   Joint Name   Joint Type    Parent Name(Idx)   Children Name(s)
 ---    ---------   ----------   ----------    ----------------   ----------------
   1        body1         jnt1     revolute             base(0)   body2(2)  
   2        body2         jnt2     revolute            body1(1)   body3(3)  
   3        body3         jnt3     revolute            body2(2)   body4(4)  
   4        body4         jnt4     revolute            body3(3)   body5(5)  
   5        body5         jnt5     revolute            body4(4)   body6(6)  
   6        body6         jnt6     revolute            body5(5)   
--------------------
show(robot);
axis([-0.5,0.5,-0.5,0.5,-0.5,0.5])
axis off

参考文献

[1] Corke, P. I., and B. Armstrong-Helouvry. "A Search for Consensus among Model Parameters Reported for the PUMA 560 Robot." Proceedings of the 1994 IEEE International Conference on Robotics and Automation, IEEE Comput. Soc. Press, 1994, pp. 1608–13. DOI.org (Crossref), doi:10.1109/ROBOT.1994.351360.

入力引数

すべて折りたたむ

rigidBodyJoint オブジェクト。ハンドルとして指定します。

同次変換。4 行 4 列の行列として指定します。変換は ChildToJointTransform プロパティに設定されます。JointToParentTransform プロパティは単位行列に設定されます。

Denavit-Hartenberg (DH) パラメーター。4 要素ベクトル [a alpha d theta] として指定します。これらのパラメーターは、ChildToJointTransform プロパティの設定に使用されます。JointToParentTransform プロパティは単位行列に設定されます。

ジョイント間の固定変換を指定する際に theta 入力は無視されます。この角度はジョイント コンフィギュレーションによって異なるからです。詳細については、剛体ツリー ロボット モデルを参照してください。

修正 Denavit-Hartenberg (DH) パラメーター。4 要素ベクトル [a alpha d theta] として指定します。これらのパラメーターは、JointToParentTransform プロパティの設定に使用されます。ChildToJointTransform は単位行列に設定されます。

ジョイント間の固定変換を指定する際に theta 入力は無視されます。この角度はジョイント コンフィギュレーションによって異なるからです。詳細については、剛体ツリー ロボット モデルを参照してください。

参照

[1] Craig, John J. Introduction to Robotics: Mechanics and Control. Reading, MA: Addison-Wesley, 1989.

[2] Siciliano, Bruno. Robotics: Modelling, Planning and Control. London: Springer, 2009.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2016b で導入