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

Dependence

Installation

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.

Windows

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

Linux

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

Usage


Zhengyu Peng

Ph.D., Senior Radar Systems Engineer @ Aptiv

5 Comments

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,
pulse_time=20,
tx_power=10,
pulses=1,
channels=[dict(location=(0, 0, 0))])

rx = Receiver(fs=20,
noise_figure=12,
rf_gain=20,
baseband_gain=50,
load_resistor=1000,
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.