A Radar Simulator for Python

There are 5 modules in this package:

  1. Radar: Classes to define a radar system
    • radarsimpy.Transmitter: Radar transmitter
    • radarsimpy.Receiver: Radar receiver
    • radarsimpy.Radar: Radar system
  2. Simulator: Radar baseband signal simulator
    • radarsimpy.simulator: Simulates and generates raw time domain baseband data (Python engine)
    • radarsimpy.simulatorcpp: Simulates and generates raw time domain baseband data (C++ engine)
  3. Raytracing: Raytracing module for radar scene simulation
    • radarsimpy.rt.lidar_scene: Simulates LiDAR’s point cloud based on a 3D environment model with ray tracing
    • radarsimpy.rt.rcs: Simulates target’s radar cross section (RCS) based on the 3D model with ray tracing
    • radarsimpy.rt.scene: Simulates radar’s response signal in a 3D environment model with ray tracing
  4. Processing: Basic radar signal processing module
  5. Tools: Receiver operating characteristic analysis



Contact me if you are interested in this module.

To use the module, please put the radarsimpy folder within your project folder as shown below.


  • your_project.py
  • your_project.ipynb
  • radarsimpy
    • __init__.py
    • radarsimc.dll
    • scene.xxx.pyd


  • your_project.py
  • your_project.ipynb
  • radarsimpy
    • __init__.py
    • libradarsimc.so
    • scene.xxx.so

Coordinate Systems

Scene Coordinate

  • axis (m): [x, y, z]
  • phi (deg): angle on x-y plane. Positive x-axis is 0 deg, positive y-axis is 90 deg
  • theta (deg): angle on z-x plane. Positive z-axis is 0 deg, x-y plane is 90 deg
  • azimuth (deg): azimuth -90 ~ 90 deg equal to phi -90 ~ 90 deg
  • elevation (deg): elevation -90 ~ 90 deg equal to theta 180 ~ 0 deg

Object’s Local Coordinate

  • axis (m): [x, y, z]
  • yaw (deg): rotation along z-axis. Positive yaw rotates object from positive x-axis to positive y-axis
  • pitch (deg): rotation along y-axis. Positive pitch rotates object from positive x-axis to positive z-axis
  • roll (deg): rotation along x-axis. Positive roll rotates object from positive z-axis to negative y-axis
  • origin (m): [x, y, z]
  • rotation (deg): [yaw, pitch, roll]
  • rotation (deg/s): rate [yaw rate, pitch rate, roll rate]


Zhengyu Peng

Ph.D., Senior Radar Systems Engineer @ Aptiv


Nicola Papini · December 10, 2020 at 12:04 pm

Hi, have you got an example for FDM MIMO radar?

    Zhengyu Peng · December 11, 2020 at 10:29 am

    You mean frequency division multiplexing? You can change the center frequency

Julio César García Álvarez · January 31, 2021 at 8:56 am

Dear Dr. Peng,

Once I run the Radar Model example in Spyder Python 3.8:

import numpy as np
from radarsimpy import Radar, Transmitter, Receiver

tx = Transmitter(f=24.125e9,
channels=[dict(location=(0, 0, 0))])

rx = Receiver(fs=20,
channels=[dict(location=(0, 0, 0))])

radar = Radar(transmitter=tx, receiver=rx)

The following error appears in the Console:

File “C:\Users\username\RadarTest\radarsimpy\rt\__init__.py”, line 32, in
from .scene import scene

File “src\radarsimpy\rt\scene.pyx”, line 45, in init radarsimpy.rt.scene

ModuleNotFoundError: No module named ‘stl’

How can I fix this issue? Thanks in advance.

    Zhengyu Peng · January 31, 2021 at 10:11 am

    you need to install “numpy-stl”

      Julio César García Álvarez · January 31, 2021 at 8:21 pm

      Thanks for your help. The module works well. Best.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.