Skip to content

[FEA] Add rclcpp::waitset scheduling policy and compares with rclcpp::executors. #148

Open
@ZhenshengLee

Description

@ZhenshengLee

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions