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

Objects slips from gripper during Gazebo simulation

asked 2020-05-12 05:03:24 -0500

AndreSpa gravatar image

updated 2022-04-30 13:33:43 -0500

lucasw gravatar image

I'm trying to simulate a simple scenario of pick and place for my 6 DOFs robot but i'm encoutering some problems during grasp. In particular, when grasping the gripper starts shaking untill the object slips out of the gripper (the gripoper seems to explode as can be seen in this video). I have also some problem with the grasp configuration, because in some particular coditions, the gripper hit the object due to a bad robot_config setting (i'm using the moveit grasps pipeline to generate and filter grasps according to the specific object).

For the Gazebo simulation, I'm using the position_controllers/JointTrajecoryController for the arm and position_controllers/GripperActionCommand for the gripper. I've also included jennifer's grasp plugin in the urdf but the simulation still does not work and i have no idea on how to proceed for solving this issue. I've also converted the position_controllers to effort_controllers as suggested by someone on the internet, but using these controllers causes the gazebo simulation to crash when the controllers spawn. I would appreciate any suggestions.

P.S. To generate the grasping objects i'm using the Intel Realsense D435i stereocam, whose plugin is not available for gazebo. The only solution I have found was to add its description and plugin to the robot description file (.urdf).

edit retag flag offensive close merge delete

Comments This is the link for the video that describes the issue i'm stucked with.

AndreSpa gravatar image AndreSpa  ( 2020-05-12 05:06:00 -0500 )edit

Please add the link to "jennifer's grasp plugin" you refer to and describe how you have set it up.

fvd gravatar image fvd  ( 2020-05-12 22:23:07 -0500 )edit

Did you find a solution? The proper way should be to use an effort controller. Can you share your code, it would make it easier to help.

tropic gravatar image tropic  ( 2020-12-01 09:49:07 -0500 )edit

@AndreSpa can this question be marked as answered? Or otherwise updated?

William gravatar image William  ( 2020-12-18 13:01:51 -0500 )edit

@AndreSpa, hii, i'm facing the exact same issue, did you find the answer. Why the grasping action in gazebo is too anoying

Johny gravatar image Johny  ( 2022-04-10 10:13:39 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2020-12-17 12:33:42 -0500

Ricardo Pinto gravatar image

You are saying that you are using GripperActionCommand, but this controles only 1 joint but your gripper has 2... I m not familiar with the "jennifer's grasp plugin". I tried some joint movement clone plugins but they didnt work very well (arm explodes xD).

My experience tells these things:

1- You cannot grasp objects with position hardware interface on Gazebo. The physics (friction etc.) just dont work...

2- Make sure you have a limited effort on the griper joints (effort_limit on URDF). That explosion seems to be because of that. But, it can be because of the position hardware interface as well. Your gripper fingers are trying to teleport inside the object. The arm explosions happens because of bad relations between link inertias/mass, joint efforts and pid values of controllers.

Solutions? Well... You have 2 options:

1- Change ALL your joints (arm and gripper) hardware interfaces to EffortHardwareInterface, use effort_controllers/JointTrajecoryController and GripperActionCommand should work anyway (i think). But remember... You will need to tune the PID parameters of all joint controllers :/. It can be painful. If you consider this adventure, i suggest you to use the rqt_reconfigure + rqt_plot + rqt_publisher to make it. The effort limits on your joints need to be in order with the Mass of you links... I suggest you to start low and increase if you see that your joints cant move. Make sure that your Inertia link tags are realistic... Trust me, gazebo will know when you try to fake it xD Use the .world files of gazebo to place the scene objects, there you can write whit SDF the description of you objects. Set the surface friction of the object to VERY HIGH and the mass to a low value. Good luck!

2- Forget about a realistic grasp. Make a plugin/controller that detects when your gripper is grasping something. Use the contact_points you see in your video, they are being published on a gazebo topic. When you detect some contact points between "inside the fingers" and an object, create a fixed joint between a finger and the object and stop your controller from closing more. The piece will never fall. Delete the fixed joint when you need to release the object. The main challenge here is to identify the moment you need to create the fixed joint. Because you will observe impossible grasp situations made real xD

I may publish a video of my arm grasping an object. Good luck! I hope i helped someone.

edit flag offensive delete link more


Quite detailed answer. have you had time to publish the video on this? Thanks.

aarsh_t gravatar image aarsh_t  ( 2023-01-17 14:27:25 -0500 )edit

Choosing an object from gazebo library and saving it in .world file+ increasing the effort (i.e., force and torque) of the gripper worked for me! thank you Pinto

abuibaid gravatar image abuibaid  ( 2023-07-14 02:52:17 -0500 )edit

Hi! I know this is an old thread but I'm curious about item#2. How can you add a joint on the fly? Sorry, I'm new with ros.

umejima gravatar image umejima  ( 2023-07-27 02:38:19 -0500 )edit
Vrushabh Jain gravatar image Vrushabh Jain  ( 2023-08-02 10:03:37 -0500 )edit

Question Tools



Asked: 2020-05-12 05:03:24 -0500

Seen: 2,182 times

Last updated: Dec 17 '20