本文将从多个方面对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
微信扫一扫
支付宝扫一扫