当我们把一台普通 WiFi 路由器当作「雷达」使用时,最先遇到的障碍并不是算法不够好,而是信号本身已经被硬件扭曲得面目全非。原始信道状态信息(Channel State Information,CSI)中的相位并非真正的电磁相位,而是本地振荡器(Local Oscillator,LO)漂移、采样时钟偏移与中心频率误差共同叠加的伪相位。如果不先把这些伪造成分剥离,后续所有基于相位的到达角(Angle of Arrival,AoA)或飞行时间(Time of Flight,ToF)估计都将毫无意义。RuView 作为开源 WiFi 感知框架,从一开始就选择了一条务实的工程路径:先老老实实做好相位校准,再用多静态几何(multistatic geometry)将多径环境转化为空间感知资产,而不是试图用一个端到端黑盒模型来绕过信号处理的底层问题。
相位校准链路:从污染相位到可用相位
原始 CSI 相位的污染源主要有三类。第一类是 LO 偏移,表现为所有子载波上附加了一个随时间缓慢漂移的公共相位偏移,这个偏移量在同一时刻对所有子载波几乎是相同的,但在频域上呈线性趋势。第二类是采样时钟偏移(Sampling Frequency Offset,SFO),导致不同子载波的相位以子载波索引为自变量的斜率形式发散。第三类是中心频率偏移(Carrier Frequency Offset,CFO),它引入了一个与时间线性增长的相位旋转。三种污染叠加在一起,使得真实的空间相位信息完全淹没在噪声之中。
RuView 采用的相位清洗(phase sanitization)策略本质上是一个迭代估计 — 消除循环。对于 LO 偏移,核心思路是在所有子载波上计算公共相位偏移的估计值,最常用的方法是对子载波相位做线性最小二乘回归,把拟合得到的斜率分量和截距分量剔除出去,剩下的残差即为清洗后的相位。对于 SFO 导致的斜率项,需要利用跨天线相位差(phase difference across antennas)来建立约束:当同一天线阵列内两个天线的物理位置已知时,它们之间的真实相位差只与 AoA 和 ToF 有关,而不受 LO 偏移影响。因此,跨天线相位差的均值可以用来辅助估计并消除 SFO。关于这一方法的具体推导,可以参考斯坦福大学关于 WiFi CSI 相位污染建模的经典文献(Xiao et al., 2016),该文献系统性地分析了 LO、CFO 和 SFO 对 CSI 相位的耦合效应,是相位校准领域的理论基石。
在实际工程中需要注意,相位值在数学上是模 2π 的循环变量(circular variable),直接做线性回归会产生「相位缠绕」(phase wrapping)误差。RuView 的处理流程在回归前先将相位展开(unwrap)到实数域 —— 即在相位跳变超过 π 的地方加上或减去 2π 的整数倍,使其在整个子载波范围内连续。展开完成后,再用标准的线性回归提取斜率和截距,最后将拟合值从原始相位中减去。这一步的工程实现需要格外小心,因为展开操作的正确性直接依赖于信噪比:低信噪比下展开可能引入整周跳(cycle slip),需要在展开后额外做一个一致性检查,例如计算相邻子载波的相位差,若超过 π 且不存在物理合理性(如天线间距对应的 AoA 范围),则回退并重新对齐。
RuView 在相位校准链路中还引入了相干门控(Coherence Gate)作为质量筛选机制。相干门控本质上是一个基于相干性得分的 accept/predict-only/reject/recalibrate 四态判决器:计算当前 CSI 窗口内相位向量的 Z-score,低于阈值的样本被标记为低相干并降权或丢弃,高于阈值则接受。这个机制允许系统在无外部 NTP 同步或额外校准的情况下稳定运行数天,因为它实时检测信号质量并在质量恶化时自动回退到纯幅度特征,等信号恢复后再切换回相位融合模式。对于实际部署来说,这意味着即便环境中出现短暂的强干扰(如微波炉开启),系统也不会完全崩溃,而是优雅降级。
多径映射:从干扰到空间信息的转换
室内环境天然充满多径效应 ——WiFi 信号从发射端出发,经墙面、地板、天花板、人体表面反射和散射后,被接收端捕获。每一条传播路径对应一组 AoA、ToF 和复数增益(幅度与相位),这些参数叠加在 CSI 中,构成了一个高度病态的线性逆问题。但从 RuView 的角度来看,多径不是需要消除的干扰,而是可以被工程化利用的空间信息来源。
RuView 的多静态几何部署策略是这一工程化路径的核心。一个典型的部署配置由 1 个 AP(作为发射端)和 3 至 6 个 ESP32-S3 接收节点组成,节点围绕被监测空间呈近似正方形或六边形布局。关键参数是两个相邻节点与 AP 之间的夹角应大于 60°,这一约束源于角度分辨率的基本原理:两个接收器之间的基线(baseline)越长,对 AoA 的分辨力越高,但在 commodity 硬件中天线间距受限于设备物理尺寸,因此需要通过增加节点数量来补偿视角多样性。多节点部署产生的链路数为 N×(N-1),即 4 个节点产生 12 条链路,每条链路提供 56 个子载波的 CSI 数据,三信道配置下达到 168 个虚拟子载波 / 链路,形成了极其稠密的特征空间。
多径映射的技术实现依赖于两个关键工具:SpotFi 算法和 Fresnel 区域建模。SpotFi 起源于加州大学圣巴巴拉分校的研究,它利用多子载波相位差的平滑性来联合估计 AoA 和 ToF,并通过二维 MUSIC(Multiple Signal Classification)谱搜索在角度 — 延迟域中分离直达路径与多径反射。RuView 在此基础上做了计算简化:用离散傅里叶变换(DFT)近似替代完整的谱搜索,降低了在 ESP32-S3 上运行的计算复杂度,使其可以在边缘设备上完成实时处理。Fresnel 区域建模则用于解释人体对信号的散射:当人体位于 WiFi 信号的 Fresnel 区域内时,其存在会显著改变接收信号的相位和幅度分布 —— 这一现象正好可以用来推断人体的空间位置和呼吸时的微小位移。Fresnel 模型在 RuView 中被用于设定感知的空间分辨率下限和穿墙深度估计,默认配置下穿墙感知深度可达约 5 米。
多径映射的另一个工程要点是多径抑制与保留的平衡。并非所有多径都对感知有益,墙面高阶反射和金属物体的散射会产生虚假信号峰值。RuView 采用 Hampel 滤波来剔除异常值:这是一种基于中位绝对偏差(MAD)的稳健离群点检测方法,将幅度或相位超出 3 倍 MAD 范围的采样点替换为局部中值,而非简单地丢弃,从而保留了数据的时间连续性。在特征提取阶段,系统还会对 CSI 矩阵进行奇异值分解(SVD),取前若干个主导奇异值对应的奇异向量作为空间特征,过滤掉高阶噪声子空间。这一步骤在数学上等价于在多径信道中分离直达路径信号与散射噪声,是提升定位精度的关键手段。
可落地的工程参数配置
将上述信号处理链路落实到具体部署中,需要关注以下核心工程参数。
子载波与信道配置方面,默认配置使用三个非重叠的 2.4 GHz 信道(1、6、11),每个信道提供 56 个有效子载波。在 Intel 5300 或 Atheros AR9580 等研究级网卡上,可以获取全部 30 个 OFDM 子载波;而 ESP32-S3 固件通常在固件层面已经完成部分校准预处理,输出 56 个子载波已经是工程上的最优粒度。三信道 × 56 子载波 = 168 虚拟子载波 / 链路的配置提供了足够的频率分集来对抗窄带衰落,同时也为多径参数估计提供了足够的自由度。需要注意的是,信道切换本身会引入瞬态响应,建议在切换后等待至少 10 个 CSI 采样周期(约 100 ms)再开始数据采集。
TDM 时序与同步方面,RuView 使用轻量级时分复用(Time-Division Multiplexing)协议来协调多节点数据采集。具体来说,发射端 AP 维持固定的信标间隔(默认 100 ms),各接收节点在分配好的时隙内监听 CSI,每 3 个时隙完成一次三信道全覆盖扫描。TDM 带来的时序对齐误差是主要挑战:在 100 ms 的信标间隔内,时钟漂移可能导致链路间的相位基准偏移达到数十度。RuView 的应对策略是在每条链路上独立维护一个相位基准值,并在每帧数据中注入校准符号(known pilot symbols)用于实时修正。这个策略不需要外部时间同步服务器,适合在没有基础设施支持的临时部署场景中使用。
特征维度与模型输入方面,经相位校准和多径映射处理后,单条链路的 CSI 被压缩为一组 8 维特征向量(RuView 内部称之为 8-dim feature vectors),这组向量包含了幅度统计量、相位统计量、时域差分特征和频域峰值位置等信息。多链路融合通过注意力加权(attention-weighted)机制完成:在每个时间窗口内,各链路特征的交叉注意力权重由该链路的相干性得分决定,低相干链路的特征被自动降权。融合后的特征向量输入到基于 RuVector 的神经网络骨干中,输出 17 个 COCO 关键点坐标、呼吸频率、心率估计和房间指纹。对于 ESP32-S3 边缘部署,完整的模型参数量控制在约 55,000 参数(28 KB 模型权重 + 25 KB 嵌入投影 + 2 KB 微调适配器),运行在 WASM3 运行时上,端到端推理延迟低于 10 ms。
节点布局与几何约束在实际部署中,节点并非越多越好,也不是随意摆放就能获得最佳效果。基本布局原则包括:AP 节点应位于空间的角落或边缘,以最大化 Fresnel 区域的覆盖范围;接收节点应均匀分布在 AP 周围,夹角不小于 60°;节点高度建议与人体胸部齐平(约 1.2 米),以获得最佳的人体反射信号质量。对于矩形房间,4 个节点的对角线布局通常优于矩形边缘布局,因为它提供了更大的基线长度和更均匀的角度覆盖。需要特别强调的是,单节点部署(无论 AP 还是 ESP32)只能提供极为有限的空间分辨率,官方文档明确建议至少使用 2 个节点或额外配置 Cognitum Seed 以获得可用的感知性能。
部署清单与调优策略
基于上述分析,这里给出一个最小可行配置的部署清单,供工程落地参考。硬件层面,需要准备 1 个支持 CSI 输出的 AP(可使用配置了定制固件的 Linksys 路由器或小米路由器作为发射端),以及至少 2 个 ESP32-S3 节点(每个节点成本约 $9),理想配置为 4 个节点以覆盖 12 条链路。软件层面,需要在 ESP32 上烧录官方提供的 esp32-csi-node.bin 固件,并通过 provision.py 脚本配置 WiFi 凭证和目标 IP。首次部署后,建议先运行 python archive/v1/data/proof/verify.py 验证信号处理管道的正确性,确保相位校准后的相干性得分在合理范围内(系统默认的接受阈值为 Z-score > -1.5)。
调优阶段需要重点关注三个指标:相干性得分(Coherence Score)、定位误差(对于有真值的场景)和姿态关键点精度(PCK@20)。如果相干性得分持续偏低(< 0.3),首先检查节点间的角度约束是否满足,其次考虑环境中的大块金属表面导致的强多径干扰 —— 此时可以临时使用铝箔或吸波材料减少非直达路径的影响。如果姿态精度不足,但相干性正常,则优先考虑增加节点数量而非单纯增加训练数据量,因为多视角的几何分集对空间分辨率的提升远高于单视角数据的简单堆叠。如果系统运行数天后出现漂移,开启相干门控的回退模式(Coherence Gate 的 Recalibrate 状态),让系统自动重新建立相位基准。
结语
RuView 的工程化路径揭示了一个朴素的道理:WiFi 感知的精度瓶颈不在于神经网络有多深,而在于信号处理的底层是否扎实。相位校准解决了「测不准」的根本问题,多静态几何将「测不准」转化为「可量化」的空间参数,而轻量级的边缘推理则让这一切在不到 10 毫秒的延迟内完成。对于任何希望在 commodity WiFi 硬件上构建可靠空间感知系统的工程师而言,这套链路中的每一个环节 —— 相位展开、相干门控、多径映射、TDM 同步 —— 都值得在实际部署中仔细调试和验证。
资料来源:RuView GitHub 仓库 — 开源 WiFi DensePose 框架,含相位校准、信号处理管道、多静态几何与边缘推理的完整实现。
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。