ROS Diamondback


Diamondback was released on March 2, 2011 and is the third ROS distribution release. It contains over forty new stacks, including support for the Kinect, contributed stacks from growing ROS community, and a stable release of Point Cloud Library. Diamondback has been designed to be smaller, lighter, and more configurable than ROS C Turtle.


Please see the installation instructions.

Stack contributors: debian build status


ROS Diamondback is primarily targeted at the Ubuntu Lucid through Maverick releases, though it can also be installed on various Linux systems like Red Hat, Debian, and Gentoo. It can also be used on OSes like Mac OS X and FreeBSD, though with more limited compatibility.


Diamondback provides over over 120 ROS stacks. To help you install these stacks more easily, we provide many different variants that organize them by use case and capability. The complete list of common variants is described in REP 108: Diamondback Variants. The main entrypoints for ROS users are:

  • desktop-full: ROS, rx, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception.

  • desktop: ROS, rx, rviz, and robot-generic libraries

  • ros-base: ROS package, build, and communication libraries. No GUI tools.


Our focus for ROS Diamondback was making ROS smaller and more lightweight to install. We also worked on making ROS more useful with 3D sensors like the Kinect.

ROS refactored

  • As part of REP 100, ROS was broken into separate pieces: build system (ros), communication system (ros_comm), GUI tools (rx), and documentation tools (documentation).

PCL 0.10

  • Point Cloud Library is now stable for ROS. Thanks to the many PCL developers that made this possible. PCL was a popular library in the ROS 3D contest and we look forward to ROS users putting it to use with the Kinect and other devices.


  • Kinect and OpenNI libraries for ROS are available in the ni stack. This includes libraries for integrating with pcl, as well as skelton-tracking via NITE. A special thanks goes to Ivan Dryanovski and William Morris, who got the ROS + Kinect ball rolling.

Smaller debs, incremental updates

  • The binary debian packages are now approximately 50% smaller. New updates to ROS Diamondback will also be smaller as we are now able to offer incremental updates.

GUI vs. non-GUI

  • In addition to refactoring ROS, we've also reorganized many of the commonly used ROS stacks to separate GUI libraries from core robotics libraries. This means that you can now install libraries like the ROS navigation stack without having to compile heavyweight graphics libraries.

Other major improvements

Eigen 3

  • The eigen package now supports both Eigen 2 and Eigen 3 APIs. We thank the Eigen community for making this backwards compatibility possible.

Improved OpenCV integration

  • cv_bridge contains a new, easier-to-use C++ API.

New contributed stacks release system

camera1394 now with nodelets, LGPL

  • The firewire driver for ROS now supports nodelets and has been re-licensed from GPL to LGPL.

Topic tools for nodelets

"Bond" nodes together

  • The new bond package lets have two processes monitor each other for termination.

rosjava updated

  • rosjava has been upgraded to be compatible with ROS 1.4 and is now maintained by Lorenz Moesenlechner of TUM.

sensor_msgs/PointCloud2 support in Navigation

  • The navigation stack can now use the more efficient PointCloud2 type, which is useful with sensor like the Kinect.

rosh, a new Python-based shell environment for ROS

  • rosh builds on top of IPython to provide common ROS tools, like rostopic and rosservice, but with with the convenience of Pythonic syntax and a Python interpreter. rosh has a relatively stable API but is still under pre-1.0 heavy development.

New Contributed Stacks

Release Notes for Stable Stacks

The major changes for the stable stacks in the ROS Diamondback release are summarized below.

Related: PR2 Diamondback Release Notes

ros 1.4, ros_comm 1.4, rx 1.4, documentation 1.4

Most of the work for this release is described in REP 100, which separated the ROS stack into separate stacks for the build system (ros), communication system (ros_comm), GUI tools (rx), and documentation system (rosdoc).

camera_drivers 1.4

