Stream Presets
Coming Soon Instead of tuning 30 QoS parameters, Cerulion will provide presets that match real robotics workloads:Live Video Streams
Live Video Streams
Optimized for: Camera feeds, compressed video, visual SLAM
| Setting | Value | Why |
|---|---|---|
| History | Latest-only | Stale frames are useless |
| Latency | Bounded | Fixed max delay, then drop |
| Reliability | Lossy OK | Missing frame beats frozen stream |
Live LiDAR Streams
Live LiDAR Streams
Optimized for: Point clouds, laser scans, depth sensors
| Setting | Value | Why |
|---|---|---|
| History | Latest-only | Old scans create phantom obstacles |
| Redundancy | Optional | Critical safety data can be sent twice |
| Latency | Bounded | Stale data is dangerous |
Control Commands
Control Commands
Optimized for: Twist commands, joint targets, waypoints
| Setting | Value | Why |
|---|---|---|
| History | Latest-only | Stale commands cause oscillation |
| Reliability | Best-effort | Speed over guaranteed delivery |
| Latency | Minimal | Control loops are latency-sensitive |
Backpressure
Coming Soon When a subscriber canโt keep up, traditional middleware queues grow silently until the system becomes unresponsive. Cerulion will provide explicit, predictable backpressure. The publisher knows subscriber capacity and paces accordingly. When the queue fills, an explicit policy determines what happens.Drop Oldest
Keep latest data, discard old. Best for sensor streams where only current state matters.
Drop New
Reject new messages when full. Best when every message must be processed in order.
Block
Publisher waits for queue space. Best for reliable data that can tolerate latency.
Minimizing Copies
High-bandwidth streams canโt afford unnecessary memory copies or serialization overhead:| Scenario | Traditional Middleware | Cerulion |
|---|---|---|
| ๐ Local pub/sub | Serialize โ Copy โ Deserialize | Zero-copy (shared memory) |
| ๐ Network send | Copy โ Serialize โ Copy โ Send | Serialize in-place โ Send |
๐ Large fields (Image::data) | Multiple allocations | Single contiguous buffer |
- Cerulion Wire Format
- FlatBuffers
Optimized for Rust-to-Rust communication โ minimal overhead even for dynamically-sized fields.Image data is stored in a single contiguous buffer โ no intermediate allocations, no fragmentation. When network deserialization is needed, it is a single-pass read from that buffer directly into the typed struct.Best for: Maximum throughput, Rust-native pipelines
Observability
You canโt optimize what you canโt measure. Cerulion exposes detailed metrics for every topic:Per-topic throughput
Per-topic throughput
Monitor publish rate with
cerulion topic hz:Drop reasons
Drop reasons
Distinguish between failure modes:
| Reason | Meaning | Action |
|---|---|---|
| Queue overflow | Subscriber too slow | Increase queue or optimize subscriber |
| Network loss | Packets dropped in transit | Check network, add redundancy |
| Fragment timeout | Large message reassembly failed | Reduce message size or switch transport |
Latency histogram
Latency histogram
Coming SoonEnd-to-end latency distribution from publish to subscriber callback โ p50, p95, p99, and max latency per topic.
Buffer occupancy
Buffer occupancy
Coming SoonTrack queue fill levels over time to detect backpressure before drops occur โ current, average, and peak occupancy per topic.