Question
Does the same crowd scenario reproduce plausible, watchable through-traffic across a corpus of real floor layouts — tiny one-bed apartments through five-bedroom flats — and does the congestion it produces track the geometry? This extends c-crowd-motion-mix from one furnished floor to the full ten-floor ResPlan ladder, turning the single replay into a gallery that makes the geometry→flow relationship visible.
This is the thesis's "the crowd model generalises across diverse indoor geometries without per-venue retraining" claim (Indoor Crowd Modeling chapter, currently 0 supporting empirics), exercised directly: one floor-agnostic scenario, ten geometries, one replay each.
What we already know
- c-crowd-motion-mix validated the scenario layer (
kind: groups, waves, through-traffic, movement surfaces) on the single furnished floorresplan-12439. This campaign reuses that machinery unchanged; only the floor varies and the spawn/goal are now symbolic regions rather than hand-authored cm bboxes. - maury2018_d24a ↗ — free walking speed 1.30 ± 0.21 m/s anchors the kinematic gate (criterion 2): a mean speed outside ≈0.8–1.6 m/s on any floor means the walkable derivation for that geometry is wrong, not the crowd.
- hughes2002_57b4 ↗ — speed is governed by total density; the intensity axis tests whether the per-floor time-to-cross degrades with load, and criterion 4 tests whether that degradation is steeper on more constrained layouts.
- The 10 ResPlan floors are
dataset/resplan, single-floor apartments with TOPOGRAPHIC wall layers —walkable_from_floorderives a connected walkable polygon from the wall LineStrings, exactly as forresplan-12439.
Prerequisites
- The rebuilt
walk-notebookimage with symbolic regions. Thespawn_region/goal_regionresolver (floor_walk.py::_resolve_region/_resolve_group_regions, 2026-06-15) is what makes one scenario floor-agnostic; GHCR:latestpredates it. Local:sim build walk-notebook; CI: merged to master →docker-runners.yml/docker.ymlrebuild. Without it the region fields are ignored and the run fails thegoal_region-only validation. - No furnishing needed. Through-traffic uses
target_subtype: null+ region goals; the 9 unfurnished ResPlan floors are immediately usable. (The furnishedresplan-12439baseline lives in c-crowd-motion-mix.) - Per-floor staging is automatic.
stage_floor_bundleexportsfloor(per grid cell) from PostGIS toinputs/floor_geometry.json; the container never touches PostGIS. - Walkable-QC pre-flight (
floor_walk.py::_walkable_qc). Before JuPedSim runs, the derived walkable is repaired (buffer(0)+ lightsimplify— removes the degenerate near-wall slivers that segfaulted JuPedSim onresplan-10425at low clearance) and erosion-tested: an empty or split navigable core at the agent radius is a hard fail (impassable floor, loud message — no segfault, no silent stuck agent), and a doorway narrower than ~1.6× the body radius is a warning indomain_metrics.walkable_qc(theresplan-16157wedge class).agent_clearance_cm: 2.0is the safe default; the QC is the net that makes any floor/clearance combination fail-loud-or-repair rather than crash.
What the supervisor does
- Phase A — gate. One run on the smallest floor (
resplan-6090, intensity 1.0, seed 0). Verify the three movement surfaces are present and the walkable/kinematic gate holds (criteria 1–2) before spending the grid: a missingtrajectory.htmlorn_outside_walkable > 0on the tightest geometry is a region-resolution / walkable-derivation finding that fails fast. - Phase B — grid. The remaining 19 cells (10 floors × 2 intensities × 1 seed − gate), fanned out. Label every run
{campaign: c-resplan-crowd-geometry-gallery, floor: <floor>, intensity: <i>, seed: <s>}. - Phase C — synthesis. Per-floor: did traversal close (criterion 3)? Across floors: correlate
mean_traversal_swith walkable-area / room count (criterion 4). Cite the besttrajectory.htmlper floor as the headline artefact — the gallery IS the deliverable.
Figure render request
resplan_geometry_gallery — (a) a contact-sheet of the per-floor footfall heatmaps (doorway hotspots emerging with layout complexity), (b) mean traversal time vs floor walkable-area (one point per floor, both intensities), (c) congestion-onset (time-to-cross at intensity 2.0 / 1.0 ratio) vs room count — plus a pointer to each floor's trajectory.html replay.
Out of scope
- Seat-seeking / daily-life. Needs furnished floors (only
resplan-12439today); that's c-crowd-motion-mix and the furnishing follow-on. - CSI/BLE coupling. Once flow is validated across geometries, c-resplan-crowd-to-csi couples the motion to Sionna on a ResPlan floor.
- Entrance semantics from the DB. Spawn/goal are symbolic regions (floor-bbox slices) until
transitionsubtypes (main_entry) are tagged in PostGIS; the east/west convention is a deliberate proxy.
Expected interpretation
- All criteria met → "One floor-agnostic crowd scenario reproduces wall-tight, in-band through-traffic across the ResPlan size ladder, and congestion tracks geometry. The walker generalises across layouts without per-venue retuning." Directly supports the Indoor Crowd Modeling generalisation claim and unlocks the corpus for every downstream coupled-CSI campaign.
- Criteria 1–2 met, traversal gaps on some floors → a per-geometry finding: name which floors fail to close and why (a pinched corridor the largest-part walkable severed, a doorway the buffer sealed). The replay makes it visually diagnosable — cite the artefact.
- Walkable/kinematic gate fails on a floor → a geometry-import finding for that ResPlan floor (wall topology, envelope), not a crowd finding. Freeze the grid for that floor and report.