wifi-densepose/examples
rUv df13dcf597
research(R6.2.2.1): 3D N-anchor multistatic — 2D knee disappears; revises R6.2.2 down (#727)
Composes R6.2.2 (2D N-anchor knee at N=5) with R6.2.1 (3D ellipsoids,
ceiling-only fails). The composed 3D result shows the 2D-derived knee
DOES NOT hold in 3D.

3D saturation curve (5x5x2.5 m bedroom, 3 target zones, 94 candidate
positions across 3 wall heights + ceiling grid, greedy + 4 restarts):

| N |  Pairs | 3D coverage | Marginal | Heights (low/mid/high) |
|---|-------:|------------:|---------:|------------------------|
| 2 |     1  |     7.7%    | +7.7 pp  |          1/1/0          |
| 3 |     3  |    28.1%    | +20.4 pp |          1/2/0          |
| 4 |     6  |    40.6%    | +12.5 pp |          3/0/1          |
| 5 |    10  |    49.4%    | +8.8 pp  |          4/0/1          |
| 6 |    15  |    59.1%    | +9.8 pp  |          4/1/1          |
| 7 |    21  |    65.1%    | +6.0 pp  |          5/1/1          |

Comparison vs R6.2.2 2D:
- 2D N=5 = 96.8% (clean knee)
- 3D N=5 = 49.4% (no knee, -47 pp gap)

3D space is fundamentally harder because each Fresnel ellipsoid is a
thin SLAB in the vertical direction, not a 2D rectangle. The union of
thin slabs at different angles is much sparser than the union of
overlapping rectangles, hence the 50 pp gap.

Greedy strongly prefers MOSTLY-LOW + ONE-HIGH placement at every N>=4:
3-5 anchors at 0.8m + 0-1 at 1.5m + 1 ceiling. Confirms R6.2.1's
diagonal-in-z winning strategy.

ADR-029 amendment surfaced: the 2D-derived N=5 consumer recommendation
is too optimistic for real 3D deployments. Two responses:

1. Bump N to 7-8 for 65%+ 3D coverage
2. Use chest-centric zones (R6.2.3) -- smaller 40x40 cm zones fit
   inside Fresnel envelope, recovering N=5 to 80%+

Recommended path: R6.2.3 + R6.2.2 N=5 = realistic 80%+ 3D coverage at
ADR-029 default N. Architectural lever that aligns 2D and 3D physics.

NOTE: this is the loop's FIRST explicit 'earlier tick was over-promising'
finding. Previous 23 ticks built constructively. R6.2.2.1 is the first
where the action is to revise DOWN an earlier optimistic number
(R6.2.2's 97% becomes 49% in honest 3D). Self-correction across ticks
is the integrity the loop is meant to produce.

Composes with:
- R6.2 / R6.2.1 / R6.2.2: natural composition
- R6.2.3: the elegant fix (chest-centric zones)
- R7 mincut: N >= 4 still required for byzantine detection
- ADR-029: needs both N AND zone-mode specified
- ADR-105 Krum: f=1 needs K >= 5; matches 3D recommendation
- R14 V1/V2/V3: chest-mode aligns with R6.2.3 = tractable 3D

Honest scope: greedy approximate, 0.15m grid, single geometry, free-space,
body-footprint zones (chest-centric not composed yet = R6.2.4 follow-up).

Coordination: ticks/tick-24.md, no PROGRESS.md edit.
2026-05-22 04:58:10 -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(R6.2.2.1): 3D N-anchor multistatic — 2D knee disappears; revises R6.2.2 down (#727) 2026-05-22 04:58:10 -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