WiFi CSI 空间感知:利用信道状态信息实现无摄像头生命体征监测
在计算机视觉领域追求更高分辨率、更多模态融合的同时,另一条截然不同的感知路径正在悄然成熟:利用商用 WiFi 信号中的信道状态信息(Channel State Information, CSI)实现人体检测、姿态估计与生命体征监测。整个系统不需要摄像头、不需要可穿戴设备,仅凭几个价值 9 美元的 ESP32-S3 芯片就能穿透墙壁感知人的存在、呼吸甚至心跳。
CSI 相位信息的物理本质
理解 WiFi 感知的第一步,是认识到 WiFi 路由器发出的无线电波本身就是一种「免费雷达」。当一个人走进 WiFi 信号的覆盖区域,他的身体会对电磁波产生散射、反射与折射,这些扰动会以特定方式改变接收端测得的信道响应。
现代 WiFi 设备广泛支持 802.11n/ac 协议,该协议要求 AP 和客户端交换包含信道探测序列的数据包,并在接收端计算每个子载波的复数增益 —— 这便是 CSI 的本质。一个典型的 20MHz WiFi 信道包含 56 个数据子载波(另有 4 个导频子载波),每个子载波的 CSI 是一个复数:$H_i = |H_i|e^{j\phi_i}$,包含幅度与相位两个维度。
关键在于:相位信息对物体运动极其敏感。当一个人移动 1 厘米时,5GHz WiFi 信号的相位变化可达数十度,而幅度变化往往只有零点几个分贝。RuView 系统正是利用这一特性,通过 ESP32-S3 的 Nexmon CSI 固件提取 56 个子载波的完整 CSI,随后在软件层面进行相位解缠、噪声滤除与特征提取。
信号处理流水线:从原始采样到结构化特征
RuView 的信号处理流水线遵循「滤波→解卷→特征提取→融合」四个阶段,每个阶段都有明确的工程目标。
第一阶段:一致性门控(Coherence Gate)。原始 CSI 数据包含大量环境噪声 —— 家具移动、温度变化、其他 WiFi 设备干扰都会污染信号。一致性门控通过计算相邻采样之间的相位差方差,识别「稳定」与「不稳定」的测量时刻。只有通过一致性检验的 CSI 帧才会进入后续处理,其余被标记为 Reject 或 Recalibrate。这一步骤将有效数据量降低约 40%,但信噪比提升显著。
第二阶段:子载波融合与多链路聚合。单个 WiFi 链路的 56 个子载波提供了空间采样能力,但真正强化的感知来自多节点组网。RuView 支持在频道 1、6、11 三个非重叠信道上同时采集 CSI,3×56=168 个虚拟子载波的融合大幅提升了空间分辨率。多节点场景下,N 个 ESP32 设备形成 N×(N-1) 条链路集合,通过注意力加权机制为每条链路分配动态权重 —— 距离目标更近、信噪比更高的链路获得更高权重。最终,每个时刻生成一个统一的高维特征向量。
第三阶段:专用特征提取器。针对不同感知任务,RuView 部署了并行的专用算法:呼吸检测使用 0.1-0.5Hz 带通滤波器配合过零计数 BPM 算法,覆盖 6-30 次 / 分钟范围;心率检测切换到 0.8-2.0Hz 频段,覆盖 40-120 次 / 分钟;姿态估计则进入时频域,使用短时傅里叶变换生成频谱图后送入卷积网络。关键设计决策是这些特征提取器全部可以在 ESP32-S3 本地执行,延迟控制在毫秒级。
穿墙感知:菲涅尔区建模与多径分离
实现穿墙感知的物理基础是菲涅尔区理论。当 WiFi 信号绕过障碍物时,其传播路径等效于以发射端和接收端为焦点的椭球面族,这些椭球面与障碍物平面相交所形成的环形区域即为菲涅尔区。第一菲涅尔区($n=1$)的半径计算公式为:
$$r_n = \sqrt{\frac{n\lambda d_1 d_2}{d_1 + d_2}}$$
其中 $\lambda$ 为信号波长(约 12.5cm 对于 5GHz),$d_1$ 和 $d_2$ 分别为发射端到目标与目标到接收端的距离。当人体位于第一菲涅尔区内时,对信号的扰动最为显著;位于第二菲涅尔区时扰动减弱但仍可检测;超过第三菲涅尔区后信号几乎不受影响。
RuView 利用这一理论建模感知区域的深度与边界。实测数据显示,在普通砖墙条件下,系统可稳定检测约 5 米深度范围内的人体存在。更深距离需要依赖多节点协同或利用邻居 WiFi 路由器作为「免费照射源」—— 这些第三方 AP 本身就在持续发射 WiFi 信号,正好作为被动雷达的照明。
多径效应是穿墙感知的另一挑战。电磁波在室内传播时会经过墙壁、地板、天花板多次反射,在接收端叠加成复杂的多径信号。RuView 采用 SpotFi 算法的改进版本,通过多子载波相位差的线性回归估计实际到达角(AoA),结合多链路 TDOA 信息实现多径分离与直达径估计。
边缘智能:60 个 WASM 模块的分布式感知逻辑
RuView 最引人注目的工程实践之一,是将完整的感知逻辑压缩到可以在 ESP32-S3 上运行的 WASM 模块中。系统目前提供 60 个已实现的模块,涵盖医疗、安全、建筑、零售、工业等 13 个领域,每个模块 5-30KB,全部使用 no_std Rust 编写。
这些模块并非简单的函数,而是完整的感知逻辑单元。例如med_sleep_apnea.rs实现了睡眠呼吸暂停检测的状态机 —— 从正常呼吸到低通气再到中枢性暂停都有对应的判决逻辑;sec_perimeter_breach.rs通过时序分析区分「路过」与「入侵」,同时检测接近与离开的方向;lrn_dtw_gesture_learn.rs实现了用户可教导的手势识别,用户在设备前重复某个动作 3 次,模块自动建立 DTW 模板供后续匹配。
模块间通过统一的 12 函数 API 与主机通信,包括数据输入(read_csi、read_vitals)、状态查询(get_zone、get_count)与控制指令(set_threshold、reset_history)。这种设计使得模块可以独立更新、动态加载,系统功能在部署后仍可扩展。
隐私合规:结构性无摄像头带来的监管豁免
从工程角度选择 WiFi 感知而非摄像头,隐私合规是一个重要考量,但这并非主观判断而是结构性事实:整个系统运行在无线电射频层面,物理上不可能采集任何像素级图像数据。
GDPR 第 9 条将生物特征数据列为特殊类别数据, 处理需满足严格的条件;HIPAA 对包含图像的医疗数据有明确的留存与加密要求。WiFi CSI 数据不属于生物特征范畴 —— 它测量的是无线信号扰动,而非指纹、面部或声纹。这意味着部署在养老院、酒店客房、医院病房等敏感场所时,RuView 可以避免大量合规文档与审批流程。
当然,这并不意味着数据可以随意处理 —— 人员在场与否本身就构成个人数据,系统仍需遵循数据最小化原则与存储期限限制。但在实现路径上,「不需要采集图像」本身就是最彻底的数据保护。
资料来源:GitHub ruvnet/RuView (https://github.com/ruvnet/RuView)
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。