Python Radar Simulator

Radar Simulation
for Python

A powerful Python library for radar transceiver modeling, baseband simulation from point targets, 3D meshes and animated glTF models, and advanced signal processing — including Range-Doppler, DoA estimation, CFAR, and beamforming. One module runs on an NVIDIA GPU when available and on all CPU cores otherwise.

simulation.py
from radarsimpy import Radar, Transmitter, Receiver
from radarsimpy.simulator import sim_radar

# Define FMCW transmitter
tx = Transmitter(
    f=(77e9, 81e9),
    t=80e-6,
    tx_power=15,
    prp=100e-6,
    pulses=128,
)

# Define receiver
rx = Receiver(
    fs=6e6,
    noise_figure=8,
    rf_gain=20,
)

# Build radar and run simulation
# device="auto": GPU if usable, else CPU
radar = Radar(transmitter=tx, receiver=rx)
data  = sim_radar(radar, targets=[{
    "location": (50, 0, 0),
    "rcs": 10,
}], device="auto")

Everything You Need for Radar Simulation

Four integrated capability areas covering the full radar simulation workflow.

Radar Modeling

  • Transceiver modeling with multiple Tx/Rx channels
  • Arbitrary waveform — CW, FMCW, PMCW, Pulse, and custom
  • Receiver thermal noise & SSB phase noise
  • Modulation — CDM, FDM, DDM, TDM (fast-time & slow-time)
  • Antenna pattern definition per channel
  • Range-gated stretch processing for long-range FMCW

Simulation

  • Baseband data from point targets
  • Baseband data from 3D modeled objects & environments (ray tracing, multi-bounce)
  • Keyframe-animated glTF 2.0 / GLB targets (rotors, wheels, flight paths)
  • Mutual interference simulation
  • Target RCS simulation
  • LiDAR point cloud with normals, range & intensity

Signal Processing

  • Range / Doppler processing
  • DoA estimation — MUSIC, Root-MUSIC, ESPRIT, IAA
  • Beamforming — Capon, Bartlett
  • 1D/2D CA-CFAR & OS-CFAR

Characterization

  • Radar detection characteristics (ROC curves)
  • Swerling target models (0–4)
  • Radar link budget analysis
  • Phase noise characterization

CPU & GPU Parallelization

Designed for performance — from a laptop to a CUDA workstation. Windows and Linux ship a single CUDA-enabled module that picks the GPU when one is usable and runs on all CPU cores otherwise.

⚡
CPU (OpenMP)

Multi-threaded simulation on all cores (limit with OMP_NUM_THREADS). Windows, Linux, and macOS.

🚀
GPU (CUDA 13)

NVIDIA GPUs with Compute Capability 7.5 (Turing) or newer. Windows and Linux (x86-64 & ARM64). No CUDA Toolkit needed — just a recent driver.

🧭
Automatic Fallback

device="auto" uses the GPU when available and the CPU otherwise. Force either with "gpu" or "cpu"; check with gpu_available().

Platform CPU (x86-64) CPU (ARM64) GPU (CUDA)
Windows ✓ — ✓
Linux (Ubuntu 22.04 / 24.04 / 26.04) ✓ ✓ ✓
macOS (Intel & Apple Silicon) ✓ ✓ —

Performance Across Releases

Execution time in seconds for radarsimnb examples, v12.5.0 vs v15.5.0.

Example v12.5 CPU v15.5 CPU v12.5 GPU v15.5 GPU
FMCW imaging radar > 7200 854.76 2259.91 63.59
FMCW radar with a car 909.33 8.14 9.72 0.75
Doppler of a turbine 2069.66 95.54 117.76 63.40
Multi-path 151.64 5.62 4.85 1.60

Intel Core i7-11800H (16 threads, 32 GB RAM) and NVIDIA GeForce RTX 3050 Laptop GPU (4 GB).

Dependencies & Setup

No compilation needed — download the pre-built module and place it in your project.

Python Packages

  • Python 3.10 – 3.14
  • NumPy >= 2.0
  • SciPy
  • trimesh (default) / PyMeshLab / PyVista / meshio (for 3D mesh targets)
  • pygltflib (optional, for animated glTF / GLB targets)

Platform Requirements

  • Windows — Visual C++ Runtime
  • Ubuntu 22.04 — GCC 11 (default), x86-64 & ARM64
  • Ubuntu 24.04 — GCC 13 (default), x86-64 & ARM64
  • Ubuntu 26.04 — GCC 15 (default), x86-64 & ARM64
  • macOS — Intel & Apple Silicon, default Clang, no extra dependencies
  • GPU (optional) — NVIDIA Compute Capability 7.5+ and a recent driver; no CUDA Toolkit needed
  • Other Linux — try the Ubuntu 22.04 / 24.04 module, or request a custom build

Installation

Download the pre-built module and place the radarsimpy folder in your project directory:

your_project.py
your_project.ipynb
radarsimpy/
  ├── __init__.py
  ├── radar.py
  ├── processing.py
  ├── [platform-specific binaries]
  └── ...
Windows: radarsimcpp.dll · simulator.*.pyd Linux: libradarsimcpp.so · simulator.*.so macOS: libradarsimcpp.dylib · simulator.*.so

Free to Try, Licensed to Unlock

✓

One license, two tools. Your RadarSimPy license file also unlocks all RadarSimApp capabilities — no extra purchase required.

Free TrialFREE

Fully functional for learning and exploring radar simulation concepts.

  • Max 2 targets (3 for RCS)
  • 1 Tx / 1 Rx channel
  • Max 8 faces per mesh target
  • Email support for installation
  • No bug fixes & updates
LicensedLICENSED

Activate with a RadarSimPy license file — all limits removed.

  • Unlimited targets
  • Unlimited Tx / Rx channels
  • Unlimited mesh size
  • Email support within license term
  • Bug fixes & updates within license term
Get a License →