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

Python Events Executor #19

Open
Flova opened this issue Apr 26, 2023 · 1 comment
Open

Python Events Executor #19

Flova opened this issue Apr 26, 2023 · 1 comment

Comments

@Flova
Copy link

Flova commented Apr 26, 2023

The performance of the default Python executors in ROS2 is quite bad when is comes to throughput, latency and system load compared to e.g. ROS1 (see e.g. this). Common high frequency subscriptions like /tf easily overwhelm it or at least result in significant CPU load, that can not fully be explained by the slower nature of Python itself.

Due to the significant improvements brought by the events executor for cpp in terms of system utilization, the question arises if the same is possible for the python executor design.

Are there any plans from your side for an events based python executor design? And this this is not the case, what are your tips if somebody would want to implement it? Are there any pitfalls that come to your mind.

@alsora
Copy link
Collaborator

alsora commented Apr 26, 2023

This isn't currently on our roadmap.
We think that there's still some work to do on the rclcpp side.

The events-executor has just been merged to rclcpp and it will be part of the upcoming ROS 2 Iron release.
The next objective is to make it the default executor.

However, there shouldn't be technical blockers to do a rclpy version.
The events-executor relies on some hooks to register callbacks when data is available that are implemented in rcl/rmw, so they can be exposed and used also in the python client libraries

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

No branches or pull requests

2 participants