I am working on a robot involving holonomic drive using 4 mecanum wheels. I have the following questions:

  1. Is there any ros2 controller for holonomic drive (like for diff drive and Ackermann Steering Controller at https://control.ros.org/master/doc/ros2_controllers/doc/controllers_index.html)?
  2. If not, any idea about how is the robot at the following link https://github.com/MickySukmana/holonomic working(Although it is using omni wheels and I plan to build a different setup)?

UPDATE_1: The PR version of ros2 controllers is installed successfully on ros2 iron. I tried publishing command velocities to "/mec_cont/controller_state" topic but the bot is not moving. To which topic shall I publish command velocities to using teleop_twist_keyboard? The following topics are available when running mecanum drive controller:


and in the case of diff_drive controller the following were available out of which I was publishing to "/diff_cont/cmd_vel_unstamped":



The robot was not performing all the movements involved in a mecanum wheel drive.
I figured out I did not passed "sum_of_robot_center_projection_on_X_Y_axis: 1.0" parameter under "kinematics:" in the controller ".yaml" file. Also make sure the joints are in perfect sequence. Example:

command_joint_names: ["front_left_wheel_joint", "back_left_wheel_joint", "back_right_wheel_joint", "front_right_wheel_joint"]

1 Answer 1


There is no merged ros2_controller yet in the official repo, but there is a PR for mecanum wheeled robots.

  • $\begingroup$ Any idea how to use it? $\endgroup$
    – Pratham
    Commented May 13 at 7:33
  • $\begingroup$ checkout the branch and compile it from source. You might need the iron-version of ros2_control to get it compiled (both can be compiled on humble distro). $\endgroup$ Commented May 13 at 10:40
  • $\begingroup$ Before working on real hardware, i am trying to get it work on simulation. I have a differential drive bot working fine in gazebo simulation. I uninstalled ros2_control and ros2_controller (installed using binary packages) and the robot was still working fine(Which according to me should not happen as i have uninstalled ros2 control and controllers). Then i uninstalled gazebo-ros2-control and now the bot was not working. I have the following questions: 1. Could you explain the reason for the same? 2. If it is because i am working on simulation then would the PR you provided work on gazebo? $\endgroup$
    – Pratham
    Commented May 14 at 12:53
  • $\begingroup$ You probably can't uninstall ros2_control if you have gazebo_ros2_control installed (it is a direct dependency). Uninstall all, add the iron branches of the three repositories (the branch from the PR, respectively) to your workspace and compile it. Then you have to figure out how to properly configure the mecanuum controller. $\endgroup$ Commented May 14 at 12:56
  • $\begingroup$ I have installed ros2_control from source using commands given at control.ros.org/humble/doc/getting_started/…. Which is working fine. Now to install the Holonomic Drive version of ros2 controller, i am downloading the same file from the site mentioned above using "wget raw.githubusercontent.com/ros-controls/ros2_control_ci/master/…" and changing the URL at line 36 to "github.com/StoglRobotics-forks/ros2_controllers/tree/…". $\endgroup$
    – Pratham
    Commented May 14 at 15:35

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.