mirror of
https://github.com/ruvnet/RuView
synced 2026-06-09 10:13:17 +00:00
df13dcf597
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.
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