//! # 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};