非接触式生命体征监测长期依赖毫米波雷达或专用传感器,成本与部署复杂度限制了规模化应用。RuView 项目展示了另一种路径:利用现有 WiFi 基础设施的 Channel State Information(CSI),通过亚赫兹信号分解实现呼吸与心率检测。本文聚焦 CSI 分解的工程实现,给出从原始信号到 BPM 读数的完整参数链。
CSI 为何能感知呼吸
WiFi 信号在空间中形成复杂的驻波场,人体胸腔的微小位移(约 4-12 mm)会改变多径传播特性。CSI 记录了每个子载波上的信道频率响应,包含幅度与相位信息。呼吸运动频率落在 0.1-0.5 Hz(6-30 次 / 分钟),远低于 WiFi 帧率,因此可以通过时域累积提取。
关键洞察在于:单个子载波的相位变化对呼吸敏感,但易受噪声干扰;多子载波联合分析通过空间分集抑制噪声。RuView 采用 56 子载波配置,跨 3 个信道(1/6/11)形成 168 个虚拟子载波,构建冗余观测矩阵。
信号处理流水线
1. 带通滤波器设计
呼吸信号与心率信号频段分离,需级联带通滤波:
| 生理指标 | 频段 | 滤波器参数 | 输出 |
|---|---|---|---|
| 呼吸 | 0.1-0.5 Hz | 4 阶 Butterworth | 6-30 BPM |
| 心率 | 0.8-2.0 Hz | 4 阶 Butterworth | 40-120 BPM |
滤波器实现采用零相位延迟设计(filtfilt),避免相位失真对过零检测的影响。截止频率选择基于呼吸与心率的生理范围下限,同时避开 0.5-0.8 Hz 的模糊带。
2. 相干门控(Coherence Gate)
CSI 信号质量受多径衰落、人体姿态、环境变动影响。RuView 引入 Z-score 相量门控,通过相位相干性判断测量可信度:
状态 = {
Accept: |Z| < 2.0 且 相干性 > 0.7
PredictOnly: 2.0 ≤ |Z| < 3.0
Reject: |Z| ≥ 3.0 或 相干性 < 0.5
Recalibrate: 连续 10 帧 Reject
}
门控机制确保只有高置信度样本进入 BPM 计算,避免异常值污染。滞后阈值(hysteresis)设计防止状态频繁切换导致的输出抖动。
3. 过零 BPM 提取
滤波后的信号通过过零检测计算瞬时频率:
- 检测正向过零点(信号从负到正穿越零轴)
- 计算相邻过零点时间间隔 Δt
- BPM = 60 / (2 × Δt),因子 2 对应半周期计数
- 滑动窗口中位数滤波(窗口 30 秒)平滑输出
该方法对基线漂移鲁棒,计算复杂度 O (n),适合 ESP32-S3 的 240MHz 双核处理器。
部署参数与硬件约束
ESP32-S3 配置
RuView 的固件针对 ESP32-S3 优化,关键参数如下:
- CSI 采样率:100 Hz(每 10ms 一个 CSI 帧)
- 子载波数:56(HT40 模式)
- 内存占用:信号处理流水线约 28KB,MicroLoRA 适配器 2KB,总计 55KB 模型
- 功耗:主动扫描模式约 150mA,支持 USB 供电或电池方案
空间部署建议
单节点感知范围约 5 米,受菲涅尔区几何约束。推荐部署策略:
- 单房间监测:2-3 节点形成多视角观测,通过多静态融合提升信噪比
- 穿墙场景:利用 2.4GHz 绕射特性,单节点可穿透 30cm 混凝土墙体
- 网格扩展:N 节点形成 N×(N-1) 条链路,注意力加权跨视角嵌入
误差来源与缓解
| 误差源 | 影响 | 缓解策略 |
|---|---|---|
| 身体大幅运动 | 呼吸信号淹没 | 运动检测触发暂停,恢复后 10 秒再启用 |
| 多径环境变动 | 基线漂移 | 自适应基线跟踪,滑动窗口更新 |
| 载波频率偏移 | 相位跳变 | 相位解卷绕 + 差分处理 |
| 采样时钟抖动 | 频率估计偏差 | 软件 PLL 同步,或 GPSDO 硬件同步 |
从原型到产品
RuView 的呼吸检测模块(med_sleep_apnea.rs)已实现为 WASM 边缘模块,5KB 体积,<5ms 推理延迟。该设计允许:
- OTA 更新:通过 WiFi 推送新模块,无需物理接触
- 多租户隔离:不同健康监测应用共享 CSI 流,模块级沙箱隔离
- 隐私保护:原始 CSI 不上云,BPM 计算本地完成,符合 GDPR/HIPAA 无视频要求
对于没有 CSI 能力的设备(如普通笔记本),系统退化为 RSSI-only 模式,仅支持粗粒度存在检测,无法提取呼吸特征。
局限与权衡
当前实现存在已知约束:单节点空间分辨率有限,姿态估计 PCK@20 约 2.5%(无相机监督),目标 35% 需相机地面真值训练。呼吸检测精度受限于 CSI 采样率(100Hz 理论上限 50Hz 信号),对高频心率变异(HRV)分析能力不足。
此外,ESP32-C3 和原始 ESP32 因单核性能不足不支持完整 CSI DSP 流水线,必须使用 ESP32-S3 或研究级网卡(Intel 5300/Atheros AR9580)。
总结
通过 CSI 分解实现亚赫兹呼吸检测,本质是将 WiFi 从通信工具重新定义为分布式传感器网络。关键工程参数 ——0.1-0.5 Hz 带通、相干门控阈值、过零窗口 —— 决定了检测精度与鲁棒性的平衡。对于 $9 的 ESP32-S3 节点,这套方案提供了医疗级生命体征监测的低成本替代路径。
参考来源
- RuView GitHub 仓库: https://github.com/ruvnet/RuView
- 原始 DensePose From WiFi 研究(CMU)
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。