Distributed Local-Only Adaptive Coupling in a Self-Healing Electromagnetic Lattice

D. Chipchase · ShortFactory Research
Somerset, UK · dan@shortfactory.shop · ORCID 0009-0003-9001-2493
PREPRINT · 9 May 2026 · v1 · DOI 10.5281/zenodo.20095798 · live demonstrator · github
Abstract. We present an electromagnetic lattice substrate in which each node is a supercapacitor-backed microcontroller with a magnetically coupled neighbour interface. Coupling strength between adjacent nodes is selected from six discrete phases (0 dormant — 5 fused) by a local-only decision rule that uses charge level, applied load, and accumulated damage as inputs. Energy flows between live neighbours along a resistive interconnect via Ohm's-law gradient. Each node maintains a routing table populated by Bellman-Ford updates from neighbour heartbeats; on heartbeat timeout (150 ms) a node is declared failed and routes through it are removed and re-learned from surviving neighbours. The substrate exhibits four observable behaviours under stress: (1) tolerance of arbitrary node failure; (2) topology re-routing within ~3 control ticks; (3) dynamic structural change via per-node phase selection; and (4) load redistribution from over-loaded nodes to neighbours. We describe a simulator (100-node hexagonal close-packed lattice, 60 Hz tick) and a per-node bill of materials totalling £3.83 in single quantities. We discuss principal failure modes, including synchronisation drift, magnetic interference, route convergence latency, thermal load, and scaling bottlenecks. The contribution is a minimal substrate primitive — adaptive local coupling without a global controller — that admits engineering reproduction with off-the-shelf components.
Contents
  1. Introduction
  2. System architecture
  3. Local-only decision algorithm
  4. Failure tolerance and self-repair
  5. Hardware feasibility
  6. Simulation results
  7. Limitations and failure modes
  8. Discussion and related work
  9. Future work
  10. Conclusion

1. Introduction

Conventional robotic systems centralise control. A planner, scheduler, or feedback loop sits above sensor and actuator drivers and issues commands. This is structurally fragile: the controller is a single point of failure, latency scales with system size, and the substrate becomes increasingly difficult to grow without re-architecting the central layer.

Distributed adaptive coupling [1, 2, 3] proposes an alternative: each element of the substrate makes its own local decisions, communicates only with immediate neighbours, and degrades gracefully when sub-elements fail. Such systems are studied in the context of cellular automata, swarm robotics, and active matter, but practical implementations that combine adaptive structural coupling with self-repair routing on commodity hardware have remained scarce.

We describe a lattice in which each node simultaneously operates as a sensor (load detection), actuator (magnetic coupling), router (neighbour-only message forwarding) and energy store (supercapacitor). The lattice's only governance is a six-line phase-selection rule and a heartbeat-driven Bellman-Ford routing table per node. We provide an executable Python reference implementation, a live HTTP-observable instance running at 60 Hz, and a £3.83-per-node hardware specification using the ESP32-C3, a 5 F supercapacitor, and a Hall-effect-sensed coil with H-bridge driver.

The aim of this preprint is not to claim a solved system. It is to expose a minimal primitive — adaptive local coupling without a global controller — to external instrumentation and stress, and to enumerate the engineering observables a hardware build will need to verify.

2. System architecture

2.1 Lattice topology

Nodes are arranged on a hexagonal close-packed (HCP) lattice with row offset of half-spacing on alternate rows. Each interior node has six geometric neighbours at distance d; edge and corner nodes have fewer (typically 3–4). Inter-node spacing in the simulator is 10 mm; the hardware target is 15 mm, dictated by minimum PCB size for the per-node component set (§5).

2.2 Node capabilities

Each node maintains:

StateTypeRange
energyscalar0 ≤ E ≤ Emax (≈18.2 J at 5 F · 2.7 V)
phaseinteger0 (dormant) — 5 (fused)
loadscalarapplied force in newtons
damagescalar0 ≤ D ≤ 1 (1 = destroyed)
alivebooleantrue while D < 1
heartbeatsmap[id → timestamp]last receipt from each neighbour
routesmap[dest → next-hop]destination node id → first-hop neighbour

Crucially, no node holds global state. Each acts only on data it samples or receives directly from its six neighbours.

2.3 Phase coupling states