Camera drivers are now maintained by Jack O'Quin

  • camera1394

    • Add nodelet version of driver.

    • Add IIDC Format7 support #4222, thanks to Ken Tossell.

    • Format7 binning and ROI comply with REP 104.

    • Add Focus and Zoom feature support #4631, thanks to José Antonio Álvarez Ruiz.

    • The driver will only set video_mode or frame_rate to values supported by the device.

    • Bayer decoding within the driver deprecated (#4725). Prefer image_proc decoding instead. Only image_proc method supported in Format7 modes.

    • Better support for Mac OS X (#4659).

    • Re-licensed under LGPL.
  • wge100_camera

    • New firmware for WGE100 camera. Camera firmware written by James Bowman of Willow Garage. Firmware supports XOR line for robust communication.
    • Dropped packets only cause warnings in diagnostics when using the "packet_debug" option, which can be set dynamically, #3834

  • prosilica_camera

    • Updated to adhere to REP 104, changes to CameraInfo and GetPolledImage.

    • Binning exposed through dynamic_reconfigure.
    • Handles binning and ROI correctly in both polled and continuous modes.
  • camera_info_manager: Moved to the image_common stack.

Change list

common 1.4

The new bond package lets have two processes monitor each other for termination.

Change list

common_msgs 1.4

Change list

diagnostics and diagnostics_monitors 1.4

diagnostics has now been separated into diagnostics and diagnostics_monitors stacks in order to separate out GUI dependencies.

Change list

executive_smach 1.0, executive_smach_visualization 1.0

New 1.0 stack

executive_smach is a task execution/orchestration library with ROS. It comes with executive_smach_visualization, which includes tools for visualizing the state machines as they execute.

Change list

geometry 1.4

Change list

image_common 1.4

image_common was updated to be compatible with the sensor_msgs/CameraInfo message updates specified in REP 104. It is now also home to camera_info_manager, which used to be part of camera_drivers.

  • polled_camera: GetPolledImage service now lets the caller specify binning and returns an informative message in case of failure.

  • camera_calibration_parsers

    • YAML parser handles arbitrary distortion models.
    • Videre INI format only supports the plumb bob distortion model, and is considered legacy. Use YAML instead in new code.
  • camera_info_manager: Added support for URLs beginning with "package://".

  • image_transport: Changed parameter lookup behavior in plugins to support dynamic_reconfigure. Publisher parameters are now expected to live in the namespace <base topic>/<transport name>, e.g. /my_camera/image_rect/compressed. Subscriber parameters live (by default) in the namespace <node name>/<transport name>, e.g. /my_node/compressed.

Change list

image_pipeline 1.4

  • stereo_msgs moved to common_msgs

  • stereo_image_proc

    • In PointCloud2, now correctly set is_dense to False.

    • Added missing cfg includes to manifest. #4502
  • camera_calibration

    • Camera calibration system data structures can now handle multiple size chessboards. #3681
    • Calibration now requires skew points for both mono and stereo calibration. #4086
    • Failure of SetCameraInfo leaves GUI open and warns to console and rosout. #3993

    • Warn if no image. #4242

Change list

image_transport_plugins 1.4

Change list

joystick_drivers 1.4

New maintainer: Melonee Wise

Wii compatibility has been improved, including better support for the WiiMote Classic. joystick_remapper has been moved to ua-ros-pkg.

Change list

  • navigation

    • The navigation stack now supports the sensor_msgs/PointCloud2 message which should allow it to be used directly with many PCL filters and nodelets. As a result of this, sensor_msgs/PointCloud support becomes slightly less efficient because a conversion must take place.

  • costmap_2d

    • Patch from Andreas Tropschug for supporting different map topics for different costmaps within the same node. Adds the "map_topic" parameter to the costmap.
    • Uses pcl types internally for storage of sensor_msgs/PointCloud2 structures rather than using sensor_msgs/PointCloud messages.

    • Added support for changing global frames. This means that an OccupancyGrid can be given to the costmap in a frame that is different from the current global frame and things will still work.

  • dwa_local_planner

    • Moved the dwa_local_planner from the navigation_experimental stack to the navigation stack. This planner was used by the PR2 during its continuous_ops run and provides nice features like dynamically reconfigurable parameters. The package should have up-to-date documentation on the wiki explaining how things work. Though, its interfaces are very similar to the base_local_planner.

  • base_local_planner

    • Added Eric Perko's cost visualization tool to the base_local_planner package. This allows for visual feedback when tuning the cost function used by the base_local_planner.
    • Adding the latch_xy_goal_tolerance parameter to allow for considering the goal position to be reached permanently once it is ever achieved. This should help robots with poor odometry.
    • Added an angular_sim_granularity parameter that allows setting the minimum angular simulation step independently from the translational simulation step.
    • Deprecated the backup_vel parameter in favor of escape_vel since the old name was misleading.

    • Added the meter_scoring parameter to allow users to set their goal and path distance bias factors independent of the resolution of the costmap.

    • Added a scoreTrajectory function from Travis Deyle's patch to complement checkTrajectory, but return a true score.
  • navfn

    • Added the visualize_potential parameter that, along with Ye Cheng's patch, allows the potential area that navfn computes to be visualized in rviz.

    • Planner now supports a tolerance when making a plan so that if people want to use it to get to a general region, it still work. Say you want to go all the way across the building, but you don't care if you're two feet away from the actual goal point.
  • move_base

    • Added the clear_costmaps service that allows an external user to tell move_base to clear all the information in its costmaps. Patch from JSK (manabusaito).

    • Now executes recovery behaviors when the local planner fails as well as the global planner.
    • Executes recovery behaviors when the robot oscillates for too long. Added two new parameters to move_base.

  • move_slow_and_clear

Change list

physics_ode 1.4

  • opende

    • #4600

    • merged from trunk, now with cylinder cylinder collision #2501

    • export more headers from ode/src into ros install directories.

    • fix threadpool makefile marker file so it is not confused with opende makefile.
  • parallel_quickstep

    • automatic CUDA detection. Defaults to CPU if cuda is not found.
    • supports double precision opende and single precision gpu.

Change list

robot_model 1.4

This release only contains minor changes relative to the 1.2 release. The most important change is the removal of deprecated elements of the urdf specification.

Change list

visualization, visualization_common 1.4

rviz 1.4 contains a new Image display, which enables viewing images without a CameraInfo. It also adds a new "Axis" point cloud transformer, which is useful for visualizing 3D data by range.

visualization_msgs is now part of common_msgs. This enables libraries to publish visualization markers without creating Ogre installation dependencies.

Change list

vision_opencv 1.4

New and improved C++ interface for cv_bridge.

Wiki: diamondback (last edited 2011-05-26 19:36:37 by KenConley)