Skip to content

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

@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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions