TI中文支持网
TI专业的中文技术问题搜集分享网站

IWR1843: 处理一根接收天线的rangbin数据代码部分没看懂

Part Number:IWR1843Other Parts Discussed in Thread:IWR1443,

我用DCA1000板子采集的数据有1688帧,1帧128个chirps ,1个chirp有256采样点。(单发单收)

1个chirp 256个rang-bin数据 中能找到 1个最大幅值的rang-bin

128个chirp总共能找到128个最大幅值的rang-bin

1688帧 就可以找到 1688*128个最大幅值的rang-bin

我用这么多数据处理之后画图 很难进行下去。想问一下我这个样子找最大幅值是不是错了。

最后是ti源代码:我不太清楚的地方有:

1 rangeBinStartIndex 和rangeBinendIndex 分别指什么

2 做完一次循环 ,下一个rang-bin就指向了 tempPtr += obj->numChirpsPerFrame * obj->numRxAntennas; 这个不是已经到下一帧的同一位置了吗,难道不应该在该帧里面同一个chirp继续往下找吗

简单一句话就是不太清楚找 rang-bin 的流程。 毕竟采集的数据太多

for (rangeBinIndex = obj->rangeBinStartIndex; rangeBinIndex < obj->rangeBinEndIndex; rangeBinIndex++)
{
// Points towards the real part of the current range-bin i.e. rangeBinIndex
//指向当前range-bin的实部,即rangeBinIndex
pTempIndex = (uint16_t *) tempPtr;
obj->pRangeProfileCplx[2 * (rangeBinIndex – obj->rangeBinStartIndex)] = *pTempIndex;
temp_real = (int16_t) * pTempIndex;

// Points towards the imaginary part of the current range-bin i.e. rangeBinIndex
//指向当前range-bin的虚部,即rangeBinIndex
obj->pRangeProfileCplx[2 * (rangeBinIndex – obj->rangeBinStartIndex) + 1] = *(++pTempIndex);
temp_imag = (int16_t) * pTempIndex;

if (guiFlag_ClutterRemoval == 1)
{
// Clutter Removed Range Profile //杂波消除距离剖面
float tempReal_Curr,tempImag_Curr;
float alphaClutter = 0.1;
float currVal;

tempReal_Curr = (float) temp_real;
tempImag_Curr = (float) temp_imag;
uint16_t currRangeIndex;
currRangeIndex = rangeBinIndex – obj->rangeBinStartIndex;

obj->pTempReal_Prev[currRangeIndex] = alphaClutter*tempReal_Curr + (1-alphaClutter)*obj->pTempReal_Prev[currRangeIndex];
obj->pTempImag_Prev[currRangeIndex] = alphaClutter*tempImag_Curr + (1-alphaClutter)*obj->pTempImag_Prev[currRangeIndex];

currVal = sqrt((tempReal_Curr – obj->pTempReal_Prev[currRangeIndex])*(tempReal_Curr – obj->pTempReal_Prev[currRangeIndex]) + (tempImag_Curr – obj->pTempImag_Prev[currRangeIndex])*(tempImag_Curr – obj->pTempImag_Prev[currRangeIndex]));
obj->pRangeProfileClutterRemoved[rangeBinIndex – obj->rangeBinStartIndex] = currVal;

// Based on the Max value Range-bin
//基于Range-bin的Max值
if (currVal > maxValClutter)
{
maxValClutter = currVal;
rangeBinMaxClutter = rangeBinIndex;
}
}
else
{
// Magnitude of the current range-bin
//当前范围库的大小
absVal = (float) temp_real * (float) temp_real + (float) temp_imag * (float) temp_imag;
// Maximum value range-bin of the current range-profile
//当前range-profile的最大值range-bin
if (absVal > maxVal)
{
maxVal = absVal;
rangeBinMax = rangeBinIndex;
}
}
// If the Refresh button in the GUI is pressed
//如果按下GUI中的Refresh按钮
if (frameCountLocal == 1)
{
if (guiFlag_ClutterRemoval ==1)
{
rangeBinIndexPhase = rangeBinMaxClutter;
}
else
{
rangeBinIndexPhase = rangeBinMax;
}
}

// Computes the phase of the selected range-bin i.e. rangeBinIndexPhase
//计算所选range-bin的相位,即rangeBinIndexPhase
if (rangeBinIndex == (rangeBinIndexPhase))
{
rangeBinPhase = atan2(temp_imag, temp_real);
}
// Points towards the next range-bin
//指向下一个rang-bin
tempPtr += obj->numChirpsPerFrame * obj->numRxAntennas; // Chirps per Frame takes into account the numTX antennas//每帧的chirps考虑了numTX天线
} // For Loop ends

Chris Meng:

你好,

请问下面的毫米波原理视频是否有仔细观看过?

Introduction to mmWave radar sensing: FMCW radars | TI.com Training Series

你说的TI源码,请问是什么软件包里的具体哪个c文件代码?

,

yu zhou:

14xx 生命体征检测代码

视频已经看过,主要是代码问题

,

yu zhou:

路径:C:\ti\mmwave_industrial_toolbox_4_2_1\labs\vital_signs\14xx_vital_signs\pjt

,

Chris Meng:

你好,

你说的代码是IWR1443的,而你的标题是IWR1843啊。

在vital sign的代码里,有一个参数是设定了检测区域的,而你看到的这个rangeBinStartIndex 和rangeBinendIndex就是在检测区域内处理相关数据。

培训视频建议多看几遍。

,

yu zhou:

还有一块就是他求rang-bin的最大值时,是对一帧所有采样点里面求出一个,还是一个chirp 256个采样点求出一个

,

Chris Meng:

你好,

理论上一个chirp上做CFAR就可以获得目标。这个例程里配置了2个chirp,但实际上只使用了一个chirp的数据。

赞(0)
未经允许不得转载:TI中文支持网 » IWR1843: 处理一根接收天线的rangbin数据代码部分没看懂
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1