Bridging the Gap between ROS~2 and Classical Real-Time Scheduling for Periodic Tasks
Harun Teper, Oren Bell, Mario Günzel, Chris Gill, Jian-Jia Chen
TL;DR
This work targets the mismatch between ROS 2's default executor and classical real-time scheduling theory for periodic tasks. By introducing and refining the ROS 2 events executor with Release-Only (RO) and Release-and-Execute (RE) modes, the authors show how priority-based non-preemptive scheduling (RM/EDF) can be realized with minimal backend changes. They derive worst-case response time bounds and end-to-end latency analyses using established non-preemptive scheduling results, and extend the approach to subscription-triggered tasks. The evaluation on synthetic benchmarks and the Autoware reference system demonstrates improved reliability (fewer dropped jobs) and significantly tighter latency bounds compared to the default ROS 2 executor, enabling practical real-time performance in robotic systems.
Abstract
The Robot Operating System 2 (ROS~2) is a widely used middleware that provides software libraries and tools for developing robotic systems. In these systems, tasks are scheduled by ROS~2 executors. Since the scheduling behavior of the default ROS~2 executor is inherently different from classical real-time scheduling theory, dedicated analyses or alternative executors, requiring substantial changes to ROS~2, have been required. In 2023, the events executor, which features an events queue and allows the possibility to make scheduling decisions immediately after a job completes, was introduced into ROS~2. In this paper, we show that, with only minor modifications of the events executor, a large body of research results from classical real-time scheduling theory becomes applicable. Hence, this enables analytical bounds on the worst-case response time and the end-to-end latency, outperforming bounds for the default ROS 2 executor in many scenarios. Our solution is easy to integrate into existing ROS 2 systems since it requires only minor backend modifications of the events executor, which is natively included in ROS 2. The evaluation results show that our ROS~2 events executor with minor modifications can have significant improvement in terms of dropped jobs, worst-case response time, end-to-end latency, and performance compared to the default ROS~2 executor.
