44
55WiFi-based human pose estimation using Channel State Information (CSI).
66Dual codebase: Python v1 (` v1/ ` ) and Rust port (` rust-port/wifi-densepose-rs/ ` ).
7-
87### Key Rust Crates
9- - ` wifi-densepose-signal ` — SOTA signal processing (conjugate mult, Hampel, Fresnel, BVP, spectrogram)
10- - ` wifi-densepose-train ` — Training pipeline with ruvector integration (ADR-016)
11- - ` wifi-densepose-mat ` — Disaster detection module (MAT, multi-AP, triage)
12- - ` wifi-densepose-nn ` — Neural network inference (DensePose head, RCNN)
13- - ` wifi-densepose-hardware ` — ESP32 aggregator, hardware interfaces
8+ | Crate | Description |
9+ | -------| -------------|
10+ | ` wifi-densepose-core ` | Core types, traits, error types, CSI frame primitives |
11+ | ` wifi-densepose-signal ` | SOTA signal processing + RuvSense multistatic sensing (14 modules) |
12+ | ` wifi-densepose-nn ` | Neural network inference (ONNX, PyTorch, Candle backends) |
13+ | ` wifi-densepose-train ` | Training pipeline with ruvector integration + ruview_metrics |
14+ | ` wifi-densepose-mat ` | Mass Casualty Assessment Tool — disaster survivor detection |
15+ | ` wifi-densepose-hardware ` | ESP32 aggregator, TDM protocol, channel hopping firmware |
16+ | ` wifi-densepose-ruvector ` | RuVector v2.0.4 integration + cross-viewpoint fusion (5 modules) |
17+ | ` wifi-densepose-api ` | REST API (Axum) |
18+ | ` wifi-densepose-db ` | Database layer (Postgres, SQLite, Redis) |
19+ | ` wifi-densepose-config ` | Configuration management |
20+ | ` wifi-densepose-wasm ` | WebAssembly bindings for browser deployment |
21+ | ` wifi-densepose-cli ` | CLI tool (` wifi-densepose ` binary) |
22+ | ` wifi-densepose-sensing-server ` | Lightweight Axum server for WiFi sensing UI |
23+ | ` wifi-densepose-wifiscan ` | Multi-BSSID WiFi scanning (ADR-022) |
24+ | ` wifi-densepose-vitals ` | ESP32 CSI-grade vital sign extraction (ADR-021) |
25+
26+ ### RuvSense Modules (` signal/src/ruvsense/ ` )
27+ | Module | Purpose |
28+ | --------| ---------|
29+ | ` multiband.rs ` | Multi-band CSI frame fusion, cross-channel coherence |
30+ | ` phase_align.rs ` | Iterative LO phase offset estimation, circular mean |
31+ | ` multistatic.rs ` | Attention-weighted fusion, geometric diversity |
32+ | ` coherence.rs ` | Z-score coherence scoring, DriftProfile |
33+ | ` coherence_gate.rs ` | Accept/PredictOnly/Reject/Recalibrate gate decisions |
34+ | ` pose_tracker.rs ` | 17-keypoint Kalman tracker with AETHER re-ID embeddings |
35+ | ` field_model.rs ` | SVD room eigenstructure, perturbation extraction |
36+ | ` tomography.rs ` | RF tomography, ISTA L1 solver, voxel grid |
37+ | ` longitudinal.rs ` | Welford stats, biomechanics drift detection |
38+ | ` intention.rs ` | Pre-movement lead signals (200-500ms) |
39+ | ` cross_room.rs ` | Environment fingerprinting, transition graph |
40+ | ` gesture.rs ` | DTW template matching gesture classifier |
41+ | ` adversarial.rs ` | Physically impossible signal detection, multi-link consistency |
42+
43+ ### Cross-Viewpoint Fusion (` ruvector/src/viewpoint/ ` )
44+ | Module | Purpose |
45+ | --------| ---------|
46+ | ` attention.rs ` | CrossViewpointAttention, GeometricBias, softmax with G_bias |
47+ | ` geometry.rs ` | GeometricDiversityIndex, Cramer-Rao bounds, Fisher Information |
48+ | ` coherence.rs ` | Phase phasor coherence, hysteresis gate |
49+ | ` fusion.rs ` | MultistaticArray aggregate root, domain events |
1450
1551### RuVector v2.0.4 Integration (ADR-016 complete, ADR-017 proposed)
1652All 5 ruvector crates integrated in workspace:
@@ -21,7 +57,7 @@ All 5 ruvector crates integrated in workspace:
2157- ` ruvector-attention ` → ` model.rs ` (apply_spatial_attention) + ` bvp.rs `
2258
2359### Architecture Decisions
24- 31 ADRs in ` docs/adr/ ` (ADR-001 through ADR-031 ). Key ones:
60+ 32 ADRs in ` docs/adr/ ` (ADR-001 through ADR-032 ). Key ones:
2561- ADR-014: SOTA signal processing (Accepted)
2662- ADR-015: MM-Fi + Wi-Pose training datasets (Accepted)
2763- ADR-016: RuVector training pipeline integration (Accepted — complete)
@@ -32,23 +68,47 @@ All 5 ruvector crates integrated in workspace:
3268- ADR-029: RuvSense multistatic sensing mode (Proposed)
3369- ADR-030: RuvSense persistent field model (Proposed)
3470- ADR-031: RuView sensing-first RF mode (Proposed)
71+ - ADR-032: Multistatic mesh security hardening (Proposed)
3572
3673### Build & Test Commands (this repo)
3774``` bash
38- # Rust — full workspace tests (1,031 tests, ~2 min)
75+ # Rust — full workspace tests (1,031+ tests, ~2 min)
3976cd rust-port/wifi-densepose-rs
4077cargo test --workspace --no-default-features
4178
4279# Rust — single crate check (no GPU needed)
4380cargo check -p wifi-densepose-train --no-default-features
4481
82+ # Rust — publish crates (dependency order)
83+ cargo publish -p wifi-densepose-core --no-default-features
84+ cargo publish -p wifi-densepose-signal --no-default-features
85+ # ... see crate publishing order below
86+
4587# Python — deterministic proof verification (SHA-256)
4688python v1/data/proof/verify.py
4789
4890# Python — test suite
4991cd v1 && python -m pytest tests/ -x -q
5092```
5193
94+ ### Crate Publishing Order
95+ Crates must be published in dependency order:
96+ 1 . ` wifi-densepose-core ` (no internal deps)
97+ 2 . ` wifi-densepose-vitals ` (no internal deps)
98+ 3 . ` wifi-densepose-wifiscan ` (no internal deps)
99+ 4 . ` wifi-densepose-hardware ` (no internal deps)
100+ 5 . ` wifi-densepose-config ` (no internal deps)
101+ 6 . ` wifi-densepose-db ` (no internal deps)
102+ 7 . ` wifi-densepose-signal ` (depends on core)
103+ 8 . ` wifi-densepose-nn ` (no internal deps, workspace only)
104+ 9 . ` wifi-densepose-ruvector ` (no internal deps, workspace only)
105+ 10 . ` wifi-densepose-train ` (depends on signal, nn)
106+ 11 . ` wifi-densepose-mat ` (depends on core, signal, nn)
107+ 12 . ` wifi-densepose-api ` (no internal deps)
108+ 13 . ` wifi-densepose-wasm ` (depends on mat)
109+ 14 . ` wifi-densepose-sensing-server ` (depends on wifiscan)
110+ 15 . ` wifi-densepose-cli ` (depends on mat)
111+
52112### Validation & Witness Verification (ADR-028)
53113
54114** After any significant code change, run the full validation:**
@@ -95,6 +155,7 @@ python v1/data/proof/verify.py
95155
96156### Branch
97157Default branch: ` main `
158+ Active feature branch: ` ruvsense-full-implementation ` (PR #77 )
98159
99160---
100161
@@ -112,8 +173,13 @@ Default branch: `main`
112173## File Organization
113174
114175- NEVER save to root folder — use the directories below
115- - ` docs/adr/ ` — Architecture Decision Records
116- - ` rust-port/wifi-densepose-rs/crates/ ` — Rust workspace crates (signal, train, mat, nn, hardware)
176+ - ` docs/adr/ ` — Architecture Decision Records (32 ADRs)
177+ - ` docs/ddd/ ` — Domain-Driven Design models
178+ - ` rust-port/wifi-densepose-rs/crates/ ` — Rust workspace crates (15 crates)
179+ - ` rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/ ` — RuvSense multistatic modules (14 files)
180+ - ` rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/viewpoint/ ` — Cross-viewpoint fusion (5 files)
181+ - ` rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/esp32/ ` — ESP32 TDM protocol
182+ - ` firmware/esp32-csi-node/main/ ` — ESP32 C firmware (channel hopping, NVS config, TDM)
117183- ` v1/src/ ` — Python source (core, hardware, services, api)
118184- ` v1/data/proof/ ` — Deterministic CSI proof bundles
119185- ` .claude-flow/ ` — Claude Flow coordination state (committed for team sharing)
@@ -143,13 +209,15 @@ Before merging any PR, verify each item applies and is addressed:
1432091 . ** Rust tests pass** — ` cargo test --workspace --no-default-features ` (1,031+ passed, 0 failed)
1442102 . ** Python proof passes** — ` python v1/data/proof/verify.py ` (VERDICT: PASS)
1452113 . ** README.md** — Update platform tables, crate descriptions, hardware tables, feature summaries if scope changed
146- 4 . ** CHANGELOG.md** — Add entry under ` [Unreleased] ` with what was added/fixed/changed
147- 5 . ** User guide** (` docs/user-guide.md ` ) — Update if new data sources, CLI flags, or setup steps were added
148- 6 . ** ADR index** — Update ADR count in README docs table if a new ADR was created
149- 7 . ** Witness bundle** — Regenerate if tests or proof hash changed: ` bash scripts/generate-witness-bundle.sh `
150- 8 . ** Docker Hub image** — Only rebuild if Dockerfile, dependencies, or runtime behavior changed
151- 9 . ** Crate publishing** — Only needed if a crate is published to crates.io and its public API changed
152- 10 . ** ` .gitignore ` ** — Add any new build artifacts or binaries
212+ 4 . ** CLAUDE.md** — Update crate table, ADR list, module tables, version if scope changed
213+ 5 . ** CHANGELOG.md** — Add entry under ` [Unreleased] ` with what was added/fixed/changed
214+ 6 . ** User guide** (` docs/user-guide.md ` ) — Update if new data sources, CLI flags, or setup steps were added
215+ 7 . ** ADR index** — Update ADR count in README docs table if a new ADR was created
216+ 8 . ** Witness bundle** — Regenerate if tests or proof hash changed: ` bash scripts/generate-witness-bundle.sh `
217+ 9 . ** Docker Hub image** — Only rebuild if Dockerfile, dependencies, or runtime behavior changed
218+ 10 . ** Crate publishing** — Only needed if a crate is published to crates.io and its public API changed
219+ 11 . ** ` .gitignore ` ** — Add any new build artifacts or binaries
220+ 12 . ** Security audit** — Run security review for new modules touching hardware/network boundaries
153221
154222## Build & Test
155223
0 commit comments