Package Summary

Tags No category tags.
Version 1.1.0
License BSDv3
Build type CATKIN

Repository Summary

Checkout URI
VCS Type git
VCS Version noetic-devel
Last Updated 2022-03-28
CI status No Continuous Integration
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The diffbot_description package

Additional Links

No additional links.


  • Franz Pucher


No additional authors.


Package documentation

Version controlled source is managed in this fork: fjp/mobile_robot_description (diffbot branch)


ROS Package with a modular structure to create mobile robots with differential drive configuration. The purpose of this package is to provide xacro modules to make it easier to build the URDF description file of your differential robot. To active this purpose, this package has some modules that are inside the file common_macro.urdf.xacro that can be parametrized using YAML files, making it easier, fast, and more flexible to create your robot model.


Package Organization

This project has the following folder structure.

  • config: Folder to place the config files with the parameters of the parts of the robot and also some config files to the RVIZ.
    • sub-folder: The config files to a specific project should be placed in a sub-folder in order to make it possible to have different models in the same project.
  • launch: Folder with the launch files for the robots.
  • meshes: Folder to place the mesh files for the links of the robot. These meshes files will be used only as visual. The collision of the links is set as basic shapes to reduce the computational cost as the Gazebo tutorial suggests.
    • sub-folder: The specific mesh files of each project should be placed in the sub-folder with the name of the project.
  • rviz: Folder with the RVIZ configuration for the robot.
  • urdf: Folder with the URDF and xacro files.
    • include: Folder with the common module files, similar to the Libs.


To install this package, just clone it inside your ROS workspace, running:

$ git clone 


The basic modules of this package are inside the file common_macro.urdf.xacro that is at urdf/include folder as described above. This file work as a library and you can add it to your robot description like this:

<xacro:include filename="$(find ${package_name})/urdf/include/common_macros.urdf.xacro" />

⚠️ Note that in the command above, the package_name is set as a variable so to use this command you must have been set the package_name variable with the name of your project.

⚠️ IMPORTANT! Before using the modules of the common_macro files, you MUST set a xacro property package_name with the name of your project and the xacro property robot_name with the name that you choose for your robot. This name should be the same as the folder where you organize the config and mesh files. It can be seen in the mobile_robot, quimera_robot and diffbot. In case of change the name of the package, as it is a template repository, the value of this variable MUST be updated with the name that you choose. Setting this property globally on the robot file makes the path for the config and mesh files correct, because it is made relatively.

In the common_macro.urdf.xacro, there is the xacro modules: - Color properties: The color reference that appears on RVIZ. - Basic shape inertia: - sphere_inertia; - box_inertia; - cylinder_intertia; - default_intertia; - Base link: A macro to add a base link that can be parametrized using YAML file. The collision of this link has a box shape and the visual can have a basic shape or use a mesh. - Wheel: A macro to add the wheel link, joint and transmission. This macro can be parametrized using YAML file. The collision has the cylinder shape and the visual can have a basic cylinder shape or a mesh. - Caster_wheel: A macro to add a caster wheel link and joints. The caster_wheel only has passive joints, there is no transmission tag. This macro can be parametrized using YAML file. The collision has basic shapes and the visual can have a basic shapes or meshes.

For more detailed information about the xacro modules or about the usage, see the Wiki


If you have any comments, doubts, or suggestions, I'll be more than happy to know them, so, feel free to open an issue or a Pull Request with your collaboration.


Changelog for package diffbot_description

1.1.0 (2022-03-28)

  • fix deprecated warning using load_yaml (#53) Using xacro.load_yaml instead of just load_yaml
  • Contributors: Franz Pucher

1.0.0 (2021-08-13)

  • make use of non-gpu laser by default update min/max range to fix ghost objects (#27)
  • update diffbot_description: add gpu arg for laser xacro macro (#27)
  • fix diffbot_description laser link name
  • update camera sensor parameters
  • fix scale if statement in motor xacro macro
  • update motor.yaml comment
  • refactor diffbot_description
    • move stl files
    • use separate robot.gazebo.xacro
    • add addon xacro macro for addon components
    • simplify wheel and motor macros: remove top level name from yaml files
    • move caster macro to its own xacro file
    • add camera sensor macro
    • add imu sensor macro
    • refactor gpu laser macro
    • update license to BSDv3
  • Contributors: Franz Pucher

0.0.2 (2021-04-30)

0.0.1 (2020-12-22)

  • Update
  • add z_offset to diffbot base_footprint description for moving on the ground in rviz
  • add colors for gazebo
  • update description configs: caster dz and increase mass to avoid slip
  • include gpu_laser - rplidar a2 for diffbot
  • change z offset in blender for rplidar stl
  • add rplidar a2 mesh
  • remove deprecated diffbot_description
  • Update version, mail and license
  • move packages from ros/src to repository toplevel folder
  • Contributors: Franz Pucher

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

System Dependencies

No direct system dependencies.

Launch files


No message files found.


No service files found


No plugins found.

Recent questions tagged diffbot_description at