news 2026/11/2 6:07:01

用PLFM_RADAR搭建雷达感知系统:从线性调频到室内监测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用PLFM_RADAR搭建雷达感知系统:从线性调频到室内监测

凌晨两点半,频谱仪屏幕上多了一个不该出现的尖峰。那个位置我记得很清楚——在零中频偏左几百kHz附近,不是我想要的任何一路回波信号。后来查了半天确认是收发天线之间的直漏,加上对面墙体打回来的二次反射,在PLFM_RADAR这套系统里合成出来的寄生响应。

这个项目从搭骨架到调稳定,磨了整整两个多月。PLFM_RADAR是我做的一套以雷达原理为核心的中近程位置-频率联合监测实验平台,覆盖了发射波形设计、回波采集、脉冲压缩、多普勒检测、目标测角到最后的轨迹输出,全链路都是自己搭的。如果你正在折腾类似的雷达感知项目,或者打算用雷达做室内人员活动监测、存在性检测这类应用,这篇文章应该能帮你少走不少弯路。

1. 先聊清楚:PLFM_RADAR到底是个什么项目

1.1 项目代号里的名堂

先说这个代号。PLFM我习惯理解为Position Locating and Frequency Monitoring的缩写,也就是“位置定位+频率监测”。RADAR不是随便挂的后缀,它定义了整套系统的底层机制:发射电磁波、接收目标反射的回波、通过相干处理提取信息。项目名把两个核心目标都写在脸上了——一是回答“目标在哪”,二是回答“目标怎么动”。

“目标怎么动”这件事在雷达里靠的是多普勒频率。一个物体朝雷达径向移动时,回波信号会产生频移,频移量和径向速度成正比。PLFM_RADAR的设计里,速度维的信息和第二路位置解算是并列的,这一点和很多只做存在性检测的雷达方案不一样。比如室内有人走动,系统不仅能判断“有没有人”,还能给出“人从哪走到哪、移动快慢、在哪片区域停留”。

1.2 为什么不用摄像头和PIR

做室内感知,市面上最常用的方案无非是摄像头和被动红外传感器。摄像头的问题在于隐私敏感,卧室、卫生间、更衣室这类场景很难接受;PIR的问题是信息量太少,只能给一个“有人/没人”的粗略判断,而且对静止目标基本失效——人坐在沙发上看半小时手机,PIR大概率已经不输出了。

雷达的路线在这两个痛点中间找到了位置。它不采集任何光学图像,天然规避了隐私争议;又能直接测量距离、速度、方位角,给出来的信息丰富度远高于PIR。PLFM_RADAR跑通之后,我拿它做过一个很直观的测试:人在房间里原地坐下不动,距离-多普勒图(RD图)上依然能看到一个稳定的静止目标回波,因为雷达检测的是目标的雷达散射截面,而不是红外辐射随时间的变化。

1.3 整体架构与数据流

整套系统分为射频前端、采集与存储、信号处理、结果输出四层。数据流是这样的:

发射端生成线性调频脉冲基带信号,经过上变频和功率放大后由天线发射出去;接收端收到目标反射回波,经过低噪声放大、下变频到中频/基带,再由ADC采样成数字I/Q数据;之后进入信号处理链路,依次做脉冲压缩、动目标检测、恒虚警检测(CFAR)和角度估计;最后输出目标的距离、速度、角度和幅度信息。

下面这个表是各模块的职责概览:

模块职责关键点
波形生成产生LFM脉冲序列带宽、脉宽、脉冲重复频率
射频前端上变频/功放/收发天线收发隔离、噪声系数
接收链路LNA/下变频/ADC动态范围、采样率
信号处理脉冲压缩/MTD/CFAR/测角窗函数、积累帧数、参考单元
输出模块目标点迹与轨迹数据关联、滤波

这套分层设计的好处是每层都可以单独测试。调射频的时候不需要管算法,算法调试的时候可以用仿真数据灌进去,出了问题能很快锁定在哪一层。

2. 信号链路设计:从波形选择到回波模型

2.1 为什么选了线性调频脉冲而不是单频连续波

做雷达第一件事就是选波形体制。单频连续波(CW)最简单,发射单一频率的等幅信号,但致命缺点是测不了距离——回波里没有时间基准,只有多普勒频率。连续波调频(FMCW)能测距,不过接收机在发射的同时要持续工作,收发隔离的压力很大,而且对线性度要求高,相位误差稍大就会让距离维出现鬼影。

