Files
ruvnet--RuView/v2/docs/adr/ADR-002-signal-processing.md
T
rUv f49c722764 chore(repo): rename rust-port/wifi-densepose-rs → v2/ (flatten to one level) (#427)
The Rust port lived two directories deep (rust-port/wifi-densepose-rs/)
without any sibling under rust-port/ that warranted the extra level.
Move the whole workspace up to v2/ to match v1/ (Python) at the same
depth and shorten every cd / build command across the repo.

git mv preserves history for all tracked files. 60 files updated for
path references (CI workflows, ADRs, docs, scripts, READMEs, internal
.claude-flow state). Two manual fixes for relative-cd paths in
CLAUDE.md and ADR-043 that became wrong after the depth change
(cd ../.. → cd ..).

Validated:
- cargo check --workspace --no-default-features → clean (after target/
  nuke; the gitignored target/ was carried by the OS rename and had
  hard-coded old paths in build scripts)
- cargo test --workspace --no-default-features → 1,539 passed, 0 failed,
  8 ignored (same totals as pre-rename)
- ESP32-S3 on COM7 → still streaming live CSI (cb #40300, RSSI -64 dBm)

After-merge follow-up: contributors should `rm -rf v2/target` once and
let cargo regenerate from the new path.
2026-04-25 21:28:13 -04:00

41 lines
1.3 KiB
Markdown

# ADR-002: Signal Processing Library Selection
## Status
Accepted
## Context
CSI signal processing requires FFT operations, complex number handling, and matrix operations. We need to select appropriate Rust libraries that provide Python/NumPy equivalent functionality.
## Decision
We will use the following libraries:
| Library | Purpose | Python Equivalent |
|---------|---------|-------------------|
| `ndarray` | N-dimensional arrays | NumPy |
| `rustfft` | FFT operations | numpy.fft |
| `num-complex` | Complex numbers | complex |
| `num-traits` | Numeric traits | - |
### Key Implementations
1. **Phase Sanitization**: Multiple unwrapping methods (Standard, Custom, Itoh, Quality-Guided)
2. **CSI Processing**: Amplitude/phase extraction, temporal smoothing, Hamming windowing
3. **Feature Extraction**: Doppler, PSD, amplitude, phase, correlation features
4. **Motion Detection**: Variance-based with adaptive thresholds
## Consequences
### Positive
- Pure Rust implementation (no FFI overhead)
- WASM compatible (rustfft is pure Rust)
- NumPy-like API with ndarray
- High performance with SIMD optimizations
### Negative
- ndarray-linalg requires BLAS backend for advanced operations
- Learning curve for ndarray patterns
## References
- [ndarray documentation](https://docs.rs/ndarray)
- [rustfft documentation](https://docs.rs/rustfft)