Live status · Read the latest
monad-knowledge Wi-Fi sensing lab · FIIT STU
Campaign

Multi-group crowd choreography on a real multi-room floor — arrival waves, seat reuse, through-traffic, with full movement replays

c-crowd-motion-mix · walk-notebook

Archive snapshot, as of 9 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

state
Session State Runs Synthesis Criticism Figures Verdict
YT6QNR5S 2026-06-04T11:36 finished 9 ✓ ✓ — All four criteria resolved on the intended 16-seat layout; the baseline's 14-seat bound is lifted (n_goals = 16 on all 9 runs, turned_away = 0 across the grid — identical 36-seat-seeker demand drained by the two recovered seats plus reuse, evidenced by n_seated 35–36 on 16 seats), kinematics in band, and time-to-seat rises monotonically with load (Spearman ρ = 0.95) as seat-contention queueing.
7649PGVZ 2026-06-04T10:59 finished 10 ✓ ✓ — All four criteria resolved on 9 grid cells: movement surfaces on every run, kinematics in band (clamped at the CFSM desired speed, 1.16–1.20 m/s), the seat-reuse lifecycle closes cleanly at intensity ≤ 1.0, and time-to-seat rises monotonically with load (Spearman ρ = 0.95) as seat-contention queueing against 14 reachable seats — not an FD slowdown, which this corpus cannot show.

Brief

Question

Does the multi-group walker reproduce a plausible day-in-the-life of a real multi-room floor — staggered arrival waves seeking seats across six rooms, dwelling, standing up and leaving, seats being reused by later arrivals, and through-traffic threading the same doorways — and can we watch all of it in the run artefacts?

This is the first campaign where the crowd simulator is exercised as a crowd simulator, not as a trajectory feeder: heterogeneous agent types, time-structured demand, a stateful seat ledger with reuse, and (since 2026-06-04) movement surfaces on every run — the animated group-coloured Plotly replay, the footfall heatmap, and per-agent speeds.

What we already know

  • maury2018_d24a ↗ — free walking speed is Gaussian, 1.30 ± 0.21 m/s (uncongested), Weidmann's density law u = 1.34(1 − e^{−1.913(1/ρ − 1/5.4)}). This anchors the kinematic gate: a mean walking speed outside ≈0.8–1.6 m/s means the integrator (or our walkable derivation) is wrong, not the crowd.
  • hughes2002_57b4 ↗ — Hypothesis 1A: in multiple-type flow each type's speed is governed by the total density. The multi-group scenario is precisely this regime; the intensity sweep tests whether time-to-seat degrades with total load, not per-group load.
  • jebrane2026_3e34 ↗ — the FD slowdown is monotonic; flow peaks near 2 ped/m² and congestion grows nonlinearly. At intensity 2.0 (48 people, doorway choke points) we expect a visible super-linear time-to-seat increase.
  • zhong2022_7cb2 ↗ — FD comparison and in/out-flow counts are the standard validation instruments for simulated crowds; this campaign's criteria are exactly those instruments scaled to a furnished floor.
  • The EXP-S1 fundamental-diagram session (01KS7ZS50AQTVF9RTGH101FQNR, 37 runs) already validated the CFSM integrator against the published FD band on the parametric corridor — this campaign validates the scenario layer above the integrator (goals, ledger, waves), not the physics again.
  • 2026-06-04 coupled-chain findings baked into the base params: agent_clearance_cm ≈ 0–5 (larger seals door gaps), explicit agent_radius_m, spawn_bbox_cm for genuine traversal, park-on-arrival so seated bodies persist (they must remain scatterers for any downstream channel sim).

