资讯详情

资讯详情

24GHz FMCW雷达室内人员检测:从波形参数到CFAR信号处理全流程

前一阵在评估一个室内人员感知方案项目代号就叫 PLFM_RADAR。PLFM 在我这里指的是“可编程雷达平台”RADAR 自然就是雷达。想法很简单用一块带 24GHz 毫米波前端的可编程评估板自己配置扫频波形、自己写中频处理链路实现一个功能完整的 FMCW 雷达系统用来检测房间里有没有人、人在哪个位置、人在走动还是静止。这篇文章把整个过程从参数设计到实测踩坑完整记录下来适合想做雷达信号处理又不想一上来就碰军用级硬件的人也适合做智能家居存在检测、课设项目但不想只停留在 MATLAB 仿真阶段的朋友。项目做完之后我最大的感受是雷达原理课本上写得都很清楚但真正把一块板子跑起来、把数据变成目标坐标里面有一堆文档不会告诉你的细节。比如参数算出来很漂亮实际却因为天线泄漏什么都看不清比如窗函数选得不对弱目标直接被旁瓣埋掉。下面我就按我实际动手的顺序把 PLFM_RADAR 从选型到出结果的完整链路说一遍。1. 项目背景与总体设计思路1.1 项目到底在解决什么问题智能家居和安防领域这两年对“存在感知”的需求特别明确人在不在房间、长时间不动是否需要告警、夜间跌倒后的响应速度。摄像头方案容易被隐私问题卡住红外方案只能测到有没有热源对静止的人很容易漏报而且太阳光一照就误报。雷达的意义在于它不采集图像只输出运动目标的空间位置和速度信息同时通过微多普勒效应还能捕捉到呼吸引起的胸腔起伏让“人静止但还活着”这件事变得可检测。PLFM_RADAR 想做的是把这条感知链路完全用可编程硬件打通。市面上现成的雷达模块很多比如一些 24GHz 人体感应模组输出就是“有人/没人”的 GPIO 电平用起来确实省事但你不知道它内部怎么滤波、怎么设门限想调灵敏度也调不了。对于想深入理解雷达或者做定制产品的人来说这种黑盒方案是不够的。所以我选择了一块带可编程波形配置的毫米波评估板前端混频后的 I/Q 信号直接给到采集和处理端从第一行处理代码开始自己掌控。这样做的成本控制在千元级别一块支持 24GHz 频段的雷达前端评估板几百块到一千出头相比动辄几万的工业雷达开发平台便宜得多性能用来做室内存在检测和简单的手势识别完全够用。如果你没有同样型号的板子用 SDR软件无线电平台接 2.4GHz/5.8GHz 频段做类似系统也是可以的下面讲的信号处理链路完全通用只要把参数换掉就行。1.2 为什么选 FMCW 而不是脉冲体制雷达体制这一步是最容易纠结的。脉冲雷达需要处理纳秒级脉宽对 ADC 采样率和定时同步要求极高本地振荡器的相位噪声也很苛刻低成本平台做完之后性能往往很难看。FMCW调频连续波体制则完全不同发射信号是一个频率随时间线性变化的连续波回波信号和发射信号混频之后时间延迟被转换成了一个频率差这个差频信号的频率通常在几十 kHz 到几 MHz 之间普通的 ADC 就能直接采样。用一句话概括 FMCW 的核心发射信号的频率是斜坡函数回波比发射晚到 T_d所以同一时刻两者频率不一样相减得到一个差频 f_b。这个差频正比于目标距离公式是 f_b S·2R/c其中 S 是扫频斜率Hz/sR 是目标距离c 是光速。管道泄漏也好、墙面反射也好只要延时存在就会被转成频率信息。这个转化最大的红利是我们不需要超高采样率的 ADC处理一个低中频信号要容易得多。当然 FMCW 也有自己的麻烦最大的问题是收发隔离。连续波雷达发射的同时就在接收发射信号直接泄漏进接收链路会产生巨大的直流分量和近距离杂波这个后面我会专门讲怎么处理。另外扫频线性度也影响测距精度前端如果做了 DDS直接数字频率合成或者 PLL 调频一般都能保证足够好的线性度实测下来问题不大。1.3 整体架构前端、采集、处理三层分离PLFM_RADAR 的架构我一开始就定了三层分离的原则这样出了问题可以快速定位不用每次从天线端一路排查到显示屏。最底层是射频前端负责发射线性调频连续波、接收目标回波、完成混频和下变频输出 I/Q 两路中频信号。中间是采集层用板载 ADC 或外部采集模块把模拟中频变成数字采样然后按 chirp 和 frame 组织成数据立方体。最上层是处理层用 Python 做距离维 FFT、速度维 FFT、CFAR 目标检测最后输出目标距离、速度、角度信息。分层带来的好处在调试阶段特别明显。比如我发现检测结果里目标距离总往远了偏第一反应就是去检查前端配置的扫频斜率是不是和代码里算的一致而不是去改后端的 FFT 代码。再比如如果距离维图谱上所有距离单元底噪同时抬高基本可以断定是前端增益太高导致 ADC 饱和这时候处理代码一行都不用动只要把增益跳下来看现象有没有恢复就行。实际项目里我采用的数据流是这样的评估板通电后通过上位机接口配置 chirp 参数起始频率、带宽、扫频时间、采样点数前端把混频后的 I/Q 数据通过 USB 传到电脑保存成二进制数据文件。Python 端读取文件后先去掉直流分量再做距离维 FFT再对一帧内所有 chirp 做慢时间维 FFT得到距离-多普勒图最后做 CFAR 检测输出目标。后面所有章节的内容都是围绕这条流水线逐级展开的。2. 核心细节解析与实操要点2.1 波形参数设计带宽、chirp 时间、采样率怎么定这一步是整个 PLFM_RADAR 里最值得反复推敲的部分。参数不是随便填的每一项都对应一个性能指标而且互相牵扯。先看距离分辨率。FMCW 的距离分辨率由射频带宽决定公式是ΔR c / (2B)。我需要能区分半米左右的两个目标所以带宽不能太小。在 24GHz 频段评估板可用的扫频带宽做到了 250MHz算下来ΔR 3e8 / (2 * 250e6) 0.6米。这个分辨率对室内存在检测已经够用不需要区分同方向前后相差小于 60cm 的两个强反射点。再看最大可测距离。这个参数通常被 ADC 采样率卡住。差频信号是复数基带I/Q所以可表示的最大差频是采样率的一半。已知差频与距离的关系就能反推最大无模糊距离R_max c * fs / (4S)。板子的复采样率我设为 10MHz扫频斜率 S B / T_chirp 250MHz / 1ms 2.5e11 Hz/s理论上 R_max 会有 3000 米量级。这个数看着离谱实际当然跑不到因为目标回波功率随距离四次方衰减但我算它的目的是确认“ADC 采样率不会成为测距瓶颈”。真正限制探测距离的是发射功率、天线增益和噪声系数而不是采样率。速度和帧结构放在一起算。雷达测速度靠的是慢时间维的相位变化同一个距离门的目标在相邻两个 chirp 之间的相位差正比于径向速度因此对一帧内的 N 个 chirp 做 FFT就能得到目标的多普勒频率。这里有两个指标一个是最大不模糊速度v_max λ / (4 * T_chirp)另一个是速度分辨率Δv λ / (2 * T_frame)其中 T_frame N * T_chirp。我用的参数是载频 24GHz波长 λ ≈ 12.5mmchirp 周期 1ms一帧 128 个 chirp。算出来v_max 0.0125 / (4 * 0.001) 3.125 m/s约合 11.25 km/h室内人员走动完全覆盖。速度分辨率Δv 0.0125 / (2 * 0.128) 0.049 m/s也就是说我能分辨慢到每秒钟只移动 5 厘米的人体微动这个分辨率对于呼吸检测都够用了。小提示如果你希望减小 T_chirp 来扩大速度范围就要接受更低的信噪比因为单个 chirp 能量变小了。如果希望提高距离分辨率只加带宽通常最划算因为不牺牲帧率。2.2 距离维 FFT窗函数、补零与频率转距离拿到一帧原始数据后第一步是在快时间维做 FFT。快时间指的是一个 chirp 内部的时间轴采样点上携带的就是差频信号。做 FFT 之前有一个很容易被忽略的细节加窗。直接对一段截断信号做 FFT频谱会出现旁瓣旁瓣会把附近的弱目标盖住。比如室内场景里金属柜子角反射器特别强窗函数选得不好旁边 30dB 小的微弱人体回波就完全看不到了。我实际使用中用的是 Hanning 窗主瓣稍微宽一点但旁瓣能压掉差不多 31dB对室内多目标场景非常友好。如果只是检测单个强目标不加窗或者矩形窗也凑合但既然要泛用到不同场景窗函数我建议固定上。补零的问题也常被误解。很多人以为 FFT 点数是采样点数的 4 倍就能提高距离分辨率其实补零不会让真实分辨率变好它只是把频谱的峰插值得更平滑方便肉眼读峰值。真正的分辨率只取决于射频带宽。我一般保留补零这个操作但心里清楚它只是“美化”了谱线。补零还有个作用是让后续的峰值搜索和 CFAR 在频率表示上更细腻检测精度更好一点。频率转距离的计算很简单R f_b * c / (2S)。但要注意这里的 f_b 是差频频率不是 FFT 频点的自然数索引。我建议在代码里不要手动用 index * fs / N 这种方式去换算而是直接用np.fft.fftfreq得到频率轴再乘上距离系数这样不容易出错。完整代码后文会给出。2.3 速度维处理慢时间 FFT 与距离-多普勒矩阵距离维 FFT 做完后每个 chirp 对应一组距离谱。把同一帧内所有 chirp 按距离排列成一个矩阵横轴是距离纵轴是 chirp 序号然后在纵轴方向再做一次 FFT就得到了距离-多普勒图RDM。这一步“第二维 FFT”的本质是在提取相位变化率所以也叫慢时间 FFT。这里有一个重要的工程细节慢时间维度上存在一个固有的多普勒模糊问题。当一个目标速度极快相邻 chirp 之间的相位差超过 π 时速度就会折叠到负频率方向。我在参数设计时已经把 v_max 定在 3.125m/s这个模糊在室内场景基本不会出现但如果你把 chirp 周期拉长到 4ms 以上就要重新核对这个值否则明明在往前走的目标会被检测成往后退。第二个细节是相位噪声的影响。前端本振如果相位噪声偏高慢时间维上的 FFT 会出现“拖尾”现象目标峰在速度维铺开导致弱目标被强目标的速度泄漏盖住。这个问题有时候不是参数能解决的更有效的办法是后面提到的 MTI 对消和合理的检测门限。做完二维 FFT 之后我习惯把 RDM 按距离和速度两个维度画成热力图这对标定阶段特别有用。你可以肉眼看到静态目标的峰在距离轴上、多普勒频率在 0 附近而人走动产生的峰则偏到某个速度单元上。2.4 目标检测CFAR 门限怎么设才能不掉坑有了距离-多普勒矩阵下一步是判断哪些点是目标。初学者最常见的错误是直接用np.max或者固定阈值挑峰值这在特定场景里好像能跑通但换个房间就不行了因为噪声底和杂波强度是随环境变的。我用的是一维有序统计恒虚警率OS-CFAR和单元平均恒虚警率CA-CFAR结合的方式。CA-CFAR 的做法是把某一个待测单元两侧若干距离单元作为参考窗求平均噪声功率再用一个标量因子乘以噪声功率作为门限。如果待测单元超过门限就判定为目标。这个“平均”能自适应不同距离段的噪声强度比固定阈值稳妥很多。但 CA-CFAR 在目标密集区域会有“遮蔽效应”如果一个强目标的旁瓣落在旁边弱目标的参考窗里弱目标脚边的噪声被抬高就检测不出来了。OS-CFAR 不取均值而是把参考窗内的功率排序取中位数能更好地抵抗多个强目标干扰。在室内场景下我最终选择 OS-CFAR 作为主检测器参考单元数设为 16保护单元数设为 4虚警概率控制在 1e-4 量级。CFAR 参数需要调但不用调得很痛苦。有一个经验值先试跑再微调参考单元长度大约是目标宽度以 FFT 频点计的 8 到 16 倍保护单元至少比目标占用的频点数大 1 到 2 个否则目标自己会抬高参考窗噪声把自己检测没了。后面所有检测代码我都会基于这个原则来写。3. 实操过程与核心环节实现3.1 硬件搭建与波形配置PLFM_RADAR 的前端评估板我用的是带片上天线的 24GHz 毫米波模块。板子上集成了一个发射天线、一个接收天线、一个调频源、一个混频器和一个中频放大器I/Q 两路模拟信号通过排针引出再接一块数据采集板完成 ADC 采样。接好线后先给模块通电等射频部分预热然后用上位机工具配置四个关键参数起始频率、扫频带宽、扫频时间、采样点数和 chirp 个数。我的实际配置参数如下起始频率 24.0GHz扫频带宽 250MHz扫频时间 1ms每 chirp 采样点数 1024一帧 128 chirp。这四个数字的含义前面已经算过这里不再重复但有一点必须强调扫频时间和采样点数是绑定的ADC 的有效采样率等于采样点数除以扫频时间也就是 1024 点 / 1ms 1.024MSps。由于做的是复数采样实际 I/Q 两路各 1.024MSps合成后信号带宽 1.024MHz远低于 ADC 上限这个冗余是故意留的。配置完成后先采集一帧空房间数据再采集有人走动数据分别保存成 raw 二进制文件方便随时回放。这一步一定不要省后面调试 CFAR 门限、滤除静态杂波都必须依赖空场景数据做对照。3.2 数据预处理去直流和动目标指示从硬件拿到 I/Q 数据后我做的第一件事不是 FFT而是去直流。由于发射信号到接收机的直接泄漏差频信号的零频附近会有一个很大的直流分量体现在距离谱上就是零距离处一个巨大的尖峰。哪怕用 I/Q 混频直流偏置也不会完全消失因为泄漏信号会在实部和虚部上产生一个固定偏置。去直流的办法很简单对每个 chirp 内所有采样点求平均然后整段减去这个均值。实测下来这个操作能把零距离尖峰降低 20~30dB效果立竿见影。不过它也把真实目标在慢时间维的直流分量一起去掉了所以对静止目标的检测会受到影响这个需要注意。如果场景里有大量静态杂波比如桌子和墙面反射很强我还要再做一步动目标指示MTI。最经典的实现是两脉冲对消用当前 chirp 的距离谱减去前一个 chirp 的距离谱。这样做的效果是静止的墙面反射在两次采样里近似不变相减后就归零了而移动的目标回波因为相位变化相减后依然有能量。这个技术本来是动目标显示雷达的标准处理方法用在 FMCW 的帧内 chirp 上同理有效。我实际链路里是“先两脉冲对消再做慢时间 FFT”。这样处理之后RDM 上的零多普勒杂波被压制得很干净CFAR 检测时就不需要额外做静态杂波滤除了。代价是会损失低速检测能力——如果你要测呼吸这类极慢的微动对消反而会把呼吸信号也消掉所以我为呼吸模式单独做了另一条链路不会用 MTI。3.3 核心处理代码从原始数据到目标列表下面这段 Python 代码包含了 PLFM_RADAR 的核心处理流程我按实际运行的顺序贴出来注释里写了我踩过的关键点。import numpy as np FS 1.024e6 # 复数采样率I/Q合成 NUM_CHIRP 128 NUM_SAMPLE 1024 # 雷达参数用于频率转距离 C 3e8 B 250e6 # 扫频带宽 T_CHIRP 1e-3 # chirp周期 S B / T_CHIRP # 扫频斜率 RANGE_COEF C / (2 * S) def load_raw(path, num_chirpNUM_CHIRP, num_sampleNUM_SAMPLE): raw np.fromfile(path, dtypenp.int16) raw raw.reshape(-1, num_sample) # 取I/Q合成复数 data raw[:, ::2] 1j * raw[:, 1::2] return data[:num_chirp] # 只取一帧 def preprocess(frame): # 逐chirp去直流抵消天线泄漏 frame frame - frame.mean(axis1, keepdimsTrue) # MTI两脉冲对消压制静态杂波 mti frame[1:] - frame[:-1] return mti def range_fft(mti): n mti.shape[1] # Hanning窗降低旁瓣4倍补零方便读峰 win np.hanning(n) spec np.fft.fft(mti * win, nn * 4, axis1) freq np.fft.fftfreq(n * 4, 1 / FS)[: n * 2] return spec[:, : n * 2], freq * RANGE_COEF def doppler_fft(range_spec): # 慢时间维做FFT得到距离-多普勒图 rdm np.fft.fft(range_spec, axis0) rdm np.fft.fftshift(rdm, axes0) # 把负频移到下方 return rdm这段代码里最需要留神的是两处。第一去直流必须在 MTI 之前做如果先相减再减均值MTI 后的相位偏移会导致对消不干净。第二速度维 FFT 在距离维 FFT 之后做不是反过来否则距离信息会混在一起。CFAR 检测我单独用一个函数实现这里给一个简化但能直接跑的 OS-CFAR 版本作用在距离-多普勒图上。一维的逐行检测已经够用你也可以扩展成二维窗。def os_cfar(rdm, n_ref16, n_guard4, k_out12, p_fa1e-4): # 对RDM每一行同一距离门的多普勒维做OS-CFAR num_v rdm.shape[1] det np.zeros_like(rdm, dtypebool) for i in range(rdm.shape[0]): row np.abs(rdm[i]) for j in range(n_guard n_ref, num_v - n_guard - n_ref): cell row[j] if cell 0: continue left row[j - n_ref - n_guard : j - n_guard] right row[j n_guard 1 : j n_guard 1 n_ref] # 有序统计取第k小的值作为杂波功率估计 ordered np.sort(np.concatenate([left, right])) noise_power ordered[k_out] threshold noise_power * (n_ref * (p_fa ** (-1 / n_ref) - 1)) if cell threshold: det[i, j] True return det这段 CFAR 代码里阈值因子用的是 OS-CFAR 在均匀噪声下的理论值近似式。实际跑的时候你可能会发现虚警偏低或偏高这时不用紧张把p_fa稍微调大一点或k_out调大一点就能找到适合你环境的门限。我更推荐的做法是拿一段空房间数据跑一遍数一下自动报警的点数反推当前门限是否合适。CFAR 检测出来的每个点可以用下面的代码转成可读的目标信息def extract_targets(det, rdm, range_axis, doppler_per_bin): targets [] rows np.argwhere(det) for idx in rows: r range_axis[idx[1]] v (idx[0] - rdm.shape[0] // 2) * doppler_per_bin amp np.abs(rdm[idx[0], idx[1]]) targets.append((round(r, 2), round(v, 3), round(amp, 1))) return targets实际输出一个目标大概是这样的(2.35, 0.12, 87.4)意思是目标在 2.35 米处以 0.12m/s 的速度径向移动回波强度 87.4dB。这些信息可以直接接给上层逻辑判断“人是否接近床铺”之类的应用。3.4 实测场景与结果解读我把板子放在离地面 1.5 米的位置正对走廊先在空房间采集了一帧作为对照然后让一个同事以慢速从 3 米外走向板子。在这个过程里连续采集了 20 帧每帧 128ms。处理完第一帧后RDM 上最明显的是零距离附近一个残留的小峰这是发射泄漏经过 MTI 后没完全消除的残余。大概在距离 2 到 3 米之间一个峰出现在多普勒正频方向速度显示 0.1 到 0.15m/s和同事实际走路速度接近。同时在这个目标前面还有一个小峰距离约 2.1 米速度几乎为 0那是走廊墙面杂波经过 MTI 后幅度被压到了很低没有触发 CFAR。再观察连续帧目标的距离从 3 米逐渐递减到 1.5 米每一帧的 CFAR 输出都能稳定锁住同一目标。当人完全静止站在 1.5 米处时距离维峰还在但速度接近 0这时由于 MTI 对消的作用检测会开始变弱。这是 FMCW 做静止检测的天然难点解决办法是切到呼吸检测模式不做 MTI而是对慢时间维做更长时间的傅里叶分析从 0.2~0.6Hz 频段找胸腔起伏的特征。实测下来PLFM_RADAR 在 8 米内检测移动目标非常稳单人场景几乎无漏报静止目标依靠呼吸微多普勒在 3 米内也能识别出来。误报主要出现在风扇、窗帘这类非人体运动源上这个属于存在感知系统的共性难题需要用目标尺寸和运动特征进一步过滤。4. 常见问题与排查技巧实录4.1 中频饱和导致整张 RDM 噪声抬高现象是距离谱所有距离单元同时抬升底噪像铺了一层被子目标峰完全不突出。我第一次遇到时还以为是天线坏了后来才发现是接收链路增益设太高强反射目标直接把中频放大器推到了饱和区。解决办法很直接把可编程增益降下来直到空房间底噪不再随增益线性上升为止。还有一个辅助办法是在代码里检查原始 I/Q 数据的幅度分布如果大量采样点顶到满刻度那基本就是 ADC 饱和。4.2 直流泄漏比所有真实目标都亮RDM 上零距离处有一个巨大峰看起来像目标永远停在原点。这个在 FMCW 系统里几乎是必然的因为发射天线到接收天线的隔离度有限尤其评估板两块天线挨得近。解决分两层先去直流再做 MTI。光去直流只能消掉固定偏置天线泄漏如果随温度漂移去直流之后还会剩一点残差。我的做法是在每次上电后重新采集一次空房间数据估计直流偏置再减去比单纯用帧内均值更稳。泄露峰用 MTI 几乎能压到和底噪一个量级。4.3 多径导致一个目标分裂成两个有一次实测人明明只在 2 米处CFAR 却在 4 米处也报了一个目标。我仔细看了原始距离谱4 米处的峰其实是目标回波经过地面反射到达接收机产生的多径路径。由于地面反射路径比直射路径长FMCW 会把多径和直射解释成两个不同的“目标”。这类假目标有几个特征距离正好是真实距离的倍数附近或者多出固定时延幅度比直射低目标移动时它的移动方向也和直射目标一致。对付多径我的经验是在目标凝聚阶段做一个简单规则如果两个目标的距离差和角度差符合多径几何关系或者相对历史轨迹异常就把它判为多径假目标丢弃。别指望算法能完美解决天线设计、加吸收材料和提高布板高度才是更管用的方法。4.4 排查问题速查表现象优先排查点备选方案所有距离单元底噪高接收增益、ADC饱和降低增益检查I/Q幅度零距离巨大峰天线泄漏、直流偏置去直流后做MTI目标距离越来越偏扫频斜率配置不一致重新核对S与代码系数弱目标被强目标旁瓣遮盖窗函数选择不当改Hanning/Blackman窗静止目标检测不稳定MTI把目标滤掉了改用呼吸微多普勒模式速度方向反了慢时间FFT排序检查fftshift是否使用虚警过多CFAR门限过松增大p_fa指数、加大保护单元目标距离抖动很大相位噪声、时钟不同步改用锁定参考时钟检查接线这张表是我调试过程中真正用到的速查顺序。每次遇到奇怪现象先对照表格把最可能的因素排除再考虑玄学问题。雷达系统 90% 的故障都出在信号链路上很少是算法本身的问题。4.5 一个容易忽略的操作细节热机与温漂24GHz 模块刚开始上电时发射功率和中频增益都会随温度变化导致同一场景上午测和下午测结果不一样。我在项目里加入了“预热两分钟再校准”的规程并且每次做数据记录时都先跑一遍空房间采集用于底色估计。这个细节成本为零但能少掉一大半无头绪的 bug。5. 实测性能与后续扩展方向5.1 几组有代表性的实测数据我整理了几组不同场景下的实测结果参数配置和前面章节一致处理链路也相同。这些数据来自真实环境不是什么仿真结果给准备跑类似项目的人一个参考。测试场景目标类型距离范围检测情况备注空会议室无—无报警3秒内无CFAR输出单人慢走成人1~6m稳定检测每帧都能锁定单人静止成人呼吸0.5~3m弱检测需要呼吸模式约80ms窗口双人并行两人2m/4m可分辨距离差大于0.6m风扇吹动非人体1m误报需要速度/目标宽度过滤单人慢走场景是我最满意的20 帧连续检测无一漏报距离误差在 0.15 米以内速度读数与人实际步速相符。静止检测的帧率会慢一些因为它需要更长的观测时间来积累呼吸微多普勒特征。双人场景能分辨是因为板子的距离分辨率确实到了 0.6 米但如果两个人并排站在同一径向上而且间距小于这个值就无能为力了这需要 MIMO 天线阵列来补角度维。5.2 后续可以扩展的方向项目做到这个程度其实已经是一个能跑通全链路的 FMCW 雷达信号处理原型扩充空间还很大。我目前正在做的是给 PLFM_RADAR 加微多普勒分类把人行走时的四肢摆动、静止时的呼吸、风扇的旋转三类信号在 RDM 上做特征提取再用一个小型分类器区分。这个方向对智能家居存在检测特别有价值。如果你有心还可以往这几个方向试第一用发射开关阵列做 MIMO让板子同时具备测角能力但代价是前面串扰和校准复杂度会明显上升第二把处理链路移植到嵌入式处理器上用 C 实现 RDM 生成和 CFAR这样就能脱离电脑实时跑真正接近产品形态第三把两片板子放不同位置组网用数据融合消除单个视角的遮挡盲区。这些扩展都是站在现有数据链路之上的底层的 FFT 和 CFAR 代码不用推翻重来。再补充一个最后的小经验PLFM_RADAR 从头到尾做下来我最想提醒新人的不是某个公式而是先跑通空房间数据再上复杂功能。很多人一上来就挂着“检测人”的目标调算法但噪声底、泄漏峰、参考门限都没标定出了问题根本不知道该怪硬件还是怪软件。我建议你拿到板子第一天就采集一段空旷房间的原始数据保存好之后每次改算法都拿它当基线参照你会少走很多弯路。雷达这种东西一旦你把环境底噪摸透了剩下的大部分问题都只是工程问题而不是玄学问题。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →