1. Problem statement
Five Arboria papers map where decentralized coordination breaks under communication delay. The main results are:
- the collapse is primitive-independent;
- its onset scales as ;
- it is governed by staleness, not throughput;
- cheap peer-state prediction pushes it outward.
Every paper ends with the same caveat: a simulation-based algorithmic result, not physical-device validation.
Murmur is designed to remove that caveat. It is a small physical swarm in which delay and loss are the controlled variables, ground truth comes from outside the robots, and the coordination code is the same code path the simulator scores.
The question it answers is: does the delay cliff measured in Leviathan appear at the same normalized delay on real robots, with real radios, real actuation lag and real sensing noise?
2. Systems approach
3. Concept of operations
A run is fully described by a manifest: task (rendezvous, consensus, formation-hold), primitive (gossip-consensus, flocking, CRDT-intent), gain , delay , loss probability , predictor, and a seed. Maneuver.Map already produces exactly this manifest and seed tree for simulated runs, so a physical run and its simulated twin share one identifier.
4. Requirements
| ID | Requirement | Rationale | Verification |
|---|---|---|---|
| SR-1 | Operate N ≥ 8 robots at once for ≥ 30 min per run | Smallest fleet where neighbourhood structure is non-trivial | Test |
| SR-2 | Ground-truth pose at ≥ 30 Hz, ≤ 5 mm position and ≤ 2° heading error | Q must be scored independently of the robots' own beliefs | Test against a surveyed grid |
| SR-3 | Injected one-way delay programmable 0–40 control steps (0–4 s), accurate to ±1 step | Covers the full simulated cliff for α from 0.07 to 0.28 | Test |
| SR-4 | Injected loss independent per link, p ∈ [0, 0.99] | Reproduces the delivery-gated loss sweep | Analysis + χ² test on logs |
| SR-5 | Native link latency (no injection) p99 ≤ 20 ms | Must stay below one control step, or it contaminates the delay axis | Test |
| SR-6 | Fleet clock synchronisation ≤ 2 ms | Packet ages must be attributable | Test |
| SR-7 | Every run reproducible from its manifest: seed, firmware hash, config | Same standard as the simulation papers | Inspection |
| SR-8 | Policy parity: firmware primitive matches Gossamer on recorded inputs | Otherwise sim-vs-real compares two algorithms | Golden-vector test in CI |
| SR-9 | Robot halts within 200 ms of heartbeat loss or fence breach | Safety | Test |
| SR-10 | Per-robot bill of materials ≤ $60 | Fleet must be cheap enough to scale to 16 | Analysis |
5. Architecture
The key interface decision is where delay and loss are injected. Murmur injects them on the receive side: each receiver flips its own loss coin and holds packets in its own FIFO. That makes loss independent per link, which SR-4 requires. It also mirrors Leviathan's delivered-edge model exactly: the simulator decides per link whether a message arrives, then gates coordination on the links that did.
6. Theory and models
6.1 Robot kinematics
Each robot is a differential-drive unicycle with wheel radius and track width :
Coordination primitives emit a velocity for a point-mass agent, as they do in simulation. A unicycle cannot follow that directly, so Murmur controls a point a distance ahead of the axle, . That point's dynamics are fully actuated:
This feedback linearization makes the robot behave like the simulator's point mass, up to actuator limits. It is what lets the same primitive run unchanged on both platforms.
6.2 Coordination under delay
For gossip-consensus rendezvous, robot at control step acts on the newest delivered state of each neighbour:
The prediction term is optional and is used only in the predictor experiments (constant-velocity shown here; Kalman is the alternative). The robot's own state is always fresh. Only its view of its peers is stale.
Analytic anchor. In the fully delayed scalar form , which applies per Laplacian eigenvalue with , the system is asymptotically stable if and only if
This is the Levin–May condition. It predicts the inverse scaling that the simulation measured as . The constant differs because measures task quality rather than stability, and because the robot's own term is undelayed. The scaling law is what Murmur tests. The constant is what it calibrates.
6.3 Mapping simulation steps to physical time
| Quantity | Simulation | Murmur |
|---|---|---|
| Control step | 1 step | 100 ms |
| Gain α | 0.07–0.28 | same, per step |
| Predicted onset | 10–40 steps | 1.0–4.0 s |
| Robot speed cap | normalized | 0.2 m/s |
Delays are specified in steps, so the comparison is dimensionless. The arena only has to be large enough that a robot cannot cross it within the longest delay. At 0.2 m/s × 4 s = 0.8 m, the 2.4 m arena satisfies that.
7. Detailed design
Bill of materials (per robot)
| Item | Part | Est. cost |
|---|---|---|
| MCU + radio | ESP32-S3-WROOM-1 | $5 |
| Motor driver | TI DRV8833 | $2 |
| Drive | 2 × N20 gearmotor with magnetic encoder | $14 |
| IMU | Bosch BMI270 | $4 |
| Power monitor | TI INA219 | $2 |
| Regulator | AP63203 buck + protection | $3 |
| Battery | 2S 500 mAh LiPo | $9 |
| Storage | microSD socket + card | $5 |
| Mechanical | PCB, printed chassis, wheels, caster, tag | $11 |
| Total | ≈ $55 (meets SR-10) |
Arena infrastructure adds roughly $250: an OV9281 global-shutter camera, a Raspberry Pi 5 ground-truth server, a ceiling frame and a matte floor.
8. Budgets
8.1 Native latency budget (SR-5)
| Stage | Budget |
|---|---|
| State sample + packet build | 1.2 ms |
| ESP-NOW airtime, 32 B payload | ≈ 0.5 ms |
| Channel contention (8 robots @ 10 Hz) | 0–5 ms |
| Receive callback + queue | 1 ms |
| Wait for next 100 Hz inner-loop tick | ≤ 10 ms |
| Worst case | ≈ 18 ms ≤ 20 ms |
Channel load is of airtime, far below the point where contention would add tail latency.
8.2 Power budget (SR-1)
| Load | Average |
|---|---|
| Two drive motors, cruising | ≈ 1.0 W |
| ESP32-S3, radio always on | ≈ 0.37 W |
| IMU, power monitor, SD, LED | ≈ 0.1 W |
| Total | ≈ 1.5 W |
A 2S 500 mAh pack holds about 3.7 Wh, which gives ≈ 2.4 h of runtime: five times the 30-minute requirement.
8.3 Ground-truth accuracy (SR-2)
An OV9281 (1280 × 800) mounted 2.5 m up with a 2.6 m field of view gives ≈ 2 mm per pixel. AprilTag corner refinement is sub-pixel, so ≤ 5 mm position error is realistic. It still has to be shown against a surveyed grid before any run counts (verification test VT-2).
9. Trade studies
Radio. Scored 1–5, weighted:
| Option | Latency (0.30) | Cost (0.25) | Integration (0.20) | Determinism (0.15) | Range control (0.10) | Score |
|---|---|---|---|---|---|---|
| ESP-NOW | 5 | 5 | 5 | 3 | 3 | 4.50 |
| 802.15.4 (Thread/Zigbee) | 4 | 3 | 3 | 4 | 3 | 3.45 |
| BLE advertising | 3 | 5 | 3 | 2 | 3 | 3.35 |
| UWB (DW3000) | 4 | 2 | 2 | 5 | 4 | 3.25 |
ESP-NOW wins on latency and cost. Its weak determinism is acceptable because SR-5 bounds native latency below one step, and every packet's real age is logged anyway.
Ground truth:
| Option | Accuracy (0.35) | Cost (0.30) | Rate (0.20) | Setup (0.15) | Score |
|---|---|---|---|---|---|
| Overhead AprilTag | 4 | 5 | 4 | 4 | 4.30 |
| Wheel odometry only | 1 | 5 | 5 | 5 | 3.60 (fails SR-2: drift) |
| Optical mocap | 5 | 1 | 5 | 3 | 3.50 |
| UWB anchors | 2 | 3 | 3 | 3 | 2.65 |
10. Failure modes and effects
Severity (S), occurrence (O) and detection (D) are scored 1–10. RPN is the risk priority number, S × O × D.
| Failure mode | Effect | S | O | D | RPN | Mitigation |
|---|---|---|---|---|---|---|
| Wi-Fi interference spikes native delay | Contaminates the delay axis | 8 | 5 | 4 | 160 | Fixed quiet channel, pre-run spectrum check, analyse on logged age, not commanded delay |
| Battery sag changes motor response | Dynamics drift during a run | 5 | 6 | 3 | 90 | Encoder speed loop, abort below 7.0 V |
| Firmware primitive diverges from Gossamer | Sim-vs-real compares different algorithms | 9 | 3 | 3 | 81 | Golden-vector parity test in CI (SR-8) |
| Robot leaves camera view | Lost ground truth | 7 | 4 | 2 | 56 | Virtual fence 0.15 m inside the edge triggers a halt |
| Clock drift | Mis-attributed packet ages | 6 | 3 | 3 | 54 | 1 Hz sync beacon, reject a run if skew exceeds 2 ms |
| Tag occlusion or misdetection | Gaps in ground truth | 4 | 4 | 2 | 32 | Tag on top surface, odometry-aided smoothing, flag gaps |
11. Verification and validation
| Test | Verifies | Pass criterion |
|---|---|---|
| VT-1 Fleet endurance | SR-1 | 8 robots, 30 min, no resets |
| VT-2 Surveyed-grid pose check | SR-2 | ≤ 5 mm / ≤ 2° at 95th percentile |
| VT-3 Loopback delay sweep | SR-3, SR-5 | Measured age = commanded ±1 step; native p99 ≤ 20 ms |
| VT-4 Loss statistics | SR-4 | χ² test fails to reject independence at 5% |
| VT-5 Golden vectors | SR-8 | Bit-identical outputs on 10⁴ recorded inputs |
| VT-6 Safety trips | SR-9 | Halt ≤ 200 ms in 50/50 trials |
Validation experiments, each with a falsifiable hypothesis:
- E1, calibration. At zero delay, rendezvous reaches . This mirrors the papers' Vicsek sanity check: the substrate is trusted before it is used.
- E2, H1: the cliff transfers. The physical lies within ±25% of the simulated at the same α. The run budget is 11 delays × 3 primitives × 5 seeds × 3 min ≈ 8 h of robot time.
- E3, H2: the scaling law transfers. stays constant within ±20% across a 4× range of α.
- E4, H3: staleness, not throughput. At fixed , varies by less than 0.05 across .
- E5, prediction transfers. The constant-velocity predictor recovers at least half the lost at .
12. Risks and roadmap
The main technical risk is actuation lag, since a real robot does not respond instantly as the simulated point mass does. It adds an effective delay the simulator does not model. Mitigation: measure the step response in phase 1 and add it to Leviathan's agent model, rather than hiding it.
| Phase | Deliverable | Exit criterion |
|---|---|---|
| 0 | This design study | Requirements baselined |
| 1 | One robot: motion layer + logging | Step response characterised |
| 2 | Arena + ground truth | VT-2 passes |
| 3 | Fleet of 8 + injector | VT-1, VT-3, VT-4, VT-5, VT-6 pass |
| 4 | Experiments E1–E5 | Paper: physical validation of the delay cliff |