Prerequisites

  1. The rebuilt walk-notebook image. The groups scenario (kind: groups, arrival windows, after_dwell: return, seat reuse, scenario.intensity) and the movement surfaces ship with the 2026-06-04 floor_walk.py; the GHCR :latest predates it. Local: sim build walk-notebook; CI: merged to master → docker.yml rebuild.
  2. The structure artifact. Staged automatically: the launcher's stage_floor_bundle exports floor: resplan-12439-floor-0 from PostGIS to inputs/floor_geometry.json whenever the chain contains walk-notebook and the config dispatches geometry: from_floor. The floor carries 16 analysis-placed seats across 6 rooms — the only furnished floor today.
  3. Nothing else — all scenario state (ledger, occupancy, waves) is run-side; PostGIS is never touched by the container.

What the supervisor does

Phased fan-out (IP-081 supervisor; sim-runner subagents per cell):

  1. Phase A — gate run. One run at intensity: 1.0, seed: 0. Verify the movement surfaces are present and the kinematic gate holds (criteria 1–2) before spending the grid: a missing trajectory.html or a non-zero n_outside_walkable is a platform/image finding that fails fast.
  2. Phase B — grid. Remaining 8 cells (3 intensities × 3 seeds minus the gate run), fanned out.
  3. Phase C — synthesis. Analysis-writer reads domain_metrics.groups per run (per-group spawned / seated / departed / turned_away / mean_time_to_seat_s), checks the lifecycle criterion per intensity, computes the intensity→time-to-seat monotonicity, and cites run_ids + the replay artefacts. Campaign-critic reviews; weak claims get flagged before the session seals.

Figure render request

crowd_motion_mix — (a) the footfall heatmap at the three intensities side by side (doorway hotspots emerging with load), (b) time-to-seat vs intensity (per seed + pooled), (c) a timeline of on-floor population by group (entries/exits reconstructable from trajectory.parquet agent first/last frames) — plus a pointer to the best trajectory.html replay as the headline artefact.

Out of scope

  • CSI/BLE coupling. Once this scenario layer is validated, the natural follow-on is re-running c-csi-crowd-temporal with kind: groups — mixed seated/moving crowds are exactly the regime where temporal CSI variance and the BLE-anchored static regime separate. Not here.
  • FIIT library floor. fiit-library-floor-0 has no occupiable seats yet; when furnished, this campaign re-runs there unchanged (the brief is floor-agnostic via the staged bundle) — see c-fiit-find-a-seat.
  • FD calibration. The integrator physics are EXP-S1's concern (c-exps1-fundamental-diagram).
  • Entrance/exit semantics from the DB. Spawn/goal regions are scenario-side bboxes until transition subtypes (main_entry) are tagged in PostGIS.

Expected interpretation

  1. All criteria met → "The walker supports heterogeneous, time-structured crowd scenarios on a real multi-room floor with a working seat-reuse ledger, wall-tight kinematics in the published walking-speed band, and full visual replays." Unlocks scenario-grade upstreams for every coupled CSI campaign and the FIIT-library replication.
  2. Criteria 1–2 met, lifecycle gaps → a scenario-layer finding: name which leg breaks (late-wave starvation = reuse timing; turned_away at low intensity = ledger bug; departed < spawned = return-journey pathing, likely door congestion). The replay makes the failure visually diagnosable — cite the artefact.
  3. Kinematic gate fails (n_outside_walkable > 0 or speeds off-band) → a geometry/integrator finding on the walls-subtracted walkable derivation; freeze the grid and report.

Notes

  • The scenario knobs (groups, arrival_window_units, after_dwell, intensity) live in floor_walk.py::_normalise_groups — canonical at notebooks/campaigns/python-jupedsim/floor_walk.py, build-context mirror in the image. Legacy kind: seek_and_occupy configs normalise to a single stay-wave, so c-fiit-find-a-seat and the c-csi-crowd-temporal chain are untouched.
  • A person keeps one stable agent_id across sit-down/stand-up (JuPedSim re-adds bodies under fresh internal ids; the walker aliases them back), so trajectory.parquet stays per-person continuous for replays and downstream channel synthesis.