[Documentation] [TitleIndex] [WordIndex

This page lists changes that are made in the 1.1.x series of ROS (C Turtle Alpha).

See also ROS/ReleaseProcess.

1.1.16 (2010-07-23)

1.1.15 (2010-07-22)

1.1.14 (2010-07-09)

1.1.13 (2010-07-08)

1.1.12 (2010-06-30)

1.1.11 (2010-06-30)

1.1.10 (2010-06-17)

1.1.9 (2010-06-15)

1.1.8 (2010-06-07)

Feature-freeze release

Minor updates and bug fixes:

1.1.7 (2010-05-13)

1.1.6 (2010-05-12)

1.1.5 (2010-05-12)

rosbag/rxbag: Major updates to the ROS bag format, API's and tools have been introduced. See rosbag for more details. Features include:

roslaunch: New <arg> tag, if/unless attributes, and $(arg) features. These are still under active development and should be considered unstable. Please see the API review notes.

Other major changes:

Minor updates and bug fixes:

1.1.4 (2010-04-19)

1.1.3 (2010-04-16)

1.1.2 (2010-04-15)

roslisp: roslisp has now been moved into the ROS stack. roslisp is a full-featured Common Lisp client library for ROS. To avoid a dependency on the sbcl compiler from the ros stack, there is a dummy package roslisp_runtime in the roslisp_support stack. Packages that use roslisp should declare a dependency on the roslisp_runtime package in their manifest. This will cause the rosdep tool to pull sbcl if necessary when run on the package.

rospy performance: the rospy message generators have undergone performance tuning and (de)serialization performance is greatly improved. Please let us know if you encounter any issues with these optimizations.

Other major changes:

Minor changes/Bug fixes:

1.1.1 (2010-03-18)

1.1.0 (2010-03-17)

Major Changes: roscpp

1. Message/Service Changes

New Serialization API

Serialization has turned from polymorphic to template-based. This removes the need for a Message base-class, and allows you to adapt existing C++ structures to ROS messages. See http://wiki/roscpp/Overview/MessagesSerializationAndAdaptingTypes for information on adapting types to ROS msg types.

An example use of this is to adapt builtin types to the std_msgs types. For example, the following is now possible:

   1 #include <std_msgs/builtin_uint32.h>
   2 void callback(uint32_t val)
   3 {
   4 }
   5 
   6 ros::Subscriber sub = nh.subscribe("my_topic", 0, callback);
   7 ros::Publisher pub = nh.advertise<uint32_t>("my_topic", 0);
   8 pub.publish(5);

Use of the Message base-class and members (__getMD5Sum(), __connection_header, etc.) are now deprecated. md5sum/etc. retrieval is now done through traits: http://wiki/roscpp/Overview/MessagesTraits. The connection header is now accessible through a new type of callback argument, MessageEvent in a subscription callback:

   1 void callback(const ros::MessageEvent<Msg const>& evt)
   2 {
   3   ros::M_string& header = evt.getConnectionHeader();
   4 }

Or ServiceEvent in a service callback:

   1 void callback(const ros::ServiceEvent<Request, Response>& evt)
   2 {
   3   ros::M_string& header = evt.getConnectionHeader();
   4 }

For the rationale behind these changes as well as some implementation details, please see http://wiki/roscpp/NewMessageAPIProposal and http://wiki/roscpp/NewMessageAPIProposal2

This change is backwards compatible. Custom C++ messages will continue to work without changes until ROS 2.0.

Custom Allocator Support

Messages can now use an STL allocator of your choosing to do their container memory allocation.

   1 ROS_DECLARE_MESSAGE_WITH_ALLOCATOR(visualization_msgs::Marker, MyMarker, MyAllocator);
   2 MyMarker marker;
   3 MyAllocator a;
   4 MyMarker marker2(a);
   5 ...

See http://wiki/roscpp/Overview/MessagesCustomAllocators

2. Publish/Subscribe Changes

Subscription Callback Types, Non-Const Subscriptions

In addition to MessageEvent shown above, it's now possible to use a number of different signatures for your callback:

   1 void callback(const boost::shared_ptr<Msg const>&);
   2 void callback(boost::shared_ptr<Msg const>);
   3 void callback(const Msg&);
   4 void callback(Msg);

You can also now request a non-const message, in which case a copy will be made if necessary (i.e. there are multiple subscriptions to the same topic in the same node).

   1 void callback(const boost::shared_ptr<Msg>&);

These callback types are now supported in message_filters as well.

See http://wiki/roscpp/Overview/Publishers%20and%20Subscribers#Callback_Signature

Fast Intraprocess Message Passing

It's now possible to send messages within a node without incurring a serialize/deserialize cost:

   1 MsgPtr g_msg;
   2 void callback(const MsgConstPtr& msg)
   3 {
   4   ROS_ASSERT(msg == g_msg); // Should not fire
   5 }
   6 
   7 ros::Subscriber sub = nh.subscribe("my_topic", 0, callback);
   8 ros::Publisher pub = nh.advertise<Msg>("my_topic", 0);
   9 MsgPtr msg(new Msg);  // Note that this is a boost::shared_ptr
  10 pub.publish(msg);
  11 
  12 // The following would *not* be no-copy
  13 // Msg msg;
  14 // pub.publish(msg);
  15 

Generated msg/srv Header Location Change

Generated .msg/.srv headers now go into <package>/msg_gen and <package>/srv_gen respectively. Their include paths are automatically exported, and roswtf will now warn if you have -I${prefix}/msg/cpp in your manifest exports.

3. Subscription TCP Connection Retry

If a TCP connection to a publisher fails for any reason, roscpp will now attempt to retry that connection until it is notified by the master that the node has gone away.

The retry starts at 100ms after the connection is dropped, and backs off by doubling that time after every failure until it hits 20s.

Major Changes: rospy

rospy 1.1.0 is largely unchanged from 1.0.x except for one major refactoring. The Python ROS Master has been separated from the rospy codebase and is now in a separate rosmaster package. Similarly, the zenmaster executable is now named rosmaster.

This change is not expected to have any impact on users as the Master is usually run via roscore. However, this refactoring may have introduced regressions.

Other Changes


2024-03-23 12:21