RuView 无线感知研究实录:为什么“用 CSI 无接触测血压“在物理上不可行——R13 负面结论的四大物理地板全解析
2026/9/11 5:28:28 网站建设 项目流程

RuView 无线感知研究实录:为什么"用 CSI 无接触测血压"在物理上不可行——R13 负面结论的四大物理地板全解析

【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuView

导读

本文完整梳理 RuView SOTA 研究循环中R13 线程(contactless BP from CSI)的负面结论:通过纯 NumPy 量化分析,证明从 WiFi CSI 信号恢复血压在时间分辨率、空间分辨率、信噪比与成本基线四个维度上均存在不可逾越的物理地板(physics floor),其最终精度比 20 美元的袖带式血压计差 5 倍以上。读完本文,你将掌握 R13 的完整推理链、r13_bp_physics_floor.py的量化复现方法,以及"为什么呼吸率与心率能落地、血压却不能"的物理根因,从而避免在未来重复投入这条注定失败的技术路线。

背景:R13 线程与两种公开的"CSI 测血压"方法

R13 是 RuView SOTA 研究循环(2026-05-22,见 00-summary.md)中的一条专项研究线程,其完整论证记录在 R13-contactless-bp-negative.md,随附的量化脚本与机器可读结果为 r13_bp_physics_floor.py 与 r13_bp_results.json。

研究起点是:学术界确实存在"从 WiFi CSI 无接触测血压"的公开论文(文档列举 Yang 2022、Liu 2021 等),报告的 MAE 约为 ±8-12 mmHg。这些声称并非凭空捏造,但 R13 的物理审视给出的结论是:这些声称要么是 (a) 过度拟合的单人校准、无法泛化,要么是 (b) 依赖量产 ESP32-S3 在典型部署配置下并不具备的硬件能力

公开方法主要分两类:

方法原理关键依赖
方法 A:脉搏传输时间(Pulse Transit Time, PTT)测量脉搏到达两个身体部位(如颈动脉 + 股动脉)的时间差,再通过 Bramwell-Hill / Moens-Korteweg 方程换算为血压两个部位必须可独立观测;毫秒级时间分辨率
方法 B:脉搏轮廓机器学习(Pulse-contour ML)用(PPG 波形 → 袖带血压)配对训练模型,从 CSI 中恢复类似 PPG 的波形,再推断血压需要恢复脉搏波的形状而非仅频率;需逐人校准对抗生理差异

文档明确指出:这两种方法在物理上都"可能"成立,但都有使其劣于袖带血压计的实际地板。RuView 已经上线的呼吸率与心率功能之所以能用,正是因为它们的运动幅度比血压所需的脉搏波形大 30-100 倍——这正是整篇论证的核心直觉。

Floor 1:PTT 的时间分辨率地板——典型 ESP32 部署无法做到低于 20 mmHg

生理学起点

健康成年人的 PTT 约为78.6 ms(颈动脉-股动脉距离 55 cm、脉搏波速 PWV 7 m/s),而血压变化对 PTT 的灵敏度约为0.5 ms/mmHg(Geddes 1981 与文献共识)。据此可以推得目标血压精度与所需 PTT 分辨率的对应表:

目标血压精度所需 PTT 分辨率
1 mmHg0.5 ms
5 mmHg2.5 ms
10 mmHg5.0 ms
20 mmHg10.0 ms

与 CSI 采样能力的对比

将这个需求映射到 ESP32 的 CSI 采样率上,结论立刻变得严峻:

配置CSI 速率时间分辨率可达到的精度
ESP32-S3 最大值(Hernandez 2020)~1000 Hz1.0 ms1 mmHg——仅极限情况下可能
ESP32-S3 典型部署~100 Hz10.0 ms20 mmHg——
ESP32-S3 sensing-server 实际值30-50 Hz20-33 ms40-60 mmHg——无用

也就是说,"ESP32 典型配置"在原理上就无法通过 PTT 达到有临床意义的血压精度。达到 1 mmHg 目标需要将 CSI 推到 1 kHz,这在 ESP32-S3 上可行,但会损害所有其他感知功能——每个窗口的平均次数变少,呼吸、心率、姿态信号都会更嘈杂。这是一个破坏性的权衡,而不是免费的升级。