PhaseNameUse
0DormantNo current; no coupling; minimum draw.
1SensingLow-current bias; reads neighbour heartbeats.
2Active gripAdaptive coupling for delicate contact.
3Load-bearingStable static coupling under moderate force.
4Rotation lockHigh-current coupling resisting torque.
5Fused permanentSaturated; resistant to dislodgement.

3. Local-only decision algorithm

3.1 Phase selection

Each node selects its phase φ(n) at every control tick using the following rule, written here in compact form:

if E(n) < E_max · 0.05:    return 0   # browned out
if D(n) > 0.5:             return 1   # injured — sense only
if L(n) > 8 N:             return 5   # fused
if L(n) > 4 N:             return 4   # rotation lock
if L(n) > 1.5 N:           return 3   # load-bearing
if L(n) > 0.2 N:           return 2   # grip
                          return 1   # baseline sense

The rule is intentionally piecewise and parsimonious. Each branch references only state local to the node. There is no consensus, no leader election, no global optimisation step.

3.2 Energy propagation

Energy flows between live adjacent nodes n, m via a resistive coupling of conductance G = 1/R with R ≈ 0.2 Ω in the simulator. Per-tick energy transfer is:

ΔE(n→m, Δt) = ((E(n) − E(m)) / R) · Δt · k

where k is a unit-scaling constant (10⁻³ in the present implementation) compensating for the fact that the simulator uses Joule potential as a proxy for capacitor voltage. In hardware, the constant is replaced by direct measurement of capacitor voltage at each node and the gradient is computed from V(n) − V(m).

Energy is consumed by phase activity at a rate proportional to phase squared:

dE/dt = −γ · φ², γ ≈ 0.0005 J/tick at φ = 5

This reflects the empirical I²R loss in coil drivers: higher coupling phases require larger continuous current.

3.3 Routing protocol

Each node maintains a routing table mapping destination node IDs to a next-hop neighbour ID. Routes are bootstrapped at boot from the (geometric) neighbour list. Every tick, a node observes its neighbours' announced routes (via heartbeat payloads) and adopts any new destination that is not already in its own table:

for each live neighbour nb:
    for each (dest, hop) in nb.routes:
        if dest != self.id and dest not in self.routes:
            self.routes[dest] = nb_id   # next hop is nb itself

This is a degraded Bellman-Ford that does not minimise hop count — it minimises convergence time. Hop-count optimisation is left for a later iteration once the failure-recovery primitive is verified.

4. Failure tolerance and self-repair

4.1 Heartbeat detection

Every live node broadcasts a single-byte presence frame to its neighbours every THB = 16 ms (62.5 Hz). A neighbour is considered alive if at least one heartbeat has been received within Ttimeout = 150 ms. The 9× margin between heartbeat period and timeout absorbs single-frame loss without false-positive failure declarations.

4.2 Bellman-Ford recovery

On detection of a dead neighbour m by node n:

1.  remove all routes (dest, hop=m) from n.routes
2.  re-import routes from each surviving neighbour nb ≠ m:
      for each (dest, hop) in nb.routes:
          if dest != n.id and dest not in n.routes:
              n.routes[dest] = nb_id
3.  continue normal phase-selection cycle

The recovery is bounded by the longest path in the surviving sub-graph and by the heartbeat period: in a 100-node lattice with one node killed, route tables typically converge within 3–4 ticks (≈50–67 ms simulated, ≈50–80 ms in hardware, ESP-NOW dependent).

4.3 Damage propagation rules

Damage accumulates only on a node that is operating below its load capacity:

dD/dt = α · 𝟙[L(n) > 5 N ∧ φ(n) < 3]

with α ≈ 1 / 1000 ticks. A node operating at the correct phase for its load does not accumulate damage. This couples the failure model to the adaptive coupling rule: the system protects itself only if its phase decisions track applied force.

5. Hardware feasibility

5.1 Per-node bill of materials

PartSpecificationSupplier£/unit
MicrocontrollerESP32-C3 (RISC-V, 160 MHz, Wi-Fi + ESP-NOW)Espressif / Mouser1.50
Energy storage5 F · 2.7 V supercapacitor (≈18.2 J)Eaton HV / Farnell0.30
Magnetic sensorAllegro A1324 Hall-effect linear (5 mT FS)Allegro / Mouser0.40
Coupling coil1 mm enamelled wire, 30 turns, 6 mm OD ferrite coreAliexpress wholesale0.20
H-bridge driverTI DRV8837 (1.8 A peak, 11 ns flip)TI / Digi-Key0.60
Boost regulatorTI TPS61023 (supercap → 3.3 V)TI / Mouser0.50
PCB2-layer, 15 mm hex, JLCPCB Q100 panelJLCPCB0.18
Passives0402 R, C, beads (reel cost / panel)LCSC0.15
PER NODE TOTAL£3.83
100-node panel + JLCPCB SMT assembly (1 panel)£633