PLFM_RADAR最终选的是线性调频脉冲体制。理由很直接:发射和接收在时间上分开,不用担心同时收发带来的干扰;线性调频让一个宽脉冲在接收端通过匹配滤波“压”成窄脉冲,兼顾能量和距离分辨率;多普勒信息也能通过跨脉冲积累提取出来。

用生活化的类比解释线性调频:你站在山谷里想测前方障碍物距离,只喊一个短促的“喂”,回声里除了响度什么都分不出来;如果喊一个拖长音,并且让音调从低到高平稳滑动,回声到达时刻对应的音调变化就能告诉你障碍物离你多远。线性调频脉冲就是那个“滑音”,接收端用一组匹配滤波器就能还原出精确的时延。

2.2 关键参数怎么定:带宽、脉宽、采样率

参数设计是这套系统里最不能偷懒的部分,每个数字背后都有物理约束。我的做法是先定最高优先级指标,再反过来反推参数。

首要指标是距离分辨率,公式是:

ΔR = c / (2B)

c是光速,B是发射信号带宽。想要1.5米左右的距离分辨率,带宽大概需要100MHz;想要0.75米,带宽需要到200MHz。PLFM_RADAR最后选了B=120MHz,理论分辨率约1.25米,对室内人员活动监测足够用了。

脉宽T的选择看发射能量需求。脉宽越宽,单个脉冲携带的能量越高,探测距离越远;但脉宽也决定了线性调频信号的调频斜率,K=B/T。我选了4us脉宽,既保证了探测灵敏度,也让调频斜率不至于过陡。

脉冲重复频率PRF的约束更复杂。一方面PRF要高一些,保证多普勒不模糊范围够大;另一方面PRF越高,最大不模糊距离越小,因为距离-多普勒之间存在天然折中。公式是:

R_max = c / (2·PRF)

我把PRF定在20kHz,R_max=7.5km,远超实际应用场景;速度不模糊范围约正负62.5m/s,室内人员步行速度根本碰不到边界。ADC采样率方面,由于采用复数基带接收,采样率只需要略高于带宽,我取fs=150Msps,留了余量。

参数取值依据
中心频率24GHz波长小、天线尺寸紧凑
带宽120MHz距离分辨率约1.25m
脉宽4us单脉冲能量和调频斜率的折中
PRF20kHz多普勒范围和距离模糊的平衡
采样率150Msps覆盖带宽且留余量

2.3 接收链路与I/Q解调:把高频问题降到基带

24GHz的信号没法直接采,所以接收链路必须完成一次或多次下变频。PLFM_RADAR用的是两级下变频结构:先把24GHz降到低中频,再用数字正交解调的方式得到I/Q信号。

这里有个工程上的关键点:我没有直接做零中频解调。零中频方案的优点是采样率低、结构简单,但缺点在雷达系统里很致命——直流偏置会落在信号频带正中,1/f噪声也集中在低频,这两个因素会直接污染近距离目标的回波。使用低中频加数字正交解调,可以绕开直流和低频噪声集中的区域,把有用信号搬到远离零频的位置,处理完再搬到基带。

接收链路的动态范围也要特别注意。室内场景里,近距离强反射体(比如金属门框)的回波可能比远距离人体目标强几十dB,如果ADC位数不够,强信号会把弱信号淹没。我用的是14位ADC,理论上动态范围能到84dB左右,实际扣除噪声和余量后,也基本能满足几十米范围内的目标检测需求。

3. 目标检测与参数估计:从回波里“抠”出位置

3.1 脉冲压缩:让长脉冲同时拥有能量和分辨率

线性调频信号的脉宽是4us,直接看回波包络的话,距离分辨率大约600米——这显然没法用。脉冲压缩做的就是一件事:在接收端构造匹配滤波器,让参考信号和回波做相关运算,把宽脉冲的能量集中到一个窄主瓣上。

匹配滤波在频域实现的计算流程非常简洁:

import numpy as np fs = 150e6 # 采样率 T = 4e-6 # 脉宽 B = 120e6 # 带宽 N = int(T * fs) # 单个脉冲采样点数 # 生成线性调频参考信号(基带复数形式) t = np.arange(N) / fs s_ref = np.exp(1j * np.pi * (B / T) * t**2) # 加窗压制距离旁瓣 window = np.blackman(N) s_ref_w = s_ref * window # 回波信号s_rx为某个脉冲的基带I/Q数据 # 频域匹配滤波 S_ref = np.conj(np.fft.fft(s_ref_w, n_fft)) S_rx = np.fft.fft(s_rx, n_fft) compressed = np.fft.ifft(S_rx * S_ref, n_fft)