在 r13_bp_physics_floor.py 中,这一部分由ptt_seconds()ptt_change_per_bp_mmhg()required_ptt_resolution_for_mmhg()三个函数量化实现:脚本以 55 cm 距离、7.0 m/s PWV 计算基线 PTT,以 5e-3/10.0 秒(即 0.5 ms/mmHg)为灵敏度常数,再按目标 mmHg 线性外推所需分辨率。运行脚本输出的关键数值(见 r13_bp_results.json):

Baseline PTT (55 cm body, 7 m/s PWV): 78.6 ms Sensitivity: 0.50 ms / mmHg Required for 1 mmHg precision: 0.50 ms Required for 5 mmHg precision: 2.50 ms Required for 10 mmHg precision: 5.00 ms ESP32 max CSI rate (~1000 Hz): 1.0 ms resolution -- meets 1 mmHg req ESP32 typical (~100 Hz): 10.0 ms resolution -- meets only 20 mmHg

Floor 2:两个身体部位的空间分离地板——菲涅尔包络决定了单链路无法分辨

PTT 的前提是独立解析颈动脉(carotid)与股动脉(femoral)两个脉搏信号。成人解剖学上这两点的距离约为55 cm。而 R6 线程(R6-fresnel-forward-model.md)建立的菲涅尔(Fresnel)前向模型给出了空间分辨率地板——第一菲涅尔区半径:

链路长度中点处第一菲涅尔半径
2 m25 cm
5 m40 cm
10 m56 cm

对于单对 Tx-Rx,要把颈动脉与股动脉解析为独立散射体,两者必须落在彼此的菲涅尔包络之外。而5 m 卧室链路的菲涅尔包络(40 cm)比颈动脉-股动脉间距(55 cm)的一半还宽——两个部位落入同一个窗口,求和后的 CSI 无法被唯一分解为逐部位信号。

脚本中fresnel_radius_m()复用 R6 的公式(sqrt(λ · L · p · (1-p))),sites_resolvable_5m = (0.55/2) > fresnel_envelope_5m判定的结果是false(5 m 链路不可分辨);即使在更短的 2 m 链路上,判定结果也仅勉强为true,且需受试者位于两天线之间的共面位置。多锚点(multistatic)理论上可以反演空间混叠,但 4-6 个实际可部署锚点的反演问题是**严重病态(ill-posed)**的——R12 已经证明,这类结构反演问题恰恰是朴素方法失败的典型场景(见 R12-pabs-implementation.md)。

结论:从 CSI 做 PTT 要么需要异常短的链路(< 1.5 m,且受试者位于两个共面天线之间),要么需要带定制前向算子的非平凡多站阵列——两者都不匹配 RuView 的典型房间部署。

Floor 3:脉搏轮廓恢复的信噪比地板——差 5 dB,形状就是恢复不出来

对于方法 B(轮廓 ML),需要恢复的是脉搏波形的形状,而不只是频率。以 2.4 GHz 每个毫米约 2.88° 的相位变化(脚本常量PHASE_DEG_PER_MM_2_4 = 360/(0.125*1000),往返路径近似 2×),各信号源的相位变化为:

信号源幅度CSI 相位变化
胸部呼吸(潮气量)8 mm46°
心率心冲击图(ballistocardiographic)0.3 mm1.7°
受试者"静止"微运动2 mm11.5°

胸部呼吸运动比脉搏运动大约 27 倍。使用 4 阶 Butterworth 带通(心率带 0.8-3.0 Hz,抑制 0.1-0.4 Hz 呼吸)可提供约 40 dB 的呼吸抑制,将心率带 SNR 提升到呼吸残差之上约 20 dB。但问题在于:受试者微运动(2 mm 幅度)会渗入心率带——大多数"静止"的受试者仍会因姿势调整、说话、吞咽产生 1-3 Hz 的微运动,它比脉搏信号大约 7 倍,且与脉搏共享同一频带。因此,一个"静止但非不动"的真实受试者的心率带 SNR 只有+20 dB

而脉搏轮廓形状恢复的文献共识(Mukkamala 2015)要求+25 dB 最低——我们差了 5 dB。心率(rate)可以恢复(这已经是 RuView 已上线的功能),但波形形状(shape)恢复不出来。

脚本的 SNR 计算(见r13_bp_results.json)给出了精确值:

breath_phase_deg: 46.08 pulse_phase_deg: 1.728 motion_phase_deg: 11.52 breath_vs_pulse_amp_ratio: 26.67x hr_band_snr_db: 20.0 bp_contour_required_snr_db: 25.0 bp_contour_feasibility: INFEASIBLE