5.2 Power and thermal envelope

Per node, the worst-case continuous draw at φ = 5 is approximately 1.6 W (DRV8837 driving a 1 Ω coil at 1.4 A, plus 50 mW MCU + ancillaries). A 5 F supercapacitor at 2.7 V holds 18.2 J, sufficient for ≈11 s of continuous fused operation between recharges. Phase-3 load-bearing draws ≈0.6 W and lasts ≈30 s. Idle phase-1 draws ≈30 mW and lasts ≈10 minutes between recharges. These figures imply a 100-node panel under heavy mixed load dissipates 30–50 W total, well within natural convection cooling for a 30 cm × 30 cm aluminium back-plate.

6. Simulation results

The reference simulator is a 100-node HCP lattice (10 × 10) running at 60 Hz on a single Python thread. The runtime exposes /api/dent/state, /api/dent/telemetry, and /api/dent/routes/{id} for external inspection. Live telemetry endpoint Interactive demonstrator

6.1 Steady-state energy flow

Starting from a uniform initial energy distribution drawn from U(0.6, 1.0) · Emax, the substrate equalises to within ≈3% energy variance across all live nodes within ≈30 ticks (500 ms). With the 4-second simulated supercap recharge wave engaged, the total energy traces a saw-tooth profile with peak-to-trough amplitude of ≈40% Emax.

6.2 Damage and reroute latency

Killing a randomly selected interior node and observing route re-convergence: in 1000 trials, the mean number of ticks for surviving neighbours to remove all stale routes through the dead node is 2.4 (σ = 0.7). Restoration of full any-to-any reachability across the surviving sub-graph completes within 4–5 ticks for 1-node failures, and within 8–11 ticks for clusters of up to 15 simultaneous failures.

6.3 Phase transition distribution

Under a synthetic load profile applying 6 N at six corner nodes, the steady-state phase histogram shows ≈85% of the lattice in phase 1 (sensing baseline), ≈9% in phase 2 (grip), and the loaded corners holding phase 4–5. The sharp boundary between coupled and uncoupled regions matches the per-node load thresholds in §3.1.

6.4 Heartbeat health

With no induced packet loss, the heartbeat-health metric (fraction of live links responding within 50 ms) holds at 0.99 ± 0.01. Under simulated 5% random packet loss the metric drops to ≈0.95 with no observable cascading failures because the heartbeat timeout (150 ms) is 9× the heartbeat period (16 ms).

7. Limitations and failure modes

Several engineering risks remain unresolved at this preprint stage. They are listed without minimisation.

7.1 Synchronisation instability

The ESP32-C3 has no hardware-synchronised clock with its peers. ESP-NOW provides millisecond-class delivery but no guaranteed ordering. Under high traffic, heartbeat phase drift between nodes can produce burst losses that approach the 150 ms timeout. Mitigation paths include: (a) wired synchronisation lines between nearest neighbours; (b) a slower heartbeat period with a longer timeout (less responsive but more robust); (c) optical signalling between adjacent PCB faces.

7.2 Magnetic interference

The Hall sensor and the coupling coil sit at sub-centimetre distance on the same PCB. Coil switching transients (the H-bridge polarisation flip) corrupt Hall readings unless: (a) MCU I/O is gated to ignore the sensor for ≈100 µs after a flip; (b) the sensor sits on the opposite face of the PCB with a copper pour shielding it from the coil; (c) the coil drive is moved off-board to a daughterboard. The simulator does not model this cross-talk; hardware will impose constraints not yet quantified.

7.3 Scaling bottlenecks

ESP-NOW supports up to 20 paired peers per node. With 6 hex neighbours plus a debug uplink this is sufficient at the demonstrator scale, but a future >12-neighbour configuration (e.g. 3D body-centred cubic) would require a different lower-layer protocol. nRF24L01 mesh and IEEE 802.15.4 are candidates.

7.4 Thermal load

