This page lists changes that are made in the 1.1.x series of ROS (C Turtle Alpha).
For future plans, see the roadmap. See also ROS/ReleaseProcess.
Contents
- 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)
- 1.1.7 (2010-05-13)
- 1.1.6 (2010-05-12)
- 1.1.5 (2010-05-12)
- 1.1.4 (2010-04-19)
- 1.1.3 (2010-04-16)
- 1.1.2 (2010-04-15)
- 1.1.1 (2010-03-18)
- 1.1.0 (2010-03-17)
1.1.16 (2010-07-23)
- 1.2 release candidate
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)
fixed wait-for-service to work with unspecified timeouts
added support for string type specs in call-service
- Fix for parallel builds issue
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
Removed undeclared dependency on numpy #2875
Fixed bug with rosbag record --split (r10390)
Fixed bug with INDEX_DATA record data length (r10422)
- Fixed a crash when shutting down an intraprocess subscriber if something was still publishing to it (r10406)
gentoo patch for zero package length #2859
- 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)
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)
- 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)
rxgraph: changed mode for "All Topics" to include unconnected topics
roslocate: support for stacks (thanks Steven Bellens)
topic_tools: added option to prefer unreliable inbound connection #2409
roslisp: added support for marker file roslisp_ignore to disable output file translations for third-party dependencies.
Added --output-dir option to specify output directory for compress, decompress and reindex commands
Fixed tab-completion bug in rosmsg show #2815
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.
- 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.
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
Now prints out wall time if ros::Time has not been initialized (r10025)
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)
Don't try to write nobuilds in directory with nobuild file already present #2744
- restore robust option for tests
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.
- 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
Added --loop option to rosbag play for looping playback #2706
Added --exclude option to rosbag record for excluding topics based on regexes
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).
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)
roscreate-pkg validates package name. #2752
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)
removed deprecated roslib.roslogging.makedirs_with_parent_perms. Use the version in roslib.rosenv instead.
- 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.
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.
rostest: added --bare options for running bare, non-node executables with a time limit.
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)
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)
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:
- 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
Minor changes/Bug fixes:
- 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.
- Fixed invalid memory accesses when formatting (r8790)
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)
- 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)
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
- 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:
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:
Or ServiceEvent in a service callback:
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.
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:
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
- rosdep.yaml definition of qt4 limited to qt4-core and libqt4-dev qt4-opengl definition moved to planning_openrave. r8210
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)
- Message/Service changes
- 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)
- fixed attempt to clean NOBUILD in rospack (#2443)
- #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)
New Chain filter, see http://www.ros.org/wiki/message_filters#Chain
New policy-based Synchronizer filter, see http://www.ros.org/wiki/message_filters#Synchronizer
TimeSynchronizer: New drop callback that gets called whenever a set of messages are dropped
- 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






