0
$\begingroup$

Rosanswers logo

Hi,

I'm now facing a new issue in my implementation of the manipulation stack: the collisions between the object I just picked up (which is correctly attached to the hand) and the environment don't seem to be computed.

I'm placing my object directly on top of another object and I don't get any collisions, though I'm getting collisions between the hand and the collision map if I try to place the object at a position where the hand would be in collision with the environment.

Any ideas?

Cheers,

Ugo

PS: here is a link to a screencast I made to show the current status of my implementation of this stack.

More details regarding my questions: The collision_support_surface_name is definitely "table". I uploaded a new video to try to better show the problem I'm having with the collision.

In this video you can ignore the small orange/yellow spheres in rviz: it's a work in progress, but I'm just sending a list of targets to the place action and I'm (badly) displaying the grid for this list of targets.

As you can see there's no collision found between the object lying on the table and the attached object.

If I check the DEBUG messages, I can see lots of allowed collisions (between the attached body and the hand mostly), but none between the attached body and the other objects or the table. The collisions between the hand and the unattached body / environments are found.


Originally posted by Ugo on ROS Answers with karma: 1620 on 2011-02-16

Post score: 2


Original comments

Comment by mmwise on 2011-02-17:
when you see an answer you like, mark it as an accepted answer

$\endgroup$

2 Answers 2

0
$\begingroup$

Rosanswers logo

Hi Ugo,

Like Gil said, the manipulation pipeline will indeed disregard collisions between the object you are placing (identified as the "collision_object_name" in your PlaceGoal) and the support you are placing on (identified by the "collision_support_surface_name" in your PlaceGoal). This has to happen, otherwise any place operation would by definition bring your object in collision with whatever you are placing it on.

However, collision checking between the object and the support surface is disabled only in the last stage of the operation (interpolated IK), so that you don't hit the table with the object while moving around, but only when you're actually placing it.

I can not tell from the video what the support surface is in your case. If you're passing the "other object" as the "collision_support_surface_name" then the grasping pipeline will indeed put one object on top of the other. If you pass the table as the "collision_support_surface_name" then a place goal that brings your object in collision with the "other object" should be rejected.

Matei


Originally posted by Matei Ciocarlie with karma: 586 on 2011-02-16

This answer was ACCEPTED on the original site

Post score: 1

$\endgroup$
0
$\begingroup$

Rosanswers logo

Ugo,

That video is very cool! Looks like you are close to getting everything working.

As to your question, are you using the manipulation stack to compute the parts of the trajectory when the attached object comes into contact with the other object on the table? The manipulation stack sets some allowed collision operations during different parts of placing objects - for instance, I believe it allows contact between the attached object and the table when using interpolated ik to plan the final stages of the place. If you enable DEBUG output in whatever node is active during that trajectory segment you may see something like "collision but allowed touch between 'attached_object' and 'unattached_object'". That will be the clue that the node is intentionally disabling those collisions. Matei or Kaijen may also have more insight about what is being disabled and when.

--Gil


Originally posted by egiljones with karma: 2031 on 2011-02-16

This answer was NOT ACCEPTED on the original site

Post score: 1

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.