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.2 release candidate
  • roslib

    • Time and Duration are now pickle-able

    • Fixed message parsers to only report having a "special" header if it's the first member of the message (#2911, r10477)

  • rosboost_cfg: bug fix to error message for search_paths()

1.1.15 (2010-07-22)

  • roslisp:

    • fixed wait-for-service to work with unspecified timeouts

    • added support for string type specs in call-service

    • Fix for parallel builds issue
  • rosboost_cfg

    • Removed /opt/ros from the default search paths, since it's no longer considered a special path. If you have boost installed in /opt/ros you'll need to set CPATH, LIBRARY_PATH and LD_LIBRARY_PATH like you would with any other non-default include/lib location

  • rosbag:

    • Removed undeclared dependency on numpy #2875

    • Fixed bug with rosbag record --split (r10390)

    • Fixed bug with INDEX_DATA record data length (r10422)

  • roscpp

    • Fixed a crash when shutting down an intraprocess subscriber if something was still publishing to it (r10406)
  • rosmake

    • Patch for profile formatting #2858

    • Expose bootstrap console errors #2872

    • Add preexec_fn to Popen call, to avoid esoteric errors calling tar on Karmic (r10370)

  • rosdep

    • gentoo patch for zero package length #2859

  • rospy:

    • changes to internal service/registration API to allow more reconfigurability
    • tcpros server socket now sets SO_REUSEADDR

    • type check is service handlers is less strict in order to allow (de)serialization hacks.

1.1.14 (2010-07-09)