实际中直接使用FFT做匹配滤波时,要特别注意卷积长度。如果直接用和回波等长的参考序列做循环卷积,会把长时延目标的回波卷绕到短时延位置,必须在FFT前做补零处理,使总长度不小于回波长度加参考长度。

加窗这件事需要权衡。黑曼窗能把距离旁瓣压到-40dB以下,但主瓣会变宽,分辨率从理论1.25米实际变成大约1.8米左右。我的处理方式是:发射和接收都尽量压低系统失真,然后用窗把旁瓣压下来,因为室内多径环境本来就容易产生虚假峰值,旁瓣再高一点,后续检测很容易误判。

3.2 动目标检测与二维FFT:距离和多普勒解耦

单脉冲压缩只能给出目标在某个时刻的距离,但室内环境里有大量墙体和家具的静态反射,这些杂波强度远超人体目标,直接检测根本分不出来。解决办法是动目标检测(MTD)。

核心思路是用多个脉冲对同一距离单元做相干积累。慢时间维上,静态杂波在脉冲间相位不变,积累后仍然集中在一个多普勒单元;运动目标回波相位随脉冲变化,多普勒频率会把它搬到另一个单元去,这样距离和速度就自然解耦了。

实现上就是二维FFT:距离维由脉冲压缩完成,速度维沿脉冲维做FFT。积累脉冲数N取256时,相参积累时间T_cpi=256/20kHz=12.8ms,多普勒分辨率约78Hz,对应速度分辨率约0.49m/s。这个分辨率足够把行走的人和静止的家具杂波区分开,又不会因为积累时间过长导致目标跨距离单元走动。

3.3 恒虚警检测(CFAR)与测角逻辑

做完二维FFT后不能直接设一个固定门限去判断目标——室内杂波分布不均匀,墙角反射强的地方,固定门限会产生一堆虚警;空旷的地方,固定门限又可能漏掉真实目标。CFAR的思路是根据每个检测单元周围的噪声水平自适应调整门限。

工程实现里有几个参数特别关键。参考单元个数决定了对噪声估计的平滑程度,我一般取16到32个;保护单元必须保留,否则目标本身的能量泄漏到参考区,会把噪声估计抬高,造成“自屏蔽”。室内强杂波场景下,单元平均(CA-CFAR)在边缘处表现不稳定,我最后切换到了有序统计CFAR(OS-CFAR),它对多目标和杂波边缘更稳健,代价是稍微多一点计算量。

如果和我一样用双通道接收天线,测角可以用比相法。两个天线相位差φ满足:

φ = 2π·d·sinθ / λ

d是天线间距,取λ/2以内可以避免角度模糊。比相测角虽然简单,但只能覆盖几十度的波束范围,且精度受信噪比限制。对PLFM_RADAR这种以存在性和活动监测为主的项目,已经够用;真要做高精度测角,就得换阵列天线加MUSIC或ESPRIT算法了。

4. 实测中的拦路虎:相位噪声、多径与标定

4.1 相位噪声为什么决定近距离探测上限

项目第一次整机联通时,我遇到的第一个问题就是开头那个尖峰。它本质上是相位噪声问题:本振不可能做到理想纯净,相位噪声功率谱在偏离载频处有一个带尾;大功率发射信号通过天线直漏或者近距离强反射进入接收机后,它的相位噪声边带会把远处弱目标所在的底噪抬高,导致弱目标被淹没。

这就是为什么有些雷达指标好看,一到实测就发现近距离反而探测不了。我做了三件事来缓解:一是拉开收发天线间距,提高空间隔离度;二是地面铺设吸波材料,减小地物反射;三是在信号处理里加MTI对消,把静态杂波连同它的相位噪声边带一起消掉。三管齐下后,近距离弱目标的信噪比提升了大概8到10dB。

4.2 多径杂波在室内场景的真实表现

室内多径是另一个大坑。雷达信号打在墙上反射后,再打到目标上折返,接收端会收到一个延迟的回波副本。这个副本在RD图上表现为目标旁边的重复点迹,有时还会和目标本身干涉,造成幅度起伏。

我踩过的具体场景是:走廊尽头有一个金属门,门和目标之间形成一条强反射路径。目标从走廊中间走过时,RD图上出现了两个相距几米的点迹,一个是真的,一个是多径副本。解决思路有两个维度:测角维度上,因为多径副本的来波方向和直射方向不同,双通道比相测角可以把它滤掉一部分;更通用的是在点迹关联阶段加约束——多径副本的幅度通常比真目标低,且与真目标保持固定距离差,只保留幅度稳定、运动轨迹连续的点迹。

