Skip to content

Commit

Permalink
Add EventsExecutor release notes (#3662)
Browse files Browse the repository at this point in the history
* Add EventsExecutor release notes

Signed-off-by: Michael Carroll <[email protected]>
Signed-off-by: Chris Lalancette <[email protected]>
Co-authored-by: Christophe Bedard <[email protected]>
(cherry picked from commit 07cc792)
  • Loading branch information
mjcarroll authored and mergify[bot] committed May 23, 2023
1 parent ae3d6dd commit 086947e
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions source/Releases/Release-Iron-Irwini.rst
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,32 @@ To make this a bit better, there is now a new ``NodeInterfaces`` class that can

There are examples on how to use this in https://github.com/ros2/rclcpp/pull/2041.

Introduction of a new executor type: the Events Executor
""""""""""""""""""""""""""""""""""""""""""""""""""""""""

The ``EventsExecutor`` from iRobot has been merged into the main ``rclcpp`` codebase.
This alternative executor implementation uses event-driven callbacks from the middleware implementations to fire callbacks at the ``rclcpp`` layer.
In addition to the push-based model, the ``EventsExecutor`` also moves timer management into a separate thread, which can allow for more accurate results and lower overhead, especially with many timers.

The ``EventsExecutor`` has a substantial set of documentation and use-in-practice that make it a strong candidate for inclusion in the ``rclcpp`` codebase.
For information about the initial implementation proposal as well as performance benchmarks, see https://discourse.ros.org/t/ros2-middleware-change-proposal/15863.
For more information about the design, see the design PR: https://github.com/ros2/design/pull/305.

Since the API is the same, trying the ``EventsExecutor`` is as straightforward as replacing your current Executor implementation (eg. ``SingleThreadedExecutor``):

.. code-block:: C++

#include <rclcpp/experimental/executors/events_executor/events_executor.hpp>
using rclcpp::experimental::executors::EventsExecutor;

EventsExecutor executor;
executor.add_node(node);
executor.spin();

**Note** The ``EventsExecutor`` and ``TimersManager`` are currently in the ``experimental`` namespace.
While it has been used as a standalone implementation for some time https://github.com/irobot-ros/events-executor, it was decided to use the ``experimental`` namespace for at least one release to give latitude in changing the API within the release.
Use caution as it will not be subject to the same API/ABI guarantees that the non-experimental code has.

``rclpy``
^^^^^^^^^

Expand Down

0 comments on commit 086947e

Please sign in to comment.