Home | Tutorials | Wiki | Issues
Ask Your Question

Why does a robot model push away objects whenever it touches them?

asked 2016-10-26 04:10:44 -0600

SP gravatar image

updated 2016-11-01 04:44:28 -0600

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

edit retag flag offensive close merge delete


You can debug collisions and inertias through the graphical interface. Right click on a model and choose View->Collisions, and/or View->Inertia.

nkoenig gravatar imagenkoenig ( 2016-10-26 09:07:48 -0600 )edit

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?

SP gravatar imageSP ( 2016-10-28 05:14:25 -0600 )edit

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.

chapulina gravatar imagechapulina ( 2016-10-28 12:50:19 -0600 )edit

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.

SP gravatar imageSP ( 2016-11-01 02:22:27 -0600 )edit

1 answer

Sort by ยป oldest newest most voted

answered 2016-11-01 10:58:46 -0600

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.
edit flag offensive delete link more


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.

SP gravatar imageSP ( 2016-11-02 01:24:15 -0600 )edit
Login/Signup to Answer

Question Tools

1 follower


Asked: 2016-10-26 04:10:44 -0600

Seen: 233 times

Last updated: Nov 01 '16