mirror of
https://github.com/ruvnet/RuView
synced 2026-07-31 18:51:42 +00:00
e4695d8c68
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).
78 lines
4.1 KiB
Rust
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};
|