Description
Is your feature request related to a problem? Please describe.
waitset is a scheduling policy without executor in rclcpp to get a deterministic message handling, see ros2/rclcpp#1047
this user-level wait set mechanism later was developed as APEX_OS_POLLING_SUBSCRIPTION communicator, which was published(but not opensourced) in roscon2023 realtime workshop, https://www.apex.ai/_files/ugd/984e93_54790d76c0574748901a425555320b8a.pdf , which let us know the possibility of improving realtime performance.
but the rclcpp::waitset is enough to use, see example https://github.com/ros2/examples/tree/rolling/rclcpp/wait_set and performance test https://gitlab.com/ApexAI/performance_test/-/blob/master/performance_test/plugins/ros2/rclcpp_waitset_communicator.hpp
as reference system is such a project as a prototype to profile executors. I request to add rclcpp::Waitset support. which will help to:
- guide the community to use waitset in typical robotics system.
- check the actual improvementes by waitset comparing to default executors in rclcpp
- improve the original impl of waitset in rclcpp.
Describe the solution you'd like
A good start point should be the code here.
https://gitlab.com/ApexAI/performance_test/-/blob/master/performance_test/plugins/ros2/rclcpp_waitset_communicator.hpp
Describe alternatives you've considered
no
Additional context
the https://github.com/ros-realtime/ros2_realtime_benchmarks would provide benchmarks of rclcpp::waitset firstly before detail impl in the reference system.