A huge change happened between ROS1 and ROS2. In ROS1 a separate network thread was per node responsible for receiving messages. With ROS2 the DDS Global Data Space (GDS) is responsible. The node lifecycle, state management, deterministic execution and realtime gurantees get a different flavor. The most capabilities are now provided by the GDS. ROS2 provide two primary execution manager
- rclc
- rclcpp
E.g., only the rclcpp provide message filter, allowing to synchronize multi message receiving, from multiple topics, in parallel. But this not support to get shared data handled. For handling shared data e.g., a logical execution time is necessary, compare i.e. https://www.emmtrix.com/logical-execution-time