AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Radar Simulator built with Python and C++
Developer toolsPython · CythonGitHub @radarsimxOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
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.Read the full README ↗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.
trimesh is installed by default)radarsimpy.animation_kit)pip install -r requirements.txt
Full detail, including platform and hardware requirements, is on the Dependencies page.
Platform-specific requirements:
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:
radarsimcpp.dll, simulator.xxx.pydlibradarsimcpp.so, simulator.xxx.solibradarsimcpp.dylib, simulator.xxx.soSimulations run in parallel on the CPU or the GPU:
OMP_NUM_THREADS)The Windows and Linux modules are a single CUDA-enabled build: they use the GPU when a usable one is present and otherwise run on the CPU with OpenMP, at about the same speed as a CPU-only build. MacOS modules are CPU-only.
| CPU (x86-64) | CPU (ARM64) | GPU (CUDA) | |
|---|---|---|---|
| Windows | ✔️ | ❌️ | ✔️ |
| Linux | ✔️ | ✔️ | ✔️ |
| MacOS | ✔️ | ✔️ | ❌️ |
On Linux, the GPU (CUDA) module is available for both x86-64 and ARM64.
sim_radar, sim_rcs and sim_lidar take a device argument:
from radarsimpy.simulator import sim_radar, gpu_available
print(gpu_available()) # True only on a GPU build with a usable CUDA device
data = sim_radar(radar, targets, device="auto") # "auto" (default), "gpu" or "cpu"
"auto" uses the GPU when one is usable and the CPU otherwise, without a warning."gpu" falls back to the CPU with a RuntimeWarning when no GPU is usable, so a timing taken from that run is a CPU timing.CUDA_VISIBLE_DEVICES=-1 hides the GPU, which makes "auto" run on the CPU.Execution time in seconds for examples from the radarsimnb repository, across releases:
| Example | v12.5.0 CPU | v12.5.0 GPU | v12.6.1 CPU | v12.6.1 GPU | v15.5.0 CPU | v15.5.0 GPU |
|---|---|---|---|---|---|---|
| FMCW imaging radar | > 7200 | 2259.91 | > 7200 | 445.48 | 854.76 | 63.59 |
| FMCW radar with a car | 909.33 | 9.72 | 373.96 | 5.17 | 8.14 | 0.75 |
| Doppler of a turbine | 2069.66 | 117.76 | 2719.24 | 126.71 | 95.54 | 63.40 |
| Multi-path | 151.64 | 4.85 | 88.40 | 4.63 | 5.62 | 1.60 |
| FMCW interference | 0.006 | 0.198 | 0.004 | 0.123 | 0.0013 | 0.0015 |
Measured on a laptop with an Intel Core i7-11800H (16 threads, 32 GB RAM) and an NVIDIA GeForce RTX 3050 Laptop GPU (4 GB). v15.4.0 times only the sim_radar() call, as the median of 3 runs after a warm-up for runs under 60 s and a single run otherwise; earlier releases were timed with the notebook's own timer.
Everything lives in a single right-handed, z-up frame. Angles are in degrees, distances in metres.
[x, y, z] — x forward, y to the left, z upelevation = 90° - thetaObjects are oriented with [yaw, pitch, roll], applied in that order:
[x, y, z], the centre that rotation and translation act about. A radar's origin is always [0, 0, 0]Note — pitch is not a right-handed rotation about +y; a right-handed one would turn +x toward -z. The composed rotation is
Rz(yaw) · Ry(-pitch) · Rx(roll), the aerospace "nose up is positive" convention. Expect a sign flip when importing orientations from a toolchain that uses the strict right-handed sense.
Conversions, the rotation order in full, and the boresight shortcut rotation = [azimuth, elevation, roll] are covered in the Coordinate Systems guide.
Find more usage examples at radarsimx.com. Source files are available in the radarsimnb repository.
Check Build Instructions
Full documentation lives at radarsimx.github.io/radarsimpy.
Getting started
Concepts and conventions
Transmitter, Receiver and Radar fit together, the virtual array, and the shape of the simulated outputConfiguring a simulation
API reference — complete class and function 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.