Vital Sign Detection + RVF Container: Breathing & Heart Rate from WiFi CSI #45
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
This issue tracks the implementation of contactless vital sign detection (breathing rate and heart rate) from WiFi Channel State Information (CSI) and the RVF container format for single-file trained model deployment. These capabilities are defined in ADR-021 and ADR-023.
WiFi CSI captures fine-grained multipath propagation changes caused by physiological movements -- chest displacement from respiration (1-5 mm amplitude, 0.1-0.5 Hz) and body surface displacement from cardiac activity (0.1-0.5 mm, 0.8-2.0 Hz). This extends the project from occupancy sensing into health monitoring, enabling contactless respiratory rate and heart rate estimation for eldercare, sleep monitoring, disaster survivor detection, and clinical triage.
Features
Vital Sign Detection
RVF Container Format
0x52564653, 64-byte headersrvf-quant--save-rvfand--load-rvfflagsAPI Endpoints
/api/v1/vital-signs/ws/sensingvital_signsobject/api/v1/vital-signs/history/api/v1/vital-signs/configExample Response (
GET /api/v1/vital-signs)Usage Examples
Architecture
Performance Targets
Training Data Strategy
Three-tier approach:
RuVector Crates Used (11)
ruvector-coreruvector-attentionruvector-gnnruvector-nervous-systemruvector-coherenceruvector-temporal-tensorruvector-mincutruvector-attn-mincutruvector-solverruvector-graph-transformerruvector-sparse-inferenceRelated ADRs
Implementation Checklist
wifi-densepose-vitalscrate with module structureCsiVitalPreprocessorusingruvector-nervous-system::PredictiveLayerBreathingExtractor(0.1-0.5 Hz bandpass + FFT)HeartRateExtractor(0.8-2.0 Hz bandpass + FFT)SubcarrierWeighterusing attention + GNNMotionArtifactRejectorwith DVS event gatingVitalCoherenceGateusing ruQu three-filter pipelineVitalSignStorewith tiered temporal compressionGET /api/v1/vital-signsREST endpoint to sensing servervital_signsfield to WebSocket/ws/sensingframes--save-rvfand--load-rvfCLI flagsImplementation Complete
All vital sign detection and RVF container work is now merged. Here's the final status:
Vital Signs (ADR-021)
/api/v1/vital-signs+ WebSocketvital_signsfieldRVF Container
RvfModelBuilderhigh-level API for model packagingFull DensePose Pipeline (ADR-023)
Beyond the original scope of this issue, the full training pipeline is now implemented:
--model,--progressive, 4 new REST endpointsNumbers
Commits:
1192de95(vital signs + RVF base) andfc409dfd(full pipeline).— Ruflo AI
Docker + RVF Available
Vital sign detection is included in both Docker images:
RVF model packages include vital sign config (breathing 0.1-0.5 Hz, heartbeat 0.8-2.0 Hz):
Benchmark: 11,665 fps on release build.