Dingo Tutorials

Dingo Overview
Introduction
Dingo a lightweight and easy-to-use unmanned indoor ground vehicle for ROS, suitable for research and rapid prototyping applications. These tutorials will assist you with setting up and operating your Dingo. The tutorial topics are listed in the right column and presented in the suggested reading order.
For more information or to receive a quote, please visit us online.
These tutorials assume that you are comfortable working with ROS. We recommend starting with our ROS tutorial if you are not familiar with ROS already.
These tutorials specifically target Dingo robots running Ubuntu 20.04 with ROS Noetic, as it is the standard OS environment for Dingo. If instead you have an older Dingo robot running Ubuntu 18.04 with ROS Melodic, please follow this tutorial to upgrade the robot OS environment to Ubuntu 20.04 with ROS Noetic.
Dingo ROS Packages provides the references for the software packages and key ROS topics.
Dingo Software Setup outlines the steps for setting up the software on your Dingo robot and optionally on a remote computer.
Using Dingo describes how to simulate and drive your Dingo. Simulation is a great way for most users to learn more about their Dingo; understanding how to effectively operate Dingo in simulation is valuable whether you are in the testing phase with software you intend to ultimately deploy on a physical Dingo or you do not have one and are simply exploring the platform's capabilities. Driving Dingo covers how to teleoperate Dingo using the remote control, as well as safety procedures for operating the physical robot. Anyone working with a physical robot should be familiar with this section.
Navigating Dingo is a follow-on to what is learned in the Simulation tutorial, as navigation and map-making may be run in the simulated environment. However, this content is applicable to both the simulator and the real platform, if your Dingo is equipped with a laser scanner.
Dingo Tests outlines how to validate that your physical Dingo is working correctly.
Advanced Topics covers items that are only required in atypical situations.
Dingo ROS Packages
Dingo fully supports ROS; all of the packages are available in Dingo Github.
Description Package
The dingo_description repository provides a URDF model of Dingo.
Dingo's URDF model can be visualized in RViz. Once you have installed the desktop software in an upcoming tutorial, you will be able to run:
roslaunch dingo_viz view_model.launch

Environment Variables
Dingo can be customized and extended through the use of several environment variables. These are summarized in the README file. Some of the most important ones are listed below.
Variable | Default | Description |
---|---|---|
DINGO_OMNI | 0 | Set to 1 to switch from Dingo-D to Dingo-O (with omnidirectional wheels) |
DINGO_LASER | 0 | Set to 1 to equip Dingo with a primary lidar unit, normally front-facing |
DINGO_LASER_SECONDARY | 0 | Set to 1 to equip Dingo with a secondary lidar unit, normally rear-facing |
DINGO_LASER_3D | 0 | Set to 1 to equip Dingo with a primary 3D lidar unit, normally front-facing |
DINGO_REALSENSE | 0 | Set to 1 to equip Dingo with a RealSense depth camera |
DINGO_IMU_MICROSTRAIN | 0 | Set to 1 to equip Dingo with a Microstrain IMU |
Mounting points
Dingo-D has 6 evenly-spaced mounting points along its center channel for mounting sensors and other accessories. Dingo-O has 7 similar mounting points. The centers of these mounting points are represented as links in the URDF to facilitate adding sensors to simulated robots and modelling collisions when planning arm motions for mobile manipulation.
Link (front to back) | Dingo-D | Dingo-O |
---|---|---|
front_mount | Yes | Yes |
front_b_mount | Yes | Yes |
front_c_mount | Yes | Yes |
mid_mount | No | Yes |
rear_c_mount | Yes | Yes |
rear_b_mount | Yes | Yes |
rear_mount | Yes | Yes |


Both versions of Dingo also provide a front_bumper_mount
, located directly on the front of the robot.
While the physical robot does not have any mounting holes here, lightweight sensors (e.g. small cameras) can be placed here using double-sided adhesive if required.

