Skip to main content

WiTwin Radar

WiTwin Radar is a GPU-accelerated, differentiable radar simulator. A simulation consumes a witwin.core world and one-way propagation from witwin.channel, composes round trips, applies scattering and sensor/frontend effects, synthesizes radar waveforms, and produces typed signal-processing products.

The repository uses a breaking, concept-axis architecture. Compatibility modules and deprecated aliases are intentionally not retained.

Installation and runtime

pip install witwin-radar[channel]

CUDA is required for propagation and native waveform synthesis. CPU construction and PyTorch signal-processing workflows remain useful without a GPU. Linux and Windows are supported.

Release policy is explicit and conservative:

  • CPython 3.10-3.14;
  • Linux wheels target manylinux_2_28_x86_64;
  • one packaged _radar_native library plus its identity sidecars;
  • exact Torch/CUDA/ABI runtime identity;
  • no JIT fallback and no success-by-loader-refusal path.

The release build matrix currently uses Torch 2.10 with CUDA 12.8 for each supported Python version. A different Torch or CUDA identity requires a separately built and validated artifact.

Architecture

witwin.core Scene/DynamicScene
        |
        v
Radar simulation session -> Channel propagation -> round-trip path composition
        |                                      |
        +-> scattering -> sensor/frontend -----+
                                               v
                       FMCW / OFDM / pulsed synthesis
                                               v
                          typed processing products

Production ownership is intentionally shallow:

  • witwin/radar/radar.py — configuration, pose, and the Radar facade;
  • witwin/radar/simulation.py — scene-session execution and frame results;
  • witwin/radar/channel.py — the only production Channel importer;
  • witwin/radar/propagation.py and witwin/radar/paths.py — propagation policy and round-trip composition;
  • witwin/radar/scattering.py, sensors.py, and frontend.py — radar physics around the path;
  • witwin/radar/synthesis/ — native waveform synthesis;
  • witwin/radar/processing/ — range, Doppler, angle, detection, and tracking products;
  • witwin/radar/cuda/ — the native runtime and kernels.

FMCW: spectrum first

FMCW synthesis directly generates the Dirichlet range spectrum in native CUDA by default. The default is output_domain="spectrum" in both the typed FMCW spec and the flat radar configuration. Set output_domain="beat" only when a caller explicitly needs a synthesized time-domain beat signal.

The result carries named axes and an output-domain field. Downstream processing uses that metadata, so it does not apply an extra range FFT to a spectrum or omit the FFT for beat samples.

Main API

Radar.simulate(...) is the scene-driven entry point. It accepts a Core scene, frame times, an explicit scatter response, and an explicit or policy-defined set of scatter sites. It returns RadarSimulationResult, whose cube is organized as [frame, TX, RX, slow, fast] and whose metadata states the waveform and fast-axis domain.

Radar.synthesize(...) is the lower-level path-to-waveform entry. It dispatches from the stored waveform kind and requires an explicit slow-time mode.

Signal processing is exported through witwin.radar.processing; typed products include processing cubes, range profiles, Range-Doppler maps, beam cubes, detections, and point clouds.

See docs/pipeline_guide.md for the full contract and examples/single_point.py for a maintained end-to-end example.

Tests and governance

pytest tests/
pytest tests/ --gpu
python ci/run_ci_tier.py quick

The quick tier includes canonical Ruff formatting/lint, exact-clone detection, architectural, public-surface, documentation, release-claim, workflow-reference, and compatibility-removal gates. Required-Channel workflows install the Channel extra, record its build fingerprint, and permit zero skips caused by a missing Channel runtime.

No benchmark, GPU result, wheel load, or remote workflow is claimed as executed merely because its command exists. Current performance evidence and outstanding measurements are documented in PERFORMANCE.md.

Examples

python -m examples.single_point
python -m examples.music_imaging
python -m examples.rgbd_range_doppler --input path/to/depths.npz

All maintained scene-driven examples require CUDA and Channel.

Documentation

  • Pipeline: docs/pipeline_guide.md
  • Development standard: docs/dev/standards/radar-adr-021-code-layout-comments-and-mathematical-ownership.md
  • Consolidation plan: docs/dev/plans/radar-concept-axis-layout-and-module-consolidation-plan.md
  • Governance inventory: docs/dev/audit/radar-governance-debt-and-drift-inventory.md
  • AD capability matrix: docs/dev/radar-ad-capability-matrix.md
  • AD tape/budget ledger: docs/dev/ad-tape-and-budget-ledger.md

License and citation

WiTwin Radar uses the WiTwin dual-license model. See the WiTwin licensing page. The simulator is derived from RF-Genesis; cite the RF-Genesis SenSys 2023 paper when that prior work is relevant.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

witwin_radar-0.3.0.tar.gz (1.1 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

witwin_radar-0.3.0-py3-none-win_amd64.whl (1.7 MB view details)

Uploaded Python 3Windows x86-64

witwin_radar-0.3.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

Uploaded Python 3manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

File details

Details for the file witwin_radar-0.3.0.tar.gz.

File metadata

  • Download URL: witwin_radar-0.3.0.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for witwin_radar-0.3.0.tar.gz
Algorithm Hash digest
SHA256 542a746073fec762c51d627b10884cfd6503566b8977f2fdd225d5f8b5d80a53
MD5 ff0d380591727a81888d8455f66862de
BLAKE2b-256 d447372734338cd51b7b8ddb66e54dfe62d6ebeb90562798fe6a3b7023d6f385

See more details on using hashes here.

Provenance

The following attestation bundles were made for witwin_radar-0.3.0.tar.gz:

Publisher: publish-witwin-radar.yml on witwin-ai/witwin-radar

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file witwin_radar-0.3.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: witwin_radar-0.3.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for witwin_radar-0.3.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 120376b0507586f9403245872b578841d9b58653e759f477af4ffa030ec82475
MD5 0889d71b9a5cdbf43a22730c39ae79b3
BLAKE2b-256 8c6cc79ec8ea390eb03e3ea086bee9995ca32975feb20beae135c4a6ab316476

See more details on using hashes here.

Provenance

The following attestation bundles were made for witwin_radar-0.3.0-py3-none-win_amd64.whl:

Publisher: publish-witwin-radar.yml on witwin-ai/witwin-radar

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file witwin_radar-0.3.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for witwin_radar-0.3.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 07125cf36c4e458f657eb0170d33bc38114ccdd975daab543189afea46bc7760
MD5 7dfd19f071a0afbe99cd9663da38eba8
BLAKE2b-256 9552ede4cf5ab49055dd08c2e5e45b607f34a419b5e4970870805d743d94bbae

See more details on using hashes here.

Provenance

The following attestation bundles were made for witwin_radar-0.3.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-witwin-radar.yml on witwin-ai/witwin-radar

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page