无需硬件和摄像头:用 WiFi 追踪人体姿态,3 分钟上手 RuView 快速指南
【免费下载链接】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 能把家里本来就有的 WiFi 信号变成一套无摄像头的人体追踪传感器:检测在不在家、数人在不在场、量呼吸和心率,全程不装一个摄像头。不碰任何硬件,3 分钟就能用一条 Docker 命令跑通完整的感知流程;要真实穿墙感知,只需要一块 9 美元左右的 ESP32 开发板。
RuView 是什么,该不该用
它定位是一个 WiFi 感知平台:用CSI(信道状态信息,Channel State Information,可理解为 WiFi 链路在每根"子天线"上测到的幅度和相位读数)替代摄像头,输出存在检测、生命体征、活动识别和无摄像头姿态估计。
- ✅ 适合:想在卧室、浴室、医院病房这类"摄像头不能进"的地方做存在与体征监测,或做射频感知研究的人
- ❌ 不适合:期望开箱即用的高精度姿态产品——项目自述 17 关键点姿态的公开最强数字是 MM-Fi 基准上的 82.69% torso-PCK@20,而设备端实时模型仍是一版初稿(3.0% PCK@20,未达标),README 里标注得很诚实
- ❌ 不适合:拿普通笔记本 WiFi 做姿态——消费级网卡只有 RSSI(每个路由器一个信号强度数字),只能做粗糙的存在检测
背后怎么运作:WiFi 信号如何变成人体追踪
类比一下:你闭眼站在黑屋里,靠回声判断房间里有人站着还是躺着。WiFi 就是这间屋子的"回声",人连呼吸都会让回声产生微小变化,RuView 做的事就是把回声读细。
1️⃣ 路由器的射频充满房间,人走动甚至胸腔起伏都会扰动波场 2️⃣ ESP32 节点在 1/6/11 信道上记录 56 根子载波的幅度和相位(即 CSI),以二进制帧推到 UDP 5005 端口 3️⃣ 多频融合 + 信号清洗(Hampel、SpotFi、Fresnel 等)把环境噪声、多径干扰滤掉 4️⃣ 神经网络把干净特征映射为 17 个身体关键点、呼吸率(0.1–0.5 Hz 频带,6–30 BPM)和心率(0.8–2.0 Hz,40–120 BPM),经 REST API 和 WebSocket 对外输出
关键名词 · CSI:WiFi 信号经过多径传播后,在每根子载波上测到的复数响应。它比 RSSI 细几个数量级(RSSI 是 1 个数,CSI 是每帧 56+ 个复数值),这正是"能看姿态"和"只能看有没有人"的分界线。
架构总览:WiFi 发射 → 人体反射扰动波场 → 接收端提取 CSI 特征 → 模态转换网络输出人体姿态
选条路上手:免硬件体验与源码编译
先做个三问自检:
- 只是想看看"WiFi 感知"长什么样,没有 ESP32?→ 路线 A
- 手上有 ESP32-S3,想跑真实信号?→ 路线 A + 一条环境变量
- 要改信号处理、写自己的 Rust 服务或做模型训练?→ 路线 B
路线 A:3 分钟 Docker 体验(前提:装了 Docker 20+,无需任何硬件)
docker pull ruvnet/wifi-densepose:latest docker run -p 3000:3000 -p 3001:3001 ruvnet/wifi-densepose:latest打开浏览器访问http://localhost:3000,默认进入模拟模式(合成 CSI),能看到 3D 骨架、相位图和体征面板。用curl http://localhost:3000/health确认返回{"status":"ok","source":"simulated",...}即链路正常。
实时界面:左侧为 WiFi 信号还原的姿态骨架,右侧为呼吸与心率面板
已有 ESP32-S3 时,只需加环境变量和 UDP 端口映射:docker run -e CSI_SOURCE=esp32 -p 3000:3000 -p 5005:5005/udp ruvnet/wifi-densepose:latest。
路线 B:源码深入(前提:Rust 1.70+,推荐 1.85+)
git clone https://gitcode.com/GitHub_Trending/wi/RuView cd RuView/v2 cargo build --release编译产物在target/release/sensing-server,用./target/release/sensing-server --source simulate --http-port 3000 --ws-port 3001即可启动;跑cargo test --workspace --no-default-features验证工作区。没有硬件时也可以用python archive/v1/data/proof/verify.py回放确定性参考信号,校验信号处理管线。
真正生效的配置:五个场景参数
| 场景 | 关键参数 | 为什么这么设 |
|---|---|---|
| 无硬件体验 | CSI_SOURCE=simulated(Docker 默认auto会回落到模拟) | 合成 CSI 数据跑完整管线,验证部署 |
| ESP32 真实感知 | --source esp32 --udp-port 5005 | 节点固定以二进制帧流到 UDP 5005,端口不可改口 |
| 多人计数不准 | POST /api/v1/config/dedup-factor(默认 3.0) | 多人计数的去重因子,运行时可调,无需重启 |
| 房间校准 | wifi-densepose calibrate,默认 30 s、硬门槛 600 帧 | 空房间基线不足 600 帧直接失败,没有降级基线 |
| 体征数值飘 | curl -X POST http://localhost:3000/api/v1/adaptive/train | 为当前环境训练自适应分类器,压住漂移 |
校准有固定的三步顺序:calibrate(空房间基线)→enroll(8 个引导锚点,约 4 分钟)→train-room,前一步的文件是后一步的输入,无法跳步。细节都在 校准指南 里,包括每个锚点的质量门限。
基础用法之外:三个不寻常的场景
大众印象里 WiFi 只是"上网的工具",但这套系统把它当成"覆盖全房间的传感器阵列":
- 睡眠呼吸暂停筛查:仓库带 睡眠示例 和
sleep-apnea边缘模块,靠夜间呼吸在 0.1–0.5 Hz 频带的周期性变化工作——不用贴电极,也不用摄像头对着熟睡的人 - 烟雾与废墟下的人道感知:
wifi-densepose-matcrate(WiFi-Mat 灾变检测模块)专攻这一档——摄像头和红外在浓烟里都瞎了,而 WiFi 能穿透烟尘探测呼吸特征 - 零售客流:
customer-flow、dwell-heatmap等模块统计进出人数与停留热区,全程无视频,天然规避视频类隐私合规问题
同一套感知服务同时输出姿态骨架与呼吸/心率,这也是睡眠监测、久坐告警等上层场景的基础
最容易踩的坑:五个"现象→原因→解法"
- 体征面板显示 0 BPM→ 你大概率跑在 RSSI-only 模式(分辨率不够),或平滑管线还没热完 → 生命体征必须走 CSI 硬件(ESP32 或研究级网卡);真实 ESP32 数据也要约 5 秒稳定
- 呼吸/心率数值乱跳→ 被测者大幅移动会淹没体征振荡,或信号质量差 → 先
POST /api/v1/adaptive/train训练自适应分类器,再看/api/v1/sensing/latest里的signal_quality,低于 0.4 说明该挪位置 - 3000 端口 Connection refused→ docker 启动时没做端口映射 → 补上
-p 3000:3000 -p 3001:3001,3001 是 WebSocket 端口,漏掉会导致 UI 有画面没数据 - ESP32 烧录后没有数据→ 老固件默认没开 CSI、
target-ip没指向服务器、或 UDP 5005 被防火墙拦 → 固件升到 v0.4.1+,重跑python firmware/esp32-csi-node/provision.py --target-ip <服务器IP>,确认 5005 放通 - calibrate 报 insufficient frames→ 节点实际 CSI 帧率低于 20 Hz,30 秒凑不够 600 帧硬门槛 → 调大
--duration-s,别动--min-frames(那是调试逃生门,文档明确不建议生产使用)
另外两个已知边界:ESP32-C3 和初代 ESP32 不支持(单核跑不动 CSI 信号处理);单节点空间分辨率有限,官方建议 2 个以上节点组成 mesh。
资源与社区
- 用户指南(安装、API、硬件、训练):docs/user-guide.md
- 校准与房间训练(代码级核对过的真实门限):docs/calibration-guide.md
- 感知服务核心源码:v2/crates/wifi-densepose-sensing-server/
- ESP32 节点固件与烧录工具:firmware/esp32-csi-node/
- Home Assistant / Matter 集成(21 个实体 + 3 个起步蓝图):docs/integrations/home-assistant.md
- 架构决策记录(205 篇 ADR,含"什么数字可信"的完整论证):docs/adr/README.md
RuView 的价值在于把感知硬件的门槛从"每个房间装一台相机"降到"用已有的 WiFi 加一块 ESP32",并且把哪些能力已验证、哪些还是初稿都写在同一页 README 里。先跑通模拟模式,再决定要不要为真实感知买单,是成本最低的验证路径。
【免费下载链接】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),仅供参考