Robotics StackExchange | Archived questions

Objects slips from gripper during Gazebo simulation

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 positioncontrollers to effortcontrollers 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).

Asked by AndreSpa on 2020-05-12 05:03:24 UTC

Comments

https://youtu.be/kvZNvXzzqBk This is the link for the video that describes the issue i'm stucked with.

Asked by AndreSpa on 2020-05-12 05:06:00 UTC

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

Asked by fvd on 2020-05-12 22:23:07 UTC

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.

Asked by tropic on 2020-12-01 10:49:07 UTC

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

Asked by William on 2020-12-18 14:01:51 UTC

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

Asked by Johny on 2022-04-10 10:13:39 UTC

Answers

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.

Asked by Ricardo Pinto on 2020-12-17 13:33:42 UTC

Comments

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

Asked by aarsh_t on 2023-01-17 15:27:25 UTC

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

Asked by abuibaid on 2023-07-14 02:52:17 UTC

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.

Asked by umejima on 2023-07-27 02:38:19 UTC