/rtab_dumpster

A Gazebo model of a differential drive robot equipped with an RGB-D camera

Primary LanguageCMake

ROS rtab_dumpster package

Author: Roberto Zegers R.

Abstract

The package contains a URDF model of a differential drive robot equipped with an RGB-D camera.

Brief description of the robot model

rtab_dumpster is a mobile robot base that has a differential drive configuration. The robot model comprises the following components: a rigid chassis, two independently driven wheels fixed on a common horizontal axis and two passive support castor wheels one at the front and one at the back. It also features a dump bin on top of its chassis. Additionally, both a laser scanner and a RGBD-camera are included in an elevated position in order to improve/maximize the sensors field of view.
The main skills required for developing this robot model include the following: joint and link modeling with URDF and XACRO, integration of Gazebo plugins to provide the URDF model with sensors and actuators, CAD modelling of mesh files with Fusion 360 and version control with GIT.

Fig.1 Image of the robot model in Gazebo

Fig.2 Size of the robot model's bounding box LENGTH x WIDTH x HEIGHT = 620 x 560 x 520mm

Fig.3 The scene displayed by Rviz on startup showing the proper configured depth cloud orientation

Default topics

  • Image Topic: /camera/rgb/image_raw
  • Depth Image Topic: /camera/depth/image_raw
  • Laser Scan Topic: /scan
  • Odometry Topic: /odom
  • Movement Commands: /cmd_vel

Gazebo differential drive controller parameters

Following parameters used by the diff_drive plugin can be customized editing the spawn_rtab_dumpster.launch file:

  • odometryTopic: the topic to which publish the nav_msgs/Odometry messages that store an estimate of the position and velocity of a robot in free space, default="odom"
  • odometryFrame: the name to use to broadcast the TF frame for odometry, default="odom"
  • robotBaseFrame: the name of the TF frame for the base (root) link of the robot, default="robot_footprint"
  • diff_drive_publishTf: boolean that sets whether to publish any TF data at all, default="true"
  • diff_drive_publishOdomTF: boolean that sets whether to publish the odom TF. Set to false for situations where a different source for simulated odom is used, default="true"

These parameters can also be modified by passed in an argument when running the spawn_rtab_dumpster.launch file like this:
$ roslaunch rtab_dumpster spawn_rtab_dumpster.launch odometryTopic:=odom_perfect

Repository architecture

Directories

  • urdf/ : (required) contains the files that generate the robot model and provide simulated actuators and sensors
  • meshes/ : (required) contains the mesh files that are part of the geometry of that robot
  • config/ : (optional) contains YAML files that store the Navigation Stack configuration files for the robot
  • rviz/ : (optional) contains Rviz configuration settings for displaying the robot model
  • launch/ : (optional) contains launch file for running the robot model in Gazebo
  • worlds/ : (optional) contains scene/environment files for Gazebo
  • maps/ : (optional) contains the occupancy grid based maps required for navigation

Robot model files

  • rtab_dumster.xacro : the xacro file that generates the urdf description file of the robot
  • rtab_dumster.gazebo : contains the Gazebo plugins that provide an interface to control the robot wheels and simulate the laser sensor
  • kinect.xacro : contains the plugins to simulate a Kinect sensor in Gazebo

Direct usage

  • Clone this repository into a ROS catkin workspace
  • Build and source the workspace
  • To launch this package including an empty Gazebo world and Rviz: roslaunch rtab_dumpster demo.launch or
  • To spawn the robot into another already opened Gazebo world:
    $ roslaunch rtab_dumpster robot_description.launch
    $ roslaunch rtab_dumpster spawn_rtab_dumpster.launch

If you want to move the robot using a keyboard you will also need to start a teleop node.
To run the robot with the Navigation Stack type in a new window: roslaunch rtab_dumpster amcl.launch

To view raw images on the topic /camera/rgb/image_raw, use:
$ rosrun image_view image_view image:=/camera/rgb/image_raw

Known Issues

  • Kinect camera in Gazebo does not publish topics: It seems there is a bug with Gazebo 7.0.0 inside Virtual Machines, which then got resolved in a later version of Gazebo 7. The solution is to upgrade Gazebo.

This package has only been tested on Ubuntu 16.04 LTS with ROS Kinetic and Gazebo 7.0 and 7.15.