4.3 参数标定与误差修正:从测不准到测不丢

设备装完不等于系统是准的。PLFM_RADAR的标定分四步,每一步都有坑:

标定项方法常见误差
距离标定已知距离的角反射器实测延迟偏移导致距离整体偏差
速度标定已知移动速度的目标匀速通过本振频率不准导致速度偏差
幅度标定标准信号源注入接收链路链路增益不平坦
IQ不平衡校准注入单音信号测量镜像比镜像虚假目标

IQ不平衡这个点值得多说一句。零中频或低中频接收机里,I路和Q路如果增益不一致、相位不是严格90度,镜像频率的信号就会泄漏到目标频率上,形成假目标。校准方式也不复杂:发射端注入一个单音,在接收端测出镜像比,然后反向修正I/Q增益和相位。

我的习惯是每次外场实验前都先跑一遍这四步,不偷懒。标定做完后,室内静止目标的角度和距离偏差基本能控制在分辨单元以内,后续的目标关联和轨迹滤波才有意义。

5. 调试过程中沉淀下来的工程习惯与后续方向

5.1 数据记录与离线回放:最划算的一笔投入

PLFM_RADAR调试中让我最受益的工程习惯,是给系统加上了原始I/Q数据落盘功能。起初觉得“在线实时处理不就行了,存数据多此一举”,后来发现现场出现诡异现象时,没有原始数据根本没有复现排查的可能。加了落盘以后,每次实验都同时保存ADC原始数据、系统配置参数、天线布局和场景描述,回来离线跑处理脚本,问题定位速度提升了一个数量级。

具体做法很简单:用HDF5格式存I/Q数据,文件头写入时间戳、PRF、带宽、采样率、发射功率等所有关键配置。离线回放时用和实时处理完全同一套脚本,既方便调参,也方便多人协作复现结果。

5.2 仿真与实测对拍:先信仿真,再疑仿真

另一个重要习惯是仿真-实测对拍。我的流程是这样的:先用仿真环境生成合成回波,把目标距离、速度、信噪比全部设成已知值,验证算法链路里的每一个环节是否都正确;确认无误后,再灌入实测数据跑同样的脚本,观察差异。

这个流程能帮你区分算法问题和系统问题。仿真里如果检测性能不达标,说明算法参数没调对;实测里如果比仿真差很多,问题大概率出现在射频前端、标定或杂波环境。PLFM_RADAR早期我在仿真里把CFAR参数调得很理想,实测一跑满地虚警,后来才知道是仿真里没建模的相噪泄漏在作怪。这个教训让我明白:仿真永远是理想化的,但也是排查问题的第一道筛子。

5.3 后续可以自然延伸的几个方向

PLFM_RADAR跑通之后,我在扩展方向上试过几件事,都还在推进。一个是微多普勒特征提取,人在行走、坐下、跌倒时,肢体摆动的微多普勒调制在频谱上有明显的区别特征,这为老人看护场景的跌倒检测提供了可能性。另一个是多雷达组网协同,用两三台设备从不同角度观测同一个区域,能显著缓解单台雷达视角遮挡和多径交织的问题。还有一个方向是和摄像头数据融合——雷达提供深度和速度,摄像头提供轮廓和身份,两者各取所长。

这些方向我都还在摸索,并没有全部跑通。但基础链路已经稳定,后续每次扩展本质上都是在PLFM_RADAR的地基上往上一层、再往上一层。

如果你也在折腾一个类似的雷达项目,我最大的建议是先把原始数据记录和离线回放链路做好,这个投入比任何高级算法都划算。很多调试时让你怀疑人生的玄学问题,在原始数据面前都会变得清晰。先把地基夯实,再谈天花乱坠的算法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/2 6:06:42

SPI隔离实战:用MAX14431BAEE+解决PIC18F96J94地电位差问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/2 6:06:41

PLFM雷达原理与FPGA实现:高精度低功耗毫米波测距技术

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/2 6:06:40

从动态基线到关联规则:自建平台监控雷达PLFM_RADAR

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/2 6:06:05

基于MAX14431与R7FA4C1的隔离SPI通信设计实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/2 6:05:18

工业级隔离SPI通信设计:dsPIC33EP512MU814与MAX14431BAEE+实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/2 6:02:15

FPGA与STM32异构架构:相控阵雷达LFM脉冲压缩系统设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华