目录

WiFi 空间智能:RuView 如何用 WiFi 信号实现人体感知

WiFi 空间智能:RuView 如何用 WiFi 信号实现人体感知

想象一个不再需要摄像头的世界——在这个世界里,你能感知房间里是否有人,能测量呼吸频率和心率,能追踪人在空间中的移动,甚至能隔墙探测生命迹象。这一切,只需要你家中已有的 WiFi 路由器。

RuViewhttps://github.com/ruvnet/RuView)正是这样一个项目。它将普通的 WiFi 信号转化为实时空间智能,主要能力包括:

  • 存在感知:检测人员在场、计数、追踪出入
  • 生命体征:无接触式呼吸频率与心率监测
  • 活动识别:行走、坐卧、手势、跌倒检测
  • 穿墙感知:通过 F Fresnel 区几何建模实现 5 米深度穿墙

该项目在 GitHub 上已获得约 55,000 颗星,以 Rust 语言编写,基于 RuVector 和 Cognitum Seed 构建,完全运行在边缘硬件上——不需要云端,不需要摄像头,不需要互联网连接。

1. 原理:WiFi 信号如何"看见"人

WiFi 感知的基础是 CSI(Channel State Information,信道状态信息)。当你使用 WiFi 时,数据以无线电波的形式在路由器和设备之间传输。当有人移动、甚至是呼吸时,他们的身体会散射和吸收这些无线电波,导致信号发生变化。CSI 正是对这些变化的高精度测量。

1.1 从 RSSI 到 CSI

传统的 WiFi 设备只使用 RSSI(Received Signal Strength Indicator,接收信号强度指示器)——这是一个粗粒度的信号强度值,只能告诉你"信号强还是弱"。CSI 则提供了细粒度的信息:当信号从发射器传播到接收器时,它会经过多条路径(直射、反射、散射),CSI 记录了每条路径上信号的振幅和相位变化。

现代 ESP32-S3 芯片可以采集每条 WiFi 链路上 56 个子载波的 CSI 数据。一个包含 N 个节点的 mesh 网络可以产生 N×(N-1) 条链路,每条链路 56 个子载波,加上多频段融合(3 个频道 × 56 个子载波 = 168 个虚拟子载波),系统获得了远高于单点 RSSI 的空间分辨率。

1.2 信号处理流程

RuView 的信号处理链路如下:

WiFi 路由器 → 无线电波穿过房间 → 遇到人体 → 信号散射
     ↓
ESP32 mesh(4-6 个节点)在频道 1/6/11 上通过 TDM 协议捕获 CSI
     ↓
多频段融合:3 频道 × 56 子载波 = 168 虚拟子载波/链路
     ↓
多静态融合:N×(N-1) 条链路 → 注意力加权跨视角嵌入
     ↓
相干门(Coherence Gate):接受/拒绝测量 → 可稳定工作数天而无需调参
     ↓
信号处理:Hampel 滤波、SpotFi、Fresnel、BVP、频谱图 → 清洁特征
     ↓
AI 骨干(RuVector):注意力机制、图算法、压缩、场模型
     ↓
Signal-Line 协议(CRV):6 阶段 gestalt → 感知 → 拓扑 → 相干 → 搜索 → 模型
     ↓
神经网络:处理后的信号 → 17 个身体关键点 + 生命体征 + 房间模型
     ↓
输出:实时姿态、呼吸、心率、房间指纹、漂移告警

关键处理环节包括:

  • Hampel 滤波:去除异常值
  • SpotFi:消除多径干扰
  • Fresnel 建模:几何分析穿墙能力
  • BVP(Blood Volume Pulse)提取:从 CSI 信号中分离心率成分
  • 频谱图分析:识别呼吸频率(0.1-0.5 Hz)和心率(0.8-2.0 Hz)

1.3 无需摄像头的自学习系统

RuView 的训练不需要摄像头。Self-Learning 系统(ADR-024)从原始 WiFi 数据中自举学习,无需任何标注数据。MERIDIAN(ADR-027)确保模型在任何房间中都能工作,而不仅仅是在训练环境中。

2. 系统架构

2.1 硬件层级

RuView 支持多种硬件配置,从零成本到完整系统:

方案硬件成本全 CSI能力
ESP32 + Cognitum Seed(推荐)ESP32-S3 + Cognitum Seed~$140姿态、呼吸、心率、运动、存在感知 + 持久向量存储、kNN 搜索、见证链、MCP 代理
ESP32 Mesh3-6 个 ESP32-S3 + WiFi 路由器~$54姿态、呼吸、心率、运动、存在感知
Research NICIntel 5300 / Atheros AR9580~$50-1003×3 MIMO 完整 CSI
任意 WiFi 设备Windows、macOS 或 Linux 笔记本$0仅 RSSI:粗粒度存在和运动检测