1.1.13 (2010-07-08)

  • roslaunch:

    • default cwd for nodes is now ROS_HOME. Use of ros-root option is now deprecated. This change was made to prevent issues with core files being generated by nodes.

    • Warn on illegal node names #2828

    • --nodes and --args now work even if machines are unassigned #2827

  • rxgraph: Better failure behavior when node name is not legal (updated escaping code) #2826

  • rosboost_cfg: Fixed to work on systems where 64-bit libs are installed into lib64 directories (e.g. Fedora 12). New ROS_BOOST_LIB_DIR_NAME lets you override that search directory (by default searches lib64 and then lib). (#2831, r10228)

  • rosbag: Fixed progress bar for rosbag decompress (#2853, r10274)

  • topic_tools: Made relay prefer reliable transport (#4524, r10287)

  • roscpp

    • Fixed a race condition that caused some connections to immediately close. Generally exposed itself as failed service calls if they were happening in quick succession. (r10272)
    • Fixed a race condition that could cause deadlock on exit by Ctrl-C in some rare cases (r10273)
    • Fixed UDPROS implementation for messages that are large enough to cross multiple datagrams (r10281)

  • rosrecord: Small changes to improve probability of unit tests passing. (r10290)

  • roslisp: Disable building multiple roslisp nodes in parallel.

  • rospack: Fixed path precedence bug when an element of ROS_PACKAGE_PATH is a package or stack (r10287, #2854)

1.1.12 (2010-06-30)

  • roscpp: Fixed POLLERR/POLLHUP/POLLNVAL handling which was sometimes causing 100% use of a CPU (#2845, r10201, r10220)

1.1.11 (2010-06-30)

  • rospy: bug fix to bad remapping in cyclic naming case #2841

  • rxgraph: changed mode for "All Topics" to include unconnected topics

  • roslocate: support for stacks (thanks Steven Bellens)

  • rosbuild:

    • Added FreeBSD support #2547

    • Improved cross-compile support #2803

    • Added Eclipse support #2781

  • topic_tools: added option to prefer unreliable inbound connection #2409

  • rosmake

    • Clean up display even more #2777

    • Respond to return code of rosdep install #2763

  • roslisp: added support for marker file roslisp_ignore to disable output file translations for third-party dependencies.

  • rosbag:

    • Added --output-dir option to specify output directory for compress, decompress and reindex commands

  • rosbash:

    • Fixed tab-completion bug in rosmsg show #2815

  • roscpp:

    • Fixed deadlock that could occur when a connection closed before all the data had been read out of it (#4195, r10136). The immediate consequence was service calls hanging every once in a while.

  • mk:

    • Changed patchlevel in git_checkout.mk from -p0 to -p1 #2692

1.1.10 (2010-06-17)

  • rosmake: fix for adding ROS_NOBUILD files

1.1.9 (2010-06-15)

  • rospy: bug fix to init_node() so that it properly respects argv overrides #2785.

  • rosbag:

    • Fixed bugs dealing with messages that have an invalid time
    • Fixed broken time-shift implementation
    • Fixed assorted bugs involving messages with time 0, which has become an invalid time.
    • Restored missing rosbag executable in package so that it can be roslaunched.
    • Made play and record independent nodes match syntax of "rosbag play" and "rosbag record"
    • Record actually records full connection_info for topics now. This fixes lack of latching playback.
  • rostopic:

    • rostopic echo -b correctly uses bag time now instead of current time #2780

    • rostopic echo -n no longer waits an extra message #2778

  • roslib: roslib.message.strify_message now presents proper YAML in the case of embedded message arrays and empty string. Still does not escape strings properly, so cannot be fully considered YAML safe.

  • roscore_migration_rules: Added migration rule from Time to Clock now that Time has been removed #2543

  • rosbash:

    • fixed missing tab-completion for roslaunch on .test files #2636

    • fixed the fact that rosrun / rosbash did not respect symlinks on ROS_PACKAGE_PATH #2528

  • rosconsole

    • Now prints out wall time if ros::Time has not been initialized (r10025)

  • roscpp

    • Fixed crash when connecting to nodes whose hostnames could not be resolved r9990

    • Does not init ros::Time until it has checked the use_sim_time parameter (r10025)

    • Fixed SO_KEEPALIVE error spam on OSX (#2697, r10028)

    • Publisher objects created with a subscriber connect callback connecting to a topic already being published by this node will now receive the connect callback for each already existing connection (#2788, r10034)

  • roslib (C++) : Changed exception message about being unable to use ros::Time before calling ros::init() to be more correct -- you cannot use ros::Time::now() until the node has been started, either with a ros::NodeHandle or ros::start() (r10025)

  • rosmake

    • Don't try to write nobuilds in directory with nobuild file already present #2744

    • restore robust option for tests
  • rosbuild Fix path-handling for roslaunch checks #2796

  • genmsg_cpp genmsg_lisp: Fix bug in time deserialization. Explicitly cast to DOUBLE-FLOAT now.

1.1.8 (2010-06-07)

Feature-freeze release

  • std_msgs/Time and std_msgs/Duration added

  • rosclean: new rosclean check and rosclean purge to remove log files. roslaunch will issue a warning if it detects that node log files > 1GB.

  • rosbuild:

    • Added check for equality of current directory and where rospack thinks the package being built lives.
    • Added rosbuild_untar_file() #2457

    • Added rosbuild_check_for_sse() #2594

    • Added special targets rosbuild_precompile and rosbuild_premsgsrvgen #2135

    • Added TIMEOUT option to rosbuild_add_gtest and rosbuild_add_pyunit, #2645

  • rosbag:

    • Added --loop option to rosbag play for looping playback #2706

    • Added --exclude option to rosbag record for excluding topics based on regexes

  • rxbag:

    • Added support for viewing multiple bags #2160

    • Added support for playing back all messages #2532

    • Added publishing support #2067

    • Added --record option for recording bags

    • Added -s option to start playhead at a specified time #2736

    • Added support for exporting an interval of messages to a bag #2655

    • Added support for selecting regions on the timeline
    • Added keyboard control
    • Various user interface enhancements, e.g. scroll bar, status bar, state indicators, tooltips

Minor updates and bug fixes:

  • Removed "java" rosdep rule for ROS stack, as java is not actually used (rosjava is in the ros_experimental stack).

  • roscpp:

    • Added probe header in ros::service::exists(), preventing errors from rospy about inbound TCP/IP failure (#802,r9848)

    • Fixed ros::service::exists() to return false if it could not connect to the service server (#2737, r9848)

    • Fixed deadlock when a service client failed to connect to a service (#2737, r9847)

  • mk: Added check for non-existent md5sum file #2679

  • roscreate-pkg validates package name. #2752

  • rosdoc:

    • added support for INCLUDE_PATH (thanks snorri) #2748

    • added exclude_patterns for Doxygen config #2747

  • rosmake cleanup display #2700

  • genmsg_cpp: Fixed escaping of apostrophes in strings in Octave code generation.

  • genmsg_py: better error message if generating messages in package with invalid name (e.g. a dash). #2745

  • rospy: only connects to simulated time topic (/clock) if the /use_sim_time parameter is true at startup.

  • rostopic/roslib.message.strify_message: change printed representation of Time and Duration values to be dictionaries.

  • rostopic: better error message when using boxturtle roscore and also migrated to rosgraph.masterapi #2727

  • added roslib.rosenv.on_ros_path(path)

  • roslaunch:

    • errors if <remap> from or to attributes are empty. #2728

    • warn if overriding parent parameter #2746

    • bug fix: exception when node fails to launch due to type mismatch with proc.name (r9926)
  • removed deprecated roslib.roslogging.makedirs_with_parent_perms. Use the version in roslib.rosenv instead.

  • roslisp:

    • Bugfix: also check for file ownership before deciding if compiled files should go to ROS_HOME.

1.1.7 (2010-05-13)

  • roslaunch: patch to valid name check in remap tag to canonicalize name first

  • roslaunch: patch for paramiko 1.7.4, which has a bug with loading system host keys

1.1.6 (2010-05-12)

  • Removed extra deprecated gtest package.
  • Fixed rosbag playback of indexed v1.2 bags.
  • Added freebsd rosdep targets.
  • Bugfix for rosemacs (r9465)

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:

  • New C++ and Python iterator-based API's for reading and writing bag files.

  • A major revision to the bag format including (optional) compression.

  • Appending, and simultaneous reading and writing of bag files now supported.
  • New rosbag commands: compress, decompress, and reindex.

  • rosbag info shows more detailed statistics, and uses index rather than reading entire bag.

  • new -e option for rosbag record to record topics using regular expressions #2487.

  • rxbag: rendering back-end upgraded to Cairo.

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:

  • rxgraph: front-end rewritten based on Jon Bohren's smach_viewer.

  • rostopic:

    • new --filter option for rostopic hz #694

    • new -n option for rostopic echo to echo a specific number of messages and quit #2263

    • internal reorganization to support rxgraph changes.
  • rostest: added --bare options for running bare, non-node executables with a time limit.

  • roscpp

    • Fixed to not allow (with silent bugs) subscribing to the same topic with multiple different data types. Will throw a ros::ConflictingSubscriptionException in this case. (#2600, r9150)

    • UDPROS now verifies topic md5sums (r9150)
    • Fixed a possible infinite loop in the UDP implementation (r9150)
    • Subscribing with * as the md5sum/datatype now decays to a real type (which then never changes) as soon as it receives the md5sum in any way (e.g. a publisher connects or a 2nd subscriber in the same node) (#2600, r9150)

    • Added some parameter validation to subscribe() and advertise(). They will now throw a ros::InvalidParameterException for invalid parameters (r9159)

    • advertise() no longer accepts * datatype/md5sum (r9159)

    • Service generator: Added __s_getServerMD5Sum() and __getServerMD5Sum() required for backwards compatibility (#2622, r9196)

    • Message/Service generator: Fixed code generation for fixed-length arrays of strings (#2640, r9304)

  • roslisp

    • Set the log file location as per ROS policy (the __log command-line argument, else ROS_LOG_DIR, else ROS_HOME/log, else HOME/.ros/log) (r9253, r9343)

    • Make sbcl a third-party dependency instead of a system dependency in order to get a more recent version, by adding an sbcl package in 0.2.0 of the roslisp_support stack. Doing a rosmake in any package depending on roslisp_runtime will pull the new version.

    • Lisp source files now get compiled during build process.
    • Add unadvertise function (r9344)
  • rosemacs

    • New function ros-rgrep-system. It is similar to rgrep-system but allows for recursive greps within a single ros package.

    • New function ros-find-dired. It is similar to emacs' find-dired but for ros-packages.

    • slime-ros-contrib: New function slime-ros to load the sbcl version packaged with roslisp into slime.

    • ido-mode support for message, service, package and file selection.

  • xdot: new package to contain xdot.py, by Jose Fonseca, plus Jon Bohren's wx wrapper for it.

  • rosmsg: new show -b BAGFILE option to show a message as defined in a bag file. #2666

Minor updates and bug fixes:

  • rosdep: add ubuntu lucid keys for the top-level ROS rosdep.yaml file r9407

  • rospy: fix to handle double shutdown signal case better #2369 r9348

  • roslib: bug fix to roslib.list_stacks_by_path() when following symlinks (#2638)

  • roslib: vcs library updated

  • roslaunch: fixed name resolution of node command-line arguments and fixed usage statement #2309 r9361

  • genmsg_cpp: fixed bug in string constant generation for rosjava, r9399.

1.1.4 (2010-04-19)

1.1.3 (2010-04-16)

  • rosmake patch to work in system install r9136

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:

  • rospy:

    • Python messages are now pickle-able.
    • added ServiceProxy.wait_for_service() #2347

  • roslib: added roslib.set_interactive() and roslib.is_interactive() to signal to Python-based ROS tools that they are being run at an interactive shell. rospy and roslaunch check this flag and use it to skip signal-handler registration.

  • rosservice: -wait option for call command to wait until service is available

  • rosbuild: added rosbuild_add_roslaunch_check() macro #2153

  • roslaunch: added deprecated attribute for <launch> tags

Minor changes/Bug fixes:

  • rosdoc: added explicit rosdep on epydoc

  • Master: bug fix to overly verbose logging (r8778)
  • rxgraph: patch to make quiet -q even more quiet (r8782)

  • roslib.rosenv: removed setup_default_environment support for old rosdeb environment in /usr/lib/ros.

  • rosconsole

    • Fixed invalid memory accesses when formatting (r8790)
  • roscpp

    • CallbackQueue's callAvailable() and callOne() methods are now reentrant, which makes it safe to, for example, call ros::spinOnce() from within a subscription/service callback. (#2500, r8791)

    • CallbackQueue::callOne() now has a return value which tells you if it successfully called a callback (r8811)

    • Removed md5sum member from TopicInfo struct returned by ros::master::getTopics(), since it just contained a copy of the data type (r8836)

    • Fixed ros::topic::waitForMessage with timeout to not always return immediately (r8915)

    • Timers no longer spam the log file if they are not hitting their deadlines (#2585, r8991)
  • rosbuild: added -pthread to link line, to keep goLD happy (r8800)

  • roswtf:

    • fixed warning message about /time with /use_sim_time and also fixed warning about /rosout node missing /rosout subscription (r8812)
    • fixed common spurious warning message with loopback IP addresses (e.g. 127.0.1.1) #2603

  • rosparam: fixed pretty-printing bug with newer versions of python-yaml (r8846)

  • roslaunch:

    • bug fix for #2468, error on overlapping clear params.

    • no longer warn on loopback addresses #1260

  • rospy:

    • bug fix for dynamically generated messages: Message initialization now only checks md5sum match instead of instance match #2584.

    • bug fix to cmake rules for rospy: messages would not regenerate when genmsg_py.py was updated

    • removed symlinks for genmsg_py and gensrv_py as they are no longer necessary

    • changed message generator for _check_types() to use self instead of static accessor to work in dyngen case #2074

    • minor documentation fix (r8961)
    • roslib.genpy: converted to epydoc comments for generated messages

  • rostest:

    • bug fix for error message with Python coverage
    • new roslaunch-check.py unit test script for validating roslaunch files. This is primarily for rosbuild enhancements and not external use.

1.1.1 (2010-03-18)

  • rosmaster: subscribers now declare topic types, though they cannot overriding existing type declarations (r8745)

  • rosmaster: roslib.masterapi: Added getTopicTypes() to support subscribers declaring types (r8745)

  • rospy: bug fix to on_shutdown() (#2536 r8746)

  • rospy: removed support for deprecated /time topic

  • rostopic: support for subscriber-declared types (uses new getTopicTypes()) Master method

  • roslib: Links against rt to fix linking with the gold linker

  • roscpp: Fixed service generators to work with concurrent builds

  • roscpp: Removed support for deprecated /time topic

1.1.0 (2010-03-17)

Major Changes: roscpp

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://www.ros.org/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://www.ros.org/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://www.ros.org/wiki/roscpp/NewMessageAPIProposal and http://www.ros.org/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://www.ros.org/wiki/roscpp/Overview/MessagesCustomAllocators

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://www.ros.org/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.

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

  • gtest Upgraded to version 1.4 #2412

  • rosdep.yaml definition of qt4 limited to qt4-core and libqt4-dev qt4-opengl definition moved to planning_openrave. r8210
  • rosdep OS detection base classes added and asserted. 2358

  • roslib:

    • new python libraries roslib.vcs and roslib.distro, mainly to support distribution tools

    • masterapi: added Parameter Server API

    • message: added reload_on_error parameter for get_message/service_class()

  • rospy/roslib: repr(Message) now returns same as str(Message)

  • rosnode: modified internal API for rosh by adding in subroutine for getting human-readable node information.

  • rosmsg: modified internal API for rosh. Deprecated rosmsg_list_packages

  • rosservice: modified printing behavior for rosh

  • roscpp, in addition to the above:

    • Message/Service changes
      • Message generators have been rewritten in Python
      • Generated headers now go into the msg_gen/cpp folder instead of msg/cpp.
      • string constants are now properly supported
      • floating point constants will no longer generate linker errors on some compilers
      • integral constants will no longer generate linker errors with some uses
      • serialization is now bounds-checked and should not crash if invalid messages are received
      • Messages can now be printed to a std::ostream using operator<<

      • set_X_size()/get_X_size() accessors have been deprecated and will be removed in ROS 2.0

    • Bugs
      • Fixed possible starvation of subscription callbacks (#2444, r8389)
      • Cached parameters no longer hit the master for every call if they did not exist (#2455, r8452)
      • Long-running timer callbacks can no longer starve callbacks running from the same callback queue in different threads (#2470, r8519)
  • rosconsole

    • Added _ONCE, _THROTTLE and _FILTER versions of the macros (#2138, r8159/8160)
    • Fixed race condition with initialization of individual call sites when the same site was hit for the first time from multiple threads concurrently (r8155)
    • Added ROSCONSOLE_FORMAT environment variable, that lets you change how rosconsole outputs to console. Format is in the form of [${severity}] [${time}] [${thread}] [${logger}] [${file}:${line}:${function}]: ${message}. (#1039, r8205)

    • Refactored ros/console.h header so that it does not need to include log4cxx/logger.h. If you use log4cxx directly in your code please make sure you're including log4cxx/logger.h yourself, as that include will be removed in a future release (r8155)

  • rosmake

    • fixed attempt to clean NOBUILD in rospack (#2443)
  • rosdep

    • #2519 removed unrelated warnings
  • rosgraph: rxgraph can node accept --topicns and --nodens filters

  • rxconsole: Added multi-select and the ability to copy messages directly from the list view (#2383, r8679)

  • message_filters

  • rosboost-cfg has been rewritten (#2428)
    • Now searches for system-installed versions of boost and uses the highest one unless ROS_BOOST_VERSION is set

    • No longer assumes -lboost_<library>-mt for system installs, and will error if it can't find a specific library.

    • ROS_BOOST_ROOT is now just an extra search path, force a specific version with ROS_BOOST_VERSION

    • New commands: --version and --print_versions. The first prints the version it will use, the second prints all versions it finds.

    • New environment variable: ROS_BOOST_NO_L_OR_I for preventing -L, -Wl,-rpath, and -I flags from being output if the version from ROS_BOOST_ROOT is used

Wiki: ROS/ChangeList/1.1 (last edited 2013-12-31 00:19:31 by DirkThomas)