Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 381b51a

Browse files
committed
docs: update user guide with v0.3.0 features — multistatic mesh, CRV, QUIC, crates.io
- Test count 700+ → 1,100+, ADR count 27 → 33, Rust version 1.75+ - Add crates.io installation section (cargo add for all 15 crates) - Add ESP32 multistatic mesh section (TDM, channel hopping, QUIC transport) - Add mesh key provisioning and TDM slot assignment instructions - Add CRV signal-line protocol section with 6-stage table - Update vital signs range for multistatic mesh (~8 m) - Update through-wall FAQ with multistatic mesh capabilities - Update ESP32 hardware setup with secure provisioning and ADR refs Co-Authored-By: claude-flow <[email protected]>
1 parent e99a414 commit 381b51a

1 file changed

Lines changed: 107 additions & 7 deletions

File tree

docs/user-guide.md

Lines changed: 107 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ WiFi DensePose turns commodity WiFi signals into real-time human pose estimation
1010
2. [Installation](#installation)
1111
- [Docker (Recommended)](#docker-recommended)
1212
- [From Source (Rust)](#from-source-rust)
13+
- [From crates.io](#from-cratesio-individual-crates)
1314
- [From Source (Python)](#from-source-python)
1415
- [Guided Installer](#guided-installer)
1516
3. [Quick Start](#quick-start)
@@ -19,12 +20,14 @@ WiFi DensePose turns commodity WiFi signals into real-time human pose estimation
1920
- [Simulated Mode (No Hardware)](#simulated-mode-no-hardware)
2021
- [Windows WiFi (RSSI Only)](#windows-wifi-rssi-only)
2122
- [ESP32-S3 (Full CSI)](#esp32-s3-full-csi)
23+
- [ESP32 Multistatic Mesh (Advanced)](#esp32-multistatic-mesh-advanced)
2224
5. [REST API Reference](#rest-api-reference)
2325
6. [WebSocket Streaming](#websocket-streaming)
2426
7. [Web UI](#web-ui)
2527
8. [Vital Sign Detection](#vital-sign-detection)
2628
9. [CLI Reference](#cli-reference)
2729
10. [Training a Model](#training-a-model)
30+
- [CRV Signal-Line Protocol](#crv-signal-line-protocol)
2831
11. [RVF Model Containers](#rvf-model-containers)
2932
12. [Hardware Setup](#hardware-setup)
3033
- [ESP32-S3 Mesh](#esp32-s3-mesh)
@@ -79,12 +82,41 @@ cd wifi-densepose/rust-port/wifi-densepose-rs
7982
# Build
8083
cargo build --release
8184

82-
# Verify (runs 700+ tests)
85+
# Verify (runs 1,100+ tests)
8386
cargo test --workspace
8487
```
8588

8689
The compiled binary is at `target/release/sensing-server`.
8790

91+
### From crates.io (Individual Crates)
92+
93+
All 15 crates are published to crates.io at v0.3.0. Add individual crates to your own Rust project:
94+
95+
```bash
96+
# Core types and traits
97+
cargo add wifi-densepose-core
98+
99+
# Signal processing (includes RuvSense multistatic sensing)
100+
cargo add wifi-densepose-signal
101+
102+
# Neural network inference
103+
cargo add wifi-densepose-nn
104+
105+
# Mass Casualty Assessment Tool
106+
cargo add wifi-densepose-mat
107+
108+
# ESP32 hardware + TDM protocol + QUIC transport
109+
cargo add wifi-densepose-hardware
110+
111+
# RuVector integration (add --features crv for CRV signal-line protocol)
112+
cargo add wifi-densepose-ruvector --features crv
113+
114+
# WebAssembly bindings
115+
cargo add wifi-densepose-wasm
116+
```
117+
118+
See the full crate list and dependency order in [CLAUDE.md](../CLAUDE.md#crate-publishing-order).
119+
88120
### From Source (Python)
89121

90122
```bash
@@ -231,6 +263,27 @@ docker run -p 3000:3000 -p 3001:3001 -p 5005:5005/udp ruvnet/wifi-densepose:late
231263

232264
The ESP32 nodes stream binary CSI frames over UDP to port 5005. See [Hardware Setup](#esp32-s3-mesh) for flashing instructions.
233265

266+
### ESP32 Multistatic Mesh (Advanced)
267+
268+
For higher accuracy with through-wall tracking, deploy 3-6 ESP32-S3 nodes in a **multistatic mesh** configuration. Each node acts as both transmitter and receiver, creating multiple sensing paths through the environment.
269+
270+
```bash
271+
# Start the aggregator with multistatic mode
272+
./target/release/sensing-server --source esp32 --udp-port 5005 --http-port 3000 --ws-port 3001
273+
```
274+
275+
The mesh uses a **Time-Division Multiplexing (TDM)** protocol so nodes take turns transmitting, avoiding self-interference. Key features:
276+
277+
| Feature | Description |
278+
|---------|-------------|
279+
| TDM coordination | Nodes cycle through TX/RX slots (configurable guard intervals) |
280+
| Channel hopping | Automatic 2.4/5 GHz band cycling for multiband fusion |
281+
| QUIC transport | TLS 1.3-encrypted streams on aggregator nodes (ADR-032a) |
282+
| Manual crypto fallback | HMAC-SHA256 beacon auth on constrained ESP32-S3 nodes |
283+
| Attention-weighted fusion | Cross-viewpoint attention with geometric diversity bias |
284+
285+
See [ADR-029](adr/ADR-029-ruvsense-multistatic-sensing-mode.md) and [ADR-032](adr/ADR-032-multistatic-mesh-security-hardening.md) for the full design.
286+
234287
---
235288

236289
## REST API Reference
@@ -369,7 +422,7 @@ The system extracts breathing rate and heart rate from CSI signal fluctuations u
369422

370423
**Requirements:**
371424
- CSI-capable hardware (ESP32-S3 or research NIC) for accurate readings
372-
- Subject within ~3-5 meters of an access point
425+
- Subject within ~3-5 meters of an access point (up to ~8 m with multistatic mesh)
373426
- Relatively stationary subject (large movements mask vital sign oscillations)
374427

375428
**Simulated mode** produces synthetic vital sign data for testing.
@@ -493,6 +546,26 @@ MERIDIAN components (all pure Rust, +12K parameters):
493546

494547
See [ADR-027](adr/ADR-027-cross-environment-domain-generalization.md) for the full design.
495548

549+
### CRV Signal-Line Protocol
550+
551+
The CRV (Coordinate Remote Viewing) signal-line protocol (ADR-033) maps a 6-stage cognitive sensing methodology onto WiFi CSI processing. This enables structured anomaly classification and multi-person disambiguation.
552+
553+
| Stage | CRV Term | WiFi Mapping |
554+
|-------|----------|-------------|
555+
| I | Gestalt | Detrended autocorrelation → periodicity / chaos / transient classification |
556+
| II | Sensory | 6-modality CSI feature encoding (texture, temperature, luminosity, etc.) |
557+
| III | Topology | AP mesh topology graph with link quality weights |
558+
| IV | Coherence | Phase phasor coherence gate (Accept/PredictOnly/Reject/Recalibrate) |
559+
| V | Interrogation | Person-specific signal extraction with targeted subcarrier selection |
560+
| VI | Partition | Multi-person partition with cross-room convergence scoring |
561+
562+
```bash
563+
# Enable CRV in your Cargo.toml
564+
cargo add wifi-densepose-ruvector --features crv
565+
```
566+
567+
See [ADR-033](adr/ADR-033-crv-signal-line-sensing-integration.md) for the full design.
568+
496569
---
497570

498571
## RVF Model Containers
@@ -535,7 +608,7 @@ A 3-6 node ESP32-S3 mesh provides full CSI at 20 Hz. Total cost: ~$54 for a 3-no
535608
**What you need:**
536609
- 3-6x ESP32-S3 development boards (~$8 each)
537610
- A WiFi router (the CSI source)
538-
- A computer running the sensing server
611+
- A computer running the sensing server (aggregator)
539612

540613
**Flashing firmware:**
541614

@@ -557,6 +630,33 @@ python scripts/provision.py --port COM7 \
557630

558631
Replace `192.168.1.20` with the IP of the machine running the sensing server.
559632

633+
**Mesh key provisioning (secure mode):**
634+
635+
For multistatic mesh deployments with authenticated beacons (ADR-032), provision a shared mesh key:
636+
637+
```bash
638+
python scripts/provision.py --port COM7 \
639+
--ssid "YourWiFi" --password "YourPassword" --target-ip 192.168.1.20 \
640+
--mesh-key "$(openssl rand -hex 32)"
641+
```
642+
643+
All nodes in a mesh must share the same 256-bit mesh key for HMAC-SHA256 beacon authentication. The key is stored in ESP32 NVS flash and zeroed on firmware erase.
644+
645+
**TDM slot assignment:**
646+
647+
Each node in a multistatic mesh needs a unique TDM slot ID (0-based):
648+
649+
```bash
650+
# Node 0 (slot 0) — first transmitter
651+
python scripts/provision.py --port COM7 --tdm-slot 0 --tdm-total 3
652+
653+
# Node 1 (slot 1)
654+
python scripts/provision.py --port COM8 --tdm-slot 1 --tdm-total 3
655+
656+
# Node 2 (slot 2)
657+
python scripts/provision.py --port COM9 --tdm-slot 2 --tdm-total 3
658+
```
659+
560660
**Start the aggregator:**
561661

562662
```bash
@@ -567,7 +667,7 @@ Replace `192.168.1.20` with the IP of the machine running the sensing server.
567667
docker run -p 3000:3000 -p 3001:3001 -p 5005:5005/udp ruvnet/wifi-densepose:latest --source esp32
568668
```
569669

570-
See [ADR-018](../docs/adr/ADR-018-esp32-dev-implementation.md) and [Tutorial #34](https://github.com/ruvnet/wifi-densepose/issues/34).
670+
See [ADR-018](../docs/adr/ADR-018-esp32-dev-implementation.md), [ADR-029](../docs/adr/ADR-029-ruvsense-multistatic-sensing-mode.md), and [Tutorial #34](https://github.com/ruvnet/wifi-densepose/issues/34).
571671

572672
### Intel 5300 / Atheros NIC
573673

@@ -626,7 +726,7 @@ docker run -p 3000:3000 -p 3001:3001 ruvnet/wifi-densepose:latest
626726
627727
### Build: Rust compilation errors
628728
629-
Ensure Rust 1.70+ is installed:
729+
Ensure Rust 1.75+ is installed (1.85+ recommended):
630730
```bash
631731
rustup update stable
632732
rustc --version
@@ -656,7 +756,7 @@ No. Consumer WiFi exposes only RSSI (one number per access point), not CSI (56+
656756
Accuracy depends on hardware and environment. With a 3-node ESP32 mesh in a single room, the system tracks 17 COCO keypoints. The core algorithm follows the CMU "DensePose From WiFi" paper ([arXiv:2301.00250](https://arxiv.org/abs/2301.00250)). The MERIDIAN domain generalization system (ADR-027) reduces cross-environment accuracy loss from 40-70% to under 15% via 10-second automatic calibration.
657757
658758
**Q: Does it work through walls?**
659-
Yes. WiFi signals penetrate non-metallic materials (drywall, wood, concrete up to ~30cm). Metal walls/doors significantly attenuate the signal. The effective through-wall range is approximately 5 meters.
759+
Yes. WiFi signals penetrate non-metallic materials (drywall, wood, concrete up to ~30cm). Metal walls/doors significantly attenuate the signal. With a single AP the effective through-wall range is approximately 5 meters. With a 3-6 node multistatic mesh (ADR-029), attention-weighted cross-viewpoint fusion extends the effective range to ~8 meters through standard residential walls.
660760
661761
**Q: How many people can it track?**
662762
Each access point can distinguish ~3-5 people with 56 subcarriers. Multi-AP deployments multiply linearly (e.g., 4 APs cover ~15-20 people). There is no hard software limit; the practical ceiling is signal physics.
@@ -671,7 +771,7 @@ The Rust implementation (v2) is 810x faster than Python (v1) for the full CSI pi
671771

672772
## Further Reading
673773

674-
- [Architecture Decision Records](../docs/adr/) - 27 ADRs covering all design decisions
774+
- [Architecture Decision Records](../docs/adr/) - 33 ADRs covering all design decisions
675775
- [WiFi-Mat Disaster Response Guide](wifi-mat-user-guide.md) - Search & rescue module
676776
- [Build Guide](build-guide.md) - Detailed build instructions
677777
- [RuVector](https://github.com/ruvnet/ruvector) - Signal intelligence crate ecosystem

0 commit comments

Comments
 (0)