Skip to content

radarsimx/radarsimpy

Repository files navigation

Windows x64 Ubuntu 22.04 x64 Ubuntu 24.04 x64 MacOS x64 MacOS Apple Silicon

Documentations Download

RadarSimPy

logo

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.

Key Features

  • Radar Modeling

    • Radar transceiver modeling
    • Arbitrary waveform (CW, FMCW, PMCW, Pulse, ...)
    • Phase noise
    • Phase/amplitude modulation (CDM, FDM, DDM, TDM, ...)
    • Fast-time/slow-time modulation
  • Simulation

    • Simulation of radar baseband data from point targets
    • Simulation of radar baseband data from 3D modeled objects/environment
    • Simulation of interference
    • Simulation of target's RCS
    • Simulation of LiDAR point cloud from 3D modeled objects/environment
  • Signal Processing

    • Range/Doppler processing
    • Direction of arrival (DoA) estimation
      • MUltiple SIgnal Classification (MUSIC) DoA estimations for a uniform linear array (ULA)
      • Root-MUSIC DoA estimation for a ULA
      • Estimation of Signal Parameters via Rational Invariance Techniques (ESPRIT) DoA estimation for a ULA
      • Iterative Adaptive Approach (IAA) for amplitude and phase estimation
    • Beamformer
      • Capon beamformer
      • Bartlett beamformer
    • Constant false alarm rate (CFAR)
      • 1D/2D cell-averaging CFAR (CA-CFAR)
      • 1D/2D ordered-statistic CFAR (OS-CFAR)
  • Characterization

    • Radar detection characteristics based on Swerling's models

Dependence

Installation

Download the pre-built module, and put the radarsimpy folder within your project folder as shown below:


  • Windows

    • your_project.py
    • your_project.ipynb
    • radarsimpy
      • __init__.py
      • radarsimcpp.dll
      • simulator.xxx.pyd
      • rt.xxx.pyd
      • radar.py
      • processing.py
      • ...

  • Linux

    • your_project.py
    • your_project.ipynb
    • radarsimpy
      • __init__.py
      • libradarsimcpp.so
      • simulator.xxx.so
      • rt.xxx.so
      • radar.py
      • processing.py
      • ...

  • MacOS

    • your_project.py
    • your_project.ipynb
    • radarsimpy
      • __init__.py
      • libradarsimcpp.dylib
      • simulator.xxx.so
      • rt.xxx.so
      • radar.py
      • processing.py
      • ...

Acceleration

This module supports CPU/GPU parallelization. CPU parallelization is implemented through OpenMP. GPU parallelization (CUDA) has been added since v6.0.0.

CPU (x86-64) CPU (ARM64) GPU (CUDA)
Windows ✔️ ❌️ ✔️
Linux ✔️ ❌️ ✔️
MacOS ✔️ ✔️ ❌️

performance

Coordinate Systems

Global Coordinate

  • 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

phi_theta

Local Coordinate

  • 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]

yaw_pitch_roll

  • azimuth (deg): azimuth -90 ~ 90 deg equal to phi -90 ~ 90 deg
  • elevation (deg): elevation -90 ~ 90 deg equal to theta 180 ~ 0 deg

azimuth_elevation

Usage Examples

Check all the usage examples on radarsimx.com. The source files of these examples are available at radarsimnb repository.

Build

Building radarsimpy requires to access the source code of radarsimcpp. If you don't have access to radarsimcpp, please use the pre-built module. For organizations seeking full source code access for customization or advanced integration, please submit Quote for Source Code.

  • Windows (MSVC)

    build_win.bat --arch cpu --test on

    Build for GPU (CUDA)

    build_win.bat --arch gpu --test on
  • Linux (GCC)

    ./build_linux.sh --arch=cpu --test=on

    Build for GPU (CUDA)

    ./build_linux.sh --arch=gpu --test=on
  • MacOS (GCC)

    ./build_macos.sh --arch=cpu --test=on

API Reference

Please check the Documentation