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

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 close merge delete

Sort by » oldest newest most voted

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.

more

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.)

more