[Documentation] [TitleIndex] [WordIndex

0.11.0 (2010-01-07)

ROS 0.11 includes many of the final features and API modifications that we wish to have in place for ROS 1.0. Our focus with this release was on improving consistency, better performance, and bug fixes. We are also removing much of the deprecated functionality with this release so that ROS 1.0 will have minimal deprecated functionality.

Notes on Updating from 0.10 or earlier in SVN

There are a number of previously installed programs which are now versioned scripts. SVN will error when updating and not delete the installed programs to add the scripts in their place. You will need to delete the program and svn up again. The error will read: svn: Failed to add file 'FILENAME': an unversioned file of the same name already exists The solution is to rm FILENAME && svn up again.

Client API changes

Wait for message

You can now easily write code to block on receiving a single message from a topic. This is especially useful with messages published on latched topics.

Name strictness

The client libraries are now more strict about valid ROS Names. For more information about what are legal names, please see the Names page. This strictness is required due to the way that many ROS resources are translated into code (e.g. msg files), filesystem resources, and otherwise.

rospy service streamlining

Services can now be called with the same keyword style as publish calls. Service handlers can also return bare values instead of wrapping in response messages if the fields are compatible.

Keyword-style calling:

   1 add_two_ints = rospy.ServiceProxy('add_two_ints', AddTwoInts)
   2 add_two_ints(a=1, b=2)

Bare value return:

   1 def add_two_ints(req):
   2   return req.a + req.b
   3 s = rospy.Service('add_two_ints', AddTwoInts, add_two_ints)

Major changes

Tab-completion: roslaunch, rosnode, rostopic, rosparam, rosservice, and roscreate-pkg now have tab-completion. Enjoy!

Python startup latency speedup: the roslib loader now reads the rospack cache to improve startup performance. There has also been other cleanup in the ROS python-related codebase to improve startup performance.

roslaunch: "name" attribute is now required: in ROS 0.10, roslaunch began warning about the "name" attribute for <node> tags. This attribute is now required in ROS 0.10.

Removal of deprecated APIs/functionality:

Minor changes

Bug fixes

0.10.0 (2009-11-19)

The focus of this release is preparing ROS for a 1.0 release. We have been making final reviews of the ROS APIs to address any essential feature gaps, API inconsistencies, and deprecations.

Client Library Updates

Client libraries and the supporting tools (e.g. rosmake, rospack, roslaunch, rostest) no longer record data to ROS_ROOT. By default, this data is written to ~/.ros/, but this can be overriden using the ROS_HOME environment variable. New locations are described below.

New Locations

Client library updates

Toolchain updates

Bug Fixes

0.9.0 (2009-10-09)

ros::Node has been removed: the release officially ends support for the deprecated ros::Node API. Please use NodeHandle instead.

New bool type for messages: roscpp and rospy now support a bool type. This was added mainly to support use of boolean arrays with rospy. Previously, bools were represented using uint8[], which, for performance reasons, is represented as a string in rospy.

Node name strictness: roscpp, rospy, and roslaunch will now return errors of a node name contains a namespace, i.e. in a call to ros::init, rospy.init_node, or a <node name="..."/>. This previously had undefined behavior and is now considered an error.

/time → /clock: The ROS simulated clock topic is now called /clock and the type for this topic is now roslib/Clock. This change was made to reduce confusion with overloading of the term "Time" within ROS. The ROS client libraries currently subscribe to both topics for backwards compatibility.

Major changes

Minor changes and bug fixes

0.8.0 (2009-09-08)

roslaunch package-name file.launch: roslaunch can now accept rosrun-like syntax, where you just specify the package the file is in and the filename. roslaunch will locate the file inside the package for you, which saves the need to type full paths.

roslaunch <node> names: roslaunch will be requiring that <node> tags have 'name' attributes in future releases of ROS. After much testing, we've determined that <node> tags without names create many problems, especially in larger systems. We will also be able to implement better debugging tools and advanced roslaunch features with this new requirement.

<node name=$(anon id)... />: In order to make the migration to this new roslaunch name requirement possible, we have also introduced a new substitution argument for roslaunch: $(anon id) will generate an anonymous identifier based on id. Multiple uses of the same id generate the same anonymous identifier within the same roslaunch. In other words:

  <node name="$(anon foo)" pkg="rospy_tutorials" type="talker.py" />
  <node name="$(anon foo)" pkg="rospy_tutorials" type="talker.py" />

Will generate an error that there are two nodes with the same name.

Tilde names in roscpp: This release deprecates use of tilde (~) names directly in NodeHandle methods. The new way of accessing private names (supported since 0.7) is to create a NodeHandle with a namespace beginning with ~:

  ros::NodeHandle private_nh("~");
  private_nh.getParam("my_private_param", var);

instead of

  ros::NodeHandle nh;
  nh.getParam("~my_private_param", var);

Use of the latter will now produce a warning.

rostopic: many upgrades have been made to the rostopic commands, including a new "find" command to search for Topics by type.

Experimental code separated: Experimental packages were separated from the main ROS distribution. Specifically, the following packages are no longer included with ROS as of this release: repository_maintenance, rosdeb, roslisp_examples, rosrb, rosclj, rosjava, rosoct, session_tutorials, roscpp_sessions, roslisp, rospy_sessions, test_rosjava.

If you're using these packages (directly or indirectly), you'll want to check out the ros_experimental stack, e.g.:

 svn co https://code.ros.org/svn/ros/stacks/ros_experimental/trunk ~/ros/ros_experimental

Then augment your ROS_PACKAGE_PATH, e.g.:

 export ROS_PACKAGE_PATH=~/ros/ros_experimental:$ROS_PACKAGE_PATH

Major changes

Minor changes and bug fixes

0.7.3 (2009-08-19)

0.7.2 (2009-08-12)

0.7.1 (2009-07-31)

0.7.0 (2009-07-24)

Publisher latching: Publisher latching lets you automatically send the last message published to new subscribers. This has many uses cases. For example, instead of writing a static map Service, you could have a map Topic. A Topic is preferable as you can then record the map data using rosrecord. It can also enable you to reduce the publication rate for data that is slowly changing as you can ensure that any new subscribers will receive the latest data automatically. Previously this was possible using subscriber callbacks, but this streamlines implementations. By default, rostopic pub now latches, so you can use it to quickly 'latch' a value into the ROS Computation Graph.

Node API deprecated: roscpp's Node API is now deprecated in favor of the NodeHandle API. Some of the NodeHandle methods have been deprecated as well. Please update your code as the Node API will be removed in future releases. Please see the notes below for specific details on NodeHandle methods that have been deprecated.

Major changes

Minor changes and bug fixes

0.6.1 (2009-06-29)

ROS 0.6.1 is a minor bug-fix update. Updating is not essential unless you've encountered the problems mentioned below.

0.6.0 (2009-06-26)

Our big goals for this release were to make bag files more robust, add in UDP transport for C++ users and prepare for our upcoming releases of stacks (e.g. navigation). With previous releases, bag files would become unreadable if the messages they were recorded from were changed. The new bag file format enables bag files to always be read and comes with tools for migrating them in the event of changes. As a result of these updates, all of your existing bag files will need to be updated.

In order to update your bag files after you have rebuilt your system on ROS 0.6, please use

rosrun rosrecord fix_md5sums.py my_file.bag`

You can pass in patterns like *.bag or use more advanced commands like find . -name *.bag | xargs rosrun rosrecord fix_md5sums.py to streamline this update process.

Related to our bag file changes, we've also changed our md5sum calculation for message versions to make it easier to move, rename, and add comments to messages. You can now perform these changes without altering the md5sum.

With this release we are also adding a new UDP transport to the roscpp library. This is still an experimental transport, but it should provide the opportunity to test low-latency message communication. A tutorial demonstrating how to use the UDP transport can be found here listener_unreliable

Another major update is the introduction of the searchParam API to the Parameter Server. In the past, it was difficult to push node down into child namespaces and still have them share common parameters. For example, you may wish to set a parameter like the robot description in a parent namespace and have all children easily read from it. The searchParam API solves this problem by allowing you to search for a parameter in parent namespaces, returning the parameter key that is closest to your node's namespace.

Some of the more minor updates include some roslaunch convenience tools:

Build all packages that a launch file depends on:

rosmake `roslaunch-deps file.launch`

cd to the directory where log files are currently being written:

cd `roslaunch-logs`

The more detailed list of changes is below.

Major changes

Bug fixes and minor updates:

0.5.3 (2009-06-15)

0.5.2 (2009-06-12)

Built like so:

  1. copy tags/releases/ros-0.5.1 to tags/rc
  2. check out tags/rc
  3. svn merge -r 4651:4672 -r 4673:4693 -r 4695:4711 -r 4712:4727 -r 4728:4787 https://ros.svn.sourceforge.net/svnroot/ros/trunk .

  4. svn merge -r 4789:4791 https://ros.svn.sourceforge.net/svnroot/ros/trunk .

  5. svn revert -R core/experimental/rosjava
  6. Manually revert changes to core/roscpp/src/libros/node.cpp from r4692, which was accidentally merged above.
  7. Manually revert changes to test/test_roscpp/src/subscribe_n_fast.cpp from r4746, which was accidentally (?) merged above.
  8. resolve conflicts
  9. Fix typo in core/roslib/test/test_roslib_genpy.py (r4801).

The process above was intended to merge 4651:4787, but leave out certain changes:


0.5.1 (2009-05-27)

0.5 (2009-05-06)

0.4.3 (2009-04-15)

0.4.2 (2009-03-26)

0.4.1 (2009-03-05)

0.4.0 (2009-02-11)

A stable release of ROS, version 0.4.0, was pushed out tonight with its own tag and branch in the Subversion repository. This includes:

Future ROS core development will take place on trunk. This means that a checkout of the stable tag will be... stable :)

We suggest that you delete your existing ROS core installation (or move it aside), and get a checkout of the stable tag:

svn co https://ros.svn.sf.net/svnroot/ros/tags/stable ~/ros/ros

We will only be rolling out bug fixes on the "stable" tag, which should make the system easier to develop against. The major nomenclature / namespace changes of the past few weeks should be essentially over with this release.

Thanks for your patience, TEAM ROS

2020-08-08 12:22