0
$\begingroup$

Gazebo Answers logo

I am simulating a robotic manipulator from urdf files. The robot is supposed to interact with objects in its environment, but whenever any part of the robot touches an object, the object is pushed back some distance - it is almost as if there is some repulsion acting between the robot and the object, resulting in the application of an opposing force. I know this might be a problem with the robot's collision and inertia properties, but I do not have any clue on how to debug it. Can someone please guide me? Thanks

PS: I do not think that it is a problem with the object models, since I am using object models supplied by gazebo such as a simple box and coke can for now. When 2 objects touch each other, they have no problem in maintaining the contact, the problem is only when the robot touches the object.

I am showing a video with collision and transparent visualization on, which depicts what happens when a model is brought into contact with the robot link

I can see that some of the joints are rotating without any applied force in the transparent view. Is this the cause of the problem, i.e. is the robot model itself unstable? With a different robot model (UR5) also, the object is thrown away, but the robot itself does not move like the Barrett WAM


Originally posted by SP on Gazebo Answers with karma: 27 on 2016-10-26

Post score: 0


Original comments

Comment by nkoenig on 2016-10-26:
You can debug collisions and inertias through the graphical interface. Right click on a model and choose View->Collisions, and/or View->Inertia.

Comment by SP on 2016-10-28:
Thanks, I have checked that, The collision of the robot is shown confined to the body of the robot itself, but still I am unable to understand why it is exerting random push on any object that it touches. How should it be related to the collision? What should ideally happen when any part of the robot comes into contact with another object?

Comment by chapulina on 2016-10-28:
Maybe the robot is pushing the objects strongly and they move? What did you expect to happen when they get in contact? Also, how are you moving the robot? Using SetPosition by any chance? Maybe if you post a video of the problem with the models transparent, and collisions and contacts visualizations turned on, it might be clearer for others to understand the problem.

Comment by SP on 2016-11-01:
I am not moving the robot at all. I did not apply anything to the robot. After simply spawning the robot and an object model, I drag the object to bring it in contact with the robot. Ideally, I guess the object should simply topple down on colliding with the robot, and the robot should not move significantly. However, in this case, the robot is actually moving to "kick" the object away from itself. I have updated the question with the link to the video. Kindly let me know what is happening here.

$\endgroup$

1 Answer 1

0
$\begingroup$

Gazebo Answers logo

Thanks for the video. When you move the box, it goes from no contact at all, to suddenly overlapping with the robot. For the physics engine, this means it has to push both models really fast away from each other until they are not overlapping any more. It's as if they had suddenly a really deep contact, so they bounce back really hard.

So I don't think there's anything wrong with your robot. You can do the same with the Simple Arm that comes with Gazebo, just place a box on top of it and you'll see that things bounce around. *

The way I'd go about placing the box in the hand would be to:

  1. Pause the simulation.
  2. Move the box carefully into the hand, in a way so that they are not overlapping. You might need to scale the box for that.
  3. Then play the simulation and you should see the box slowly sitting on the hand.

Another thing I should mention here is the collision max_vel parameter. You can set this value to limit the velocity in which bodies move away from each other during contact.

  • I'm not sure why simple shapes don't bounce away from each other as explosively. I have a guess which I can't put in a few words, but basically, I think it's because they're simple systems without joint constraints.

Originally posted by chapulina with karma: 7504 on 2016-11-01

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by SP on 2016-11-02:
Thank you, it works fine :). I guess I was unnecessarily complicating stuff. I don't have a thorough knowledge about the physics engine, but intuitively I cannot comprehend how and why a robot should move to kick away an object, A physical robot would not allow such a deep contact, but when an abrupt contact is made between an object and a real robot, the object should simply fall.

$\endgroup$

Your Answer

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