mirror of
https://github.com/ruvnet/RuView
synced 2026-06-09 10:13:17 +00:00
650612e5a2
The workspace DSP (vital_signs, multistatic, pose_tracker, tomography) implicitly assumes a forward model that maps scatterer geometry to per-subcarrier phase shifts. Nobody had written it down. This tick makes it explicit. Closed-form first-Fresnel-zone radius + point-scatterer path-delta + per-subcarrier phase prediction over 802.11n/ac 20 MHz channels (52 subcarriers, 312.5 kHz spacing). Pure NumPy demo + JSON output for downstream consumers. Headline numbers: - 5 m link first-Fresnel radius @ midpoint: 40 cm (2.4 GHz), 27 cm (5 GHz) - Inside zone-1: phase spread <0.5 deg across 52 subcarriers (band-flat) - Outside zone-1: phase spread up to 16 deg (band-dispersed) This unifies R5 + R6: R5's experimentally measured band-spread top subcarriers is exactly what the Fresnel forward model predicts for zone-1 occupancy. Closes the loop on three earlier threads: - R7 (mincut adversarial) gets a precise definition of 'physically inconsistent' instead of a learned classifier - R10 (foliage range) needs to retract 100 m sparse estimate to ~70 m to account for Fresnel-zone obstruction - R12 (eigenshift negative result) gets its revision basis: PABS over Fresnel-grounded forward operator Honest scope: point-scatterer only, first Fresnel only, frequency-flat reflectivity, LOS-only (no multipath). The scalar version is the right first-order approximation; volume-integral / multi-zone / multipath extensions catalogued as R6.1+R6.2 follow-ups. Coordination: ticks/tick-8.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