TI毫米波雷达(三)—— out of box示例解析(二)
概述
通过对程序框架的梳理,我们知道让毫米波雷达能够实现功能的细节就在RADAR Subsystem的配置以及Data Path的配置。在示例中,这些都是通过CLI工具完成的。
声明
由于本人对雷达中的一些概念和各种专用名词不甚了解,大多是通过翻译和搜索引擎结合联想进行理解,所以文中一些词汇可能比较“拗口”。如有错误,希望各位高手不吝赐教,给予指正。
补充
配置文件的格式以及指令相关的细节可以参考《mmwave sdk user guide》。
配置文件解析
我们使用mmWave Demo Visualizer生成典型的配置文件,逐条分析指令对应CLI任务中的函数所执行的操作,联系注释中的参数来分析out of box功能如何实现的。
% ***************************************************************
% Created for SDK ver:03.06
% Created using Visualizer ver:3.6.0.0
% Frequency:77
% Platform:xWR18xx
% Scene Classifier:best_range_res
% Azimuth Resolution(deg):15 + Elevation
% Range Resolution(m):0.044
% Maximum unambiguous Range(m):9.02
% Maximum Radial Velocity(m/s):1
% Radial velocity resolution(m/s):0.13
% Frame Duration(msec):100
% RF calibration data:None
% Range Detection Threshold (dB):15
% Doppler Detection Threshold (dB):15
% Range Peak Grouping:enabled
% Doppler Peak Grouping:enabled
% Static clutter removal:disabled
% Angle of Arrival FoV: Full FoV
% Range FoV: Full FoV
% Doppler FoV: Full FoV
% ***************************************************************
sensorStop
flushCfg
dfeDataOutputMode 1
channelCfg 15 7 0
adcCfg 2 1
adcbufCfg -1 0 1 1 1
profileCfg 0 77 267 7 57.14 0 0 70 1 256 5209 0 0 30
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 4
chirpCfg 2 2 0 0 0 0 0 2
frameCfg 0 2 16 0 100 1 0
lowPower 0 0
guiMonitor -1 1 1 0 0 0 1
cfarCfg -1 0 2 8 4 3 0 15 1
cfarCfg -1 1 0 4 2 3 1 15 1
multiObjBeamForming -1 1 0.5
clutterRemoval -1 0
calibDcRangeSig -1 0 -5 8 256
extendedMaxVelocity -1 0
lvdsStreamCfg -1 0 0 0
compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
measureRangeBiasAndRxChanPhase 0 1.5 0.2
CQRxSatMonitor 0 3 5 121 0
CQSigImgMonitor 0 127 4
analogMonitor 0 0
aoaFovCfg -1 -90 90 -90 90
cfarFovCfg -1 0 0 8.92
cfarFovCfg -1 1 -1 1.00
calibData 0 0 0
sensorStart
sensorStop
此条指令对应的函数为MmwDemo_CLISensorStop(),分别调用MmwDemo_stopSensor()和MmwDemo_resetStaticCfgPendingState()。
MmwDemo_stopSensor()调用RADAR Subsystem API MMWave_stop()来停止射频部分功能,数据路径会在射频部分完全停止后停止。
MmwDemo_resetStaticCfgPendingState()清除静态配置。
/**
* @b Description
* @n
* This is the CLI Handler for the sensor stop command
*
* @param[in] argc
* Number of arguments
* @param[in] argv
* Arguments
*
* @retval
* Success - 0
* @retval
* Error - <0
*/
static int32_t MmwDemo_CLISensorStop (int32_t argc, char* argv[])
{
if ((gMmwMssMCB.sensorState == MmwDemo_SensorState_STOPPED) ||
(gMmwMssMCB.sensorState == MmwDemo_SensorState_INIT) ||
(gMmwMssMCB.sensorState == MmwDemo_SensorState_OPENED))
{
CLI_write ("Ignored: Sensor is already stopped\n");
return 0;
}
MmwDemo_stopSensor();
MmwDemo_resetStaticCfgPendingState();
gMmwMssMCB.sensorState = MmwDemo_SensorState_STOPPED;
return 0;
}
flushCfg
此条指令无对应代码。
dfeDataOutputMode
此条指令无对应代码。
channelCfg
此条指令无对应代码。
adcCfg
此条指令无对应代码。
adcbufCfg
此条指令对应的函数为MmwDemo_CLIADCBufCfg(),参数为“ -1 0 1 1 1”。
| 序号 | 参数 | 说明 |
| 1 |
subFrameIdx 子帧索引 | 传统模式下为-1,高级帧模式下设置为预想的帧号或-1. |
| 2 |
adcOutputFmt ADCBUF输出格式 0-复数 1-实数 | 仅支持复数模式 |
| 3 |
SampleSwap ADCBUF IQ位序交换 0-I路LSB,Q路MSB 1-Q路LSB,I路MSB | 仅支持1 |
| 4 |
ChanInterleave ADCBUF通道插值 0-插值 1-不插值 | 仅支持1 |
| 5 |
ChirpThreshold ADCBUF乒乓操作的触发门限 0-8使用DSP做1D FFT且禁用LVDS数据流 1-使用HWA做1D FFT |
XWR16XX示例中虽然用了DSP做1D FFT,但使用了LVDS流,因此只能1 XWR64XX/XWR68XX/XWR18XX:使用了HWA做1D FFT,就只能是1 |
profileCfg
此条指令无对应代码。
chirpCfg
此条指令无对应代码。
frameCfg
此条指令无对应代码。
lowPower
此条指令无对应代码。
guiMonitor
此条指令对应的函数为MmwDemo_CLIGuiMonSel(),参数为“-1 1 1 0 0 0 1”。将绘图配置发送到数据路径。
| 序号 | 参数 | 说明 |
| 1 |
subFrameIdx 子帧索引 | 传统模式下为-1,高级帧模式下设置为预想的帧号或-1. |
| 2 |
detected objects 1-允许导出点云(x、y、z、多普勒)和点云侧信息(信噪比、噪声评估) | |
| 3 |
log magnitude range 1-在0多普勒情况下输出对数范围 0-禁用 | |
| 4 |
noise profile 1-输出对数形式噪声分布 0-禁用 | |
| 5 |
rangeAzimuthHeatMap 仅在使用AoA(传统) DPU 处理 AOA时生效 rangeAzimuthElevationHeatMap 仅在使用AoA 2D DPU处理AOA时生效 1-能够导出零多普勒雷达立体矩阵、所有距离分组、所有方位虚拟天线,以计算和显示方位热图。(GUI计算其FFT以显示热图) 0-禁用 | |
| 6 |
rangeDopplerHeatMap 距离-多普勒热图 1-允许输出整个检测矩阵。注意帧率要适应串口传输速度。 0-禁用 | |
| 7 |
statsInfo CPU负载、裕度、设备温度等信息 1-输出状态信息 0-禁用 |
cfarCfg
此条指令发送了两次,分别使用了参数“-1 0 2 8 4 3 0 15 1”和“-1 1 0 4 2 3 1 15 1”,对应的函数为MmwDemo_CLICfarCfg()。将CFAR配置发送到数据路径。
| 序号 | 参数 | 说明 |
| 1 |
subFrameIdx 子帧索引号 | 传统模式下为-1,高级帧模式下设置为预想的帧号或-1。 |
| 2 |
procDirection 处理方向 0-距离CFAR检测 1-多普勒CFAR检测 | 需要发送两个独立的指令,一个给距离一个给多普勒。 |
| 3 |
mode CFAR平均模式 0-CFAR_CA(单元平均) 1-CFAR_CAGO(单元平均最大值) 2-CFAR_CASO(单元平均最小值) | |
| 4 |
noiseWin 噪声平均窗口长度 确保 2 x(noiseWin + guardLen)< numRangeBins 2 x(noiseWin + guardLen)< numDopplerBins | |
| 5 |
guardLen 采样中的单边参考窗长度 | |
| 6 |
divShift 移位表示的累积噪声除数,实际除数为2^divShift 需要匹配CFAR平均模式和噪声平均窗口长度 |
CFAR_CA <divShift> = ceil(log2(2 x <noiseWin>)) CFAR_CAGO/CASO <divShift> = ceil(log2(<noiseWin>)) 在profile_2d.cfg中,值3表示噪声和除以2^3=8,得到CFAR-CASO模式下窗口长度为8个样本的噪声样本的平均值。 |
| 7 |
循环模式或环绕模式 0-禁用 1-启用 | |
| 8 |
dB为单位的门限浮点数表示 与divShift结合使用 | 最大100dB |
| 9 |
峰值分组 0-禁用 1-启用 |
multiObjBeamForming
此条指令对应的函数为MmwDemo_CLIMultiObjBeamForming(),参数为“-1 1 0.5”。将多目标分离使用的波束赋形配置发送给数据路径。
该功能允许雷达分离来自同一距离/多普勒探测的多个物体的反射。在方位FFT中定位最高峰值后搜索第二个峰值。如果第二个峰值大于指定的阈值,则具有相同距离/多普勒的第二个对象将附加到检测到的对象列表中。阈值与最高峰的高度成正比。
| 序号 | 参数 | 说明 |
|
1 |
subFrameIdx 子帧索引 | |
| 2 |
Feature Enabled 0-禁用 1-启用 | |
| 3 |
threshold 0到1——方位FFT输出中第二个峰值检测的阈值范围。检测阈值等于<thresholdScale>乘以第一个峰值高度。请注意,FFT输出是幅度平方。 |
clutterRemoval
此条指令对应的函数为MmwDemo_CLIClutterRemoval(),参数为“-1 0”。将静态杂波清除配置发送给数据路径。
通过从样本中减去2D-FFT输入样本的平均值来实现静态杂波去除算法。
| 序号 | 参数 | 说明 |
| 1 |
subFrameIdx 子帧索引 | |
| 2 |
enabled 0-禁用 1-启用 |
calibDcRangeSig
此条指令对应的函数为MmwDemo_CLICalibDcRangeSig(),参数为“-1 0 -5 8 256”。发送直流范围校准配置到数据路径。
| 序号 | 参数 | 说明 |
| 1 |
subFrameIdx 子帧索引 | |
| 2 |
enabled 0-禁用 1-启用 | |
| 3 |
negativeBinIdx 从远端开始计数的距离FFT索引,用于从远处消除直流分量 | |
| 4 |
positiveBinIdx 从近处开始技术的距离分组索引,用于从近处消除直流分量。索引包含0 | |
| 5 |
numAvg 用于收集和平均直流分量的啁啾数量。从下一啁啾开始消除直流分量。 |
extendedMaxVelocity
此条指令对应的函数为MmwDemo_CLIExtendedMaxVelocity(),参数为“-1 0”。发送速度消歧配置到数据路径。目标距离或方位太近时此功能不太可靠。
| 序号 | 参数 | 说明 |
| 1 |
subFrameIdx 子帧索引 | |
| 2 |
enabled 0-禁用 1-启用 |
lvdsStreamCfg
此条指令对应的函数为MmwDemo_CLIExtendedMaxVelocity(),参数为“-1 0 0 0”。支持通过LVDS通道传输各种数据流。启用此功能后,请确保adcbufCfg中的chirpThreshold设置为1。
| 序号 | 参数 | 说明 |
| 1 |
subFrameIdx 子帧索引 | |
| 2 |
enableHeader 0 - 禁用HSI头 1 - 启用HSI头 | |
| 3 |
dataFmt 0-禁用HW流 1-ADC 2-CP_ADC_CQ | 选择CP_ADC_CQ时,请确保CQRxSatMonitor和CQSigImgMonitor命令具有适当的值,并且使用analogMonitor命令启用这些监视器 |
| 4 |
enableSW 0-禁用用户数据 1-使能用户数据 | 置1时<enableHeader>需要使能 |
compRangeBiasAndRxChanPhase
此条指令对应的函数为MmwDemo_CLICompRangeBiasAndRxChanPhaseCfg(),参数为“0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0”。数据路径命令,用于补偿距离估计中的偏差以及接收信道增益和相位缺陷。
| 序号 | 参数 | 说明 |
| 1 | rangeBias | 以米为单位的距离补偿 |
| 2 |
<Re(0,0)> <Im(0,0)> <Re(0,1)> <Im (0,1)> ... <Re(0,R-1)> <Im(0,R-1)> <Re(1,0)> <Im(1,0)> ... <Re(T-1,R- 1)> <Im(T-1,R-1)> | 一组复数值,表示Q15格式的虚拟Rx信道相位偏差的补偿。 应为设备中的所有Tx和Rx天线提供成对的I和Q |
measureRangeBiasAndRxChanPhase
此条指令对应的函数为MmwDemo_CLIMeasureRangeBiasAndRxChanPhaseCfg(),参数为“0 1.5 0.2”。数据路径命令,用于测量距离偏差和接收信道增益和相位缺陷。
| 序号 | 参数 | 说明 |
| 1 |
enabled 1-启用测量,仅在profile_calibration.cfg中使用 0-禁用测量,在其他配置中应使用的选型 | |
| 2 |
targetDistance 强反射器的距离,仅在启用测量时有效 | |
| 3 |
searchWin 在targetDistance周围搜索峰值的距离范围 |
CQRxSatMonitor
此条指令对应的函数为MmwDemo_CLIChirpQualityRxSatMonCfg(),参数为“0 3 5 121 0”。向RadarSS和数据路径发送Chirp质量的Rx饱和监测配置消息。
| 序号 | 参数 | 说明 |
| 1 |
profile 此监视配置的有效配置文件Id。此配置文件ID应具有匹配的profileCfg。 | 符合mmwavelink doxygen的任意值,但需要定义相应的profileCfg |
| 2 |
satMonSel RX饱和监测 | 符合mmwavelink doxygen的任意值 |
| 3 |
priSliceDuration 每个切片的持续时间1LSB=0.16us,范围:4个ADC样本数 | 符合mmwavelink doxygen的任意值 |
| 4 |
numSlice 主+次切片,范围1-127.主切片最大64 | 符合mmwavelink doxygen的任意值 |
| 5 |
rxChanMask RX通道掩码,1-掩码,0-取消掩码 | 符合mmwavelink doxygen的任意值 |
CQSigImgMonitor
此条指令对应的函数为MmwDemo_CLIChirpQualitySigImgMonCfg(),参数为“0 127 4”。向RadarSS和数据路径发送Chirp质量的信号和图像频带能量监测配置消息。
| 序号 | 参数 | 说明 |
| 1 |
profile 此监控配置的有效配置文件Id。此配置文件ID应具有匹配的profileCfg | 符合mmwavelink doxygen的任意值,但需要定义相应的profileCfg |
| 2 |
numSlices 主+次切片,范围1-127.主切片最大64 | 符合mmwavelink doxygen的任意值 |
| 3 |
numSamplePerSlice 可能的范围是4到相应profileCfg中的“ADC采样数”。它必须是偶数。 | 符合mmwavelink doxygen的任意值 |
analogMonitor
此条指令对应的函数为MmwDemo_CLIAnalogMonitorCfg(),参数为“0 0”。控制演示中支持的各种监控功能的启用/禁用。
| 序号 | 参数 | 说明 |
| 1 |
rxSaturation CQRRxSatMonitor开关 1-启用 0-禁用 | |
| 2 |
sigImgBand CQSigImgMonitor开关 1-启用 0-禁用 |
aoaFovCfg
此条指令对应的函数为MmwDemo_CLIAoAFovCfg(),参数为“-1 -90 90 -90 90”。数据路径的命令,用于过滤方位角或仰角平面中指定范围之外的检测点。
| 序号 | 参数 | 说明 |
| 1 |
subFrameIdx 子帧索引 | |
| 2 | minAzimuthDeg | 指定视场起点的最小方位角(单位:度) |
| 3 | maxAzimuthDeg | 指定视场终点的最大方位角(单位:度) |
| 4 | minElevationDeg | 指定视场起点的最小仰角(单位:度) |
| 5 | maxElevationDeg | 指定视场终点的最大仰角(单位:度) |
cfarFovCfg
此条指令对应的函数为MmwDemo_CLICfarFovCfg(),参数分别为“-1 0 0 8.92”和“-1 1 -1 1.00”。数据路径的命令,用于过滤距离方向或多普勒方向上超出指定限制的检测点。
| 序号 | 参数 | 说明 |
| 1 |
subFrameIdx 子帧索引 | |
| 2 |
procDirection 0-距离维度上点过滤 1-多普勒维度上点过滤 | 可以同时在两个维度进行过滤,但需要通过两次指令进行设置,一次距离一次多普勒 |
| 3 |
min 距离m或速度m/s最小值 | 距离或速度低于此值的点会被过滤 |
| 4 |
min 距离m或速度m/s最小值 | 距离或速度大于此值的点会被过滤 |
calibData
此条指令对应的函数为MmwDemo_CLICalibDataSaveRestore(),参数为“0 0 0”。启动时射频校准保存/恢复命令。用户可以将RadarSS执行的启动时间射频校准保存到FLASH上,也可以从FLASH恢复之前保存的射频校准数据,并指示RadarSS不要重新执行启动时间校准。用户可以保存或还原,也可以不执行任何操作。不允许用户在给定的启动顺序中同时保存和还原。
| 序号 | 参数 | 说明 |
| 1 |
save enable 0-已启用保存。应用程序将正常启动,并配置RadarSS在mmWave_open期间执行所有适用的启动校准。一旦执行了校准,应用程序将从RadarSS检索校准数据并将其保存到FLASH。用户需要指定有效的<Flash offset>值。<restore enable>选项应设置为0。 1-禁用保存 | |
| 2 |
restore enable 0-已启用还原。应用程序将检查FLASH是否有有效的校准数据部分。如果存在,它将从FLASH恢复数据并将其提供给RadarSS,同时将其配置为跳过任何实时引导校准并使用提供的校准数据。用户需要指定在保存校准数据时使用的有效<Flash offset>值。<save enable>选项应设置为0。 1-禁用还原 | |
| 3 |
Flash offset 保存或恢复校准数据时使用的闪存地址偏移。 |
sensorStart
此条指令对应的函数为MmwDemo_CLISensorStart()。可以使用参数0跳过配置,使用已提供的配置启动传感器。
函数中先检查了配置是否完整,然后调用MMWave_open()启动了mmWave模块,调用MmwDemo_ADCBufOpen()打开数据路径。
总结
分析完配置文件和配置过程,疑惑更多了。
设置了检测和过滤条件,但没有配置对数据进行哪些处理,例如距离FFT、多普勒FFT、角度FFT,那么目标数据从哪里来的呢?是否有一套默认的数据处理流程?默认的流程又是怎样的呢?
在之前的了解中chirp设置是很重要的,关系到目标检测的性能。如果我们不进行设置,雷达又是按照什么chirp设置工作的呢?
后续研究数据路径,希望能够解答这些疑惑。
更多推荐
所有评论(0)