ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A
Ask Your Question

Object manipulator: how to lift upwards? (using different approach & lift directions for grasping)

asked 2013-02-27 10:26:18 -0600

dbworth gravatar image

Hi all,

I'm using object_manipulator, as part of the Object Manipulation Pipeline, to approach an object, grasp it, and pick it up.

I would like to approach from a horizontal/sideways direction (to get the object right into the palm), then after sensing/grasping, lift the object in the vertical direction.

In MYROBOT_hand_description.yaml I have specified the grasping approach direction as +x, and the gripper moves horizontally towards the object.

hand_approach_direction: [1.0,0.0,0.0]

Then in my Service call to the pickup action of object_manipulator, I specify the pickup direction of +z :

direction.header.frame_id = "base_link";
direction.vector.x = 0;
direction.vector.y = 0;
direction.vector.z = 1;
pickup_goal.lift.direction = direction;
pickup_goal.lift.desired_distance = 0.15;
pickup_goal.lift.min_distance = 0.08;

However, after grasping, the gripper reverses the interpolated IK move along the -x direction, then I think it tries to plan the kinematics for the next move...

  • Can I make it retract along a different direction to the approach direction?

  • Or, can I disable the reverse interpolated move, and go straight to planning the 'lift' phase?

Much appreciated.

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2013-04-15 02:43:04 -0600

fivef gravatar image

Probably you encounter this problem in simulation only. I had the same problem and solved it by just changing the mass value in my objects urdf file to a much smaller value.

If you really want to solve this problem you have to tune you controller-gains. Probably you find this config in you arms <arm_name_gazebo>/config folder.

edit flag offensive delete link more

answered 2013-02-28 17:06:48 -0600

hsiao gravatar image

Hm. Your message looks like it ought to be correctly specifying an upward lift. Is 'base_link' the robot_frame specified in your hand description file? If not, it won't let you use it as the frame (although it ought to throw an exception in that case).

If you set the min_distance and desired_distance to 0, it should disable the lift entirely, and you can just execute a Cartesian move upwards yourself. I often do an open-loop Cartesian move upwards if the grasp succeeded but the lift claims to have failed anyway, which happens fairly often with the PR2. (Also, setting min_distance and desired_distance to 0 is useful for grasping things like handles, where you really just wanted to close your gripper around the handle.)

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools


Asked: 2013-02-27 10:26:18 -0600

Seen: 429 times

Last updated: Apr 15 '13