当我们谈论 WiFi 感知时,目光往往聚焦于人员计数和姿态估计,却忽略了一个更具医疗价值的场景 —— 无接触生命体征监测。RuView 项目正是这个细分方向的深度实践者:利用 Commodity WiFi 信号实现 6–30 BPM 呼吸率和 40–120 BPM 心率的实时检测,全程无需摄像头、无需 wearables,甚至无需用户主动配合。这篇文章从信号处理链路、频段选择依据到边缘部署参数,系统梳理这一技术的工程化路径。
为什么是呼吸和心率:RF 感知的医学契合点
人体呼吸和心跳本质上是周期性的机械运动 —— 胸腔起伏改变胸壁与空气的界面面积,心脏搏动引起皮肤表面微弱的周期性位移。这些机械振动会以特定频率调制周围环境中的 WiFi 无线电波,形成可测量的信号扰动。RuView 的技术路径选择基于一个关键洞察:呼吸频率(约 0.1–0.5 Hz)和心率频率(约 0.8–2.0 Hz)在频域上与日常肢体运动(通常在 2–10 Hz 以上)存在显著隔离,这使得通过精心设计的带通滤波提取生命体征成为可能。
更重要的是,这种检测方式天然具备非侵入性。用户无需佩戴任何设备,不存在设备充电、贴合舒适度或卫生维护的问题。在养老院监测、医院普通病房或者家庭睡眠场景中,这一特性大幅降低了长期监测的依从性门槛。RuView 的测试数据表明,在受控环境下(单一人员、静音房间),呼吸率检测精度可达 ±1 BPM,心率检测精度可达 ±3 BPM—— 这一水平虽不及医疗级连续监测设备,但已足够支撑异常预警应用。
信号处理链路:从 CSI 子载波到 BPM 读数
RuView 的生命体征检测链路构建在 Channel State Information 之上。CSI 描述的是 WiFi 信号在每个子载波上的幅度和相位变化,其时序数据包含了人体对无线信号的散射信息。以下是呼吸检测的核心信号处理流程:
第一步是 CSI 数据采集。ESP32-S3 节点在配置的 WiFi 信道(推荐信道 1/6/11 组合以覆盖更多频谱)上持续接收来自路由器或其他 AP 的数据包。每个数据包携带 56 个子载波的 CSI 数据,其中幅度和相位信息均可用于分析。对于生命体征检测,幅度数据通常更稳定,因为相位数据对设备时钟漂移更敏感。
第二步是带通滤波。原始 CSI 数据混合了大量噪声 —— 环境物体移动、家具震动、甚至空调出风口的微弱气流都会引入干扰。呼吸信号对应的 0.1–0.5 Hz 频段和心率信号对应的 0.8–2.0 Hz 频段需要通过精心设计的 Butterworth 或 Chebyshev 带通滤波器提取。RuView 采用级联滤波策略:先以较宽通带抑制高频运动伪影,再以窄通带提取目标频率分量。滤波器阶数的选择需在频率选择性和时域瞬态响应之间权衡 —— 阶数越高则纹波越小,但引入的群延迟越大,对于实时监测应用可能造成读数滞后。
第三步是呼吸 / 心率估算。滤波后的信号进行零交叉检测(Zero-Crossing)以估算周期性分量对应的 BPM 值。零交叉法的优势在于计算开销极低,适合边缘设备上的实时处理;其局限在于当信号存在低频漂移或噪声尖峰时可能误判周期边界。RuView 在零交叉前加入了 Hampel 滤波以去除异常值冲击,并采用中值滤波平滑基线漂移。对于更精确的场景,项目预留了基于峰值检测和自相关分析的后处理接口。
频段选择的工程依据:为什么不用更高频率
一个自然的疑问是:为什么不使用更高频率的雷达(如 60 GHz mmWave)来检测生命体征?答案涉及分辨率与穿透力的权衡。60 GHz 毫米波对胸壁位移的分辨率更高,能够检测到更细微的呼吸动作,但其穿透能力弱于 2.4 GHz WiFi 信号 —— 在非视距场景(穿墙监测)或存在衣物遮挡时性能下降明显。RuView 在 2.4 GHz 频段上运行,以 56 子载波 × 多跳点的组合弥补单点分辨率的不足。
另一个工程考量是硬件成本和普及性。使用 Commodity WiFi 意味着系统可以复用在已有的无线路由器基础设施上,新增成本仅为 ESP32-S3 节点(约 9 美元)或 Cognitum Seed 扩展模块(约 140 美元全套)。对于需要在多个房间部署连续监测的场景,这一成本结构远比医疗级 UWB 雷达或专用呼吸监测垫经济。
边缘模块:65 个 WASM 模块的场景覆盖
RuView 将生命体征监测嵌入更广泛的边缘智能框架中。目前已有 65 个 WASM 模块覆盖医疗、安全、零售、工业等 13 个类别,其中医疗类模块包括 Sleep Apnea(睡眠呼吸暂停检测)、Cardiac Arrhythmia(心律失常监测)、Respiratory Distress(呼吸窘迫预警)、Gait Analysis(步态分析)和 Seizure Detection(癫痫发作检测)。这些模块以 no_std Rust 实现,编译为 wasm32-unknown-unknown 目标,通过 WASM3 运行时在 ESP32-S3 上执行,单个模块预算控制在 5–10ms 延迟以内。
模块间的协同机制通过统一的 12 函数 API 实现,共享底层信号处理工具库。例如,Vital Trend 模块负责长期趋势存储和分析,可被 Cardiac Arrhythmia 模块调用以评估心率变异性的时间窗口。Adaptive Learning 类别下的 EWC Lifelong 模块实现 Elastic Weight Consolidation,确保在学习新模式时不遗忘已掌握的正常基线。
从实验室到现实:部署参数与性能基线
在实际部署中,以下参数直接影响生命体征检测的成功率。首先是节点数量:单 ESP32 节点可检测约 3–5 米范围内的人员存在,但对于呼吸和心率的精确提取,建议使用 2 个以上节点形成多视角融合 —— 多跳点信号的相关性校验能够有效排除单人场景中其他人员的干扰。其次是环境基线:新环境部署时需要 10–30 秒的自适应学习期,期间系统建立房间指纹和噪声基线;学习完成后检测模块进入稳态运行。第三是人员数量上限:每个 AP / 节点组合的理论分辨能力约为 3–5 人,超过此密度时呼吸和心率信号会因多人体动叠加而难以分离。
对于隐私敏感的医疗场景,RuView 提供了一个重要承诺:所有信号处理和推断均发生在边缘侧,数据不上传云端。Cognitum Seed 模块额外提供 Ed25519 见证链,可对检测记录进行密码学锚定,满足某些合规场景的审计追溯需求。
局限性与未来方向
当前技术的主要局限来自两个方面。其一是检测精度的天花板。基于 WiFi CSI 的呼吸和心率检测本质上是间接测量 —— 它不直接感知胸壁位移,而是通过无线信号散射的扰动反推。这种间接性决定了精度受限于信噪比和环境复杂度。其二是自监督场景下的泛化挑战。RuView 的自学习系统(ADR-024)在新环境中通过 MicroLoRA 适配器实现快速适应(93% 参数效率提升),但跨环境(如从卧室到医院病房)的鲁棒性仍需更多实测验证。
面向未来,几个方向值得关注:将生命体征检测与睡眠分期结合(Dream Stage 模块已在探索此方向),通过夜间连续监测的呼吸和心率模式推断 REM/NREM 阶段;探索多频段融合,将 WiFi CSI 与 mmWave 雷达在同一人体目标上进行特征级融合,以兼顾穿透力和分辨率;以及在机器人平台上的集成应用 —— 让服务机器人在非视距条件下感知人员状态。
资料来源
- RuView GitHub 仓库:https://github.com/ruvnet/RuView
- ADR-024 自监督 CSI 嵌入模型文档:https://github.com/ruvnet/RuView/blob/main/docs/adr/ADR-024-contrastive-csi-embedding-model.md
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。