CallbackIsolatedExecutor#
The CallbackIsolatedAgnocastExecutor assigns a dedicated OS thread to each CallbackGroup, enabling per-callback scheduling control (policy, priority, CPU affinity). It is the Agnocast-compatible version of callback_isolated_executor.
Why#
Standard ROS 2 executors share threads across callbacks — you cannot control which callback runs on which CPU or at what priority.
``` Standard Executor: CallbackIsolatedExecutor:
CallbackGroup A ─┐ CallbackGroup A → Thread (FIFO, prio=90, CPU0) CallbackGroup B ─┼→ Thread Pool CallbackGroup B → Thread (FIFO, prio=80, CPU1) CallbackGroup C ─┘ CallbackGroup C → Thread (CFS, nice=0)
No per-callback control Full OS-level scheduling control ```
With CallbackIsolatedExecutor, each CallbackGroup maps to exactly one OS thread. Scheduling is handled entirely by the Linux kernel — you directly assign SCHED_FIFO, SCHED_RR, SCHED_DEADLINE, or CFS parameters per callback.
For the design rationale and evaluation, see the RTAS 2025 paper: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-time Systems.
Note
CallbackIsolatedAgnocastExecutor does not require agnocast-kmod or agnocast-heaphook. If you only want per-callback scheduling control without Agnocast's zero-copy IPC, you can use the executor on its own — just install the agnocastlib ROS package.
Naming#
| Original | Agnocast Version | |
|---|---|---|
| Package | callback_isolated_executor |
agnocast_components or agnocastlib |
| Executor Class | CallbackIsolatedExecutor |
agnocast::CallbackIsolatedAgnocastExecutor |
| Container Executable | component_container_callback_isolated |
agnocast_component_container_cie |
| Thread Configurator | cie_thread_configurator |
agnocast_cie_thread_configurator |
Executor Variants#
| Executor | Handles ROS 2 Callbacks | Handles Agnocast Callbacks | Use Case |
|---|---|---|---|
CallbackIsolatedAgnocastExecutor |
Yes | Yes | Stage 1 or mixed Stage 1/2 |
AgnocastOnlyCallbackIsolatedExecutor |
No | Yes | Stage 2 only |
Pages#
- Integration Guide — How to introduce CallbackIsolatedExecutor and set up the thread configurator
- YAML Specification — Complete reference for the thread configuration file
- Non-ROS Threads — Managing scheduling for threads outside the ROS 2 executor
- Tutorial — End-to-end walkthrough with a sample application