Ancho Kit (X2) Understanding Doppler Window in DopplerDemo Example

Discussion in 'Chips+Salsa' started by Avinash, Jan 30, 2017.

  1. Avinash

    Avinash New Member

    Hi All,

    I am using the Salsa + Ancho kit, and modifying the C reference examples for our use-case.

    Could you please confirm the following understanding of the Doppler processing based on the documentation and DopplerDemo reference example? The "doppler_getLastWindow()" followed by dopplerRotate() gives a 2D matrix such that the rows represent distances and columns represent the velocity bins. The columns are ordered such that the 0-bin is at the center. Therefore when a target is moving towards the radar, there should be more energy in the first half of the velocity bins, and when a target is moving away, there should be more energy in the second half of the velocity bins.

    Please let me know if this is correct?

    2) Also, could you please let me know what "doppler_processWindow()", does internally ?

    Thanks in advance!
     
    Last edited: Jan 30, 2017
  2. Will

    Will Moderator XeThru Partner

    Avinash,

    If you check out the Salsa Demo Documentation.html, this explains the DopplerDemo in detail.
    1. This is correct, the distance is the rows and the columns are the velocity. When you grab the data with doppler_getLastWindow(), the 0 velocity is in the 0 column position, and the FFT rotates it to the center. A target moving away is shown with a negative velocity and a target moving towards the radar is shown with a positive velocity.
    2. The Doppler processing keeps a buffer of the last n radar frames, which are added with doppler_addFrame(). The doppler_processWindow() then executes all the FFTs per Doppler processing, on that window. Finally, the result is retrieved with doppler_getLastWindow().
    Regards,
    Will
     
    Avinash likes this.
  3. Avinash

    Avinash New Member

    Hi Will,
    Thanks for the reply. That was helpful.

    Just a quick follow-up question: I notice negative values on the Doppler matrix . Could you please tell me why might this be happening ? Shouldn't they all be positive ?

    Could you please tell me how one must interpret the actual numerical values of the reordered Doppler Matrix ? I understand that after reordering, the columns are represented in increasing velocity, but don't quite understand what each value in the matrix represents. Could you please clarify that for me?

    Here's the corresponding snippet:
    -----------------------------------------------------------------------
    doppler_processWindow(&doppler);
    doppler_getLastWindow(dopplerMatrixReal, dopplerMatrixImag, &doppler);

    // Reorder matrix to match what would happen in MATLAB (DC in center)
    DopplerRotate(dopplerMatrixReal, dopplerMatrixReordered, numberOfSamplers, DOPPLER_LENGTH);

    //
    // Interpret the Doppler matrix
    //
    radarDSP_dp_Max(dopplerMatrixReordered, numberOfSamplers * DOPPLER_LENGTH, &max, &maxIdx);

    double doppler_left_energy_sum = getDopplerEnergySum(dopplerMatrixReordered, numberOfSamplers, DOPPLER_LENGTH, 0);

    ----------------------------------------------------------------

    Thanks again in advance!
    Avinash
     
    Last edited: Feb 1, 2017
  4. Will

    Will Moderator XeThru Partner

    Avinash,

    A single bin of the Doppler matrix is a relative amplitude of backscattering energy (FFT on the voltage waveform) that correspond to a velocity and range, shown by its placement in the matrix. So the values are still in volts, which can be negative.

    Regards,
     
    Avinash likes this.
  5. Avinash

    Avinash New Member

    Hi Will,

    Sounds good - thanks.

    Could you please confirm one other thing ? The maximum/minimum velocity after doppler_getLastWindow() 's doppler processing is a function of the pulse repetition frequency "fP". Therefore after dopplerRotate(), the leftmost velocity bin corresponds to a Doppler shift of -fP/2 and rightmost velocity bin corresponds to a Doppler shift of fP/2. Please let me know if this is correct ?

    In other words, could you please tell me how I can convert the velocity bin numbers to frequency bin numbers?

    Thanks again in advance!
     
  6. Will

    Will Moderator XeThru Partner

    Avinash,

    The PRF for the pulsed-doppler processing is essentially the frame rate, so the x-axis spans -FR/2 to FR/2. So, converting to velocity you can use the following equation: V = (FR / 2) * (C / TxCF), where TxCF is equal to the transmit center frequency. This is dependent on PGSelect, transmit voltage level, TxVolts, as well as temperature.

    When calculating the absolute velocity of the intended target, the equation now becomes: V = (FR / 2) * (C / TxCF) * (x_index / numTxPulses), where x_index is the x-axis bin corresponding to max amplitude (when zero velocity is centered and defined as x_index = 0) and numTxPulses is the number of columns in the doppler matrix.

    FYI, the wikipedia page on pulsed-doppler radar is quite useful.

    Regards,