I'm using UBUNTU ros2 Humble

I've been trying to control my robot in gazebo. I have tried several plugins to run it, but to no avail. I figured it could be that in my URDF, my wheel is connected to a link which is then connected to the base_link by joints, like this.

enter image description here

is there any plugiin for this specific scenario? or will the differential drive plugin from https://classic.gazebosim.org/tutorials?tut=ros_gzplugins work?.


1 Answer 1


it could be helpful if you show part of the URDF with wheels. Wheel links should be connected to rotation joints and these joints connected to further links.

Differential plugin should work if driving like tank is fine to you. Then you have to define left wheels and right wheels for robot controller like this

    left_wheel_names: ["front_left_wheel", "rear_left_wheel"]
    right_wheel_names: ["front_right_wheel", "rear_right_wheel"]
  • $\begingroup$ ive tried giving this, where revolute 8 and 10 are the joints from wheel to links <leftJoint>Revolute 8</leftJoint> <rightJoint>Revolute 10</rightJoint> but i get this error saying [gzserver-3] Error [Element.cc:914] Missing element description for [left_joint] [gzserver-3] Error [Element.cc:914] Missing element description for [right_joint] $\endgroup$ Jan 9 at 14:46
  • $\begingroup$ <joint name="Revolute 8" type="continuous"> <origin xyz="0.343545 0.05 -0.237509" rpy="0 0 0"/> <parent link="rightleg_small_1"/> <child link="wheel4_1"/> <axis xyz="0.0 1.0 -0.0"/> </joint> <joint name="Revolute 10" type="continuous"> <origin xyz="0.321538 -0.05 -0.266547" rpy="0 0 0"/> <parent link="leftleg_small_1"/> <child link="wheel3_1"/> <axis xyz="-0.0 -1.0 0.0"/> </joint> $\endgroup$ Jan 9 at 14:51
  • $\begingroup$ revolute 8 and 10 should be joints from links to wheels. That's for sure. So to take a step back. You should check the URDF separately. You can do it by moving URDF in rviz2 with joint_state_publisher_gui and its sliders. install it with sudo apt-get install ros-humble-joint-state-publisher and sudo apt-get install ros-humble-joint-state-publisher-gui and source your ros. Then run robot_description package with your URDF model and joint_state_publisher_gui and check if you can move every joint you created. If this works, we can check further with gazebo. $\endgroup$
    – Marabir
    Jan 11 at 8:12

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.