本文将从多个方面对Ti雷达代码进行详细的解读,并举例说明常见应用场景。
一、硬件部分
无线雷达传感器使用了Texas Instruments公司的AWR1642BOOST EVM开发板,该开发板包含AWR1642芯片。 AW1642是一款由Texas Instruments公司研发生产的微小射频雷达微控制器,集成高增益收发器和数字信号处理器。该芯片可实现超小型,封装简单和低功耗等特点,同时也提供了高精度的探测性能和跟踪功能。
通过读取官方文档以及代码实现的部分,我们可以了解到硬件部分和传感器运行的具体细节。
// 初始化: bssCfg.rangeCfg.startFreq = 76U; bssCfg.rangeCfg.freqSlopeConst = 21U; bssCfg.rangeCfg.numAdcSamples = 128U; bssCfg.rangeCfg.numChirps = 64U;
二、软件部分
软件部分是整个雷达系统的核心。它定义了从雷达获取的数据,对原始数据进行预处理、信号处理和特征提取等操作,最终输出目标的位置信息,包括角度、距离和速度。
1、预处理
数据预处理通常包括去噪和滤波等操作。在实际应用中,雷达在捕捉距离和速度信息时,会受到环境干扰而带来一些噪声。这时,预处理的作用就显得尤为重要。
// 预处理: for (i = 0; i < numPntsPerChirp; i++) { sumVal = 0; for (j = 0; j < numChirpsPerFrame; j++) { sumVal += datap[i*numChirpsPerFrame+j]; } sumVal = sumVal>>beamFormingCfg.log2numVirtAnt; datap[i] = sumVal; }
2、信号处理
信号处理包括对预处理后的数据进行重采样,FFT和纯相位解旋等操作,以获取目标的距离和速度信息。
// 信号处理: for (idx = 0; idx < numDetectedObjects; idx ++ ) { pObj = &detObjFinal[idx]; peakVal = pObj->peakVal; rangeIdx = pObj->rangeIdx; dopplerIdx = pObj->dopplerIdx; range = rangeIdx * RangeStep; doppler = dopplerIdx * DopplerStep; // get the coordinates in meters pObj->x = range * _cosAntAngle * _sinAzimAngl; pObj->y = range * _cosAntAngle * _cosAzimAngl; pObj->z = range * _sinAntAngle; pObj->velocity = doppler*3.0/512; }
3、特征提取
特征提取用于从雷达原始数据中提取目标的重要特征,比如目标的大小、形状和速度等。在实际应用中,特征提取常常使用机器学习等算法实现。
// 特征提取 for (i = 0; i < numDetectedObjects; i++) { if ((detObjFinal[i].rangeIdx >= rangeIdx_Tgt_MMin) && (detObjFinal[i].rangeIdx <= rangeIdx_Tgt_MMax)) { if ((detObjFinal[i].dopplerIdx >= dopplerIdx_Tgt_MMin) && (detObjFinal[i].dopplerIdx <= dopplerIdx_Tgt_MMax)) { isTgtDetected = 1; target->cnt = target->cnt + 1; target->doppler += detObjFinal[i].dopplerIdx; target->peakVal += detObjFinal[i].peakVal; } } }
三、实际应用场景
Ti雷达可以应用于各种场景,比如工业自动化、物流仓储、边缘计算等。以下是一些典型应用场景的解析:
1、 行人检测
行人检测是无线雷达的一个重要应用场景之一,尤其是在一些安全检查点、交通监管区域、火车站和机场等场所。适当放置两个Ti雷达传感器可以很容易地实现行人检测。通过分析随时间变化的雷达数据,可以检测行人的位置、方向和速度等信息。
// 行人检测 for (j = 0; j < numChirpsPerFrame; j++) { for (i = 0; i < numAntenna; i++) { dataToSend[j*numAntenna+i] = datap[i*numChirpsPerFrame+j]; } } detObj = calculateRangeAzimuthHeatMap(dataToSend, heatMap, &azimuthIdx, &elevIdx); for (i = 0; i < detObj->numObjOut; i++) { pObj = &detObj->objOut[i]; if(pObj->peakVal > PHASE_SHIFT_MIN) { sumRange = sumRange + pObj->rangeIdx; tObj.nx = pObj->x*pObj->rangeIdx; tObj.ny = pObj->y*pObj->rangeIdx; tObj.nz = pObj->z*pObj->rangeIdx; distanceOfObj = sqrtf(tObj.nx * tObj.nx + tObj.ny * tObj.ny + tObj.nz * tObj.nz); if(distanceOfObj > 0) { tObj.nx = tObj.nx/distanceOfObj; tObj.ny = tObj.ny/distanceOfObj; tObj.nz = tObj.nz/distanceOfObj; } tObj.azim = pObj->azimuthAngle; tObj.elev = pObj->elevAngle; tObj.velocity = pObj->velocity; tObj.range = pObj->rangeIdx*elecDelay+range_offset; tObj.certainty = pObj->peakVal/65536.0; if(tObj.range <= DETECT_DISTANCE) { detectedObjs.push_back(tObj); } } }
2、物流仓储
物流仓储通常需要检测货架上的商品信息。通常情况下,使用摄像头来拍摄货架上的商品,但是其中存在一些问题,比如商品遮挡、光线条件差等。使用雷达来实现商品检测可以很好地解决这些问题。Ti雷达可以很快地检测出货架上物品的位置和数量等信息。
// 物品检测 for (i = 0; i < numDetectedObjects; i++) { if ((detObjFinal[i].rangeIdx >= rangeIdx_Tgt_MMin) && (detObjFinal[i].rangeIdx <= rangeIdx_Tgt_MMax)) { if ((detObjFinal[i].dopplerIdx >= dopplerIdx_Tgt_MMin) && (detObjFinal[i].dopplerIdx <= dopplerIdx_Tgt_MMax)) { isTgtDetected = 1; target->cnt = target->cnt + 1; target->doppler += detObjFinal[i].dopplerIdx; target->peakVal += detObjFinal[i].peakVal; } } }
3、边缘计算
边缘计算是一种新型的计算模式,可以将计算资源尽可能地放在设备端而不是云端。通过Ti雷达传感器可以将原始数据、信号处理和特征提取等操作在设备端实现,并将结果上传至云端进行更精细和深度的分析。
// 边缘计算 for(k = 0; k < heatmapsize; k++) { if(data[k]>ACCUM_THRESHOLD) { rangeIdx = k%RANGE_ROWS; dopplerIdx = k/RANGE_ROWS; if((((rangeIdx>=detObjMinRangeIdx)&&(rangeIdx<=detObjMaxRangeIdx))&& ((dopplerIdx>=detObjMinDopplerIdx)&&(dopplerIdx<=detObjMaxDopplerIdx)))&&(detObj[k].snr>=detObjSNRThresh)) { tmpObj.rangeIdx = rangeIdx; tmpObj.dopplerIdx = dopplerIdx; tmpObj.snr = detObj[k].snr; tmpObj.x = detObj[k].x; tmpObj.y = detObj[k].y; tmpObj.z = detObj[k].z; tmpObj.velocity = detObj[k].velocity; tmpObj.xc = detObj[k].xc; tmpObj.yc = detObj[k].yc; targets.pushback(tmpObj); } } }
结论
本文以Ti雷达代码走读为主题,从硬件、软件和应用场景等多个方面对雷达代码进行了详细的解读,并举例说明了其在行人检测、物流仓储和边缘计算等场景中的应用。在实践中,需要仔细阅读技术文档,熟悉其整体架构,才能更好地应用并优化Ti雷达系统。
原创文章,作者:USOCV,如若转载,请注明出处:https://www.506064.com/n/374073.html