In automotive lab demo mrr, the value of obj->peakValThresholds[0].threshold in dss_main.c is defined according to the settings.
To my understanding, for the LOW_THRESHOLD_FOR_USRR, the value of obj->peakValThresholds[0].threshold should be set smaller.
But it seems (27000 >> obj->log2numVirtAnt) is larger than (350 >> obj->log2numVirtAnt)
/* Code */
...
#ifdef LOW_THRESHOLD_FOR_USRR
/*! @brief CFAR thresholds are varied as a function of range */
obj->SNRThresholds[0].rangelim = (uint16_t) (6.0f * (float)(1U << obj->xyzOutputQFormat));
obj->SNRThresholds[0].threshold = convertSNRdBtoThreshold(1U, 13.0f, CFARTHRESHOLD_N_BIT_FRAC);
obj->SNRThresholds[1].rangelim = (uint16_t) (10.0f * (float)(1U << obj->xyzOutputQFormat));
obj->SNRThresholds[1].threshold = convertSNRdBtoThreshold(1U, 12.0f, CFARTHRESHOLD_N_BIT_FRAC);
obj->SNRThresholds[2].rangelim = 65535;
obj->SNRThresholds[2].threshold = convertSNRdBtoThreshold(1U, 12.0f, CFARTHRESHOLD_N_BIT_FRAC);
/*! @brief peakVal thresholds are varied as a function of range (meant to remove cases of
* clutter being detected too when we drive the car.) Thresholds were derived from experiments.*/
obj->peakValThresholds[0].rangelim = (uint16_t) (3.0f * (float) (1U << obj->xyzOutputQFormat));
obj->peakValThresholds[0].threshold = (27000 >> obj->log2numVirtAnt);
obj->peakValThresholds[1].rangelim = 65535;
obj->peakValThresholds[1].threshold = 0;
obj->peakValThresholds[2].rangelim = 65535;
obj->peakValThresholds[2].threshold = 0;
#else
/*! @brief CFAR thresholds are varied as a function of range */
obj->SNRThresholds[0].rangelim = (uint16_t) (6.0f * (float)(1U << obj->xyzOutputQFormat));
obj->SNRThresholds[0].threshold = convertSNRdBtoThreshold(1, 16.0f, CFARTHRESHOLD_N_BIT_FRAC);
obj->SNRThresholds[1].rangelim = (uint16_t) (10.0f * (float)(1U << obj->xyzOutputQFormat));
obj->SNRThresholds[1].threshold = convertSNRdBtoThreshold(1U, 15.0f, CFARTHRESHOLD_N_BIT_FRAC);
obj->SNRThresholds[2].rangelim = 65535;
obj->SNRThresholds[2].threshold = convertSNRdBtoThreshold(1U, 14.0f, CFARTHRESHOLD_N_BIT_FRAC);
/*! @brief peakVal thresholds are varied as a function of range (meant to remove cases of
* clutter being detected too when we drive the car.) Thresholds were derived from experiments.*/
obj->peakValThresholds[0].rangelim = (uint16_t) (3.0f * (float) (1U << obj->xyzOutputQFormat));
obj->peakValThresholds[0].threshold = (350 >> obj->log2numVirtAnt);
obj->peakValThresholds[1].rangelim = 65535;
obj->peakValThresholds[1].threshold = 0;
obj->peakValThresholds[2].rangelim = 65535;
obj->peakValThresholds[2].threshold = 0;
#endif
/* Code */
Can you please explain why this value is set?
Kind regards