This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

IWR1443BOOST: Some Questions in the Demo of Water vs Ground

Part Number: IWR1443BOOST


hello,

i'm reading the  demo of Water vs Ground,  but i have some confusion

i want to figure out the principle of how this algorithm works, e.g which parameters it calculates to differ water from ground.

from the main.c i probably know it calculates the RCS during the process, but i don't know how this helps and why it determines the result.

can you send me the design documents related to the physical theory in the system? 

besides, i'm not clear about  the funcion of 'decision_CircularBuffer'  in the file "droneWater_demo_gui.m". 

thanks a lot if you can help me!

  • Hello,

    Here is a bit more information about that demo.

    The classification between ground and water was done using three features
    (a) Reflectivity difference. The assumption here is that in general the Reflectivity (aka RCS ) from water would be higher than the ground
    (b) Movement
    (c) Periodicity of the movement with the assumption that water surface will be moving and this movement might be periodic.

    The function “'decision_CircularBuffer' ” is basically assigning different weights to these features and comparing with thresholds to make a decision.

    Regards,
    John
  • now i finally have a rough understanding about the weightedSum thanks to your reply.

    but i still not clear about the details of that math formula.

    first about the rcs:

    there is a for loop in main.c:

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

    for (rangeBinIndex = rangeBinStartIndex; rangeBinIndex < rangeBinEndIndex; rangeBinIndex++) {

    // Points towards the real part of the current range-bin i.e. rangeBinIndex
    tempIndex = (uint16_t *) tempPtr;
    obj->rangeProfileCplx[2 * (rangeBinIndex - rangeBinStartIndex)] = *tempIndex;
    temp_real = (int16_t) * tempIndex;

    // Points towards the imaginary part of the current range-bin i.e. rangeBinIndex
    tempIndex++;
    obj->rangeProfileCplx[2 * (rangeBinIndex - rangeBinStartIndex) + 1] = *tempIndex;
    temp_imag = (int16_t) * tempIndex;

    absVal = (float) temp_real * (float) temp_real + (float) temp_imag * (float) temp_imag;



    if (absVal > maxVal)
    {
    maxVal = absVal;
    rangeBinMax = rangeBinIndex;
    }

    if (count == 1) // Finds the max Range Bin every 128th Frame
    {
    rangeBinPhase = rangeBinMax;
    }

    if (rangeBinIndex == (rangeBinPhase))
    {//atan2(double y,double x) 返回的是原点至点(x,y)的方位角,即与 x 轴的夹角。
    phase = atan2(temp_imag, temp_real);
    }
    // Points towards the next range-bin
    tempPtr += obj->numChirpsPerFrame * obj->numVirtualAntennas;
    } // For Loop ends

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

    i searched some knowedge about RCS, but i don't understand why it calculates like this in this situation:

    in every iteration, absVal = real^2 + imag^2, and why we only choose the largest absVal sqrt as RCSvalue.



    second: you said that outSumEnergyPhaseWfm represent "movement". and it's related with outputFilterPhase.
    but i don't understand what this variable means, or what the following function calculate for:

    outputFilterPhase = filter_IIR_BiquadCascade(phaseUsedComputation, obj->pFilterCoefs, obj->pScaleVals, pDelay, IIR_FILTER_NUM_STAGES);

    i am confused about the third function as well:

    confidenceMetic = computeConfidenceMetric(obj->phaseSpectrum, PHASE_FFT_SIZE / 4, obj->freqIncrement_Hz, maxIndexSpect, 0.2);

    do they require knowledge on certain aspect in radar or certain function in mmWave SDK?

    appreciate much if my problems can be solved

    Regards,

    Ding
  • Hi Ding,

    We'll need a few days to answer this question. We'll try to have an answer for you by end of this week or early next week.


    Cheers,
    Akash
  • Hi Ding,

    We are still looking into your query and should have an answer for you by the end of the week.


    Cheers,
    Akash
  • Hi Ding,

    The outputFilterPhase is simply multiplied times 10000 and used to size the circular phase buffer.

    The computeConfidenceMetric is defined in the utils_func.c file, is used to determine an acceptable frequency to determine if the vibration coming from an object constitutes it as being water or ground, it is not a function specific to mmWave in particular.


    Cheers,
    Akash
  • thanks for your reply. But I still didn't know my first question:  why RCS calculate in such a way.  There is a for loop iterated by rangeBinIndex,  'absVal' repeatedly calculate the sum of sqr real and image part of iterator. What does this means?(any physical meaning ?) And then why it picks up the largest value in this period as RCS?

    thanks

  • Hi Ding,

    This computation absVal = real^2 + imag^2 is done for each of the range-bin and we choose the maximum value range-bin In lieu of the RCS. This square root of the maximum value range-bin is essentially measuring the reflectivity of the radar waves from a given surface.

    While it isn't the "true" RCS value, you only need to multiply it by a distant dependent scaling factor in order to calculate it.

    An assumption of this demo is that the water or ground are at the same distance to the sensor, if this assumption is not true then the distant dependent scaling factor can be applied to get a more realistic RCS value.


    Cheers,
    Akash
  • thanks for replying me.

    I still don't know what it means of these complex number in range bin that comes as output rangeFFT. why it can represent the reflectivity of  target at certain distance?  

    ps: if we open to plot rangeprofile graph, is the value of that peak equal to the rcs value at that time?

    thank you