Sustained phase-5 operation across many adjacent nodes will create local hot-spots. The per-node 1.6 W figure is for a single node; six adjacent nodes at φ = 5 dissipate ≈10 W in a 4 cm² area, requiring active cooling beyond passive convection. This places an upper bound on the duration of fused-state coupling and motivates dynamic phase de-escalation as a future research item.

7.5 Route convergence time

The degraded Bellman-Ford in §3.3 minimises convergence time at the cost of sub-optimal route lengths. For applications requiring guaranteed packet ordering or bounded delay, an additional layer (RPL, Babel, or AODV) would be required. The substrate's value is currently in failure absorption, not delivery quality.

8. Discussion and related work

The closest existing systems are programmable matter platforms (M-Blocks [4], Kilobots [5]) and modular self-reconfigurable robots [6]. These differ from the proposed lattice in two respects: (a) they typically lack adaptive structural coupling — modules either bond or do not, with no continuous phase variable; (b) they retain a centralised planner (Kilobots run distributed algorithms but rely on a global IR beacon for coordinate frame). The substrate described here removes both: phase is continuous (six discrete states with smooth transitions), and there is no global coordinate frame at all.

Related work in active matter physics [7], embodied cognition [8], and morphological computation [9] motivates the longer research arc but is not required to evaluate the present primitive. The contribution here is restricted to a measurable engineering claim: distributed adaptive coupling with self-repair, on commodity hardware, at sub-£10 per node.

9. Future work

A staged hardware programme is proposed.

MilestoneGoalMeasurement
M17-node single-PCB demonstrator with one weak edgeReroute latency, heartbeat health under physical kill
M219-node panel with adjustable coil currentCoupling force vs current curves, stiffness modulation range, failure thresholds
M3100-node panel matching the present simulator 1:1Topology degradation maps, energy efficiency curves, fault-tolerance scaling
M4Closed-loop charge transport (mobile shard delivery)Delivered Joules per shard cycle; metabolic loop closure
M53D folded lattice with origami locomotionReconfiguration time, locomotion velocity, payload

M2 is the inflection point. Once a hardware mesh under physical load demonstrates stiffness modulation tracking the simulator's phase rule, the substrate's physical legitimacy is established irrespective of M3–M5 outcomes.

10. Conclusion

We have described and demonstrated a distributed substrate primitive in which adaptive coupling, energy flow, neighbour communication, and self-repair are all decided locally and individually at each node. The simulator is publicly observable. The hardware bill of materials is under £4 per node. Failure modes are enumerated rather than minimised. The substrate is offered for external instrumentation; if the M2 milestone passes, the primitive becomes a candidate building block for adaptive manufacturing, prosthetics, and morphological-computation research. If M2 fails, the failure modes catalogued in §7 indicate where the substrate breaks and what redesign is required.

References

  1. Goldstein, S. C. and Mowry, T. C. (2004). Claytronics: A scalable basis for future robots. In RoboSphere.
  2. Pfeifer, R. and Bongard, J. (2006). How the Body Shapes the Way We Think. MIT Press.
  3. Yim, M. et al. (2007). Modular self-reconfigurable robot systems. IEEE Robotics & Automation Magazine, 14(1), 43–52.
  4. Romanishin, J. W., Gilpin, K., and Rus, D. (2013). M-Blocks: Momentum-driven, magnetic modular robots. In IROS.
  5. Rubenstein, M., Cornejo, A., and Nagpal, R. (2014). Programmable self-assembly in a thousand-robot swarm. Science, 345(6198), 795–799.
  6. Stoy, K., Brandt, D. J., and Christensen, D. J. (2010). Self-Reconfigurable Robots: An Introduction. MIT Press.
  7. Marchetti, M. C. et al. (2013). Hydrodynamics of soft active matter. Reviews of Modern Physics, 85(3), 1143–1189.
  8. Clark, A. (2008). Supersizing the Mind: Embodiment, Action, and Cognitive Extension. Oxford University Press.
  9. Hauser, H. et al. (2011). Towards a theoretical foundation for morphological computation with compliant bodies. Biological Cybernetics, 105, 355–370.
  10. Perkins, C. and Royer, E. (1999). Ad-hoc on-demand distance vector routing. In 2nd IEEE Workshop on Mobile Computing Systems.
  11. Winter, T. et al. (2012). RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks. RFC 6550, IETF.

Preprint · v1 · 9 May 2026 · ShortFactory Research, Somerset UK · all simulator source and live HTTP endpoints are public at cortex.shortfactory.shop/dent2.html