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.
Installation
Please see the installation instructions.
Stack contributors: debian build status
Contents
-
ROS Diamondback
- Installation
- Platforms
- Variants
- Overview
- New Contributed Stacks
-
Release Notes for Stable Stacks
- ros 1.4, ros_comm 1.4, rx 1.4, documentation 1.4
- camera_drivers 1.4
- common 1.4
- common_msgs 1.4
- diagnostics and diagnostics_monitors 1.4
- executive_smach 1.0, executive_smach_visualization 1.0
- geometry 1.4
- image_common 1.4
- image_pipeline 1.4
- image_transport_plugins 1.4
- joystick_drivers 1.4
- navigation 1.4
- physics_ode 1.4
- robot_model 1.4
- visualization, visualization_common 1.4
- vision_opencv 1.4
Platforms
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.
Variants
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.
Overview
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/OpenNI
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
You can now contribute stacks to Diamondback. Diamondback includes many new stacks from the growing ROS community (list of contributed stacks). A big thank you to the early testers of this system who helped make it compatible with Git and Mercurial.
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
nodelets are now more versatile thanks to the new nodelet_topic_tools package.
"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
UT Austin: art_vehicle, velodyne
Uni Freiburg: articulation, freiburg_tools, octomap_mapping
Bosch: bosch_drivers, exploration, pr2_exploration
ETH Zurich: ethzasl_aseba, ethzasl_message_transport
KU Leuven: orocos_toolchain_ros
UMD: camera_umd (USB camera support via UVC), gps_umd
Care-O-bot: cob_extern, cob_common, cob_driver, cob_simulation, cob_apps
TUM: cram_pl, ias_common, knowrob, mapping
University of Arizona: erratic_robot
CCNY: mav_tools, ccny_vision
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
Add nodelet version of driver.
Add IIDC Format7 support <<Ticket(ros-pkg,4222)>>, thanks to Ken Tossell.
Format7 binning and ROI comply with REP 104.
Add Focus and Zoom feature support <<Ticket(ros-pkg,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 (<<Ticket(ros-pkg,4725)>>). Prefer image_proc decoding instead. Only image_proc method supported in Format7 modes.
Better support for Mac OS X (<<Ticket(ros-pkg,4659)>>).
- Re-licensed under LGPL.
- 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, <<Ticket(ros-pkg 3834)>>
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.
common 1.4
The new bond package lets have two processes monitor each other for termination.
common_msgs 1.4
- 3 packages promoted into common_msgs:
sensor_msgs/Range added
Updated sensor_msgs/CameraInfo and sensor_msgs/RegionOfInterest as specified in REP 104. This adds support for binning and alternative distortion models, and improves handling of ROI.
diagnostics and diagnostics_monitors 1.4
diagnostics has now been separated into diagnostics and diagnostics_monitors stacks in order to separate out GUI dependencies.
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.
geometry 1.4
eigen package upgraded from Eigen2 to Eigen3 with Backwards compatibility flag EIGEN2_SUPPORT. For more information see migration guide at http://eigen.tuxfamily.org/dox-devel/Eigen2ToEigen3.html
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.
- 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.
image_pipeline 1.4
stereo_msgs moved to common_msgs
In PointCloud2, now correctly set is_dense to False.
- Added missing cfg includes to manifest. #4502
- 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
image_transport_plugins 1.4
compressed_image_transport: Plugin parameters can now be changed through dynamic_reconfigure.
New plugin parameters (can be changed through dynamic_reconfigure):
- Keyframe frequency.
- Can update bitrate and quality dynamically when using libtheora 1.1.
- Subscriber-side post-processing level.
libtheora: Package replaced with a rosdep.
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.
navigation 1.4
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.
- 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.
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.
- 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.
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.
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.
Moved the move_slow_and_clear recovery behavior from navigation_experimental to navigation.
physics_ode 1.4
<<Ticket(ros-pkg #4600)>>
merged from trunk, now with cylinder cylinder collision <<Ticket(ros-pkg #2501)>>
export more headers from ode/src into ros install directories.
- fix threadpool makefile marker file so it is not confused with opende makefile.
- automatic CUDA detection. Defaults to CPU if cuda is not found.
- supports double precision opende and single precision gpu.
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.
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.
vision_opencv 1.4
New and improved C++ interface for cv_bridge.