Files
ruvnet--RuView/v2/crates/wifi-densepose-sar/src/lib.rs
T
ruv e4695d8c68 fix: renumber wifi-densepose-sar's ADR from 283 to 287 (number collision)
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).
2026-07-31 00:34:35 -04:00

78 lines
4.1 KiB
Rust

//! # wifi-densepose-sar — Coherent Wideband RF Tomography (ADR-287)
//!
//! A research crate implementing the reconstruction primitive that a
//! handheld through-wall RF imaging device (the class of product exemplified
//! by YC-backed Applied Electrodynamics' "WaveSight") would need: recovering
//! a 3D reflectivity field from coherent, stepped-frequency, multi-position
//! RF measurements via delay-and-sum backprojection.
//!
//! ## What this crate is
//!
//! - [`measurement`]: a forward simulator producing synthetic complex,
//! stepped-frequency returns from known point scatterers observed by a
//! known synthetic-aperture antenna trajectory.
//! - [`reconstruct`]: the backprojection reconstruction kernel that inverts
//! that forward model back into a 3D voxel reflectivity image.
//! - [`pointcloud`]: sparse point extraction from the dense voxel image.
//! - [`resolution`]: closed-form range/cross-range resolution and
//! coherence-budget formulas (`ΔR = c/2B`, `δ_CR ≈ λR/2L`, the `λ/8`
//! antenna-pose tolerance), checked against the reconstruction's actual
//! behavior in `tests/physics_validation.rs` rather than merely asserted.
//! - [`geometry`]: antenna poses and synthetic-aperture trajectories.
//!
//! ## What this crate is NOT (ADR-287 §1, honesty boundary)
//!
//! - **Not a hardware driver.** There is no VNA, SDR, or wideband RF
//! front-end integration here, and none of `wifi-densepose-hardware`'s
//! ESP32/CSI chipset code is touched. Every measurement in this crate's
//! tests and benchmarks is [`measurement::simulate_measurement`] output.
//! - **Not a reproduction of any published system.** ADR-278 already gates
//! RISE/DiffRadar/GeRaF reproduction as a separate, much larger research
//! program with its own acceptance gates; this crate does not attempt
//! any of them. It is scoped one level below that: the bare
//! measurement-model + backprojection primitive those (or any other SAR
//! pipeline) would be built on.
//! - **Not a claim about Applied Electrodynamics' product.** Their exact
//! waveform, antenna count, bandwidth, and reconstruction algorithm are
//! undisclosed; nothing here reproduces or benchmarks against their
//! device. It is simply the same well-established SAR/GPR physics
//! (Skolnik-style backprojection) applied to synthetic data.
//! - **Not wired into `ruview-unified` or `GaussianMap`.** ADR-278 §2.4
//! names that as the eventual integration point once (and if) a gated
//! reconstruction system exists; this crate is deliberately a leaf with
//! no RuView dependency (the nvsim pattern) so its physics can be
//! validated in isolation first.
//! - **Every number produced by this crate is SYNTHETIC / evidence level
//! L0** (ADR-282's mandatory evidence ladder), generated by its own
//! forward simulator, scored against its own ground truth. It says
//! nothing about real-world through-wall imaging performance, which
//! depends on multipath, wall materials, antenna gain patterns, receiver
//! noise figures, and calibration accuracy that this crate does not
//! model.
//!
//! ## Design commitments
//!
//! - **Deterministic**: [`measurement::simulate_measurement`] is seeded
//! ChaCha20 (the nvsim / ruview-unified commitment) -- same seed yields
//! byte-identical output on every machine.
//! - **Proven, not asserted**: `tests/physics_validation.rs` checks the
//! reconstruction's actual point-target localization error, range
//! resolution, cross-range resolution, and pose-error sensitivity against
//! the closed-form predictions in [`resolution`] -- the same discipline
//! `ruview-unified` uses for its ray tracer (checked against Friis and
//! reciprocity) and its encoder (checked against finite differences).
#![warn(missing_docs)]
#![forbid(unsafe_code)]
pub mod geometry;
pub mod measurement;
pub mod pointcloud;
pub mod reconstruct;
pub mod resolution;
pub use geometry::{linear_aperture, AntennaPose, Point3};
pub use measurement::{simulate_measurement, FrequencySweep, Measurement, ScatteringTarget};
pub use pointcloud::{extract_point_cloud, PointCloudPoint};
pub use reconstruct::{backproject, focus_at_point, ReflectivityImage, VoxelGrid};