Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add EventsExecutor #1416

Closed
wants to merge 215 commits into from
Closed

Conversation

irobot-ros
Copy link
Contributor

@irobot-ros irobot-ros commented Oct 21, 2020

This PR introduces the changes required to implement the EventsExecutor design in rclcpp.
See design and Discourse post.

The new executor uses an events queue and a timers manager as opposed to waitsets, to efficiently execute entities with work to do.

This new executor greatly reduces CPU usage of a ROS 2 application.
These are the CPU and latency measurements on a RaspberryPi 2 for a 20 nodes system.
See the blog post for more details on the tests that we run.

Screenshot from 2020-10-21 15-39-07

The bulk of the changes for this implementation are in the rclcpp layer, with some minor changes in other repositories (rcl, rmw, rmw_implementation) for forwarding entities, the declaration of some data types in rcutils, and finally some additional changes in the vendor specific rmw implementations..
We currently implemented this only on top of the default ROS middleware fastrtps, while we provided stubs for other middlewares.

The current implementation does not support ROS 2 actions, which will be added in a follow up PR.

Developed by iRobot
Mauro Passerino
Lenny Story
Alberto Soragna


Connects to:

iRobot ROS and others added 28 commits February 8, 2021 18:48
rename rmw_listener_cb_t->rmw_listener_callback_t
…cutor

Proper spin_some behaviour on EventsExecutor
Signed-off-by: Alberto Soragna <alberto.soragna@gmail.com>
remove smart pointer definitions for virtual class
Signed-off-by: Alberto Soragna <alberto.soragna@gmail.com>
Signed-off-by: Alberto Soragna <alberto.soragna@gmail.com>
Signed-off-by: Soragna, Alberto <alberto.soragna@gmail.com>
Signed-off-by: Soragna, Alberto <alberto.soragna@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants