= ROS Diamondback = {{http://ros.org/images/wiki/diamondback_posterLo-240w.jpg|diamondback|align="right"}} Diamondback was released on March 2, 2011 and is the third [[Distributions|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 [[pcl|Point Cloud Library]]. Diamondback has been designed to be smaller, lighter, and more configurable than [[cturtle|ROS C Turtle]]. == Installation == Please see the [[/Installation|installation instructions]]. ''Stack contributors'': [[http://www.ros.org/debbuild/diamondback.html|debian build status]] <<TOC(3)>> == 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 [[http://www.ros.org/reps/rep-0108.html|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 [[http://www.ros.org/reps/rep-0100.html|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'' [[pcl|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 [[openni/Contests/ROS 3D|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|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| 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 [[release|contribute stacks to Diamondback]]. Diamondback includes many new stacks from the growing ROS community ([[#contributed|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'' [[nodelet|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-ros-pkg|TUM]]. ''<<MsgLink(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. <<Anchor(contributed)>> == 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: [[Robots/PR2/diamondback/Release Notes|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 [[http://www.ros.org/reps/rep-0100.html|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]]). * [[ROS/ChangeList/1.4#A1.4.0_.282011-01-13.29|ros 1.4 change list]] * [[ros_comm/ChangeList/1.4#A1.4.0_.282011-01-18.29|ros_comm 1.4 change list]] * [[rx/ChangeList/1.4#A1.4.0_.282010-01-11.29|ros_comm 1.4 change list]] * [[documentation/ChangeList#A1.4.0_.282011-02-03.29|documentation 1.4. change list]] === camera_drivers 1.4 === ''Camera drivers are now maintained by Jack O'Quin'' * [[camera1394]] * Add [[nodelet]] version of driver. * Add IIDC Format7 support <<Ticket(ros-pkg,4222)>>, thanks to Ken Tossell. * Format7 binning and ROI comply with [[http://www.ros.org/reps/rep-0104.html|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. * [[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, <<Ticket(ros-pkg 3834)>> * [[prosilica_camera]] * Updated to adhere to [[http://www.ros.org/reps/rep-0104.html|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. [[camera_drivers/ChangeList/1.4#A1.4.0_.282011-01-31.29|Change list]] === common 1.4 === The new [[bond]] package lets have two processes monitor each other for termination. [[common/ChangeList/1.4#A1.4.0_.282011-02-03.29|Change list]] === common_msgs 1.4 === * 3 packages promoted into common_msgs: * [[stereo_msgs]] * [[visualization_msgs]] * [[trajectory_msgs]] * <<MsgLink(sensor_msgs/Range)>> added * Updated sensor_msgs/CameraInfo and sensor_msgs/RegionOfInterest as specified in [[http://www.ros.org/reps/rep-0104.html|REP 104]]. This adds support for binning and alternative distortion models, and improves handling of ROI. [[common_msgs/ChangeList/1.4#A1.4.0_.282011-01-19.29|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. [[diagnostics/ChangeList/1.4#A1.4.0_.282011-02-08.29|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. [[executive_smach/ChangeList/1.0#A1.0.0_.282011-01-04.29|Change list]] === 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 [[geometry/ChangeList/1.4#A1.4.0_.282011-02-09.29|Change list]] === image_common 1.4 === [[image_common]] was updated to be compatible with the <<MsgLink(sensor_msgs/CameraInfo)>> message updates specified in [[http://www.ros.org/reps/rep-0104.html|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`. [[image_common/ChangeList/1.4#A1.4.0_.282011-01-28.29|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 [[image_pipeline/ChangeList/1.4#A1.4.0_.282011-02-10.29|Change list]] === image_transport_plugins 1.4 === * [[compressed_image_transport]]: Plugin parameters can now be changed through [[dynamic_reconfigure]]. * [[theora_image_transport]]: * 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. [[image_transport_plugins/ChangeList/1.4#A1.4_.282011-02-08.29|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]]. [[joystick_drivers/ChangeList/1.4#A1.4.0_.282010-01-25.29|Change list]] === navigation 1.4 === * [[navigation]] * The navigation stack now supports the <<MsgLink(sensor_msgs/PointCloud2)>> message which should allow it to be used directly with many PCL filters and nodelets. As a result of this, <<MsgLink(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 <<MsgLink(sensor_msgs/PointCloud2)>> structures rather than using <<MsgLink(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]] * Moved the [[move_slow_and_clear]] recovery behavior from [[navigation_experimental]] to [[navigation]]. [[navigation/ChangeList/1.4#A1.4.0_.282010-02-09.29|Change list]] === physics_ode 1.4 === * [[opende]] * <<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. * [[parallel_quickstep]] * automatic CUDA detection. Defaults to CPU if cuda is not found. * supports double precision opende and single precision gpu. [[physics_ode/ChangeList/1.4#A1.4.0_.282011-01-24.29|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. [[robot_model/ChangeList/1.4#A1.4.0_.282010-01-04.29|Change list]] === visualization, visualization_common 1.4 === rviz 1.4 contains a new [[rviz/DisplayTypes/Image|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. [[visualization/ChangeList/1.4#A1.4.0_.282011-01-18.29|Change list]] === vision_opencv 1.4 === New and improved C++ interface for [[cv_bridge]].