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

how to make pr2 grasping more robust

asked 2011-06-06 04:21:09 -0600

updated 2014-11-22 17:05:25 -0600

ngrennan gravatar image

Hello, I am using pr2_pick_and_place_manager explained here, in order to pick up objects. I'm calling it from code.

Object detection works very robustly, and I am using objects from the household database. However, grasping often returns UNFEASIBLE - which means it couldn't find a feasible grasp for the object. Sometimes grasping works if the object is centered on a table in front of the PR2, but not always.

Do you have any suggestions about how to reduce the number of times that no feasible grasp is found, so that the robot could pick more robustly the objects?

Turning the robot towards the table? Moving the arm closer to the object before attempting a grasp?

EDIT: This part of the output:

  [INFO] 1311008555.087295: tabletop detection reports success
  [INFO] 1311008602.329595: detection finished, finding bounding boxes for 
  clusters and sorting objects
  [INFO] 1311008602.330844: object 0, red: recognized object with id 18724
  [INFO] 1311009564.034749: attempting to grasp an object, whicharm = 0
  sending object collision name of: graspable_object_0
  [INFO] 1311008668.999249: grasp result: UNFEASIBLE
  [INFO] 1311008668.999630: no feasible grasp for this object with the r arm
  [INFO] 1311008668.999930: pick-up failed.

The object marker seemed to be in the right place:object markers were correctly recognized

EDIT2: I copied the grasp goal and result into this text file http://web.mit.edu/mitko/Public/rosde...

EDIT3: Indeed if I try a different object there I see a bunch of grasps evaluated for feasibility: image description

UPDATE: When I send the grasp goal to

 rosservice call /objects_database_node/database_grasp_planning

I get

 grasps: []
 error_code: 
   value: 0

Value 0 corresponds to success according to http://www.ros.org/doc/api/object_man... so I guess for some reason the grasp planner returns no grasps. Is there a way check why?

edit retag flag offensive close merge delete

Comments

Just posting here that I'm experiencing similar problems at Penn with our PR2. The object detection seems to work well (in my case, I'm not using the database), and in many cases, picking up a roll of duct tape works decently but it fails to put down the roll of tape because it returns 'infeasible'.
ben gravatar image ben  ( 2011-06-07 03:19:48 -0600 )edit
ben, thanks for the comment! Does picking up the duct tape work robustly at if you move it around? Do you have any advise on how to increase the proportion of times the PR2 successfully picks it up?
Dimitar Simeonov gravatar image Dimitar Simeonov  ( 2011-06-07 05:44:05 -0600 )edit
I don't have any advice yet. I have been putting the roll of tape in the center of the table or close to it. Have you tried raising the torso? Is the problem usually that it can't find a grasping pose or are there other problems as well? Have you tried turning off the object database?
ben gravatar image ben  ( 2011-06-07 11:34:08 -0600 )edit
I havent tried raising the torso - it has been on varying heigh in my tests - thanks for that! I think that by UNFEASIBLE they mean that no feasible grasps are found (according to documentation). I can't turn the object database - it's needed for reasoning over the object names.
Dimitar Simeonov gravatar image Dimitar Simeonov  ( 2011-06-07 11:40:27 -0600 )edit
Dimitar - how does your collision map look like? It might also be complaining that all the grasps are actually in collision with the environment. Also, what service exactly are you using to detect the objects?
Matei Ciocarlie gravatar image Matei Ciocarlie  ( 2011-06-07 12:11:35 -0600 )edit
Hello Matei, I am using PickAndPlaceManager from pr2_pick_and_place_demos to call the detection, and to grasp the object. Usually a put two or three objects on a table in front of a robot in a random configuration with at least few inches of separation.
Dimitar Simeonov gravatar image Dimitar Simeonov  ( 2011-06-08 03:25:22 -0600 )edit
Is the robot torso all the way up? With the torso down, the PR2 has difficulty grasping from a table, as it can not really reach above its shoulders.
Matei Ciocarlie gravatar image Matei Ciocarlie  ( 2011-06-08 12:21:43 -0600 )edit
Also, if you can maybe post a screenshot from rviz, with the collision map and the collision model markers listed here: http://www.ros.org/wiki/pr2_tabletop_manipulation_apps/Troubleshooting
Matei Ciocarlie gravatar image Matei Ciocarlie  ( 2011-06-08 12:21:58 -0600 )edit
Thank you for the suggestions. I won't have access to PR2 next couple of days, but will get back to you after that.
Dimitar Simeonov gravatar image Dimitar Simeonov  ( 2011-06-08 14:11:34 -0600 )edit
Hello, I worked on other stuff for a while but now I'm trying to solve this again. Looking at the markers - they appear to be in the right positions - torso is raised up and the table is close enough. I didn't see any grasp planner markers - maybe it is not trying any?
Dimitar Simeonov gravatar image Dimitar Simeonov  ( 2011-07-18 05:14:43 -0600 )edit
No grasps in the service response is strange... What arguments are you passing in? In particular, what object id?
Matei Ciocarlie gravatar image Matei Ciocarlie  ( 2011-07-18 14:29:26 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted
1

answered 2011-08-03 15:41:14 -0600

hsiao gravatar image

UNFEASIBLE does mean no feasible grasps were found--there are a number of things that can go wrong. Sometimes it means the object is out of reach, other times that there's no grasp that doesn't make the arm collide with the table, still other times the pregrasp is out of reach or in collision, even still other times there's no way to lift the object from the grasp pose... if you look at the messages going by in the window where you launched pr2_tabletop_manipulation.launch you should be able to see more info about why the grasp(s) failed. You do want the torso to be all the way up, pretty much anytime you're trying to do tabletop manipulation. Also, in that picture the robot looks pretty far from the table--to grasp objects that far into the table, I would definitely drive the base right up to the edge of the table. It's really quite surprising often how small the robot's workspace actually is--stuff that looks reachable very often really isn't.
As for putting stuff down, in more recent versions (Electric) the place goals have been raised in z to start--in older versions, if calibration causes the table to be significantly tilted, sometimes all the place poses will be in collision with the table. Even so, it should eventually resort to the last-resort-place in which it kind of shoves the object diagonally down onto the table--the fact that it doesn't suggests to me that your collision map is preventing the arm from planning any sort of movement to above the table.

edit flag offensive delete link more

Comments

thank you for the answer - I solved the problem by only using objects for which grasps are in the database (as seen from my machine - non-reproducible bug explained in comment #12 above). As for reachability - you are right - the objects need to be close enough to the robot
Dimitar Simeonov gravatar image Dimitar Simeonov  ( 2011-08-03 16:04:00 -0600 )edit

Question Tools

2 followers

Stats

Asked: 2011-06-06 04:21:09 -0600

Seen: 625 times

Last updated: Aug 03 '11