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.

IWR1642BOOST: some questions about quadraticInterpFltPeakLoc && quadraticInterpLog2ShortPeakLoc && isTargetWithinDataAssociationThresh

Part Number: IWR1642BOOST

    Hello, TI's engineering!

question1:when i read the srr demo,i find tow similar functions,one is  quadraticInterpFltPeakLoc, anthor is quadraticInterpLog2ShortPeakLoc.They calculate offset added on azimIdx and fastChirpVelIndxFlt. Why do you do this? Is there any theoretical basis?

question2:the function of isTargetWithinDataAssociationThresh is in the function of ekfrun,i do not understand one if condition:

if( (distSq<(inst->distAssocThreshSq * modifier * modifier )) || (measResidual[iRANGE]>40.0f)), Why should we meet this condition?

  • Hi,

    We would need to review your question with algorithm developer.

    It will take a few days before we can get back to you

    thank you

    Cesar

  • HI Gu,

    1, quadraticInterpFltPeakLoc is for interpolating floating point numbers. quadraticInterpLog2ShortPeakLoc is for interpolating logarithms (which are 'short int' not float). 

    2. In general, if measResidual is high (i.e the tracker is probably drifting).  The association is likely to be false (i.e. the tracker is no longer tracking the original object). In order to make sure that the tracker switches to the new object, this condition is used. Most of the 'target association' code has many such heuristics in it. You can change it if you feel (via simulation/test) that the code is unnecessary.

    Regards

    Anil 

     

  • Hi Anil:

       For question 2,I have one doubt, the code is as belows:

    if (_fabsf(measResidual[iRANGE]) < (modifier*inst->rangeAssocThresh))
        {
            
            measResidual[iRANGE_RATE] = meas_rrd[iRANGE_RATE] - state_rrd[iRANGE_RATE];
            
            if (_fabsf(measResidual[iRANGE_RATE])< (modifier*inst->velAssocThresh))
            {
                measResidual[iSIN_AZIM] = meas_rrd[iSIN_AZIM] - state_rrd[iSIN_AZIM];
                
                if (_fabsf(measResidual[iSIN_AZIM]) < (modifier*inst->azimAssocThresh))
                {
                    x = meas_rrd[iRANGE]*meas_rrd[iSIN_AZIM];
                    y = sqrtsp((meas_rrd[iRANGE]*meas_rrd[iRANGE]) - (x*x));
                    dx = (state_xyz[iX] - x);
                    dy = (state_xyz[iY] - y);
                    distSq = (dx*dx) + (dy*dy);
                    if (    (distSq < (inst->distAssocThreshSq * modifier * modifier ))
                        ||  (measResidual[iRANGE] > 40.0f))
                    {
                        /* We adding in the velocity residual as well to the distance metric. */
                        *pdistSq = (distSq + (measResidual[iRANGE_RATE]*measResidual[iRANGE_RATE]));
                        return IS_ASSOCIATED;
                    }
                }
            }         
        }

    in the demo inst->rangeAssocThresh=2.0, the max value of  modifier is 8. Then the max vlue of  modifier*inst->rangeAssocThresh is 16.Then the condition  measResidual[iRANGE] > 40.0f can never be satisfied in the demo because the max value is less than 16, is that right?

    Regards,

    Rata

  • hello,Anil!

      why should we do the interpolating operation?Is there any theory behind it?And code comment says due to oversampling?What reason?

    thanks a lot!

  • Hi, 

    In the SRR/MRR, we felt that the velocity resolution was coarse and that interpolating to find a better estimate of the peak would help accuracy (especially for max-velocity improvement). 


    Regards
    Anil

  • Hi Rata, 

    On second thought, it looks like 'dead code'. You can remove it. 

    The intent of that line of code was to move drifting trackers to new objects. But as you pointed out, the first 'if condition' makes sure that the condition is never reached. 

    Regards

    Anil

  • Hi,Anil.

    Ofcoursr of we want to  improve the speed and angle accuracy ,but why use this ways about  “ quadraticInterpFltPeakLoc” &&  “ quadraticInterpLog2ShortPeakLoc ”,i want to know the essential reason.

    Thanks a lot!

  • Hi,

    This code is not used and can be removed.

    thank you
    Cesar