Sandbox migration#

The historical pyradar_sandbox directory was removed before v1. Reusable radar behavior was rewritten against current contracts; copied reference code, GUI helpers, and hardware side effects were not moved into the installable package.

Historical area

v1 destination

Decision

base/*

pyradar.base

Replaced by immutable validated models and named data containers.

rsp/fft.py

pyradar.rsp.fft

Rewritten with parameter and Radar-aware APIs.

rsp/doa.py

pyradar.rsp.doa

Rewritten; adds arbitrary geometry, duplicate phase centers, MUSIC, Capon, Bartlett, and ESPRIT.

rsp/cfar.py, STFT detection helpers

pyradar.rsp.cfar

Replaced by statistically parameterized CA/GOCA/SOCA/OS CFAR and NMS. Experimental undocumented variants were not promoted.

rsp/stft.py

pyradar.rsp.time_frequency

Replaced by general STFT, micro-Doppler, and zoom FFT results with physical coordinates.

clutter and integration helpers

pyradar.rsp.preprocessing

Reimplemented as composable axis-aware functions.

sim/core.py, demo_sim.py

pyradar.sim

Rebuilt as point-target/path ADC synthesis, scene sampling, range-image rendering, and a Radar.simulate entry point.

Mitsuba and experimental LiDAR ray scripts

pyradar.sim.raytracing

Replaced by backend-neutral ray math and an optional Trimesh CPU backend. Hard-coded assets, GUI state, and backend selection were removed.

converter helpers

pyradar.utils.converter and Radar properties

Rewritten with SI units, radians, exact FFT bin centers, and validation.

point-cloud helpers

pyradar.utils.pointcloud

Retains deterministic voxel/random sampling, bounds, and point-to-point ICP without requiring Open3D.

pose helpers

pyradar.utils.geometry

Retains FLU rigid transform creation, composition, inversion, and point transforms. Camera/Torch conversion utilities were outside radar scope.

heat-map helpers

pyradar.utils.vis

Replaced by typed RD, RA, and point-cloud plotting functions.

TI DCA1000/TSW1400 parsing

pyradar.utils.io.ti

Reimplemented as pure decoders and Radar-validated frame readers. Live UDP/serial control is intentionally not imported by the package.

copied reference_mmwave tree

no vendored package

Algorithm concepts are covered by native v1 implementations and tests. The third-party source remains available through its upstream project and is not exposed under the pyradar namespace.

The migration is intentionally behavioral rather than path-compatible. The experimental 0.1 imports are not aliases in v1; callers should build a Radar, use pyradar.rsp, pyradar.sim, or pyradar.utils, and rely on named dimensions at raw-array boundaries.