I have a 4 wheeled robot with mecanum wheels (in real life), I have been able to simulate it and get it to work with the ROS2 DiffDrive plugin (replicating the skid steer plugin from ROS1) but now that I want to implement ROS2 Control with it I cannot get it to work. I have been following the Articubot tutorials but his robot only has 2 wheels. I can't find anything online regarding a 4 wheeled robot that would make use of the DiffDrive plugin on ROS2 while using ROS2 Control. At the moment My aim is to only simulate the robot in gazebo so that I can better understand how ROS2 control works but I am stuck.

GitHub Repo

I hope the question is clear.

Some guidance on how to make ROS2 Control work with this robot with be very much appreciated. Thanks


1 Answer 1


There is currently no ros2_controller supporting omniwheels. If it has standard wheels, use the diff_drive controller as in this demo. Consider the wheels_per_side parameter.

  • $\begingroup$ thanks for the answer. I have some of the parameters defined in a .yaml for my robot and I have tried to use the diffdrive plugin for gazebo simulation but since having done that my robot has started to act weird. It doesn't move like it used to when using teleop keyboard and now it doesn't show the TFs for the wheels in RViz either. Could you please have a look if you've got sometime? not really sure what I have done wrong as all the names of joints are correct etc. $\endgroup$
    – Balen
    Commented Jan 31 at 12:04
  • $\begingroup$ do you have omniwheels, mecanum wheels or simple traction wheels? $\endgroup$ Commented Jan 31 at 12:15
  • $\begingroup$ I have mecanum wheels for my real robot. But at the moment I am only trying to made the simulation work with normal/basic wheels as I want to understand ros2 control better. $\endgroup$
    – Balen
    Commented Jan 31 at 12:18
  • 1
    $\begingroup$ Please have a look on the demo I've linked above for setup of ros2_controller diff_drive_controller in general, or at the diff-drive demo of gazebo-ros2-control-demos on how to use it with gazebo. Then replace the URDF with yours, and change the wheels_per_side parameter if you have independent control commands per wheel. $\endgroup$ Commented Jan 31 at 12:52
  • 1
    $\begingroup$ have you used now the ros2_control diff_drive_controller together with gazebo_ros2_control? That's the first part (and has nothing in common with the diffdrive plugin from gazebo classic). For the hardware component plugin for your robot, see the demos I linked already or tutorials like this one $\endgroup$ Commented Jan 31 at 15:10

Your Answer

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

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