ROS2 relies on OS thread scheduling. Cerulion controls execution order explicitly. If your middleware can’t guarantee when nodes run and in what order, replaying a log won’t reproduce the same behavior. Debugging production failures becomes guesswork. Cerulion’s scheduler evaluates explicit triggers based on graph topology and input data — not OS threads, not callback queues, not timing jitter. Same inputs. Same execution order. Every time.Documentation Index
Fetch the complete documentation index at: https://docs.cerulion.com/llms.txt
Use this file to discover all available pages before exploring further.
Trigger Model
Every node in Cerulion has an explicit trigger that determines when it runs. No implicit callback queues. No racing threads. The scheduler evaluates triggers deterministically — given the same inputs, nodes always execute in the same order.Trigger Types
Periodic triggers
Periodic triggers
Nodes run on a fixed interval. Ideal for sensors and data sources that produce at a known rate.The scheduler guarantees the period is respected regardless of system load. If a node overruns its period, the scheduler logs the overrun rather than silently skipping or double-firing.
Input triggers
Input triggers
Nodes run when a specific input receives new data. The trigger names the input explicitly — no ambiguity about which message caused execution.When multiple inputs have data, the scheduler processes triggers in a deterministic order based on graph topology — not arrival time.
Synchronized triggers
Synchronized triggers
Nodes wait for multiple inputs to arrive within a time window. Essential for sensor fusion where timing alignment matters.The time windows (in milliseconds) define how close inputs must arrive to be considered synchronized. If inputs don’t align within the window, the scheduler waits rather than processing mismatched data.
External triggers
External triggers
Nodes run when a custom function returns true. For hardware interrupts, button presses, or any event outside the data flow.
Why This Matters
The scheduler’s explicit trigger model means execution order is a function of the graph topology and input data — not of OS thread scheduling, system load, or timing jitter. Given the same graph and the same input sequence:- The same nodes fire in the same order
- Synchronized triggers align on the same input pairs
- Periodic nodes maintain their phase relationships
For the complete API reference on trigger patterns, including code examples for each trigger type, see Publisher & Subscriber.