概述

        通过对程序框架的梳理,我们知道让毫米波雷达能够实现功能的细节就在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、多普勒)和点云侧信息(信噪比、噪声评估)
2-启用点云导出(x、y、z、多普勒)
0-禁用

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”。数据路径命令,用于补偿距离估计中的偏差以及接收信道增益和相位缺陷。

序号参数说明
1rangeBias以米为单位的距离补偿
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

子帧索引

2minAzimuthDeg指定视场起点的最小方位角(单位:度)
3maxAzimuthDeg指定视场终点的最大方位角(单位:度)
4minElevationDeg指定视场起点的最小仰角(单位:度)
5maxElevationDeg指定视场终点的最大仰角(单位:度)

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

保存或恢复校准数据时使用的闪存地址偏移。
确保地址不与FLASH中存储应用程序映像的位置重叠,并且有足够的空间保存rlCalibrationData_t和rlPhShiftCalibrationData_t(仅限xwr18xx/60 Ghz设备)
此字段不关心是否禁用了保存和还原

sensorStart

        此条指令对应的函数为MmwDemo_CLISensorStart()。可以使用参数0跳过配置,使用已提供的配置启动传感器。

        函数中先检查了配置是否完整,然后调用MMWave_open()启动了mmWave模块,调用MmwDemo_ADCBufOpen()打开数据路径。

总结

        分析完配置文件和配置过程,疑惑更多了。

        设置了检测和过滤条件,但没有配置对数据进行哪些处理,例如距离FFT、多普勒FFT、角度FFT,那么目标数据从哪里来的呢?是否有一套默认的数据处理流程?默认的流程又是怎样的呢?

        在之前的了解中chirp设置是很重要的,关系到目标检测的性能。如果我们不进行设置,雷达又是按照什么chirp设置工作的呢?

        后续研究数据路径,希望能够解答这些疑惑。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