2.2 软件架构

RuView 用 Rust 编写,关键组件包括:

  • wifi-densepose-ruvector:AI 骨干,基于注意力机制的图神经网络
  • wifi-densepose-wasm-edge:60 个边缘 WASM 模块,编译为 wasm32-unknown-unknown,在 ESP32-S3 上通过 WASM3 运行
  • ESP32 固件:CSI 采集、边缘推理、无线通信

边缘模块采用 no_std Rust 编写,通过 12 个函数组成的 API 与主机通信,每个模块 5-30 KB,支持 OTA 上传。

2.3 关键设计决策

RuView 采用了几个重要的架构决策:

无摄像头训练:原始 DensePose From WiFi 研究来自卡内基梅隆大学,证明了可以使用 10 个传感器信号(无任何标签)训练 17 个 COCO 关键点的姿态估计模型。

密码学见证链:每条测量都通过 Ed25519 进行密码学见证,确保数据完整性和不可否认性。

本地学习:尖峰神经网络(SNN)可在 30 秒内适应新环境,学习完全在本地进行,不依赖云端。

多频段 mesh 扫描:跨越 6 个 WiFi 频道的动态跳频,将邻居路由器作为"免费雷达照射源",3 倍感知带宽。

3. 安装与快速开始

3.1 Docker 体验(无需硬件)

没有任何硬件?先用 Docker 运行模拟数据评估整个信号处理流水线:

docker pull ruvnet/wifi-densepose:latest
docker run -p 3000:3000 ruvnet/wifi-densepose:latest
# 打开 http://localhost:3000

验证确定性参考信号(无需硬件):

python archive/v1/data/proof/verify.py

3.2 ESP32-S3 实时感知

第一步:烧录固件

python -m esptool --chip esp32s3 --port COM9 --baud 460800 \
  write_flash 0x0 bootloader.bin 0x8000 partition-table.bin \
  0xf000 ota_data_initial.bin 0x20000 esp32-csi-node.bin

第二步:配置网络

python firmware/esp32-csi-node/provision.py --port COM9 \
  --ssid "YourWiFi" --password "secret" --target-ip 192.168.1.20

第三步:运行感知服务器

# 实时 RF 房间扫描
node scripts/rf-scan.js --port 5006

# SNN 实时学习
node scripts/snn-csi-processor.js --port 5006

# Mincut 正确计数人员
node scripts/mincut-person-counter.js --port 5006

3.3 完整系统(ESP32 + Cognitum Seed)

ESP32 流式传输 CSI → 网桥转发到 Seed → 持久存储 + kNN 搜索 + 见证链:

# 运行感知服务器
python -m sensing.server --port 5006

# 打开实时观测台
# https://ruvnet.github.io/RuView/

连接 ESP32-S3 节点后,打开 姿态融合演示,可实现实时双模态姿态估计(网络摄像头 + WiFi CSI)。详细说明参见 ADR-059

4. 各功能拆解

4.1 呼吸与心率监测

呼吸检测使用带通滤波(0.1-0.5 Hz)加上零交叉 BPM 算法,范围 6-30 BPM。心率检测使用带通滤波(0.8-2.0 Hz),范围 40-120 BPM。

这两种检测都是完全无接触的——人不需要佩戴任何设备,也不需要面对传感器。这使得它在养老院看护、医院非危重病人监测、睡眠监测等场景中具有独特优势。

4.2 姿态估计

RuView 支持 17 个 COCO 关键点的姿态估计。技术规格:

  • 无摄像头训练:PCK@20 ≈ 2.5%(使用代理标签)
  • 有摄像头监督训练:目标是 35%+ PCK@20(ADR-079,数据采集和评估阶段仍在进行中)
  • M4 Pro 上的处理速度:171K emb/s

姿态估计的工作流程:CSI 子载波振幅/相位 → 神经网络 → 17 个身体关键点。

4.3 存在感知

使用训练模型 + PIR 融合,准确率接近 100%,延迟仅 0.012 ms。这使得它可以作为智能建筑自动化系统的精准触发器——比传统 PIR 传感器更可靠,且不受光照条件影响。

4.4 穿墙感知

通过 Fresnel 区几何建模和多径建模实现,最远可达 5 米深度。这使其适用于搜救(通过废墟探测幸存者)、安防(隔墙检测入侵)和医疗(监测病房中的病人活动)。

4.5 边缘智能

边缘模块是直接运行在 ESP32 上的小程序——无需互联网、无云费用、即时响应。截至目前已实现 60 个模块,分布在 13 个类别中,通过 609 个测试:

