Why is the transformation chosen in this particular way to induce a successful robot arm manipulation?

asked 2021-02-16 02:53:47 -0500

fabian gravatar image

updated 2021-02-17 01:50:25 -0500

fvd gravatar image

I am wondering how to choose a rotation and translation instructing a robot arm to successfully grasps an object. In particular, I am using the moveit task constructor and illustrate my question with the screenshot below. image description

The frame around the cylinder (to be picked up) is drawn by default and I added the world and panda_hand frame. Whether the grasp is successful is determined by a configuration labeled as:

# Gripper grasp frame transform [x,y,z,r,p,y]    
grasp_frame_transform: [0, 0, 0.1, 1.571, 0.785, 1.571]

This configuration is read by the following lines of code :

auto wrapper = std::make_unique<stages::ComputeIK>("grasp pose IK", std::move(stage));
wrapper->setIKFrame(grasp_frame_transform_, hand_frame_)

Unfortunately, I do not know why the grasp_frame_transform specifies this particular transform and what its reference frame is. In particular, to transform the hand frame to the frame around the cylinder, I would rotate first around the x-axis by Pi and then around the z-axis by Pi/2. If I specified the transform around the cylinder in terms of the world frame, I would simply rotate around the z-axis by Pi/2. In contrast, the configuration seems to specify euler angles of [Pi/2, Pi/4, Pi/2].

Does somebody have an idea why the transformation is specified in that particular way? Starting from the robot configuration in its resting position, how would you choose a transformation to guide the robot? Am I making a mistake in my calculations? I am grateful for any help or hints!

edit retag flag offensive close merge delete

Comments

I'm not sure and can't look into it right now, but is it the transform from the end effector base (wrist/hand frame) to a frame between the gripper tips (= where they would be when they close)? I think the next stage tries to place that frame at different grasp poses. If that doesn't help, look at what setIKFrame does to be sure.

fvd gravatar image fvd  ( 2021-02-17 01:49:24 -0500 )edit