Each unit is a cube module on an integer lattice. Instead of wheels or legs, a module relocates by pivoting 90° around an edge — exactly the locomotion MIT's M-Blocks use, driven internally by a spinning flywheel and held by edge magnets.
Floor roll (same layer, y constant):
pivot edge = shared bottom edge of the two cells
valid if destination cell is empty
Climb (y changes by ±1):
module at A climbs over anchor N to reach B
requires N occupied (the pivot anchor)
requires B empty
A move from cell A to a diagonal cell B (differing by 1 step in height and 1 step sideways) needs a stationary anchor module face-adjacent to both A and B — without it there is nothing to pivot around, so the move is rejected. On the ground floor (y = 0) the floor itself acts as the anchor, so lateral rolls are always free.
- Target shape — the controller computes which modules must vacate their cell and greedily assigns each to the nearest empty cell in the new shape (Manhattan distance).
- Every module then breadth-first searches the lattice, one pivot step at a time, using only currently-legal floor rolls and anchored climbs — occupied cells block the search just like a real module would block a real neighbor.
- A module with no legal next step is marked stalled and retried on the next pass, once other modules have moved out of its way — this is exactly how a real distributed reconfiguration protocol makes progress without central coordination.
Real-world relevance: self-reconfiguring modular robots are studied for spacecraft structures, disaster-terrain adaptation and reconfigurable furniture/bridges — a swarm of identical units that becomes whatever shape the task needs.