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

A library day — campus-rhythm arrivals, friends sharing tables, seat reuse over 8 h (IP-102)

c-fiit-library-day · walk-notebook

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

Question

Can fiit-library-floor-0, furnished with tables + table-anchored seats from the LiDAR scan, drive an 8-hour campus-day JuPedSim run in which students arrive on a realistic daily rhythm, friends claim adjacent seats at one table and sit together, study a log-normal session, and leave — freeing tables for later arrivals — with all behaviour parameters on the sim side?

This is the IP-102 exercise of the campus_day + cohesive-seating behaviour model (floor_walk.py, kind campus_day) on a real DB floor. The day is synthesised into a stream of cohesive social-group arrivals; each group books one table; seats are reused across the day (after_dwell: return). It is the occupancy base the BLE/CSI work (c-fiit-occupancy-to-csiexp-csi-crowd, IP-094) builds on — see Out of scope.

Prerequisites (before this can dispatch) — ⚠️ floor not yet sim-ready

The converter notebooks/floorplans/converters/04_fiit_library_furniture.py runs an offline reachability check and surfaces a geometry-quality blocker that must be fixed in QGIS first (geometry editing is direct-in-PostGIS work, not converter round-tripping):

  1. Co-register the scan furniture with the polygonized floor. The scan obstacles.geojson (SRID-900010 cm, bounds [3177,2255]–[5472,4276]) is offset from the polygonized envelope ([0,0]–[5376,3974]) and pokes outside it (y 4276 > 3974). 17/20 table centroids land inside the envelope but only 5 near the main walkable region; 0 of 80 derived seats are reachable until this is reconciled.
  2. Clean the walls into rooms with doors. The polygonized layer is 453 wall segments → 281 walkable fragments (the main hall is one 1038 m² piece, but the furniture half is shattered). Merge/clean to a single connected room (or rooms joined by tagged transition door gaps) so agents can reach the tables. Tag the real entrance.
  3. Apply the furniture. Once 1–2 hold, … 04_fiit_library_furniture.py --apply ingests the 20 tables / 5 cabinets / 2 shelves / 2 columns (provenance lidar) and derives table-anchored seats (provenance computed), keeping only reachable ones.
  4. Re-export + validate. gis export-floor fiit-library-floor-0 → stage as the run input; gis_validate; confirm reachable seats ≥ ~22 and one connected walkable region.

Until 1–4 hold, treat this brief as a design spec — the behaviour model (campus_day, cohesive seating) is implemented and unit-tested; the floor data is the gap.

What the supervisor does

Three seeds at the base scenario (no parameter sweep). The analysis-writer:

  1. Confirms the input contract — each run consumed floor_geometry.json, returned the scalar floor, n_outside_walkable=0.
  2. Reads the day — occupancy time-series shape (ramp / lunch dip / afternoon peak / decline), cohesive_fully_seated_rate, mean_group_size, mean session length back-out.
  3. Names any gap — low occupancy ⇒ too few tables/seats vs seat contention vs integrator timeout; low cohesion ⇒ tables too small for the group-size mix (raise seats-per-table or shift group_size_weights).

Out of scope

  • Calibration against a measured library occupancy trace. This validates the furnished-floor → campus-day → cohesive-seating plumbing and that the day-shape emerges; it is not fitted to a specific real day. day_profile / session distribution are literature-justified priors (see IP-102), not measurements.
  • BLE / CSI coupling. Pure pedestrian sim; the occupancy trajectory is the input the c-fiit-occupancy-to-csi follow-on couples to exp-csi-crowd (IP-094).
  • Editing the DB from the run. Occupancy/seat ledger is a run artefact; nothing is written back to PostGIS.

Cost note (full micro-sim, full-rate emission)

Per the operator's choice the integrator steps at dt=0.05 for the whole 8 h (576 000 steps) and emit_stride=1 saves every frame. With seated bodies persisting as scatterers the trajectory parquet is large (tens of millions of rows) — hence the generous s3_bytes/cpu_hours budget and systematic (CI) dispatch, not a local run. Raising emit_stride (e.g. 20 → ~1 Hz saved) bounds the artefact without changing the simulated physics — the integrator always steps at dt.

Notes (for future sessions)

  • The campus_day expansion + cohesive seating live in floor_walk.py (_expand_campus_day, _try_spawn_cohesive); seats are mapped to their nearest table obstacle so a group sits together. Unit tests: tests/sim/test_floor_walk_campus_day.py.
  • Seats-per-table must be ≥ the largest group size in group_size_weights, or those groups can never be seated as a unit (they wait, then count as turned away).

Status — 2026-07-06 overhaul triage

Blocked (geometry). fiit-library-floor-0 is not sim-ready: scan furniture is mis-registered against the polygonized walls (453 wall segments → 281 fragments) and 0/80 seats are reachable from the walkable region. Unblock condition: the QGIS reconcile pass on the library floor (queued alongside IP-102). Until then any run would exercise a broken walkable graph, not the library.