基于 Wi-Fi 信道状态信息(CSI)的穿墙人体姿态追踪,其核心挑战并非感知算法本身,而在于如何从被严重污染的原始信号中,提取出与人体微动相关的、毫米级精度的物理路径参数。Ruvnet 的 WiFi DensePose 等项目展示了系统级的可行性,但要将精度推向实用,必须构建一个专责的、实时的信号补偿层。本文将从纯工程角度,拆解该补偿层的三大支柱:多径效应建模、相位净化流水线与自适应滤波设计,并提供可直接编码的参数清单。
一、多径效应:从现象到参数化状态向量
无线信号在室内环境经反射、衍射、散射后,接收端得到的是多条路径信号的叠加。对于 OFDM 系统,第 (t) 个数据包、第 (k) 个子载波上的 CSI 可建模为:
[ H_{t,k} = \sum_{l=1}^{L} \alpha_{l}(t) e^{-j2\pi f_k \tau_l(t)} ]
其中,每条路径 (l) 由时变的复增益 (\alpha_l (t)) 和时延 (\tau_l (t)) 刻画。工程实现的第一步,是将其扩展为一个可跟踪的多径状态向量 (\theta)。
可落地参数清单:
- 路径数 (L): 通常设定为 3-5。过多会导致过拟合,增加计算量;过少则无法表征复杂环境。
- 状态向量 (\theta_l): 对于每条路径,维护
[振幅 | 相位 | 时延 | 多普勒频移 | 到达角(AoA) | 离开角(AoD)]。初始值可通过空房间校准或首次数据包的稀疏恢复算法(如 OMP)估计。 - 更新频率: 与 CSI 数据包速率对齐(通常为 10-100 Hz)。状态更新应作为补偿流水线的一环,而非后处理。
将多径视为待估计的隐状态,而非待消除的噪声,是后续自适应滤波能 “有的放矢” 的前提。
二、相位净化流水线:剥离硬件指纹
原始 CSI 相位混杂了信道物理效应与收发器硬件缺陷。后者必须被精确剥离,相位净化是补偿层的基石。一个健壮的流水线应顺序执行以下操作:
1. 线性相位去除(补偿 STO/SFO) 对于单个数据包,跨子载波的测量相位 (\hat {\theta}{t,k}) 通常包含一个线性分量。通过最小二乘法拟合直线 (\hat {\theta}{t,k} \approx a_t k + b_t),并减去它。此操作能消除采样时间 / 频率偏移引起的相位倾斜。
2. 公共相位误差补偿(消除 CFO) 利用数据包内的长训练字段(LTF)或连续导频,估计载波频率偏移引起的公共相位旋转 (\phi_t),并对所有子载波进行校正:(H_{t,k} \leftarrow H_{t,k} e^{-j\phi_t})。
3. 非线性振幅 / 相位模板校正 这是去除硬件 “指纹” 的关键。需预先收集校准数据(例如通过同轴电缆直连,消除多径),为特定网卡建立振幅模板 (A_{calib}[k]) 和相位非线性模板 (\Phi_{nonlin}[k])。运行时,对每个数据包执行:
- 振幅归一化:(H'{t,k} = H{t,k} / A_{calib}[k])
- 相位校正:(\theta'{t,k} = \theta{t,k} - \Phi_{nonlin}[k])
工程参数与校验点:
- 校准要求: 每更换硬件或固件版本,必须重新校准。
- 模板稳定性: 温度变化可能导致模板漂移,建议在系统中加入模板健康度监测(如计算当前 CSI 与模板的相关系数),低于阈值时触发告警。
- 计算开销: 上述操作均为逐包、逐子载克的线性运算,在嵌入式平台(如树莓派)上可实现微秒级延迟。
净化后的相位,其波动应主要反映真实物理路径的变化,为后续变换到更有意义的域(如 CIR、多普勒域)奠定基础。
三、自适应滤波:在动态环境中提取微动信号
经过净化与变换(如通过 IFFT 得到信道冲激响应 CIR)后,信号仍包含噪声和无关的静态路径。自适应滤波的目标是抑制干扰,保留与人体运动相关的路径动态。这是一个多层、异构的滤波体系。
1. 时域预处理滤波
- 中值滤波: 用于抑制脉冲噪声和异常数据包。窗口长度建议为 5-10 个数据包(对应 50-100 毫秒)。
- 低通滤波: 保留人体运动(通常 < 10Hz)或呼吸(0.1-0.5Hz)频段。采用二阶巴特沃斯滤波器,截止频率根据应用场景设定。
2. 基于状态空间的路径跟踪 对状态向量 (\theta) 中的关键路径(如能量最高或方差最大的路径)应用卡尔曼滤波(KF)。将路径的振幅、相位、多普勒作为状态,建立简单的匀速或阻尼振荡运动模型。KF 能有效平滑观测噪声,并提供预测能力,增强系统在丢包时的鲁棒性。
3. 小波域与空域联合滤波
- 小波分解: 对 CIR 的特定时延抽头或路径振幅时间序列进行小波变换(如使用 db4 小波)。在不同尺度上,人体运动信号与噪声具有可分性。可通过尺度自适应阈值进行去噪。
- 空域滤波: 在多 AP 或多天线场景下,利用不同链路对同一物理空间的不同视角,构建空域协方差矩阵。通过波束成形或主成分分析(PCA)增强来自目标方向的信号,抑制其他方向的干扰。
滤波链配置示例(用于全身姿态追踪):
输入:净化后的CSI矩阵
1. IFFT -> CIR (选择前10个时延抽头)
2. 对每个抽头的时间序列:
a. 5点中值滤波
b. 截止频率15Hz的低通滤波
c. 3层小波分解,软阈值去噪
3. 对能量最强的2个抽头,应用卡尔曼滤波跟踪复振幅
4. 输出:滤波后的多径状态向量,送入后续的神经网络进行姿态估计
四、工程落地:流水线集成与监控
将上述模块集成为一个低延迟、高吞吐的实时流水线是最终挑战。Ruvnet 的 Rust 实现(v2)提供了一个范本,其全流水线处理延迟仅约 18.47 微秒,吞吐量达 54,000 fps。以下是关键集成要点:
1. 流水线设计 采用生产者 - 消费者模式。一个线程专责从网卡驱动轮询原始 CSI;后续的净化、CIR 变换、滤波等步骤封装为独立的处理单元(Processing Element, PE),通过无锁队列连接。每个 PE 内部利用 SIMD 指令和缓存优化。
2. 资源与参数监控清单 部署后,必须监控以下指标以确保补偿层有效工作:
- 相位线性度残差: 净化后,跨子载波相位的线性拟合残差应接近零均值高斯分布。若残差增大,可能预示硬件故障或强干扰。
- 路径跟踪一致性: 卡尔曼滤波器的创新序列(观测与预测之差)应保持白噪声特性。若非白化,表明运动模型不匹配,需调整过程噪声参数。
- 计算延迟分布: 记录每个数据包在补偿层各阶段的处理时间,P95 和 P99 延迟需满足实时性要求(如 < 20ms)。
- 模板健康度: 定期计算运行时 CSI 振幅与校准模板的相关系数,低于 0.9 时发出维护警报。
3. 失败兜底策略
- 模型重置: 若路径跟踪误差持续超阈值(如连续 10 个包),判定环境发生剧变(如家具移动),重置多径状态向量,并短暂提高卡尔曼滤波的过程噪声,加速重新收敛。
- 降级模式: 当计算资源不足时,动态关闭最耗资源的小波滤波或空域滤波模块,保障核心的相位净化和时域滤波仍能运行。
结论
构建一个鲁棒的 Wi-Fi CSI 信号补偿层,是将穿墙感知从实验室演示推向实际应用的关键工程步骤。其核心在于以参数化方式显式建模多径效应,通过精细的相位净化剥离硬件失真,并设计多层自适应滤波在动态环境中稳健地提取微动信号。本文提供的数学模型、处理流水线、参数清单与监控指标,构成了一个可立即实施的工程蓝图。最终,一个优秀的补偿层应当如 “隐形” 的基础设施,为上层感知算法提供纯净、稳定、实时的物理信道观测,让毫米级穿墙追踪真正成为可能。
资料来源
- Ruvnet WiFi DensePose 项目仓库: https://github.com/ruvnet/wifi-densepose
- 关于 CSI 相位净化与自适应滤波的工程实现综述(整合自多篇学术文献)