Paper Reading系列的第一篇我选了Widar2.0。做这个决定没有犹豫在WiFi感知这条技术路线上这篇工作几乎是所有后来者绕不开的里程碑。它的目标一句话就能讲明白——只用一条Wi-Fi链路也就是一台发射机加一台接收机在目标人不携带任何设备的前提下利用人体对WiFi信号的反射把他在室内的行走轨迹实时画出来。不是判断有没有人而是输出一条连续的二维轨迹论文汇报的中位误差做到了亚米级。对于做无线感知、CSI信号处理、室内定位相关工作的朋友这篇是必读对于刚入门的同学它也像一个单链路物理极限在哪的参照系。下面这篇笔记不打算照抄论文章节而是按我自己的理解把最核心的三块技术拆开讲清楚CSI比值模型、多普勒MUSIC与身体速度轮廓BVP、以及从速度估计到轨迹恢复的完整链路。1. 为什么第一轮Paper Reading要从Widar2.0开始1.1 它解决的是一个不好卖但相当要命的问题室内人员跟踪这件事说大不大说小不小。摄像头方案依赖光照且天然有隐私争议毫米波雷达成本高、对部署位置敏感让用户戴标签或者拿手机又不算被动感知。WiFi的吸引力在于基础设施早就铺好了信号穿墙不用额外供电被测人也完全没有感知。但把WiFi信号变成位置远比想象中难。早期基于RSSI的方案精度只能到米级甚至更差后来的研究转向CSI——信道状态信息每个子载波都有独立的幅度和相位信息量一下子大了好几个量级。不过大多数CSI定位工作都默认需要一个前提多个WiFi链路同时观测。因为单条链路上你最多知道目标距离这条链路在某一个几何关系上的投影而二维坐标至少需要两个约束。前代的Widar系统走的就是这条路用三条链路各自提取多普勒速度再交叉得到位置。而Widar2.0这篇工作最抓人的地方就是它把链路数砍到一条精度不仅没掉还做到了亚米级。这在当时是一个相当反直觉的结论。1.2 这篇论文适合谁读以及你需要的最低配置如果你刚开始接触无线感知我的建议是先补三样东西CSI到底是什么、多普勒频移是怎么产生的、以及最基础的谱估计概念FFT和相关性。有这三样读Widar2.0的大部分推导不会太吃力。至于MUSIC这类子空间方法论文里用得很克制理解其超分辨直觉就够了不一定要从头推矩阵分解。如果你是做系统的人这篇文章的工程价值同样不少它证明了商用WiFi网卡、Linux下开源采集工具、几个简单的信号处理模块就能搭出一套能跑的人体追踪原型。我读完最大的感受是这篇论文没有堆砌花哨的深度学习模块全靠物理模型和精巧的信号处理把性能顶上去——这种拧螺丝式的系统论文今天读起来反而比很多刷榜的神经网络工作更耐看。2. 单链路被动跟踪难点到底在哪个环节2.1 多链路方案为什么让人又爱又恨多链路方案思路直接三台接收机分布在房间不同位置人走动时每条链路都产生多普勒频移把三个方向上的速度分量测出来交汇就是位置。原理清晰实现也不算复杂但落地时全是坑。首先是部署一个房间摆三四个节点供电、摆放、遮挡都要考虑其次是同步不同网卡之间时钟不同步相位处理很容易被噪声淹没最后是稳定性某条链路信号弱了或者被家具挡住整个交汇结果就废了。Widar2.0想回答的问题是如果只有一条链路物理上还有没有足够信息恢复二维轨迹答案是有的但要看你敢不敢把人体当成一个分布式目标来处理而不是一个质点。2.2 一条链路上到底能挤出什么物理量单条链路能拿到的原始量就三个幅度、相位、以及多个天线之间的相对相位差。幅度受环境反射影响太大不够稳单天线相位又因为收发时钟不同步在包间随机跳变不能直接用。真正有价值的可观测物理量有两个——多普勒频移和到达角AoA。多普勒频移本质上是相位随时间的旋转速率人体移动导致反射路径长度变化路径长度每变化一个波长相位就转一圈。AoA可以用接收端的两根天线做干涉测量给出一条反射路径的来波方向。有意思的是这两个量不是独立的多普勒大小取决于人的速度在特定方向上的投影而这个投影方向和AoA、以及收发端的几何位置绑定在一起。所以理论上从一对多普勒AoA里可以反解出人的速度向量。Widar2.0的整个算法链本质上是把这条反解路径做扎实了。难点在于反射信号太弱了。人体反射的路径比直射路径弱二三十个分贝淹没在静态分量里商用WiFi的相位随机跳变又远大于你要测的相位旋转。所以论文的第一步必须先解决怎么把干净的相位变化提出来。3. 关键预处理CSI比值模型如何把随机相位洗干净3.1 原始CSI相位为什么不能直接用先把信号模型摆出来。接收端拿到的CSI可以写成两部分的叠加静态分量包含直射路径和墙壁、家具上的静态反射它随时间基本不变动态分量来自人身上各个散射点随着人体运动路径长度不断变化所以这一项带有一个随时间旋转的相位旋转速率就是多普勒频移。理想情况下我们只需要观测动态分量的相位旋转。问题在于商用WiFi网卡给出的CSI相位里混着一堆莫名其妙的项载波频率偏移CFO、采样频率偏移SFO、包检测时延PDD每一项都会在包与包之间随机抖动。这些抖动叠加起来相位噪声的幅度远大于多普勒引起的相位旋转直接看原始相位曲线基本就是一团乱麻。3.2 比值而不是差值一次共模对消Widar2.0的处理办法干净利落接收端用两根天线取两个CSI的比值。关键原因是两根天线共用同一个射频前端、同一个本振那些随机的CFO、SFO、PDD相位项在两根天线上是共同出现的。做除法之后共模误差精确抵消剩下的比值只反映两条信道响应本身的相对关系。比值模型在复平面上有一个非常漂亮的几何解释当人移动时动态分量绕静态分量旋转比值的轨迹画出来是一个圆弧。圆弧旋转的角速度恰好就是多普勒频移。换句话说原本作为干扰的强静态路径在这里变成了一个天然的本振把微弱的动态反射信号通过混频效应搬移到了可观测的频段。这就像收音机里的超外差结构载波信号虽然强但有用的调制信息正是通过与本地振荡器混频才解出来的。提示如果你后面要复现这段记住比值模型的前提条件是两个天线的静态分量有可比性。如果其中一根天线被遮挡到几乎收不到直射信号圆弧会退化多普勒峰值也就跟着糊掉。3.3 这个模型为什么能成为后续工作的标准件我觉得CSI比值模型是整篇论文里最值得偷走的模块。它的前提条件很宽松接收端双天线、收发端不需要同步、不需要额外校准。后来的很多工作——呼吸检测、心率估计、手势识别、人群计数——都直接沿用了这个预处理模块。可以说Widar2.0不只是做了一个追踪系统它还顺带定义了一种通用的CSI相位清理范式。在读这篇论文之前我一直以为CSI相位是废的读完才明白相位不是废是缺一个正确的参考系。4. 多普勒谱的净化与身体速度轮廓BVP如何成为方向指纹4.1 为什么短时FFT不够要上MUSIC拿到干净的比值序列后下一步是对一个短时间窗求多普勒谱。时间窗不能太长因为人体运动是非平稳的窗太长会把不同的速度糊在一起但窗短了FFT的频率分辨率又不够——分辨率大概是1/窗长一个200毫秒的窗对应的频率分辨率只有5赫兹换算成速度分辨率在5GHz频段大约是每秒零点几米根本不够用。所以论文用了MUSIC算法做超分辨谱估计。MUSIC的思路本质上是对信号自相关矩阵做特征分解把空间分成信号子空间和噪声子空间然后用噪声子空间的正交性去扫描频率得到一个尖锐的谱峰。更重要的是Widar2.0的多普勒MUSIC把多普勒和到达角放在一起做一个二维网格搜索同时估计出能量峰在多普勒AoA这个二维平面上的位置。这一步从工程角度看很重但从原理上理解很简单它把原本在频谱上重叠的多条反射路径在角度维度上分开来。4.2 BVP到底是什么人体不是质点而是一团速度云走路的时候人体不是一个点。躯干以行走速度整体平移手臂和腿做周期摆动各个散射点的瞬时速度完全不同。每个散射点对WiFi信号产生一个多普勒贡献贡献大小取决于该点速度在链路几何方向上的投影。如果把一个时间窗内所有散射点的多普勒AoA能量峰收集起来再变换到速度域你会得到一张能量分布图——横纵轴是速度向量的两个分量颜色深浅代表这个速度分量有多强。这就是BVPBody Velocity Profile身体速度轮廓。BVP最有价值的地方在于它的形状和人的行走方向强相关。朝链路方向走躯干的多普勒投影最大能量峰集中在高速区横着走投影接近零能量峰塌到低频区斜着走还会出现左右不对称的展宽。可以说BVP把人往哪个方向走这个信息编码成了一张可匹配的二维模式。4.3 离线模板与在线匹配的工程细节论文采用的是一种典型的指纹匹配流程。离线阶段在目标环境里让人沿着若干已知方向行走例如每15度一个方向共24个方向每个方向采集并保存一条BVP模板。在线阶段把当前时间窗计算出的BVP和模板库做匹配得出最可能的行走方向。速度则从躯干对应的主导多普勒峰反推——多普勒频率等于行走速度乘以几何投影系数系数由AoA和收发端坐标算出。这个设计其实很有工程巧思它把方向估计降维成了一个模板匹配问题避免了复杂的多普勒几何解算。代价是需要在新环境做一次标定采集这个我们在后面讨论局限时再说。5. 从一系列速度估计到一条干净轨迹5.1 为什么不能直接把速度积分成轨迹既然每个时间窗都能估计出速度向量貌似直接把速度乘上时间间隔累加就行了。实际做起来会一塌糊涂原因有三个初始位置未知——WiFi感知只能测速度相对变化测不出绝对坐标方向歧义——在链路几何下速度向量的某些镜像配置会产生几乎相同的多普勒AoA观测积分漂移——速度估计有噪声误差会随着积分不断积累走几步就飘出房间了。所以论文把轨迹恢复当成一个序列决策问题来处理而不是单纯的数值积分。我记得的核心思路是枚举若干可能的初始状态在候选轨迹集合上施加连续性约束和先验知识最后选出一条最自洽的轨迹。形式上非常像一个在候选状态网格上的隐马尔可夫解码动态规划在这里承担了主要的搜索任务。5.2 时间连续性如何消解空间歧义单看一个时间窗左右镜像的速度估计无法区分。但人走路是连续的相邻时间窗的速度变化不会突变尤其是方向角走直线时基本不变转弯时平缓过渡。利用这个连续性窗口之间的模糊模糊自然就消掉了——如果上一帧选的是右侧解这一帧强行选左侧解会导致一个不自然的急转弯连续性得分就会惩罚它。所以很多看似困难的方向歧义问题在序列层面上根本不成立。这也是我对这个系统最服气的地方它没有试图在单帧内解决所有歧义而是把时间维度当成一个隐式的消歧工具。5.3 计算量与实时性的权衡二维MUSIC的网格搜索在计算上不便宜。论文的做法我记得是把可搜索的多普勒AoA网格事先定好配合预计算的矩阵分解在线阶段每个时间窗的开销被压到可接受范围。如果你想复现并做实时系统这块大概率是第一个性能瓶颈。一个务实的做法是降低到达角方向的网格密度毕竟AoA的物理分辨率受天线间距限制扫得再密也提不了真实分辨率。6. 实验效果与边界条件6.1 我记忆里的实验配置具体参数请以原文为准论文的实验用的是典型的商用WiFi网卡接收方案发射端一台笔记本接收端一台笔记本配三根天线工作在5GHz频段、802.11n协议。追踪区域是普通的室内环境包含直视LOS和非直视NLOS两种场景地面真值我记得是通过摄像头式动捕系统标定的。需要强调一下单链路指的是单条发射-接收链路接收端仍然保有多根天线这并不违背论文的核心卖点——毕竟目前随便一个商用AP都至少有两根天线。6.2 精度数字与对比如果我没记错论文报告的中位跟踪误差在0.7米上下90分位大约在1.5米左右。这个数字放在今天看也许不算惊艳但放在当时的环境下很能说明问题前代Widar要三条链路才能达到的精度Widar2.0用一条链路就拿到了。论文里还有不少对比实验包括不同行走路线、不同房间、LOS/NLOS切换这里不一一列举。下面这张类比表格是我自己整理的用来理解不同方案的本质差异方案链路/设备典型精度参考主要约束多链路CSI追踪3条WiFi链路米级到亚米级部署节点多、同步复杂单链路CSI追踪Widar2.0类1条WiFi链路多天线接收亚米级需要离线方向模板、限单人摄像头动捕多个相机毫米级布置昂贵、隐私敏感6.3 它的边界哪些场景会露馅第一人必须保持正常步态的行走。站立不动、原地踏步、爬行这类低速非周期运动多普勒信息太弱BVP匹配基本失效。这也决定了Widar2.0定位在追踪而不是存在感知。第二只支持单人。两个人的BVP在速度域叠加在一起模板匹配会直接错乱后续第三代系统才把多目标问题捡起来做。第三存在多普勒盲区。移动方向恰好垂直于链路角平分线时速度投影趋近于零速度估计的置信度会明显下降轨迹在那一片区域会抖动。第四依赖环境离线标定。搬动家具、改变房间布局后静态分量变了BVP模板需要重新采集这是所有指纹方案的通病。7. 读完之后我的实操体会与这条线的后续7.1 如果要复现我觉得最容易踩的几个坑第一个坑在数据采集阶段发射端和接收端必须保持物理静止。哪怕接收网卡被碰到一毫米静态分量也会变比值模型里那个固定圆心就不成立了。第二个坑在天线选择上比值模型需要两根天线同时看到相近强度的静态路径选天线时最好看一下两个CSI的幅度基线差异过大就得换一对。第三个坑在时间窗长度窗太短MUSIC分辨不出低频成分窗太长转弯这种快速变化会被平滑掉。我当时用大概0.3秒的窗长试下来效果不错但最优值还得根据你的具体场景调。第四个坑是离线模板的采集质量采集时要匀速直线走不要刻意放慢或者边走边停否则模板里会混入异常速度分布匹配时反而干扰方向判断。如果一开始就在真实房间里连续走各种复杂路径调试出了问题很难定位是预处理、谱估计还是匹配环节的锅。更稳妥的做法是先在可控场景里复现论文的最简实验——让目标在链路正前方沿已知方向直线往返把每一步的中间输出比值相位、多普勒谱、BVP全部打印出来检查。哪一步和理论对不上就在哪一步修。7.2 从这篇往后看一条研究路线的延伸Widar2.0的影响不止于追踪本身。它建立的速度轮廓这一中间表示后来被广泛挪用到了WiFi手势识别、身份识别等方向——本质上都是让人体运动在速度域留下可区分的痕迹。它的Ratio模型更是成了WiFi感知社区的一种标准预处理模块。再往后同一系列的后续工作把研究对象从单目标扩展到多人、从走路扩展到细粒度手势还引入了跨环境泛化的问题但细看的话核心模块还是当年那套相位清理高分辨谱估计模式匹配的组合。我觉得这篇论文最值得学习的地方不是某一个算法的精度数字而是它看问题的角度不要把被追踪者当成一个点目标去定位而是把他当成一个持续产生速度信号的一团散射体先恢复速度场再通过积分和约束把轨迹找回来。这个先测速度再定位置的框架比直接用深度学习做端到端回归要有解释力得多。7.3 一个读论文的小建议最后分享一个我自己用下来的习惯读这类信号处理系统论文拿到文章先别急着看实验花二十分钟把第3章的几何图亲手画一遍——把发射机、接收机、人的散射区域画在纸上然后自己写出多普勒频率的表达式。画完你就会发现后面所有算法模块都是为了解决这张图上暴露出来的某一个具体问题。这个过程比通读十遍正文都管用我也建议你试试。 SEO 优化官网定制响应式建站教育培训建站