ROS 2 Eloquent Elusor (codename ‘eloquent’; November 22nd, 2019)¶
Table of Contents
Eloquent Elusor is the fifth release of ROS 2.
Eloquent Elusor is primarily supported on the following platforms:
Tier 1 platforms:
Ubuntu 18.04 (Bionic):
Mac OS X 10.12 (Sierra)
Windows 10 (Visual Studio 2019)
Tier 2 platforms:
Ubuntu 18.04 (Bionic):
Tier 3 platforms:
Debian Stretch (9):
OpenEmbedded Thud (2.6) / webOS OSE:
For more information about RMW implementations, compiler / interpreter versions, and system dependency versions see REP 2000.
During the development the Eloquent meta ticket on GitHub contains an up-to-date state of the ongoing high level tasks as well as references specific tickets with more details.
API Break with
Introduced in Dashing, the
get_actual_qos() method on the
SubscriptionBase previously returned an rmw type,
rmw_qos_profile_t, but that made it awkward to reuse with the creation of other entities.
Therefore it was updated to return a
Existing code will need to use the
rclcpp::QoS::get_rmw_qos_profile() method if the rmw profile is still required.
void my_func(const rmw_qos_profile_t & rmw_qos); /* Previously: */ // my_func(some_pub->get_actual_qos()); /* Now: */ my_func(some_pub->get_actual_qos()->get_rmw_qos_profile());
The rationale for breaking this directly rather than doing a tick-tock is that it is a new function and is expected to be used infrequently by users.
Also, since only the return type is changing, adding a new function with a different would be to only way to do a deprecation cycle and
get_actual_qos() is the most appropriate name, so we would be forced to pick a less obvious name for the method.
API Break with Publisher and Subscription Classes¶
In an effort to streamline the construction of Publishers and Subscriptions, the API of the constructors were changed.
It would be impossible to support a deprecation cycle, because the old signature takes an rcl type and the new one takes the
NodeBaseInterface type so that it can get additional information it now needs, and there’s no way to get the additional information needed from just the rcl type.
The new signature could possibly be backported if that would help contributors, but since the publishers and subscriptions are almost always created using the factory functions or some other higher level API, we do not expect this to be a problem for most users.
Please see the original pr for more detail and comment there if this causes issues:
API Break Due to Addition of Publisher and Subscription Options¶
rmw_create_publisher() method had a new argument added of type
const rmw_publisher_options_t *.
This new structure holds options (beyond the typesupport, topic name, and QoS) for new publishers.
rmw_create_subscription() method had one argument removed,
bool ignore_local_publications, and replaced by the new options of type
const rmw_subscription_options_t *.
ignore_local_publications option was moved into the new
In both cases the new argument, which are pointers, may never be null, and so the rmw implementations should check to make sure the options are not null. Additionally, the options should be copied into the corresponding rmw structure.
See this pull request, and the associated pull requests for more details:
A few milestones leading up to the release:
- Mon. Sep 30th (alpha)
First releases of core packages available. Testing can happen from now on (some features might not have landed yet).
- Fri. Oct 18th
API and feature freeze for core packages Only bug fix releases should be made after this point. New packages can be released independently.
- Thu. Oct 24th (beta)
Updated releases of core packages available. Additional testing of the latest features.
- Wed. Nov 13th (release candidate)
Updated releases of core packages available.
- Tue. Nov 19th
Freeze rosdistro. No PRs for Eloquent on the
rosdistrorepo will be merged (reopens after the release announcement).