The experimental method
When a rescue team enters a damaged building, radios crackle, lights flicker, and information arrives out of order. This project recreates that kind of confusion in a small, repeatable way, so we can study how teams share what they see and decide what to do next.
It does not test people. It tests coordination methods under controlled confusion.
Why human perception counts as an instrument
Computers are good at logging every message. People are good at noticing when something feels wrong.
Human senses are shaped by biology for pattern matching and quick intuition. We spot a pause that is too long, a voice that sounds unsure, two reports that do not fit together. No log file flags those moments on its own.
So we use people as detectors first, and measurement second:
- Put the shared situation where everyone can see it.
- Create narrow points where the team must come together.
- Let people notice strangeness.
- Then let recorded data decide whether that hunch holds up.
A hunch starts the inquiry. It does not settle it.
What the room looks like in practice
Imagine a search for missing occupants after a partial collapse. Each helper is represented in a shared virtual world, shown together on a wall of light panels.
That wall is made of P2.5 64x64 RGB LED panels, 160x160mm each, driven by small computer nodes around the room. Each node also has microphones, temperature and humidity sensing, motion sensing, a clock, a memory card, and small speakers in printed carriers. Together the panels form one large, low-resolution picture everyone can watch.
The quadcopter view in this setup is a visualisation in that shared virtual world plus the panel wall. It is not a flying aircraft in the room.
Checkpoints are built into the rescue task. For example, the team must regroup at a stairwell to compare notes, or pass findings through one relay person. At those bottlenecks, missing updates, duplicated warnings, or corrupted locations become visible. People often see the problem first — “we never heard back from the basement team” — and then we check the logs to confirm what happened.
The loop: flash to re-run
Every test follows the same seven steps. The wording is plain on purpose, so any run can be repeated.
- Flash firmware. Load the same software onto each wall node.
- Run a seeded rescue task. A fixed starting number sets the order of events, delays, and message problems. Same seed means same confusion.
- Collect. Nodes save sound levels, sensor readings, timing, and message records to microSD. Journals and scores are sealed at the end of the run so they cannot be edited afterward.
- Score. Results are scored on a separate host computer by frozen scoring code that does not change between compared runs. This is called held-out scoring.
- Multi-model critique. Separate Muse Wonder and Spark lanes help build the setup, review the design, and run assessors. They read the sealed records and point out flaws, alternative explanations, and missing checks.
- Refine firmware. Change one thing at a time based on that critique.
- Re-run. Run again with the same seed, plus a new seed to check that the fix was not a one-off.
The coordinator for this work ran for days across many cycles to keep the sequence consistent.
How we keep the test fair
Before a run counts, we write down what we expect to see and what would prove us wrong.
- Pre-registration. We record the plan, seed, software version, and success measure in advance. For background on exact files and forms, check the repo docs.
- Falsifiable hypotheses. Each claim is stated so it can fail. Example: “If relay notes are private, team success will be lower than with open notes.”
- Seeded replication. Anyone should be able to re-enter the same seed and get the same event order.
- Held-out frozen scoring. The scoring program is locked before test data is opened.
- Sealed truth. Correct locations and timings are kept separate from the team during the run. Here, ‘verified’ means careful label segregation, not cryptographic proof.
- Publish failures. Runs that fail still get kept and described. No planner has passed all full gates yet.
- Share and scrutinise datasets. Datasets are hash-linked so changes are detectable, scanned for private information before sharing, and made available for others to check. For current dataset locations, check the repo docs.
Illustrations for this work were made with Muse Image, and SAM 3.1 was tested as one of the analysis options. Those tools help explain and check, they do not decide the score.
What we have seen so far
All scored numbers below are host simulation replay, not on-node measurement on the wall itself.
Across 15 pre-registered experiments:
- clear messages: 72.9% team success
- silence and private notes: 56.6% team success
- corrupted locations and cut-off messages: 33.6% team success
In plain terms: when everyone could see the same clear updates, teams finished the search task most often. When updates were silent or kept private, success fell. When messages were damaged, success fell further.
These are early patterns, not proof that one method is always best. Failed runs and edge cases are kept with the same care as successful ones.
What this runs on
The wall nodes use a Waveshare ESP32-S3-RGB-Matrix board (N32R16, 32MB flash, 16MB PSRAM) with SHTC3 for temperature and humidity, QMI8658 for motion, PCF85063 for time, onboard microphones, microSD per node, and perimeter speakers.
A separate ESP32-S31 Korvo board provides display, touch, web hosting, rescue planner simulation, and learning lab functions. A LilyGo T5 4.7in ESP32-S3 unit works as a handheld display. Power is from a MEAN WELL LRS-350-5 5V supply. Diffusers, carriers, and mounts are printed in Bambu PLA, with finished CAD models in cad/.
Build notes:
- node:
pio run --project-dir firmware/node-platform -e waveshare-s3 - handheld: check the repo docs for the
lilygo-s3environment name and flags - Korvo: ESP-IDF 6.1 pinned
- Python only via
uv - Each device gets its own private identity with
tools/node-commissioner
Source in the repo
firmware/node-platform— node build, use-e waveshare-s3tools/node-commissioner— private per-device identity setupcad/— finished models for diffusers, carriers, mounts- check the repo docs for pre-registration forms, frozen scoring scripts, sealed journals, hash-linked datasets, and full run histories