Skip to content
This repository has been archived by the owner on Nov 9, 2019. It is now read-only.

yasenh/radar-target-detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

radar-target-detection

Overview

In this project, we will:

  • Configure the FMCW waveform based on the system requirements.
  • Define the range and velocity of target and simulate its displacement.
  • For the same simulation loop process the transmit and receive signal to determine the beat signal
  • Perform Range FFT on the received signal to determine the Range
  • Towards the end, perform the CFAR processing on the output of 2nd FFT to display the target.

source: FFT output

source: Range FFT

2D CFAR Process

The 2D CFAR is similar to 1D CFAR, but is implemented in both dimensions of the range Doppler block. The 2D CA-CFAR implementation involves the training cells occupying the cells surrounding the cell under test with a guard grid in between to prevent the impact of a target signal on the noise estimate.

source: electronicproducts.com

  • Determine the number of Training cells for each dimension. Similarly, pick the number of guard cells.

    In this implementation, because the Range x Doppler matrix has the dimension of 512 x 128, so I choose:

    • Training cells Tr = 12 and Td = 6, which correspond to range and Doppler dimension.
    • Similarly, Gr = 6 and Gd = 3 for Guard cells.
    • And offset = 5 db.
  • Slide the Cell Under Test (CUT) across the complete matrix. Make sure the CUT has margin for Training and Guard cells from the edges.

  • For every iteration sum the signal level within all the training cells. To sum convert the value from logarithmic to linear using db2pow function.

    Step 1: Sum up the values from all Training, Guard Cells and CUT

    s1 = sum(db2pow(RDM(i:i+2*Tr+2*Gr, j:j+2*Td+2*Gd)),'all');

    Step 2: Sum up the values from all Guard Cells and CUT

    s2 = sum(db2pow(RDM(i+Tr:i+Tr+2*Gr, j+Td:j+Td+2*Gd)),'all');

    Step 3: Calculate noise level by subtract s2 from s1

    noise_level = s1 - s2;
  • Average the summed values for all of the training cells used. After averaging convert it back to logarithmic using pow2db.

    Step 1: Calculate number of cells from all Training, Guard Cells and CUT

    n1 = (2*Tr+2*Gr+1)*(2*Td+2*Gd+1);

    Step 2: Calculate number of cells from all Guard Cells and CUT

    n2 = (2*Gr+1)*(2*Gd+1);

    Step 3: Calculate number of Training Cells by subtract n2 from n1

    n = n1 - n2;
  • Further add the offset to it to determine the threshold.

    threshold = pow2db(threshold) + offset;
  • Next, compare the signal under CUT against this threshold.

  • If the CUT signal level is greater than the Threshold, assign a value of 1, else equate it to zero.

  • Since the cell under test are not located at the edges, due to the training cells occupying the edges, we suppress the edges to zero. Any cell value that is neither 1 nor a 0, assign it a zero.

source: 2D FFT

source: 2D CFAR

References

  1. Udacity Sensor Fusion Nanodegree Program
  2. Automotive Adaptive Cruise Control Using FMCW Technology

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages