Robot Operating System Changelog

What's new in Robot Operating System 0.8.0

Sep 28, 2009
  • 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 names'': roslaunch will be requiring that tags have 'name' attributes in future releases of ROS. After much testing, we've determined that 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.
  • '''': 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.

New in Robot Operating System 0.6.1 (Jun 30, 2009)

  • rosrecord: fix_md5sums.py executable permission was not set
  • roscpp
  • gcc 4.4 support
  • Added operator= overload on NodeHandle
  • Bug fix for serializing array of times
  • roslisp
  • bug fix for dealing with lookup-hostname-ip-address
  • bug fix for fixed-size arrays

New in Robot Operating System 0.5.3 (Jun 16, 2009)

  • small fixes to support CMake 2.4.6 (r4860) roslaunch : add dependency roslaunch -> rosout (r4819) rospy: fix to private command-line params (r4866) rosdep: additions to the dependency database rosconfig: beginnings of a fully-automated installation method

New in Robot Operating System 0.5.2 (Jun 13, 2009)

  • roslaunch
  • roslaunch-console: console application for querying state of nodes running in roslaunch
  • roslaunch now always runs an XML-RPC server that can receive requests for process status
  • rostopic:
  • rostopic pub command for publishing data to a topic
  • rospy:
  • logging improvements including timestamps, more consistent usage within rospy, and message format args for rospy.log*()
  • rosservice:
  • bug fixes
  • roswtf:
  • now warns about nodes that have died or have respawned
  • roscpp
  • Added ros::ok() and ros::shutdown()
  • Fixed constness on methods in a number of handles (Publisher, Subscriber, ServiceServer, ServiceClient)
  • Fixed segfault when combining new and old style callbacks
  • Fixed assertion when publishing the same topic multiple times from the same node
  • Added ::ConstPtr and ::Ptr to autogenerated ros::Messages
  • rosdep
  • Debian support, improved yaml database
  • rosrecord
  • Various bag file improvements
  • roslisp
  • added integration with asdf build tool
  • hierarchical logging similar to rosconsole
  • rosemacs:
  • can keep track of topics, hertz rates in background; tab-completes topic names in shell.

New in Robot Operating System 0.5.0 (May 8, 2009)

  • ROS client libraries (["roscpp"], ["rospy"], ["roslisp"], ["rosoct"])
  • client libraries now include msg/srv definition within autogenerated source files
  • client libraries now exchange msg/srv definition during connection header handshake. Type validation is still based on md5 sum.
  • ["roscpp"]
  • New API. With this release, we're introducing a new API for roscpp. The old (0.4.x) API is still supported, it will be deprecated in a future release, and eventually it will be removed. We recommend that all new code use the new API.
  • '''Handles.''' The new API uses the concept of a `handle`. Where the old API required you to refer to a global instance of ros::Node (either through `ros::Node::instance()` or `g_node`), you now create an instance of ros::!NodeHandle. Multiple !NodeHandles can be created, and each !NodeHandle can be assigned its own namespace, which facilitates combination of code from multiple sources into single executables (e.g., mechanism_control, rviz). Topic subscriptions, topic advertisements, service advertisements, and service calls now use handles as well. All handles use the RAII principle to guarantee correct cleanup of their resources. (http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization)
  • ''Threading.''' The new API divorces the threading structure from the topic and service structure. Where the old API allocated one thread per advertised service and one thread per subscribed topic, the new API doesn't by default allocate any threads. You can run everything in a single thread if you like. We provide hooks for common patterns, such as allocating a number of threads equal to the number of cores.
  • '''Callbacks.''' Topic callbacks are now passed (shared) pointers to message objects. Where the old API required you to allocate and use one message object to handle all incoming messages, the new API creates new objects as necessary and passes them into your callbacks. You have the option of keeping old messages around, simply by retaining the pointer that you are passed; the underlying memory will be reclaimed when that pointer goes out of scope.
  • Please read through the 0.5 tutorials at http://pr.willowgarage.com/wiki/ROS/Tutorials, as well as those in the roscpp_tutorials package.
  • Subscriber connect/disconnect callbacks are no longer passed a pointer to a roscpp internal object (Publisher). Instead, they are now passed a !SingleSubscriberPublisher object.
  • ros::service::!ServiceHandle renamed to ros::!ServiceClient.
  • ros::service::createHandle() renamed to ros::service::createClient(). Also now returns a !ServiceClient directly, not a shared_ptr (the backing data is still reference counted).
  • New '''ros::Rate''' object, for controlling periodic loops. Use a '''Rate''' when you want to run a loop at a fixed rate, and have some variable-length computation to perform inside it.
  • ["rospy"]
  • added `_connection_header` field to messages, which provides access to caller ID and extra connection information (topics and services). See rospy_tutorials/006_connection_header for example usage.
  • added `on_shutdown(fn)` to client API. Enables registration of shutdown handlers before rospy begins shutdown
  • gentools no longer has deprecation warning for Python 2.6 for use of md5 module
  • New `rospy.Rate` object, for controlling periodic loops. Use a `Rate` when you want to run a loop at a fixed rate, and have some variable-length computation to perform inside it.
  • ["roslaunch"]
  • Powerful new `launch-prefix` attribute for `` tags lets you easily run a node in gdb, valgrind, in a separate xterm window, or otherwise affect the launch of a node.
  • you can set `~param` (local node parameters) outside of a tag. These parameters will be applied to any nodes within the same scope that are declared after the .
  • you no longer have to specify a `name` attribute for a tag that contain tags (local node parameters).
  • support for ["rosparam"] delete
  • tags now explicitly override previous tags if `from` attributes match
  • ["rosparam"]
  • set/load command: behavior of the 'set' and 'load' commands have been changed for dictionaries. Previous behavior for load was to replace the entire namespace with the value of the dictionary. New behavior is to add new keys to the namespace. This makes it easier to have multiple parameter files configure different parameters within the same namespace. Old behavior can be reproduced by using the new 'delete' command, followed by a set/load.
  • delete command: you can now delete parameters explicitly from the command line.
  • master: bug fix: master clears registration data if node registers with new XML-RPC location
  • ["roswtf"]: new experimental debugging tool. If you're having a problem, try typing 'roswtf' and see if it can help.
  • ["rostopic"]: new -w window size option for `rostopic hz`
  • ["log files"]: The .bag format has changed to V1.2, which contains the full message definition, which will allow better bag longevity. The old format is still supported for reading and playing back, but only the new format is written.

