mmwave.dsp.doppler_processing

mmwave.dsp.doppler_processing.doppler_resolution(band_width, start_freq_const=77, ramp_end_time=62, idle_time_const=100, num_loops_per_frame=128, num_tx_antennas=3)

Calculate the doppler resolution for the given radar configuration.

Parameters:
  • start_freq_const (int) – Frequency chirp starting point.
  • ramp_end_time (int) – Frequency chirp end point.
  • idle_time_const (int) – Idle time between chirps.
  • band_width (float) – Radar config bandwidth.
  • num_loops_per_frame (int) – The number of loops in each frame.
  • num_tx_antennas (int) – The number of transmitting antennas (tx) on the radar.
Returns:

The doppler resolution for the given radar configuration.

Return type:

doppler_resolution (float)

mmwave.dsp.doppler_processing.doppler_processing(radar_cube, num_tx_antennas=2, clutter_removal_enabled=False, interleaved=True, window_type_2d=None, accumulate=True)

Perform 2D FFT on the radar_cube.

Interleave the radar_cube, perform optional windowing and 2D FFT on the radar_cube. Optional antenna couping signature removal can also be performed right before 2D FFT. In constrast to the original TI codes, CFAR and peak grouping are intentionally separated with 2D FFT for the easiness of debugging.

Parameters:
  • radar_cube (ndarray) – Output of the 1D FFT. If not interleaved beforehand, it has the shape of (numChirpsPerFrame, numRxAntennas, numRangeBins). Otherwise, it has the shape of (numRangeBins, numVirtualAntennas, num_doppler_bins). It is assumed that after interleaving the doppler dimension is located at the last axis.
  • num_tx_antennas (int) – Number of transmitter antennas. This affects how interleaving is performed.
  • clutter_removal_enabled (boolean) – Flag to enable naive clutter removal.
  • interleaved (boolean) – If the input radar_cube is interleaved before passing in. The default radar_cube is not interleaved, i.e. has the shape of (numChirpsPerFrame, numRxAntennas, numRangeBins). The interleaving process will transform it such that it becomes (numRangeBins, numVirtualAntennas, num_doppler_bins). Note that this interleaving is only applicable to TDM radar, i.e. each tx emits the chirp sequentially.
  • window_type_2d (mmwave.dsp.utils.Window) – Optional windowing type before doppler FFT.
  • accumulate (boolean) – Flag to reduce the numVirtualAntennas dimension.
Returns:

(numRangeBins, num_doppler_bins) complete range-dopper information. Original datatype is

uint16_t. Note that azimuthStaticHeatMap can be extracted from zero-doppler index for visualization.

aoa_input (ndarray): (numRangeBins, numVirtualAntennas, num_doppler_bins) ADC data reorganized by vrx instead of

physical rx.

Return type:

detMatrix (ndarray)

mmwave.dsp.doppler_processing.doppler_estimation(radar_cube, beam_weights, num_tx_antennas=2, clutter_removal_enabled=False, interleaved=False, window_type_2d=None)

Perform doppler estimation on the weighted sum of range FFT output across all virtual antennas.

In contrast to directly computing doppler FFT from the output of range FFT, this function combines it across all the virtual receivers first using the weights generated from beamforming. Then FFT is performed and argmax is taken across each doppler axis to return the indices of max doppler values.

Parameters:
  • radar_cube (ndarray) – Output of the 1D FFT with only ranges on detected objects. If not interleaved beforehand, it has the shape of (numChirpsPerFrame, numRxAntennas, numDetObjs). Otherwise, it has the shape of (numDetObjs, numVirtualAntennas, num_doppler_bins). It is assumed that after interleaving the doppler dimension is located at the last axis.
  • beam_weights (ndarray) – Weights to sum up the radar_cube across the virtual receivers. It is from the beam-forming and has the shape of (numVirtualAntennas, numDetObjs)
  • num_tx_antennas (int) – Number of transmitter antennas. This affects how interleaving is performed.
  • clutter_removal_enabled (boolean) – Flag to enable naive clutter removal.
  • interleaved (boolean) – If the input radar_cube is interleaved before passing in. The default radar_cube is not interleaved, i.e. has the shape of (numChirpsPerFrame, numRxAntennas, numDetObjs). The interleaveing process will transform it such that it becomes (numDetObjs, numVirtualAntennas, num_doppler_bins). Note that this interleaving is only appliable to TDM radar, i.e. each tx emits the chirp sequentially.
  • window_type_2d (string) – Optional windowing type before doppler FFT.
Returns:

(numDetObjs) Doppler index for each detected objects. Positive index means moving away

from radar while negative index means moving towards the radar.

Return type:

doppler_est (ndarray)