本文將從多個方面對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-hk/n/374073.html