类别模块数示例
🏥 医疗健康8睡眠呼吸暂停、心律失常、步态分析
🔐 安防8入侵检测、周界入侵、逗留检测
🏢 智能建筑7区域占用、HVAC 控制、电梯计数
🛒 零售服务7队列长度、停留热力图、客流统计
🏭 工业7叉车接近、密闭空间、结构振动
🔮 特殊研究6睡眠分期、情绪检测、手语
📡 信号智能6闪光注意力、相干门、时间压缩
🧠 自适应学习4DTW 手势学习、异常吸引子、EWC 终身学习
🗺️ 空间推理5PageRank 影响力、微型 HNSW
⏱️ 时序分析3日常规律、异常检测、规则验证
🛡️ AI 安全3信号重放攻击检测、WiFi 干扰
⚛️ 量子启发3相干性映射、最优传感器配置
🤖 自主与特殊4自愈 mesh、自主规划

5. 技术限制与已知问题

项目文档明确列出了以下限制:

  • ESP32-C3 和原始 ESP32 不支持:因为它们是单核,不足以完成 CSI DSP 处理
  • 单节点部署空间分辨率有限:建议使用 2+ 个节点,或添加 Cognitum Seed 以获得最佳效果
  • 无摄像头姿态精度有限:PCK@20 ≈ 2.5%(代理标签),有摄像头监督训练的目标是 35%+ PCK@20,但评估阶段(ADR-079 P7-P9)仍在进行中,尚未发布实际测量结果

6. 应用场景

6.1 医疗健康

  • 养老院/辅助生活:跌倒检测、睡眠时呼吸监测,无需可穿戴设备合规问题
  • 医院非危重病人监测:床位持续呼吸和心率监测,无需有线传感器;异常时护士告警
  • 急救室分诊:自动计数和等待时间估计;检测等待区病人的异常呼吸(痛苦指标)

6.2 智能建筑

  • 办公空间利用率:哪些办公桌/房间实际被占用;会议室未使用检测;基于真实存在感的 HVAC 优化
  • 酒店:无需门传感器即可知道房间占用情况;迷你吧/浴室使用模式;空房节能
  • 会议室:无人使用时自动关闭灯光和空调

6.3 零售与公共场所

  • 零售客流与流动:实时人流、区域停留时间、队列长度——无摄像头、无 opt-in、GDPR 友好
  • 餐厅翻台率追踪:无需餐厅区域摄像头即可追踪餐桌周转、厨房人员、洗手间占用
  • 公共厕所占用:在摄像头不可能部署的环境中实现实时占用检测

6.4 极端场景

  • 搜救:通过废墟检测呼吸签名;START 分诊颜色分类;3D 定位(WiFi-Mat 灾难模块,ADR-001)
  • 消防:进入前通过烟雾和墙壁定位 occupants;呼吸检测远程确认生命迹象
  • 穿墙安防:检测墙体后方人员;清理房间确认;人质生命体征远程监测

7. RuView 和传统方案的差异

7.1 对比传统方案

WiFi 感知优势传统替代方案
🔒无视频、无 GDPR/HIPAA 成像规定摄像头需要同意、标识、数据保留政策
🧱可穿墙、穿过货架和杂物摄像头需要每个房间的视线
🌙可在完全黑暗中工作摄像头需要红外或可见光
💰$0-$8/区域(现有 WiFi 或 ESP32)摄像头系统:$200-$2,000/区域
🔌WiFi 已无处不在部署PIR/雷达传感器需要每个房间新布线

7.2 技术层面

  • 完全本地运行:数据不上云,适合隐私敏感场景
  • 边缘模块:60 个 WASM 模块,支持本地决策,响应时间 <10 ms
  • 自适应:无需标签,在 30 秒内适应新环境
  • 开源:MIT 许可证,代码完全开放可审查

8. 总结

RuView 走的是另一条路:利用 WiFi 信号做 CSI 分析和机器学习,完成原本需要摄像头或专用传感器才能完成的功能。在隐私敏感场景、穿墙感知、黑暗环境等传统方案受限的领域,它有独特优势。

随着 ESP32-S3 等低成本硬件普及,部署 WiFi 感知系统的门槛已大幅降低。从养老院看护到智能建筑,从零售分析到搜救场景,WiFi 空间智能正在打开新的可能性。

想试 WiFi 感知的话,从 Docker 模拟环境开始,再逐步引入 ESP32 硬件。项目文档中的 ADR(Architecture Decision Records)详细记录了每个设计决策的背景和考量,是深入理解系统设计的好资源。

项目地址:https://github.com/ruvnet/RuView
官方演示:https://ruvnet.github.io/RuView/
Cognitum Seed:https://cognitum.one