结论:对真实受试者,基于胸部 CSI 的轮廓血压不可行已发表的"成功"案例要么是在 SNR 干净(25+ dB)的实验室静止受试者上测得(家庭部署不现实),要么是过拟合的逐人 ML 模型、毫无泛化能力。这里值得一提的是,R6.1 多散射体前向模型发现的 4.7 dB 多散射体惩罚与 R13 的 5 dB 缺口在数值上高度吻合(见 00-summary.md 的组合发现),说明这一缺口并非孤立的估算误差。

Floor 4:与 20 美元袖带血压计的对比——精度差 5 倍,便利性无收益

设备精度价格延迟校准
上臂袖带(BIHS Grade A)±2 mmHg$2030 s
腕式袖带(消费级)±5 mmHg$3060 s
已发表的最佳 CSI 血压(Yang 2022)±10 mmHgn/a30 s逐人
RuView CSI(假设性)±10-15 mmHg$9(ESP32)30 s逐人

结论非常直接:CSI 血压比 20 美元的上臂袖带差 5-7 倍,要求逐人校准,而且在时间与便利性上相比腕式袖带没有任何节省。"无接触"的好处是真实的,但它不足以抵消精度差距。脚本中这一部分以cuff_accuracy_mmhg = 2.0published_csi_bp_mae_mmhg = 10.0计算,输出的ratio_worse = 5.0,即"最佳已发表 CSI 血压也比袖带差 5 倍"。

量化复现:如何运行 R13 物理地板脚本

R13 的论证不是空谈,而是可复现的纯 NumPy 量化。脚本位于 r13_bp_physics_floor.py,不依赖任何工作区内的其他模块,可独立运行:

python examples/research-sota/07-negative-results/r13_bp_physics_floor.py

脚本内部的主要常量(即整套论证的输入假设):

常量含义
PWV_HEALTHY_ADULT_MPS7.0健康成人脉搏波速(文献中位数 5-10 m/s)
CAROTID_FEMORAL_DIST_M0.55颈动脉-股动脉典型解剖距离
CHEST_BREATHING_AMPLITUDE_MM8.0静息潮气量下胸部呼吸幅度
CHEST_HR_AMPLITUDE_MM0.3心冲击图胸部运动幅度(Inan 2015)
MOTION_NOISE_AMPLITUDE_MM2.0"静止"但非不动的受试者微运动
RESPIRATION_HZ/HR_HZ0.25 / 1.215 BPM 呼吸、72 BPM 心率
WAVELENGTH_2_4GHZ_M0.1252.4 GHz 波长,换算相位灵敏度 ~2.88°/mm

脚本按四个部分输出(与本文四大地板一一对应):PTT 时间分辨率需求、菲涅尔空间分辨率、逐运动相位变化与轮廓恢复 SNR、以及 vs 袖带基线。输出 JSON 默认写入examples/research-sota/r13_bp_results.json,可用--out参数重定向。完整结果可见 r13_bp_results.json,其中bp_contour_feasibility字段明确为INFEASIBLE

对 ADR-029 与 sensing-server 的产品决策含义

R13 的结论直接写进了 RuView 的产品路线图:不要把血压作为功能加入。添加它会带来四个问题:

  1. 迫使 CSI 速率升至 1 kHz,从而损害每一条其他感知管线;
  2. 需要逐人校准的用户体验,破坏"零设置"的部署故事;
  3. 引入一个被证明比用户可花 20 美元买到的设备更差的功能;
  4. 通过关联效应侵蚀那些确实有效的功能(呼吸、心率、运动、占用)的可信度。

同样的论证适用于其他低 SNR 连续生理信号:血糖(CSI 无可信的物理签名)、血氧 SpO₂(运动幅度约 0)、动脉僵硬度(需要 PTT,与血压共享同一地板)。RuView 应当坚守运动幅度足够大的信号:呼吸(8 mm)、粗粒度心率(0.3 mm + 1 Hz 频谱隔离)、姿态/姿势/占用。

R13 对 R14 设计选择的确认

R14(共情家电,R14-empathic-appliances.md)在规划阶段就明确假设血压不可用——其 V1/V2/V3 纵向场景(压力响应灯光、自适应 HVAC、注意状态感知家电)只依赖呼吸率 + 心率 + 运动强度。R13 的物理审视正好确认了这一假设的正确性:R14 依赖的三个信号全部满足物理地板要求,而血压不在其中。

