ROS2 bag recording adds 3–8 ms of jitter per message. Your robot behaves differently when you record it. Every production failure becomes unreproducible — because the act of recording changed the behavior that led to the failure. This is the observer effect applied to robotics, and it affects every team running ROS2 in production.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.

Why Recording Slows Your Robot
ROS2 bag recording inserts itself into the data path. Every message that gets recorded must be serialized, copied to a buffer, and written to disk. This adds CPU load, memory pressure, and timing jitter to the entire stack. ROS2 recording adds serialization and copy overhead to every message. Cerulion writes directly from shared memory — the publisher never knows recording is happening. The consequences compound:- CPU contention — Serialization burns 5–15% of per-core CPU, competing directly with your perception and planning pipelines
- Timing changes — 3–8 ms of added latency shifts when nodes execute, changing the order of operations
- Memory pressure — Buffer allocations increase heap pressure and trigger page faults, adding unpredictable spikes
- Debug ≠production — The system you’re recording is not the system that failed
The Zero-Copy Difference

0% CPU Impact
No serialization, no copies. The publisher’s timing is completely unchanged.

Deterministic Timestamps
Timestamps reflect when events actually occurred — no jitter from the recording process.

Faithful Replay
Replay a production log and get the same execution. Same node ordering, same timing, same outputs.
How It Works
Cerulion’s logging reads directly from shared memory. No serialization. No copies. No CPU impact on the publishing node. Think of it like a security camera that records through a window — it sees everything without entering the room.Direct shared memory access
Direct shared memory access
No serialization overhead
No serialization overhead
ROS2 bag recording requires serializing every message before writing it — burning 5–15% of per-core CPU on every logged topic. Cerulion’s wire format is already in shared memory — the logger writes the raw bytes directly to disk. Zero CPU overhead on the data path.
Deterministic timestamps
Deterministic timestamps
Because logging doesn’t perturb the system, timestamps in the log accurately reflect when events actually occurred. ROS2 bag recording can shift timestamps by 3–8 ms due to serialization delays. Cerulion’s timestamps are faithful to the original event — no jitter introduced by the recording process itself.
Background disk writes
Background disk writes
Disk I/O happens on a dedicated background thread with its own CPU affinity. Even disk latency spikes don’t affect your real-time nodes. The logger and the runtime are fully decoupled.
What This Means for Safety
For self-driving vehicles, surgical robots, and any safety-critical application, two capabilities are non-negotiable:- Faithful recording — The log must represent exactly what happened, with correct timing
- Deterministic replay — Playing back the log must reproduce the same behavior
Zero-copy logging makes both possible. Because recording doesn’t change behavior, and because Cerulion’s runtime is deterministic, you can replay a production log and get the same execution — the same node ordering, the same timing, the same outputs. This is the foundation of trustworthy log resim.