OpenSource-Hub

RuView

应用程序

ruvnet/RuView

无需摄像头,利用 WiFi 信号实现空间智能与生命体征监测。

项目简介

RuView 通过 ESP32 传感器采集 WiFi 信道状态信息(CSI),实现隔墙人体检测、呼吸心率监测和姿态估计,完全在边缘设备上运行,无需云端或互联网。

README 预览

# π RuView\n\n\n  \n    \n  \n\n\n> **Beta Software** — Under active development. APIs and firmware may change. Known limitations:\n> - ESP32-C3 and original ESP32 are not supported (single-core, insufficient for CSI DSP)\n> - Single ESP32 deployments have limited spatial resolution — use 2+ nodes or add a [Cognitum Seed](https://cognitum.one) for best results\n> - Camera-free pose accuracy is limited (PCK@20 ≈ 2.5% with proxy labels) — [camera ground-truth training](docs/adr/ADR-079-camera-ground-truth-training.md) targets **35%+ PCK@20**; the pipeline is implemented, but the data-collection and evaluation phases (ADR-079 P7–P9) are still pending, so no measured camera-supervised PCK@20 has been published yet\n>\n> Contributions and bug reports welcome at [Issues](https://github.com/ruvnet/RuView/issues).\n\n## **See through walls with WiFi** ##\n\n**Turn ordinary WiFi into a spatial intelligence / sensing system.** Detect people, measure breathing and heart rate, track movement, and monitor rooms — through walls, in the dark, with no cameras or wearables. Just physics.\n\n### π RuView is a WiFi sensing platform that turns radio signals into spatial intelligence.\n\nEvery WiFi router already fills your space with radio waves. When people move, breathe, or even sit still, they disturb those waves in measurable ways. RuView captures these disturbances using Channel State Information (CSI) from low-cost ESP32 sensors and turns them into actionable data: who's there, what they're doing, and whether they're okay.\n\n**What it senses:**\n- **Presence and occupancy** — detect people through walls, count them, track entries and exits\n- **Vital signs** — breathing rate and heart rate, contactless, while sleeping or sitting\n- **Activity recognition** — walking, sitting, gestures, falls — from temporal CSI patterns\n- **Environment mapping** — RF fingerprinting identifies rooms, detects moved furniture, spots new objects\n- **Sleep quality** — overnight monitoring with slee

常见问题 (5)

故障排除
WiFi CSI人体感知是骗局吗?为什么在我的笔记本电脑上无法工作?

这不是骗局,而是成熟的技术。最常见的问题是使用了不支持的硬件。只有特定芯片组会暴露信道状态信息(CSI)。大多数消费级WiFi适配器,包括笔记本电脑内置WiFi,都不支持CSI。请使用兼容硬件:ESP32-S3(最便宜、最简单)、带修改固件的Intel 5300 NIC,或带ath9k补丁的Atheros AR9580。对于ESP32-S3,从firmware/esp32-csi-node/刷写固件,并按照逐步教程操作(参见issue #34)。在天线附近走动,观察aggregator中的振幅变化。如果在使用支持的硬件后仍有问题,请在新issue中提供串口输出和aggregator日志。

来源 Issue #37
故障排除
为什么我在拉取 Docker 镜像 ghcr.io/ruvnet/ruview 时遇到 'denied' 错误?

正确的镜像名称是 ghcr.io/ruvnet/wifi-densepose:latest,而不是 ghcr.io/ruvnet/ruview。仓库所有者将容器命名为 wifi-densepose。请使用正确的名称:从 GitHub Container Registry 拉取 docker pull ghcr.io/ruvnet/wifi-densepose:latest,或从 Docker Hub 拉取 docker pull ruvnet/wifi-densepose:latest。amd64 和 arm64 架构均可用且可公开访问。

来源 Issue #852
故障排除
如何在打开sensing-server中的可视化页面时修复404错误?

服务器从 UI 目录提供静态文件(默认:相对于二进制文件的 ../../ui)。如果收到 404,路径可能不正确。请检查 ui 文件夹是否存在且可从服务器的工作目录访问。您可以使用 --ui-path 标志覆盖它,例如 --ui-path ./ui 或绝对路径。重新启动服务器并确认日志显示正确的 UI 路径。

来源 Issue #188
故障排除
为什么我的ESP32 CSI节点显示state=8且yield=0pps,并且没有UDP数据到达感知服务器?

预编译的发布二进制文件将CSI采集限制为仅限Wi-Fi管理帧(信标帧、探测帧)。这会导致CSI回调频率极低(通常约每18秒一次),使得聚合器无法达到从状态8推进并产生输出所需的最低帧率。因此,不会通过UDP发送任何CSI帧,仪表盘保持离线状态。临时解决方案:从源代码构建固件时启用DATA混杂模式过滤器(修改sdkconfig或源代码),以捕获所有数据帧。永久修复:已合并于#906(无屏设备现在捕获数据帧),并在#908中发布了更新的二进制文件。请使用最新发布版二进制文件或从主分支构建。

来源 Issue #897
故障排除
为什么在ESP32-S3混杂模式下设置为仅MGMT(管理帧)时,在大量WiFi数据流量下CSI回调极其稀疏(70秒内仅3次)?

仅MGMT混杂模式仅捕获管理帧(信标、探测请求等),不捕获数据帧。像YouTube 4K + iperf这类高流量数据流量由数据帧组成,因此CSI回调仅在偶尔的管理帧上触发。要频繁从数据流量中获取CSI,需配置嗅探器同时捕获数据帧(例如,启用MGMT和DATA,或设置过滤器捕获所有帧)。

来源 Issue #866