Skip to content

feat(wifi-densepose-sar): coherent wideband RF tomography research crate (ADR-283) - #1487

Merged
ruvnet merged 5 commits into
mainfrom
feat/sar-tomography-crate
Jul 31, 2026
Merged

feat(wifi-densepose-sar): coherent wideband RF tomography research crate (ADR-283)#1487
ruvnet merged 5 commits into
mainfrom
feat/sar-tomography-crate

Conversation

@ruvnet

@ruvnet ruvnet commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Summary

New standalone leaf crate wifi-densepose-sar (ADR-283) implementing the synthetic-aperture-radar reconstruction primitive a handheld through-wall RF imaging device would need — motivated by comparing this repo against Applied Electrodynamics' "WaveSight" YC launch.

  • Forward measurement model: simulates complex, stepped-frequency returns from point scatterers observed by a synthetic-aperture antenna trajectory (y_{m,k} = Σ σ_j/R² · exp(-i·4π·f·R/c) + noise), deterministic ChaCha20 seeding.
  • Backprojection reconstruction: matched-filter inversion onto a 3D voxel grid, rayon-parallelized over voxels.
  • Point-cloud extraction: threshold + local-maximum extraction from the dense voxel image.
  • Closed-form resolution formulas: ΔR=c/2B (range), δ_CR≈λR/2L (cross-range/synthetic-aperture), Δp≤λ/8 (antenna-pose coherence budget) — checked against the reconstruction's actual behavior in tests/physics_validation.rs, not merely documented.

Honesty boundary (ADR-283 §3): every number is SYNTHETIC / evidence level L0 (ADR-282). No wideband RF hardware, VNA, or SDR integration exists anywhere in this crate or was added to wifi-densepose-hardware. This is explicitly scoped below ADR-278's RISE/DiffRadar/GeRaF reproduction gates — the bare measurement-model + backprojection primitive, not a reproduction of any published system, and not a claim about Applied Electrodynamics' undisclosed product or real-world through-wall imaging performance. See the crate's src/lib.rs doc comment and README for the full scope statement.

Also adds docs/tutorials/coherent-rf-tomography-backprojection.md, a worked walkthrough of the physics and the crate's API.

Test plan

  • cargo test -p wifi-densepose-sar --no-default-features — 24/24 passed (21 unit + 3 integration physics-validation tests)
  • cargo clippy -p wifi-densepose-sar --no-default-features --all-targets — clean
  • cargo bench -p wifi-densepose-sar — MEASURED throughput recorded in crate README (~350-450K voxels/sec, 21 poses × 32 freq steps)
  • cargo build --workspace --no-default-features — full v2 workspace still builds clean with the new crate registered

…ate (ADR-283)

New standalone leaf crate implementing the synthetic-aperture-radar
reconstruction primitive a handheld through-wall RF imaging device
would need: a stepped-frequency multi-position complex forward
measurement simulator, delay-and-sum backprojection reconstruction,
point-cloud extraction, and closed-form range/cross-range resolution
+ antenna-pose coherence-budget formulas checked against the
reconstruction's actual behavior in tests/physics_validation.rs.

Motivated by comparing this repo against Applied Electrodynamics'
"WaveSight" launch. Scoped explicitly below ADR-278's RISE/DiffRadar/
GeRaF reproduction gates: this is the bare measurement-model +
backprojection primitive, not a reproduction of any published system
or a claim about real hardware capability. Every number is
SYNTHETIC/L0 (ADR-282) -- no wideband RF hardware backs this crate.

24 tests (21 unit + 3 integration), 0 failed, clippy-clean. Adds a
tutorial walkthrough and MEASURED backprojection benchmark numbers.
ruvnet added 4 commits July 30, 2026 21:09
…on (~4.4-4.5x, MEASURED)

focus_at_point called Complex64::from_polar (a sin/cos pair) once per
(pose, frequency) term. FrequencySweep::frequencies() produces evenly
spaced frequencies by construction, so the per-term phase is an
arithmetic progression in the frequency index -- the phasor can be
evaluated once per pose and advanced by a fixed complex-multiply step
per frequency instead, turning K trig evaluations into 2.

focus_at_point's signature changes from a raw &[f64] frequency slice
to &FrequencySweep, so the evenly-spaced-frequencies precondition
this optimization depends on is a type-level invariant rather than a
caller-observed one -- an arbitrary non-uniform frequency list is no
longer constructible through this API at all.

MEASURED (criterion regression detection, p < 0.001): ~4.4-4.5x
faster across 512/4096/32768-voxel grids (300us/1.97ms/14.5ms vs the
prior 1.47ms/10.4ms/73.5ms). Proven equivalent, not just faster: a new
test independently reimplements the direct per-frequency computation
as a reference and checks the optimized path against it across four
sweep sizes (incl. the n_steps=1 degenerate case) and both on-target
and off-target points, to <1e-9 relative error.

25 tests (22 unit + 3 integration), 0 failed, clippy-clean.
…ion)

ADR-283 was already taken by ADR-283-ruview-community-metaharness-flywheel.md,
merged to main before this branch's work started -- picked without checking
against main's actual current ADR list. Renumbered to ADR-287, the next free
slot after ADR-286 (the wifi-densepose-sar-harness ADR, no collision there).

Updated every reference across the crate (Cargo.toml description, lib.rs/
geometry.rs/measurement.rs/pointcloud.rs/reconstruct.rs/resolution.rs doc
comments, tests/physics_validation.rs), its README, the tutorial doc,
CHANGELOG.md, and the workspace Cargo.toml's member comment. 25 tests still
pass after the rename (doc-comment-only changes, no logic touched).
The crates.io section claimed "All 16 crates are published at v0.3.0" --
stale even before this session (crates publish independently and had
already drifted to 0.3.1-0.3.6). Replaced with an accurate framing
(cargo add resolves each to its own latest) and added the new
wifi-densepose-sar crate (ADR-287) to the list.
@ruvnet
ruvnet merged commit 2bfa60a into main Jul 31, 2026
41 checks passed
@ruvnet
ruvnet deleted the feat/sar-tomography-crate branch July 31, 2026 14:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant