Skip to content

Latest commit

 

History

History
160 lines (111 loc) · 9.79 KB

Release-Crystal-Clemmys.rst

File metadata and controls

160 lines (111 loc) · 9.79 KB
.. redirect-from::

  Release-Crystal-Clemmys

Crystal Clemmys (crystal)

Crystal Clemmys is the third release of ROS 2.

Crystal Clemmys is primarily supported on the following platforms (see REP 2000 for full details):

Tier 1 platforms:

  • Ubuntu 18.04 (Bionic)
  • Mac macOS 10.12 (Sierra)
  • Windows 10

Tier 2 platforms:

  • Ubuntu 16.04 (Xenial)

Changes since the Bouncy Bolson <Release-Bouncy-Bolson> release:

  • geometry2 - tf2_ros::Buffer API Change

    tf2_ros::Buffer now uses rclcpp::Time, with the constructor requiring a shared_ptr to a rclcpp::Clock instance. See ros2/geometry2#67 for details, with example usage:

    #include <tf2_ros/transform_listener.h>
    #include <rclcpp/rclcpp.hpp>
    ...
    # Assuming you have a rclcpp::Node my_node
    tf2_ros::Buffer buffer(my_node.get_clock());
    tf2_ros::TransformListener tf_listener(buffer);
  • All rclcpp and rcutils logging macros require semicolons.

    See ros2/rcutils#113 for details.

  • rcutils_get_error_string_safe() and rcl_get_error_string_safe() have been replaced with rcutils_get_error_string().str and rcl_get_error_string().str.

    See ros2/rcutils#121 for details.

  • rmw - rmw_init API Change

    There are two new structs, the rcl_context_t and the rcl_init_options_t, which are used with rmw_init. The init options struct is used to pass options down to the middleware and is an input to rmw_init. The context is a handle which is an output of rmw_init function is used to identify which init-shutdown cycle each entity is associated with, where an "entity" is anything created like a node, guard condition, etc.

    This is listed here because maintainers of alternative rmw implementations will need to implement these new functions to have their rmw implementation work in Crystal.

    This is the function that had a signature change:

    Additionally, there are these new functions which need to be implemented by each rmw implementation:

    Here's an example of what minimally needs to be changed in an rmw implementation to adhere to this API change:

  • rcl - rcl_init API Change

    Like the rmw change above, there's two new structs in rcl called rcl_context_t and rcl_init_options_t. The init options are passed into rcl_init as an input and the context is passed in as an output. The context is used to associate all other rcl entities to a specific init-shutdown cycle, effectively making init and shutdown no longer global functions, or rather those functions no longer use an global state and instead encapsulate all state within the context type.

    Any maintainers of a client library implementation (that also uses rcl under the hood) will need to make changes to work with Crystal.

    These functions were removed:

    • rcl_get_global_arguments
    • rcl_get_instance_id
    • rcl_ok

    These functions had signature changes:

    These are the new functions and types:

    These new and changed functions will impact how you handle init and shutdown in your client library. For examples, look at the following rclcpp and rclpy PR's:

    However, you may just continue to offer a single, global init and shutdown in your client library, and just store a single global context object.

  • A race condition in Fast-RTPS 1.7.0 may cause messages to drop under stress (Issue).
  • Using the TRANSIENT_LOCAL QoS setting with rmw_fastrtps_cpp can crash applications with large messages (Issue).
  • Cross-vendor communication between rmw_fastrtps_cpp and other implementations is not functioning on Windows (Issue).
  • When using OpenSplice (version < 6.9.190227) on macOS and Windows you might experience naming conflicts when when referencing field types with names from other packages if the same name also exist in the current package (Issue). By updating to a newer OpenSplice version as well as at least the third patch release of Crystal the problem should be resolved. On Linux updating to the latest Debian packages will include the newest OpenSplice version.