Gazebo | Ignition | Community
Ask Your Question

Actuator dynamics with gazebo+ros2: Best practices for simulation?

asked 2022-02-21 12:47:08 -0500

christophfroehlich gravatar image

updated 2022-02-21 12:48:00 -0500

Hi, I'm looking for some best practices to implement actuator dynamics in a ros2-control/gazebo simulation environment.

In my case I have hydraulic actuators and want to implement a black-box velocity-controlled actuator with force-compliant behavior. The interface to the physics engine in gazebo has to be the effort-interface to simulate multi-body contacts.

At the stage of implementation on real hardware, this velocity controller is then implemented on an embedded platform and not part of the ROS software anymore. Therefore, I'd like to make the velocity-command interface available for higher control tasks, and make the underlying velocity-controller with the actuator dynamics contained to be then able to switch to the hardware with its proper hardware_interface.

I've found two articles for ROS1 with different approaches:

Are there other approaches with ROS2? Which one would you prefer thinking of my application?

I guess that an extension to the GazeboSystem from gazebo_ros2_control is the most promising approach.

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2022-03-15 11:36:14 -0500

christophfroehlich gravatar image

If anyone wants to implement something similar: Finally, I've written a new gazebo_ros2_control::GazeboSystem. There I implemented my actuator dynamics, which is configurable via the urdf file and its <ros2_control> tags.

edit flag offensive delete link more


Nice!!! Way to go!

kakcalu13 gravatar imagekakcalu13 ( 2022-03-16 07:53:29 -0500 )edit

answered 2022-02-22 07:59:14 -0500

kakcalu13 gravatar image

Hi there!

I know this might not related to your gazebo11 but there's gazebo called ignition and they are available to ros2. I feel like it's very comfortable and easy to use! Keep in mind, Ign gazebo standalone is pretty huge and a lot of features available.

This is the ros2 control by ign team.

I haven't used this but I subbed to this and followed this. I plan to try it out later.

Secondly, I use ign's joint controller. I felt they are somewhat similar. The joint_controller is actually Gazebo's thing only. They offer integration which makes thing so much easier!

See the sdf I worked on: I wrote this readme too. I'm using joint_controller on wheels and servo atm.

See few examples below:

This one doesn't include ros2, but just wanted you to see how models look like using joint_controller:

To answer your question on ros2, the integration between ros2 and ign are the best. At least, it's in my opinion. I tried with gazebo11 on Foxy (I started Ros2) and I had hard time due to very little documentation in general and inexperience was one of factor too.

I know this isn't the answer, but I hope I gave you somewhat important parts of information!

edit flag offensive delete link more


Thanks for your sharing your thoughts. I had a look at ignition already. But as far as I understood there is no support closed kinematic chains. But this is a feature that we heavily use within our simulation (standard for hydraulic machinery), and I don't want to hardcode all the kinematic motions ;)

christophfroehlich gravatar imagechristophfroehlich ( 2022-02-22 08:26:13 -0500 )edit

Oh, shoot! :(

You can request feature if you want too. Here

Create a new issue and publish your request.

Good luck on your adventure, wish I could help more! See you around in gazebo community!

kakcalu13 gravatar imagekakcalu13 ( 2022-02-22 13:11:00 -0500 )edit

Question Tools

1 follower


Asked: 2022-02-21 12:47:08 -0500

Seen: 710 times

Last updated: Mar 15 '22