Configurations
As an alternative to individually specifying each accessory, some fixed configurations are provided in the package.
These can be specified using the config
arg to description.launch
, and are intended especially as a convenience for simulation launch.
Config | Description |
---|---|
base | Base Dingo |
front_laser | Adds a SICK LMS1xx lidar to the Dingo's front mount |
Additional configurations coming soon
Key ROS Topics
You can view all topics that are active using rostopic list
.
The most important topics are summarized in the table below.
Topic | Message Type | Purpose |
---|---|---|
/cmd_vel | geometry_msgs/Twist | Input to Dingo's kinematic controller. Publish here to make Dingo go. |
/odometry/filtered | nav_msgs/Odometry | Published by robot_localization , a filtered localization estimate based on wheel odometry (encoders) and integrated IMU. |
/imu/data | sensor_msgs/IMU | Published by imu_filter_madgwick , an orientation estimated based on the Dingo's internal IMU. |
/mcu/status | dingo_msgs/Status | Low-frequency status data for Dingo's systems. This information is republished in human readable form on the diagnostics topic and is best consumed with the Robot Monitor. |
/mcu/aux_input | dingo_msgs/UInt8 | User can subscribe to this topic to monitor the MCU user inputs. See AUX Inputs. |
/mcu/aux_output | std_msgs/UInt8 | User can publish to this topic to enable and disable the AUX outputs as well as control relays on the MCU. See AUX Outputs and Relays. |
/mcu/fans | dingo_msgs/Fans | User can publish to this topic to control an optionally installed fan. See details Optional Fan. |
/mcu/lights | dingo_msgs/Lights | User can publish to this topic to override the default behavior of the Dingo corner LEDs. |
Dingo Software Setup
Backing Up Robot Configuration
Upgrading your Clearpath Dingo to ROS Noetic from older ROS distributions is a straightforward process; however it's important to understand that each Dingo is different, having undergone customization to your specifications. For more complete upgrade instructions see this guide.
Please take the time to understand what these modifications are, and how to recreate them on your fresh install of Ubuntu Focal/ROS Noetic.
Performing a Backup
-
As a fail-safe, please make an image of your robot's hard drive. You should always be able to restore this image if you need to revert back to your previous configuration.
- The easiest approach may be to either connect a removable (USB or similar) hard drive to the robot's computer, or to unplug the robot's hard drive and insert it into a computer or workstation.
- You can then use a tool such as CloneZilla or
dd
to write a backup image of your robot's hard drive onto another hard drive. - Alternatively, you can simply replace the robot computer's hard drive, reserving the drive and installing a new one to use with Noetic.
-
There are several places in the filesystem you should specifically look for customizations for your robot:
Location Description /etc/network/interfaces
or/etc/netplan/*
Your robot may have a custom network configuration in this file. /etc/ros/*/*-core.d/*.launch
Will contain base.launch
anddescription.launch
, may contain custom launch files for your robot configuration. Replaced byros.d
in newer versions./etc/ros/*/ros.d/*.launch
Will contain base.launch
anddescription.launch
, may contain custom launch files for your robot configuration. Replaces*-core.d
in newer versions./etc/ros/setup.bash
May contain environment variables for your configuration. -
Please save all the files listed above and use them as a reference during Noetic configuration.
Installing and Configuring Robot Software
Installing Dingo Software
The physical Dingo robot comes pre-configured with ROS and the necessary Dingo packages already installed; therefore, you will only need to follow the instructions below if you are re-installing software on the Dingo.
There are three methods to install software on the physical robot.
The preferred method is using the Clearpath Robotics ISO image, which is covered in this section.
The second method is using Debian (.deb) packages, which is also covered in this section.
The final approach is installing from source by directly cloning Clearpath Robotics Github repositories and building them in your ROS (catkin) workspace; however, this method is not covered in this section.
Install from ISO Image
Installing with the Clearpath Robotics ISO image will completely wipe data on the robot's computer, since the ISO image will install Ubuntu 20.04 (Focal), ROS Noetic, and robot-specific packages.
The Clearpath Robotics ISO image only targets Intel-family computers (amd64
architecture).
If your robot runs on an Nvidia Jetson computer, see
Jetson Software for software installation details.
Clearpath provides a lightly customized installation image of Ubuntu 20.04 "Focal" that automatically pulls in all necessary dependencies for the robot software. To install the software on a physical robot through the Clearpath Robotics ISO image, you will first need a USB drive of at least 2 GB to create the installation media, an ethernet cable, a monitor, and a keyboard.
-
Download the appropriate Noetic ISO image for your platform.
-
Copy the image to a USB drive using
unetbootin
,rufus
,balena etcher
, or a similar program. For example:sudo unetbootin isofile="clearpath-universal-noetic-amd64-0.4.17.iso"
-
Connect your robot computer to internet access (via wired Ethernet), a keyboard, and a monitor. Make sure that the robot is connected to shore power (where applicable) or that the robot's battery is fully charged.
cautionThe next step wipes your robot's hard drive, so make sure you have that image backed up.
-
Boot your robot computer from the USB drive and let the installer work its magic. If asked for a partitioning method choose
Guided - use entire disk and set up LVM
.noteYou may need to configure the computer's BIOS to prioritize booting from the USB drive. On most common motherboards, pressing
Delete
during the initial startup will open the BIOS for configuration. -
The setup process will be automated and may take a long time depending on the speed of your internet connection.
-
Once the setup process is complete, the computer will turn off. Please unplug the USB drive and turn the computer back on.
-
On first boot, the username will be
administrator
and the password will beclearpath
. You should use thepasswd
utility to change theadministrator
account password. -
To set up a factory-standard robot, ensure all your peripherals are plugged in, and run the following command, which will configure a ros upstart service, that will bring up the base robot launch files on boot. The script will also detect any standard peripherals (IMU, GPS, etc.) you have installed and add them to the service.
- Husky
- Jackal
- Dingo
- Ridgeback
- Warthog
- Boxer
rosrun husky_bringup install
sudo systemctl daemon-reload
rosrun jackal_bringup install
sudo systemctl daemon-reload
rosrun dingo_bringup install
sudo systemctl daemon-reload
rosrun ridgeback_bringup install
sudo systemctl daemon-reload
rosrun warthog_bringup install
sudo systemctl daemon-reload
rosrun boxer_bringup install
sudo systemctl daemon-reload
-
Finally, start ROS for the first time. In terminal, run:
sudo systemctl start ros
Installing from Debian Packages
If you are installing software on a physical robot through Debian packages, you will first need to ensure that the robot's computer is running Ubuntu 20.04 (Focal) and ROS Noetic.
-
Before you can install the robot packages, you need to configure Ubuntu's APT package manager to add Clearpath's package server.
-
Install the authentication key for the packages.clearpathrobotics.com repository. In terminal, run:
wget https://packages.clearpathrobotics.com/public.key -O - | sudo apt-key add -
-
Add the debian sources for the repository. In terminal, run:
sudo sh -c 'echo "deb https://packages.clearpathrobotics.com/stable/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/clearpath-latest.list'
-
Update your computer's package cache. In terminal, run:
sudo apt-get update
-
-
After the robot's computer is configured to use Clearpath's debian package repository, you can install the robot-specific packages.
-
On a physical robot, you should only need the robot packages. In terminal, run:
- Husky
- Jackal
- Dingo
- Ridgeback
- Warthog
- Boxer
sudo apt-get install ros-noetic-husky-robot
sudo apt-get install ros-noetic-jackal-robot
sudo apt-get install ros-noetic-dingo-robot
sudo apt-get install ros-noetic-ridgeback-robot
sudo apt-get install ros-noetic-warthog-robot
sudo apt-get install ros-noetic-boxer-robot
-
Install the
robot_upstart
job and configure the bringup service so that ROS will launch each time the robot starts. In terminal, run:- Husky
- Jackal
- Dingo
- Ridgeback
- Warthog
- Boxer
rosrun husky_bringup install
sudo systemctl daemon-reload
rosrun jackal_bringup install
sudo systemctl daemon-reload
rosrun dingo_bringup install
sudo systemctl daemon-reload
rosrun ridgeback_bringup install
sudo systemctl daemon-reload
rosrun warthog_bringup install
sudo systemctl daemon-reload
rosrun boxer_bringup install
sudo systemctl daemon-reload
-
Finally, start ROS for the first time. In terminal, run:
sudo systemctl start ros
-
Testing Base Configuration
-
To test your configuration, start the background service with the following command:
sudo systemctl start ros
-
The Comms indicator
should turn green. You can check that the service has started correctly by checking the logs:
sudo journalctl -u ros
-
Your Dingo should now be accepting commands from your joystick (see next section). The service will automatically start each time you boot your Dingo's computer.