Regarding hand of the Franka Panda model in the Robotics toolbox

16 views (last 30 days)
The URDF of the Franka Panda model loaded with
loadrobot("frankaEmikaPanda")
ans =
rigidBodyTree with properties: NumBodies: 11 Bodies: {1×11 cell} Base: [1×1 rigidBody] BodyNames: {'panda_link1' 'panda_link2' 'panda_link3' 'panda_link4' 'panda_link5' 'panda_link6' 'panda_link7' 'panda_link8' 'panda_hand' 'panda_leftfinger' 'panda_rightfinger'} BaseName: 'panda_link0' Gravity: [0 0 0] DataFormat: 'struct'
includes the Franka hand in the 3D graphic model, yet it does not include the transformation of the EE flange to Franka hand, i.e. the transformation matrix reported at page 10 of the product manual, and also included in the official franka_ros repository (see https://github.com/frankaemika/franka_ros/blob/5f90395ef000e0c998fb7aff8f127b9bd3773962/franka_description/robots/panda/panda.urdf.xacro#L12).
Is this absence of the transformation matrix in the URDF loaded by the robotics toolbox a bug, or is it the intended behavior?

Accepted Answer

Garmit Pant
Garmit Pant on 9 Jan 2024
I understand that you are working with Robotics System Toolbox and are importing the Franka Emika Panda robot model using the "loadrobot" function. You want to understand whether the omission of transformation matrix for the end effector flange to the hand is an intended behaviour or not.
  • The function loadrobot" returns a "rigidBodyTree" object. The omission of the transformation matrix is an expected behaviour of the function.
  • You can manually add the transformation matrix to the "rigidBodyTree" model by using the "setFixedTransform" method.
  • Create a "rigidBody" object with a joint having the transformation matrix property as is needed and replace the end effector link of the "rigidBodyTree" object that has been loaded.
Please refer to the following code snippet:
tform_mat = [0.707 0.707 0 0;
-0.707 0.707 0 0;
0 0 1 0.1034;
0 0 0 1];
body1 = rigidBody('body1');
jnt1 = rigidBodyJoint('jnt1','revolute');
setFixedTransform(jnt1,tform_mat);
body1.Joint = jnt1;
The above code will create a new "rigidBody" object that will have the joint with the transformation matrix as specified in the user manual. You can add this to the "rigidBodyTree" object.
For further understanding on using "rigidBodyTree" objects and manipulating them, you can refer to the following MATLAB Documentation:
  1. "rigidBodyTree"- https://www.mathworks.com/help/releases/R2022a/robotics/ref/rigidbodytree.html
  2. setFixedTransform” function - https://www.mathworks.com/help/releases/R2022a/robotics/ref/rigidbodyjoint.setfixedtransform.html
I hope you find the above explanation and suggestions useful!

More Answers (0)

Tags

Products


Release

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!