ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Help with procedure for simple pick and place task using MoveIt!

asked 2018-05-03 18:49:10 -0500

raequin gravatar image

updated 2018-05-03 18:51:18 -0500

Greetings. In order to move forward with a pick-and-place task using kinetic, I'd like your help to understand the procedure I should employ. Describing the project is my first aim and then I ask for your input.

The manipulator is a UR 10 mounted on an AMR. For the Gazebo simulation, the end-of-arm has a Kinect model and a primitive, 1-DOF gripper. Our task is to pick up a cylindrical (tubular?) object and hang it on a peg. The current step I'd like to accomplish is to grab a tube by placing the gripper above it (pictured in the two images), open the gripper, move along the cylinder axis until the gripper is at the midpoint of the object, and then close the gripper.

image description

image description

The motion along the cylinder axis does not complete; it stops at the point when the gripper would collide with the Octomap voxels as shown in this image.

image description

It seems the pick and place pipeline (that's me using jargon I'm uncertain about) is unnecessarily complicated for this task; both the gripper and grasped object are very simple. Note that the cylinder in the screenshots is really a stack of two objects; that is, the object is only half as long as it looks in these pictures.

I'm using Python and thus moveit_commander. My guess for how to proceed is to call add_box (or add_mesh), get the gripper in position and close it, then call attach_box and I'm good to go? Is there a step I'm missing for having MoveIt! ignore collisions between the gripper and the object?

A seemingly unimportant question is what's up with the original state of my robot not being erased from RVIZ as shown in that middle picture?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2018-05-04 05:49:15 -0500

If the cylinder you're trying to pickup is part of the collision scene that MoveIt it using then it will be impossible to grip it, as you have seen. When you're planning and executing the grasp motions you'll need to make sure that the cylinder is removed from the collision scene.

When the cylinder is grasped it should then be attached to the end effector of your arm so that it doesn't collide with other objects while it is being manipulated.

Hope this helps.

edit flag offensive delete link more



That's helpful but I need a little more guidance. Can you tell me the steps to "make sure that the cylinder removed from the collision scene?"

raequin gravatar image raequin  ( 2018-05-04 07:13:15 -0500 )edit

It appears you're using an octomap generated from the kinect for automatic collision avoidance, is this correct? If so you'll need to either remove the cylinder from the octomap or disable octomap collision checking to be able to grasp the cylinder.

PeteBlackerThe3rd gravatar image PeteBlackerThe3rd  ( 2018-05-04 09:35:21 -0500 )edit

Yes, the octamap comes from the Kinect data. Your comment makes sense, that one has to remove the voxels or get MoveIt! to ignore them in order for it to execute grasping. What I'm after are explicit steps required for making this happen. Is calling add_mesh sufficient?

raequin gravatar image raequin  ( 2018-05-06 22:12:19 -0500 )edit

Did you manage to remove the voxels?

yiying gravatar image yiying  ( 2020-08-11 16:40:54 -0500 )edit

Question Tools



Asked: 2018-05-03 18:49:10 -0500

Seen: 1,484 times

Last updated: May 04 '18