wifi-densepose/examples
rUv 4183ef651f
research(R3.2): embedding-level physics-informed env — structural validation + AETHER dependency (#729)
Implements R3.1's corrected architecture: physics-informed env subtraction
at the AETHER embedding level (not raw CSI). Tests whether moving the
operation closes the cross-room gap that R3.1 NEGATIVE surfaced.

Headline (10 subjects, 2 rooms, 3 positions/room):

| Approach                                    | Cross-room K-NN |
|---------------------------------------------|----------------:|
| Within-room AETHER sanity                   |    100%         |
| Cross-room AETHER raw (no env sub)          |     10% (chance)|
| Cross-room AETHER + labelled MERIDIAN       |     20% (oracle)|
| Cross-room AETHER + physics-informed        |     10% (chance)|
| Cross-room AETHER + physics + residual      |     20%         |  <-- matches oracle, ZERO labels

Structural validation: physics + residual matches the labelled MERIDIAN
oracle WITH ZERO LABELS. The architecturally-correct approach works.

But neither approach reaches 80%+. Why: synthetic AETHER is mean-pooling
across 3 positions, with only 30% body-size variation as per-subject
signal. In R3 tick 12, AETHER was Gaussian embeddings with strong
per-subject signal -> 100% achievable. Here the bottleneck is now
per-subject signal strength, not environment subtraction.

R3.2 is the THIRD 'honest scope' finding in the loop:

| Tick    | Finding                          | Path forward            |
|---------|----------------------------------|-------------------------|
| R3.1    | physics-informed at raw fails    | embedding level (R3.2)  |
| R6.2.2.1| 2D N=5 knee doesn't hold in 3D   | chest zones (R6.2.4)    |
| R3.2    | mean-pool AETHER too weak        | real contrastive AETHER |

All three are productive: they identify the gap production work must fill.

R3.2 confirms ADR-024 (AETHER) is on the critical path for cross-room
re-ID. Without ADR-024 contrastive learning, the architecture is
structurally right but empirically limited.

Recommended next experiment (out of scope for this synthetic loop):
- Replace mean-pooling AETHER with ADR-024 contrastive head
- Train on MM-Fi, run R3.2 protocol
- Expected: 70-90%+ cross-room K-NN
- ~1-2 days of training work

R3 thread closed satisfactorily for the loop: R3 (tick 12) -> R3.1
NEGATIVE -> R3.2 STRUCTURALLY VALIDATED. Arc produced:
- Architectural recommendation: use embedding level
- Critical-path component identified: ADR-024 AETHER
- Three constraint regimes documented (within-room ok, embedding+labels
  = oracle, embedding+physics+residual = matches oracle without labels)
- Clear production path

Honest scope:
- Synthetic AETHER is mean-pooling, not contrastive
- 20% oracle ceiling is this synthetic setup's cap
- 30% body-size variation is weak per-subject signal vs R15's 12-15 bits
- Static subjects (dynamic would give richer signals via R10+R15)
- Two rooms only

Composes:
- R3 / R3.1 / R3.2 = full arc
- R6 / R6.1 forward operator unchanged
- R6.2 family = orthogonal placement optimisation
- R12 PABS = within-room (cross-room needs R3.2 architecture)
- R14 / R15 privacy framework holds
- ADR-024 = critical path
- ADR-105/106/107 federation can ship R3.2 outputs

Coordination: ticks/tick-26.md, no PROGRESS.md edit.
2026-05-22 05:24:53 -04:00
..
environment feat: 4 sensing examples — sleep apnea, stress, room environment 2026-03-15 16:50:04 -04:00
happiness-vector chore(repo): rename rust-port/wifi-densepose-rs → v2/ (flatten to one level) (#427) 2026-04-25 21:28:13 -04:00
medical feat: 10-in-1 medical vitals suite from single mmWave sensor 2026-03-15 18:05:42 -04:00
research-sota research(R3.2): embedding-level physics-informed env — structural validation + AETHER dependency (#729) 2026-05-22 05:24:53 -04:00
sleep feat: 4 sensing examples — sleep apnea, stress, room environment 2026-03-15 16:50:04 -04:00
stress feat: 4 sensing examples — sleep apnea, stress, room environment 2026-03-15 16:50:04 -04:00
three.js fix(three.js): graceful banner when X Bot.fbx 404s on gh-pages (#651) 2026-05-19 18:43:21 -04:00
README.md feat: 10-in-1 medical vitals suite from single mmWave sensor 2026-03-15 18:05:42 -04:00
ruview_live.py feat: happiness scoring pipeline + ESP32 swarm with Cognitum Seed (#285) 2026-03-20 18:46:34 -04:00

README.md

Examples

Real-time sensing applications built on the RuView platform.

Unified Dashboard (start here)

pip install pyserial numpy
python examples/ruview_live.py --csi COM7 --mmwave COM4

The live dashboard auto-detects available sensors and displays fused vitals, environment data, and events in real-time. Works with any combination of sensors.

Individual Examples

Example Sensors What It Does
ruview_live.py CSI + mmWave + Light Unified dashboard: HR, BR, BP, stress, presence, light, RSSI
Medical: Blood Pressure mmWave Contactless BP estimation from HRV
Medical: Vitals Suite mmWave 10-in-1: HR, BR, BP, HRV, sleep stages, apnea, cough, snoring, activity, meditation
Sleep: Apnea Screener mmWave Detects breathing cessation events, computes AHI
Stress: HRV Monitor mmWave Real-time stress level from heart rate variability
Environment: Room Monitor CSI + mmWave Occupancy, light, RF fingerprint, activity events

Hardware

Port Device Cost What It Provides
COM7 ESP32-S3 (WiFi CSI) ~$9 Presence, motion, breathing, heart rate (through walls)
COM4 ESP32-C6 + Seeed MR60BHA2 ~$15 Precise HR/BR, presence, distance, ambient light

Either sensor works alone. Both together enable fusion (mmWave 80% + CSI 20%).

Quick Start

pip install pyserial numpy

# Unified dashboard (recommended)
python examples/ruview_live.py --csi COM7 --mmwave COM4

# Blood pressure estimation
python examples/medical/bp_estimator.py --port COM4

# Sleep apnea screening (run overnight)
python examples/sleep/apnea_screener.py --port COM4 --duration 28800

# Stress monitoring (workday session)
python examples/stress/hrv_stress_monitor.py --port COM4 --duration 3600

# Room environment monitor
python examples/environment/room_monitor.py --csi-port COM7 --mmwave-port COM4

# CSI only (no mmWave)
python examples/ruview_live.py --csi COM7 --mmwave none