前言
本文档的目的仅为协助客户了解A121雷达中的Distance detector,仅概括说明重要步骤和参数的含义及目的。很遗憾原厂没有公开distance detector包含的算法c源码,故此文档中谈及算法的部分仅用作辅助客户了解用法,请勿以此作为算法开发指导。
概述
A121 的distance detector的目的是检测静止物体到雷达的距离。Distance detector以sparse IQ的原始输出为基础,集成了算法处理,具有各种配置参数接口,可以根据不同的应用和场景适配参数以获得更好的效果。
关键步骤介绍
Distance detector用到了以下四个关键步骤
**1、距离滤波器:**在距离维度上采用了匹配滤波器(matched filter),提高信号质量,抑制噪声。
2、子扫描(subsweeps):将测量范围分成多个子扫描,每个子扫描配置不同的参数使得整个测量范围内的信噪比基本相等,同时最大限度降低功耗。
比如:设定检测范围为0.25~3.0m.那么在distance detector中会自动分配为四个子扫描(subsweeps)。配合下图中上位机的图形显示,更易理解。
Subweep1: 0.12~0.98m profile=1 HWAAS=2
Subsweep2:0.3~2.3m profile=3 HWAAS=5
Subsweep3:0.66~2.4m profile=5 HWAAS=7
Subsweep4: 2.46~3.9m profile=5 HWAAS=15
然后再整合分析这些subsweep,最终得到目标距离。在A111的distance detector中,无法使用subsweep,只能在测量范围内整体扫描一次,即一个参数应用于整个距离范围。那么如果想测量较近距离的目标,尽量缩小盲区泄露,只能设置较小的profile和HWAAS,那么目标距离较远时,雷达回波信号会非常弱,可能会表现为测不到较远距离的目标。反之设置较大的profile和HWAAS,会导致盲区泄露较大,难以检测近距离的目标。
子扫描的方式相较于A111只在测量范围内整体扫描一次有一个显著优点,就是可以为不同的距离范围分配不同的参数,可以在近距离减小盲区泄露的同时,提高远距离检测的信噪比,尽量让A121既可以检测到较近的目标,又可以检测到较远的目标。
3、阈值方法(threshold_method):在distance detector中,要判定是否有一个目标,必须在信号中看到一个“峰值”。“峰值”被定义为信号值(amplitude/strength)大于相邻两点的中间点。故至少需要连续3个点的信号超过阈值,才能被判定为检测到目标并且输出距离。而不同的阈值会导致distance detector最终输出的结果略有不同,A121的distance detector提供了几种阈值方式,用于过滤识别目标信号的峰值,可根据使用场景和具体测试效果来选择其中一种。
固定幅度阈值(fixed_amplitude)。最简单的阈值方法就是设定一个固定的幅值(amplitude),可通过参数fixed_threshold_value设置。比如,设置fixed_threshold_value=100,那么只要有连续3个点的amplitude超过100,即可识别为一个“峰”,进而计算距离。固定幅度阈值法没有内置任何温度补偿。
固定强度阈值(fixed_strength)。此阈值方法就是设定一个固定的强度值(strength),可通过fixed_strength_threshold_value设定。Strength的值与目标的反射率有关,与距离无关。即理想情况下,即使在不同的距离测量同一个目标,得到的strength也会是为相等的值。固定强度阈值法没有内置任何温度补偿。
记录阈值(recorded)。即雷达先扫描几次记录环境中的噪声数据,计算噪声数据的平均值和方差。再在噪声平均值的基础上添加一些方差(可使用参数threshold_sensitivity调节)形成一个“定制化”阈值。记录阈值法内置温度补偿。
恒虚警率阈值(CFAR)【默认阈值法】。CFAR是根据相邻信号来确认当前信号阈值的一种算法。如下图,Y是当前信号,灰色部分是紧邻Y的保护单元,不进入当前信号阈值的计算。X1……Xn为前置窗口信号,Xn+1 …… X2n为滞后窗口信号。根据前置窗口信号和滞后窗口信号的平均值进行计算得到当前信号Y的阈值。在雷达一次的扫描中有非常多的信号点,每一个信号点都将进行这样的计算,而每一次的扫描都将重新开始计算阈值。所以也可以说CFAR算法已经包含计算了温度的影响。CFAR在只有单一目标的测量场景中表现较好,与其他阈值法相比更容易发现信号较弱接近噪声的目标。在多目标的场景中不一定适合。
**4、检测目标计算距离 :**A121的distance detector采用了插值法来计算预测目标到雷达的精准距离。已知一个目标峰值至少包含三个数据点,即峰值点和相邻两点。已知这三点即可得信号曲线的曲率,再根据曲率往三个数据点中间插值,可得更为接近真实信号的曲线,再计算得到真实信号曲线的峰值距离即可。这也是为什么A121的分辨率较A111更低,但是A121的distance detector检测的目标距离值较A121更为准确的原因。
重点参数介绍:
1、峰值排序(peaksorting_method)
在雷达的一次检测中,有时会出现多个峰值,即目标距离的情况。A121 的distance detector包含了2种可用峰值排序方式。
优先距离最近的目标(closest),即根据目标距离排序。比如,在雷达检测到2个目标,分别为0.5m,3.2m的前提下,不论两个目标信号值强弱,都优先输出0.5m的目标距离。
优先信号最强的目标(strongest),即根据目标信号强度排序。比如,在雷达检测到2个目标,分别为0.5m 1dB;3.2m 10dB的前提下,不论目标距离远近,都优先输出10dB强度的目标距离。注:目标强度与参数reflector shape有较大关系,详见参数说明章节。
2、目标形状(reflector_shape)
Distance detector提供了两个reflector shape选择,一种为PLANER(平面目标),一种为GENERIC(一般目标)。这个参数用于计算目标的强度值(strength),若选择为PLANER则代入d=d2,若选择为GENERIC则代入d=d4 。这是因为GENERIC(一般目标)逐渐远离雷达时,雷达检测到的信号会比PLANER(平面目标)衰减得更快。
更多strength相关知识请参考Figure of Merits — Acconeer docs
3、近距离泄露消除(close_range_ leakage_cancellation)
由于雷达发射天线距离接收天线非常近,发射电磁波时会有一部分直接泄露到接收天线,以及其他非常接近雷达的组件影响,比如透镜、喇叭、PCB或者其他结构固定件等等,在测量非常靠近雷达的信号时,我们可以看到很强烈的泄露值,如下图所示。泄露值的存在会导致检测近距离的目标非常困难,解决办法之一是记录好泄露值,然后在每一次雷达检测的信号中减去这个泄露值,以屏蔽干扰。原厂已经将此办法集成到库中,只需设置参数close_range_leakage_cancellation即可。
重点参数配置说明:
acc_detector_distance_config_start_set(detector_config, 0.15f); //测量起始位置(m)
acc_detector_distance_config_end_set(detector_config, 10.00f); //测量结束位置(m)
//限制最大步长。减少步长可以提高信噪比,同时增加测量时间和处理数据量。
acc_detector_distance_config_max_step_length_set(detector_config, 2U);
//信号质量。高质量等于更高的HWAAS和更好的信噪比,但会增加测量用时和功耗。
acc_detector_distance_config_signal_quality_set(detector_config, 20.0f); //范围:-10.0 ~ 35.0
//指定允许的最大profile。distance detector会根据设定的检测范围,近距离用低profile,远距离用高profile。
acc_detector_distance_config_max_profile_set(detector_config, ACC_CONFIG_PROFILE_3);
//峰值排序。测量场景中的多个对象会产生多个峰值,可选择最强峰优先(默认)或最近峰优先。
acc_detector_distance_config_peak_sorting_set(detector_config, ACC_DETECTOR_DISTANCE_PEAK_SORTING_STRONGEST);
//反射器形状。对于平面反射器(例如流体表面),选择 PLANAR 。对于所有其他反射器,选择 GENERIC 。
acc_detector_distance_config_reflector_shape_set(detector_config, ACC_DETECTOR_DISTANCE_REFLECTOR_SHAPE_PLANAR);
//有四种类型阈值可用。使用哪一种取决于使用需求,默认CFAR类型。不是该类型的,设定的阈值无效。
acc_detector_distance_config_threshold_method_set(detector_config, ACC_DETECTOR_DISTANCE_THRESHOLD_METHOD_FIXED_STRENGTH);
//采用 Recorded 阈值和启用close_range_leakage时所需的帧数。将在测量结果前,记录背景杂波,然后作为阈值应用于扫描。值越大,校准用时越长。
acc_detector_distance_config_num_frames_recorded_threshold_set(detector_config, 100U);
//使用 Fixed amplitude 阈值时,大于固定幅度阈值的信号将被输出。
acc_detector_distance_config_fixed_amplitude_threshold_value_set(detector_config, 100U);
//使用 Fixed strength 阈值时,大于固定强度阈值的信号将被输出。
acc_detector_distance_config_fixed_strength_threshold_value_set(detector_config, -5.0f);
//使用 CFAR 阈值时,阈值是根据扫描结果经过CFAR算法得出的阈值。CFAR和Recorded阈值值的高低由此参数确定。高灵敏度等于低检测阈值,低灵敏度等于高检测阈值。
acc_detector_distance_config_threshold_sensitivity_set(detector_config, 0.50f); //范围:0 ~ 1
//是否启用近距离泄漏消除逻辑。消除在传感器附近(<100mm)的雷达泄露影响。会增加测量用时。
acc_detector_distance_config_close_range_leakage_cancellation_set(detector_config, false);