I want my robot arm (Turtlebot3 with OpenManipulator-X) to firmly grab a box, however the gripper does a sudden close movement and the box flies away. Is a firm closing movement possible with ros2_control in Gazebo Classic?

The gripper model uses gripper controller from ros2_control package with position control. I could not find a way to slow down the closing movement of the gripper.

I searched for examples and the most similar example uses the Forward Command Controller, however it still has sudden movements like this: License: Apache 2.0

How can I achieve a firm closing movement with ros2_control gripper controller with position control?


1 Answer 1


Welcome to RSE.

So you want to simulate a gripper interacting with objects in Gazebo Classic? Don't use position or velocity interfaces. In my experience, that just doesn't work. You have to use an effort interface to let the physics engine solve that properly. This brings some other problems

  • Mimicking position within gazebo with exposing an effort interface via ros2_control isn't implemented yet. Mimicking effort would be supported, but your "mimicked" finger will not have the same position as the "main" finger. I'm not aware of a different method as implementing a custom gazebo_system, see for example this PR.
  • If your robot has a position interface (i.e. servo?), you can't use the same within your gazebo simulation without writing (again) a custom gazebo_system implementing some actuator dynamics between position-effort.

Currently, you have to use an effort_controller to forward topics to efforts, because the gripper_controller's effort interface was broken (fixed with this PR, but it will take some time to be released as binary)


Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.