A Radar Simulator for Python
RadarSimPy is a powerful and versatile Python-based Radar Simulator that models radar transceivers and simulates baseband data from point targets and 3D models. Its signal processing tools offer range/Doppler processing, direction of arrival estimation, and beamforming using various cutting-edge techniques, and you can even characterize radar detection using Swerlingโs models. Whether youโre a beginner or an advanced user, RadarSimPy is the perfect tool for anyone looking to develop new radar technologies or expand their knowledge of radar systems.
- ๐ก Radar Modeling
- Transceiver modeling
- Arbitrary waveform (CW, FMCW, PMCW, Pulse, ...)
- Phase noise
- Phase/amplitude modulation (CDM, FDM, DDM, TDM, ...)
- Fast-time/slow-time modulation
- ๐ฎ Simulation
- Baseband data from point targets & 3D models
- Interference simulation
- Target RCS simulation
- LiDAR point cloud simulation
- ๐ถ Signal Processing
- Range/Doppler processing
- DoA estimation (MUSIC, Root-MUSIC, ESPRIT, IAA)
- Beamforming (Capon, Bartlett)
- CFAR (CA-CFAR, OS-CFAR)
- ๐ Characterization
- Radar detection characteristics (Swerlingโs models)
- Python >= 3.9
- NumPy >= 2.0
- SciPy
- PyMeshLab, PyVista, trimesh, or meshio
Platform-specific requirements:
- Windows
- Visual C++ Runtime
- GPU version (CUDA12.8) โ see Minimum Required Driver Versions
- Ubuntu 22.04
- GCC 11 (default)
- GPU version (CUDA12.8) โ see Minimum Required Driver Versions
- Ubuntu 24.04
- GCC 13 (default)
- GPU version (CUDA12.8) โ see Minimum Required Driver Versions
- Generic Linux x86-64
- Try Ubuntu 22.04/24.04 module, or request a custom build
- MacOS Intel/Apple Silicon
- GCC 14:
brew install gcc@14
- GCC 14:
Download the pre-built module and place the radarsimpy
folder in your project directory:
your_project.py
your_project.ipynb
radarsimpy/
โโโ __init__.py
โโโ [platform-specific binaries]
โโโ radar.py
โโโ processing.py
โโโ ...
Platform-specific binaries:
- Windows:
radarsimcpp.dll
,simulator.xxx.pyd
- Linux:
libradarsimcpp.so
,simulator.xxx.so
- MacOS:
libradarsimcpp.dylib
,simulator.xxx.so
This module supports CPU/GPU parallelization:
- CPU: via OpenMP
- GPU: via CUDA (since v6.0.0)
CPU (x86-64) | CPU (ARM64) | GPU (CUDA) | |
---|---|---|---|
Windows | โ๏ธ | โ๏ธ | โ๏ธ |
Linux | โ๏ธ | โ๏ธ | โ๏ธ |
MacOS | โ๏ธ | โ๏ธ | โ๏ธ |
- axis (m):
[x, y, z]
- phi (deg): angle on the x-y plane. 0 deg is the positive x-axis, 90 deg is the positive y-axis
- theta (deg): angle on the z-x plane. 0 deg is the positive z-axis, 90 deg is the x-y plane
- yaw (deg): rotation along the z-axis. Positive yaw rotates the object from the positive x-axis to the positive y-axis
- pitch (deg): rotation along the y-axis. Positive pitch rotates the object from the positive x-axis to the positive z-axis
- roll (deg): rotation along the x-axis. Positive roll rotates the object from the positive y-axis to the positive z-axis
- origin (m):
[x, y, z]
, the motion (rotation and translation) centor of the object. Radar's origin is always at[0, 0, 0]
- azimuth (deg): azimuth -90 ~ 90 deg equal to phi -90 ~ 90 deg
- elevation (deg): elevation -90 ~ 90 deg equal to theta 180 ~ 0 deg
Find more usage examples at radarsimx.com. Source files are available in the radarsimnb repository.
Check Build Instructions
See the Documentation
Contributions, issues, and feature requests are welcome! Please open an issue or submit a pull request on GitHub.
This project is licensed under the terms of the LICENSE file.