Skip to content

Delay-Compensated Local Coupling

Delay-aware coupling method — instantiates Decentralized Phase Locking

Corrects for how stale a neighbour's phase reading already is, so a unit locks to where its neighbour is now rather than chasing where it was.

Every coupling law reacts to a neighbour's phase — but by the time that reading arrives, the neighbour has moved on. Delay-Compensated Local Coupling is the correction layer that refuses to take a stale reading at face value. Before feeding a neighbour's observed phase into the base coupling rule, it ages the reading by the estimated transport delay and projects it forward to now. This is the member of the family whose whole reason for existing is the gap between when a signal was sent and when it lands: uncompensated, that gap makes coupled units settle into a spurious phase lag or lock in anti-phase; compensated, they lock to the neighbour's true current phase. It is not a new correction law — it is a delay budget wrapped around whatever law is underneath.

Example

A team of ≈12 autonomous underwater vehicles surveying a trench wants to surface and transmit in a coordinated rhythm, but their only link is acoustic — sound crawls through water at ≈1.5 km/s, so a ping from a vehicle 3 km away is already ≈2 seconds old on arrival, and their cycle is only ≈30 seconds. A naive rule would have each vehicle correcting toward a phase its neighbour held two seconds ago, and the fleet would chase its own tail into a smeared, lagging cluster. The compensated version stamps every acoustic ping with send time, estimates travel time from the acoustic range, and advances the received phase by that delay — assuming the sender kept its known cadence — before applying the correction. Any ping older than a freshness cutoff of ≈4 seconds is discarded rather than trusted. The fleet holds a coordinated surfacing window it could never reach if it treated the slow channel as instantaneous.

How it works

The distinguishing move is that a phase reading is treated as a dated measurement, not a current fact:

  • Timestamp and age every observation. Each incoming phase carries, or is assigned, an age — from an explicit send-time, from round-trip ranging, or from a modelled channel delay.
  • Project forward before correcting. The neighbour's reported phase is advanced by its age (using the neighbour's known or estimated frequency) so the base law corrects toward the extrapolated present, not the observed past.
  • Enforce a freshness bound. Observations older than a cutoff are dropped, because extrapolating a very stale reading adds more error than it removes.

Tuning parameters

  • Delay-estimation method — measured (round-trip ranging, send-timestamps) versus a modelled constant. Measured tracks variable delay honestly; a modelled constant is cheap but confidently wrong when the channel varies.
  • Freshness cutoff — the maximum age an observation may have before it is discarded. Tight cutoffs keep corrections trustworthy but starve sparse channels; loose cutoffs act on more evidence but on staler evidence.
  • Extrapolation model — how the neighbour's phase is projected forward (constant frequency, or a richer motion model). Richer models compensate longer delays but amplify error if the frequency estimate is off.
  • Delay margin — how conservatively the estimate is padded; over-padding drags corrections, under-padding leaves residual lag.

When it helps, and when it misleads

Its strength is removing a failure that looks like a coupling problem but is really a timing-of-information problem: without it, delay makes a perfectly good coupling law settle into lag or anti-phase[1]; with it, the same law reaches near-zero-lag lock across a slow or long-haul channel.

Its failure mode is that compensation only helps if the delay is measured well: extrapolating by a mis-estimated delay is worse than ignoring delay altogether, because it moves the correction confidently in the wrong direction. The classic misuse is trusting a single modelled constant delay on a channel whose latency actually jitters — the model looks principled and quietly injects error. The discipline is to bound freshness hard and prefer measured delay over assumed delay whenever the channel can supply it.

How it implements the components

  • delay_noise_and_detuning_budget — it turns measured transport delay and its jitter into an explicit budget, bounding the conditions under which a stable lock is even claimable.
  • phase_observation_channel — it operates squarely on the observation channel, tagging each phase reading with an age and re-referencing it to the present before anyone acts on it.

It does not supply the base correction it wraps (reciprocal_coupling_law — that is Adaptive Pulse-Coupled Update or Nearest-Neighbor Phase Nudging), average estimates across a graph (local_coupling_topologyGossip Phase Averaging), or pull on intrinsic rate (intrinsic_frequency_and_phase_baselineFrequency Pulling with Saturation).

Notes

When the transport delay exceeds one full cycle, extrapolation must also track how many whole cycles elapsed in transit — phase wraps, so a reading that is "1.2 cycles old" projected as if it were "0.2 cycles old" locks the unit to the wrong cycle entirely. Long-delay compensation therefore needs a cycle count, not just a fractional phase.

References

[1] In coupled-oscillator theory a fixed coupling delay shifts the stable phase relationship — a delay comparable to the cycle can turn an in-phase lock into a lag or an anti-phase state, and can create several coexisting locked solutions. Compensation is the standard way to recover the intended relationship rather than the one the delay imposes.