负面空间中仍未关闭的三个缺口场景

虽然"房间角落 9 美元 ESP32 测血压"这一通用声称不成立,R13 也诚实列出了三个可能在未来闭合的 niche 场景:

  1. 单人趋势监测(相对而非绝对)——"此人的呼吸已持续不规律、心率变异性下降",这类预医疗事件检测不需要血压,只需速率与变异性特征,即 RuView 已上线的功能;
  2. 床载仪表化(bed-instrumented)静止受试者——床架上的 ESP32,受试者平躺静止,可达到 25+ dB SNR,属于假设中cog-bedside的范围而非房间级感知;
  3. 多站脉搏波速(PWV)——需要多个 Tx-Rx 锚点 + 已知解剖模型,要求逐安装校准与约 6 个锚点,可行但昂贵,不是消费级功能。

为什么负面结果是研究循环中最有价值的一类 tick

一个只发表成功的研究循环会系统性地偏向夸大(overclaiming)。R13 与 R12(eigenshift)构成了本循环的两个显式负面结果,且遵循同一失败模式:一个听起来合理的 ML 方法失败,是因为底层信号并未压过噪声/漂移地板

  • R12 eigenshift:朴素 SVD 谱方法失败,因为信号不主导漂移地板(信号/漂移比 0.69×);
  • R13 contactless BP:已发表方法需要不切实际的 SNR 与空间分辨率。

两条线程都留有明确的后续路径(R12 → 基于 R6 菲涅尔基的 PABS;R13 → 床载cog-bedsideniche、6+ 锚点多站 PWV)。R13 文档的原话值得引用:"一个研究循环能为领域做的最诚实的事,就是用明确的数字把 BP-from-CSI 标记为路线图外,让未来的贡献者不再浪费时间尝试。这份审视 + R12 eigenshift 审视 = 本循环的两个负面结果,两者都比又一个边际正向结果更有价值。"(来源:R13-contactless-bp-negative.md)

与既有研究线程的组合关系

R13 不是孤立的结论,它与其他线程的物理模型互为印证:

  • R1(ToA CRLB):确认了 PTT 的时间分辨率地板——0.5 ms 的目标低于 20 MHz HT20 单次 CRLB(无限 SNR 下约 14 ns,但实践中 >5 ms),证实 PTT-from-WiFi 受制于平均窗口长度;
  • R6(菲涅尔前向模型):提供了击败双部位 PTT 的空间分辨率地板——"R6 解释了为什么这不可行"的最干净案例;
  • R5(显著性):带扩展占用解释了为什么整个胸部运动在整个频带上可观测,而从 8 mm 呼吸信号中隔离 0.3 mm 脉搏信号需要时域带通滤波而非空间显著性;
  • R12(eigenshift,同为负面):循环中的另一个负面结果,同一失败模式——信号不主导噪声/漂移地板;
  • R14(共情家电):确认了 R14 只依赖呼吸率 + 心率、不含血压的设计选择。

审视自身的诚实范围(Honest Scope)

R13 文档对其结论的适用边界做了四点明确的自我限定,引用这些限定对于准确理解结论至关重要:

  1. 四个地板数字均为最佳情况——真实部署会使每一项再恶化 2-5 倍;
  2. 25 dB 轮廓形状需求来自 PPG 文献——WiFi CSI 因其噪声模型不同于光学传感器,可能需要更多dB,因此 20 dB 缺口是缺口的下限而非紧致估计;
  3. 未直接验证已发表的 BP 声称——仓库中没有带标签的 BP 数据集,这份审视纯粹是物理地板分析,不是经验复现;
  4. 802.11be EHT320 超宽信道即使普及,改善的是带宽预算,而空间地板由载波波长而非带宽决定——空间问题不会因此消失。

结语:把"不能做"也当作可交付物

R13 是 RuView SOTA 循环方法论的一次示范:物理地板是可以被量化的,负面结论是可以被归档为路线图决策的。完整的论证文档在 R13-contactless-bp-negative.md,tick 级记录在 tick-11.md(分支research/sota-r13-contactless-bp-negative),量化脚本与结果在 examples/research-sota/07-negative-results/。任何未来想要再次尝试 BP-from-CSI 的贡献者,都可以直接拿到这份带数字的审视,而无需重新推导——这正是诚实研究对领域最有价值的产出。

【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuView

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询