New in Robot Operating System 0.4.3 (Apr 25, 2009)

  • rospy:
  • top-level rospy namespace has been cleaned up with many internal APIs now hidden. This required major refactoring of code.
  • message constructors now accept keyword-based initialization of fields, e.g. String(data='mydata')
  • message fields now have default values instead of None when unspecified
  • major bug fixes to time representation and buff_size parameter for Subscriber
  • subscriber now sends 'type' header to publisher for better debugging
  • removed long deprecated isShutdown, signalShutdown aliases
  • rosservice: command-line tool for locating and querying services
  • roslaunch: bug fix to ROS_IP being spuriously set
  • rxplot: bug fix to resolving command-line topic names
  • rosbuild no longer passes -DROS_PACKAGE_REVISION, because it was causing spurious rebuilds (and nobody was using it)
  • gendeps: the output of the --cat option has been changed to use use type name instead of file names.
  • roscpp
  • Duration now keeps nsec positive
  • Turned some nasty runtime errors into compile errors ((T*) -> static_cast())
  • Nicer error message when two nodes try to connect with different datatypes

New in Robot Operating System 0.4.2 (Mar 27, 2009)

  • rosplay displays current log time (both absolute and relative to log start) during playback (-n to disable).
  • rospack provides correct -rpath arguments for external packages located via ROS_BINDEPS_PATH
  • ROS client libraries (["roscpp"], ["rospy"], ["roslisp"]) now support setting node parameters (i.e. ~param_name) via command-line remapping arguments.
  • Service code in roscpp and rosoct now report a type that includes the service name. Not immediately consequential, as service types aren't yet used.
  • Fixed arithmetic operators on WallTime
  • Fixed a rare self-subscription deadlock
  • The tag can now be used with tags
  • The 'cwd' attribute works with remote processes now
  • Environment variables for local processes are more strict now -- ROS_* environment variables are now strictly set by roslaunch.
  • Improved error reporting and minor bugfixes
  • matplotlib and numpy converted to system dependencies, no longer in 3rdparty. There versions have been downgraded for most platforms.

New in Robot Operating System 0.4.1 (Mar 6, 2009)

  • This release fixes a number of bugs and introduces some new features.
  • It is backward-compatible with 0.4.1, but the reverse is not necessarily true.