Asking the fleet what it is doing…
monad-knowledge Wi-Fi sensing lab · FIIT STU
Campaign

c-multifloor-fsm-observatory — reactive-FSM crowds → device CSI across six real apartments

c-multifloor-fsm-observatory

Archive snapshot, as of 19 h ago — the run corpus is rebuilt once a day, so this page is not a live reading. The fleet panel is the live one; it refreshes every 30 s.

Sessions

No sessions yet — this campaign has a brief but no execution.

Brief

c-multifloor-fsm-observatory — reactive-FSM crowds → device CSI across six real apartments

Builds on c-ip110-showcase: instead of one parametric room, this runs the full extended-simulator chain on six real ResPlan apartment floors exported live from PostGIS, each with its own device layout, driven by AI-reactive-FSM agents.

Interactive Observatory (artifact): one scrubber drives floor + FSM crowd + occupancy + coupled-CSI strip, with a floor switcher — claude.ai/code/artifact/fda9ee8b-51d8-495d-92eb-6df4f6b5f3e7. Host code: monad_knowledge/notebooks/python/ip111_observatory.py (prepare/reduce) + ip111_report.py.

The chain (per floor)

gis export-floor (PostGIS → real walls/rooms/seats/doors) + the experiment's device layout → walk-notebook from_floor, kind: agendas — IP-107 reactive FSMs (resident / wanderer, floor-adaptive: largest room = social hub, live count_in(hub) ≥ 4 overflow + room_has_space diverts, weighted transitions) + IP-104 seated → network_traffic hooks → trajectory.parquet + emitters.parquetsionna-csi-runner coupled — physical Doppler-CFR + diffuse scattering (S=0.3) + multi-channel BLE, over the real Tx/Rx devices (crowd as scatterers); plus a second emitter-coupled pass (seated agents = transmitters) → csi.hdf5 + links.parquet + ble_links.parquetpedpy-analyser real ∇·(ρv).

Results (cross-floor)

floor rooms seats Tx×Rx agents emitters occ↔|H| ρ Doppler CV delay ns |div ρv|
resplan-12439 13 16 1×10 20 13 −0.93 0.090 52 0.043
resplan-1374 15 0 1×3 20 0 −0.83 0.076 91 0.073
resplan-147440 11 0 1×3 20 0 −0.78 0.039 41 0.061
resplan-7421 11 6 1×3 20 5 −0.70 0.071 30 0.045
resplan-16157 10 6 1×3 20 7 −0.91 0.089 39 0.043
resplan-12419 8 6 1×3 20 6 −0.86 0.050 21 0.040
  • The crowd registers on the device CSI everywhere — per-frame total-occluders ↔ coupled mean |H| Spearman −0.70 … −0.93 (tight bootstrap CIs), strongest on the largest / best-instrumented apartment (12439, 10 Rx). Cross-floor Rx-count ↔ legibility ρ = −0.66 (n=6, driven by the one 10-Rx floor) — suggestive, not significant.
  • Physical Doppler imprints on every floor (CV 0.039–0.090); RMS delay spread tracks geometry (21 ns / 8-room → 91 ns / 15-room), a clean ray-tracer sanity check over real walls.
  • AI-FSM behaviour produced floor-adaptive occupancy with no deadlocks (all 20 agents departed on every floor); on the four furnished floors the seated→emitter hook fired (5–13 emitter-agents → emitter-coupled CSI, the crowd-as-devices).
  • Multi-channel BLE + measured ∇·(ρv) produced per floor.

v2 — count layer + multi-POV Observatory

A second pass turned the corpus into a full multi-layer pipeline with synchronized points of view.

  • Count layer (CSI → occupancy). The FSM crowd ramps 0→peak→0 over each run, so every coupled run already spans a range of occupancies; a ridge estimator on CSI features (mean |H| + Doppler CV) is fit and held out per floor (finer temporal stride re-run, 26–40 coarse frames). resplan-12439 (10 Rx) → held-out R² = 0.66, MAE ≈ 3.1 agents; resplan-147440 → 0.32; sparse 3-Rx floors weak/noisy (under-determined with 3 links + ~30 frames). Pooled R² = 0.22 (MAE ≈ 5). Leave-one-floor-out R² ≈ 0 (gap ≈ 0.25) — a model trained on other apartments does not transfer, so per-environment calibration is mandatory (the sim mirror of the real cross-environment CSI lesson). ip110_showcase.py reduction_stats engine; ip111_observatory.py count.
  • Multi-POV Observatory v2 (claude.ai/code/artifact/8d354c87-2bf1-4c76-a27f-5ac1b2ad9142): one scrubber drives five layers per apartment — floor + devices + FSM crowd coloured by persona (behaviour), occupancy truth vs CSI-estimate (count), live CFR |H| vs subcarrier + time-cursored waterfall (channel), and BLE per-channel RSSI (anchor).
  • CSI signal snapshots (ip111_observatory.py snapshots): per floor — empty-vs-occupied CFR, phase, the subcarrier×time waterfall (crowd ramp + blockage fades), and the physical Doppler sub-frame ripple.

Limitations

One seed per floor; the occ↔|H| ρ is a per-frame coupling check (total occluders vs mean amplitude), and the per-floor count R² is a single 70/30 split on 26–40 coarse frames (noisy on the sparse floors), not a multi-seed CV result. The FSM cast is a reusable two-persona template, not bespoke per apartment. Two ResPlan floors are unfurnished (0 seats → no seated emitters). div(ρv) runs on the analyser's fixed a_seminar grid → relative target only. Next: seeded sweeps, a per-floor occupancy-swept count model, and LLM-authored personas for behavioural diversity.

  • c-ip110-showcase — the single-room capability showcase this scales up.
  • IP-110 (Doppler/scattering/BLE/arrays), IP-107 (FSMs), IP-104 (emitters), IP-111 (the web multi-POV replay this artifact mirrors).