本文將從多個方面對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/zh-tw/n/374073.html
微信掃一掃
支付寶掃一掃