RuView 调研报告

RuView 调研报告

一、项目概述

1.1 基本信息

项目信息 详情
项目名称 π RuView (WiFi DensePose)
开发者 Reuven Cohen (ruvnet)
GitHub https://github.com/ruvnet/RuView
官网 https://ruv.net
开源协议 MIT
编程语言 Rust (v2), Python (v1)
Stars 37.3k+
测试覆盖 1,031+ Rust 测试用例
当前状态 活跃开发中

1.2 一句话介绍

RuView 是一个基于 WiFi 信号的无摄像头人体感知系统,利用 WiFi CSI(信道状态信息)实现穿墙人体姿态估计、呼吸检测和心率监测,通过 Rust 重写实现了 810 倍的性能提升。

1.3 核心定位

"WiFi DensePose: Seeing Human Pose Through Walls Using WiFi Signals"

RuView 将 WiFi 路由器变成了感知设备,无需摄像头即可"看到"墙后的人体姿态。

1.4 设计理念

┌─────────────────────────────────────────────────────────────────┐
│                    RuView 设计理念                               │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ❌ 无摄像头                                                    │
│  ❌ 无可穿戴设备                                                │
│  ❌ 无隐私担忧                                                  │
│  ❌ 无光线依赖                                                  │
│                                                                 │
│  ✅ WiFi 信号感知                                               │
│  ✅ 穿墙探测能力                                                │
│  ✅ 低成本硬件 ($8-9/节点)                                      │
│  ✅ 边缘计算                                                    │
│  ✅ 实时处理 (54,000 fps)                                       │
│                                                                 │
│  目标: 让 WiFi 成为无处不在的感知基础设施                        │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

二、核心功能

2.1 功能概览

功能模块 状态 描述
WiFi DensePose ✅ 完整 WiFi 人体姿态估计
CSI 信号采集 ✅ 完整 ESP32-S3 CSI 数据捕获
生命体征检测 ✅ 完整 呼吸(6-30 BPM)、心率(40-120 BPM)
穿墙感知 ✅ 完整 穿透墙壁、家具、碎片
运动检测 ✅ 完整 高精度运动状态识别
多节点网络 ✅ 完整 4-6 节点 360° 覆盖
边缘智能 ✅ 完整 65 个 WASM 模块
3D 可视化 ✅ 完整 Three.js 实时渲染

2.2 核心特性详解

特性 1: WiFi DensePose - WiFi 人体姿态估计

原理: 利用 WiFi 信号的 CSI(信道状态信息)重建人体姿态。

WiFi 发射器 ──→ 人体反射 ──→ WiFi 接收器
                  │
                  ▼
           CSI 信号变化
                  │
                  ▼
           深度学习模型
                  │
                  ▼
           人体姿态估计

技术优势: - 无需摄像头,保护隐私 - 穿透墙壁、家具 - 不受光线影响 - 低成本硬件

特性 2: CSI 信号处理

CSI (Channel State Information) 是 WiFi 信号在子载波级别的幅度和相位信息。

┌─────────────────────────────────────────────────────────────────┐
│                    CSI 信号结构                                  │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  WiFi 信道 = 多个子载波 (Subcarriers)                           │
│                                                                 │
│  每个子载波包含:                                                │
│  ┌─────────────┐ ┌─────────────┐                               │
│  │   幅度       │ │   相位       │                               │
│  │ (Amplitude) │ │  (Phase)    │                               │
│  └─────────────┘ └─────────────┘                               │
│                                                                 │
│  人体运动 → 信号反射 → CSI 变化 → 模式识别                       │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

处理流程: 1. CSI 采集: ESP32-S3 捕获原始 CSI 数据 2. 预处理: 幅度归一化、相位清理 3. 特征提取: 时频域特征 4. 模型推理: RuVector AI 模型

特性 3: 生命体征检测

呼吸检测 (6-30 BPM): - 通过 CSI 相位变化检测胸部起伏 - FFT 频谱分析提取呼吸频率 - 精度: ±1 BPM

心率检测 (40-120 BPM): - 检测心脏跳动引起的微小震动 - 高灵敏度相位处理 - 精度: ±2 BPM

特性 4: Rust 性能优化

性能对比 (Python vs Rust):

操作 Python (v1) Rust (v2) 加速比
CSI 预处理 ~5ms 5.19 µs 1000x
相位清理 ~3ms 3.84 µs 780x
特征提取 ~8ms 9.03 µs 890x
运动检测 ~1ms 186 ns 5400x
完整流水线 ~15ms 18.47 µs 810x

Rust 优化技术: - SIMD 向量化 - 零拷贝数据处理 - 无锁并发 - 内存池优化


三、技术架构

3.1 整体架构

┌─────────────────────────────────────────────────────────────────┐
│                      RuView 架构                                 │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                    感知层 (Sensing)                       │   │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐   │   │
│  │  │ ESP32-S3 │ │ ESP32-S3 │ │ ESP32-S3 │ │ ESP32-S3 │   │   │
│  │  │  节点 1   │ │  节点 2   │ │  节点 3   │ │  节点 N   │   │   │
│  │  └──────────┘ └──────────┘ └──────────┘ └──────────┘   │   │
│  └─────────────────────────────────────────────────────────┘   │
│                              │                                  │
│                              ▼ (WiFi CSI Data)                  │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                    处理层 (Processing)                    │   │
│  │  ┌──────────────┐ ┌──────────────┐ ┌──────────────┐    │   │
│  │  │ CSI 预处理    │ │ 特征提取     │ │ 模型推理     │    │   │
│  │  │ (Rust)       │ │ (Rust)       │ │ (RuVector)   │    │   │
│  │  └──────────────┘ └──────────────┘ └──────────────┘    │   │
│  └─────────────────────────────────────────────────────────┘   │
│                              │                                  │
│                              ▼                                  │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                    智能层 (Intelligence)                  │   │
│  │  ┌──────────────┐ ┌──────────────┐ ┌──────────────┐    │   │
│  │  │ 姿态估计     │ │ 生命体征     │ │ 运动检测     │    │   │
│  │  │ DensePose    │ │ Vital Signs  │ │ Motion       │    │   │
│  │  └──────────────┘ └──────────────┘ └──────────────┘    │   │
│  └─────────────────────────────────────────────────────────┘   │
│                              │                                  │
│                              ▼                                  │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │                    应用层 (Application)                   │   │
│  │  ┌──────────────┐ ┌──────────────┐ ┌──────────────┐    │   │
│  │  │ 3D 可视化    │ │ API 服务     │ │ 边缘模块     │    │   │
│  │  │ (Three.js)   │ │ (REST/gRPC)  │ │ (WASM)       │    │   │
│  │  └──────────────┘ └──────────────┘ └──────────────┘    │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

3.2 核心组件

ESP32-S3 CSI 节点

硬件规格: | 参数 | 规格 | |------|------| | 芯片 | ESP32-S3 | | 成本 | $8-9/节点 | | WiFi | 802.11 b/g/n | | 子载波 | 64 (20MHz) / 256 (40MHz) | | 采样率 | 最高 1000 Hz |

固件功能: - CSI 数据采集 - 原始数据打包 - 通过串口/网络传输

RuVector AI 框架

核心特性: - 注意力机制 (Attention) - 图算法 (Graph Algorithms) - 模型压缩 (Compression) - 边缘优化

SONA 自适应架构

SONA (Self-Optimizing Neural Architecture): - Micro-LoRA: 轻量级模型适配 - EWC++: 持续学习防止遗忘 - 设备端自适应: 无需云端训练

RVF 模型容器

RVF (RuView Format) 特性: - 单文件模型打包 - 渐进式加载 - 跨平台兼容 - 压缩存储

3.3 目录结构

RuView/
├── firmware/
│   └── esp32-csi-node/       # ESP32 固件
│       ├── src/              # 固件源码
│       └── CMakeLists.txt    # 构建配置
│
├── rust-port/
│   └── wifi-densepose-rs/    # Rust 实现
│       ├── src/
│       │   ├── csi/          # CSI 处理
│       │   ├── features/     # 特征提取
│       │   ├── models/       # AI 模型
│       │   └── pipeline/     # 处理流水线
│       └── Cargo.toml
│
├── v1/                       # Python 原版
│   ├── wifi_densepose/       # 核心模块
│   └── examples/             # 示例代码
│
├── ui/                       # Three.js 可视化
│   ├── src/
│   └── public/
│
├── docs/
│   └── adr/                  # 架构决策记录
│       ├── ADR-024.md        # 自学习 WiFi AI
│       └── ...
│
└── docker/                   # Docker 部署
    └── Dockerfile

3.4 多节点感知网络

多静态网格 (Multistatic Mesh):

┌─────────────────────────────────────────────────────────────────┐
│                    多节点感知布局                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│     [节点 1] ──────────────────────────────────── [节点 2]      │
│        │                                           │            │
│        │         ┌─────────────┐                  │            │
│        │         │   人体目标   │                  │            │
│        │         └─────────────┘                  │            │
│        │                                           │            │
│     [节点 3] ──────────────────────────────────── [节点 4]      │
│                                                                 │
│     4-6 个节点提供 360° 房间覆盖                                │
│     多视角融合提高感知精度                                      │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

优势: - 360° 无死角覆盖 - 多视角数据融合 - 冗余备份 - 提高定位精度


四、安装与使用

4.1 硬件准备

所需硬件: | 组件 | 数量 | 成本 | |------|------|------| | ESP32-S3 开发板 | 2-6 个 | $8-9/个 | | WiFi 路由器 | 1 个 | 现有 | | 主机 (运行 RuView) | 1 台 | - |

4.2 软件安装

方式 1: Docker 部署

# 拉取镜像
docker pull ruvnet/ruview:latest

# 启动服务
docker run -d --name ruview \
  -p 8080:8080 \
  -p 9222:9222 \
  ruvnet/ruview:latest

方式 2: 从源码构建

# 克隆仓库
git clone https://github.com/ruvnet/RuView.git
cd RuView

# 构建 Rust 版本
cd rust-port/wifi-densepose-rs
cargo build --release

# 运行测试
cargo test

方式 3: ESP32 固件烧录

# 安装 ESP-IDF
git clone --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
./install.sh

# 编译固件
cd RuView/firmware/esp32-csi-node
idf.py build

# 烧录到 ESP32
idf.py -p /dev/ttyUSB0 flash monitor

4.3 基本使用

启动 CSI 采集

# 连接 ESP32,启动 CSI 数据流
python scripts/start_csi_stream.py --port /dev/ttyUSB0

运行姿态估计

# 启动 Rust 处理流水线
./target/release/wifi-densepose \
  --csi-source tcp://0.0.0.0:9000 \
  --model models/densepose.rvf \
  --output ui/data/

启动可视化

# 启动 Web UI
cd ui
npm install
npm start

# 访问 http://localhost:3000

4.4 API 使用

import requests

# 获取当前姿态
response = requests.get('http://localhost:8080/api/pose')
pose_data = response.json()
print(f"检测到 {pose_data['person_count']} 人")
print(f"姿态关键点: {pose_data['keypoints']}")

# 获取生命体征
vitals = requests.get('http://localhost:8080/api/vitals')
print(f"呼吸频率: {vitals.json()['breathing_rate']} BPM")
print(f"心率: {vitals.json()['heart_rate']} BPM")

五、技术深度分析

5.1 CSI 信号原理

WiFi CSI vs RSSI:

指标 RSSI CSI
粒度 单一值 多子载波
信息量 信号强度 幅度+相位
分辨率
适用场景 简单定位 精细感知

CSI 数学表示:

H(f, t) = |H(f, t)| * e^(j∠H(f, t))

其中:
- H(f, t): 时刻 t 频率 f 的信道响应
- |H(f, t)|: 幅度
- ∠H(f, t): 相位
- f: 子载波频率
- t: 时间

5.2 信号处理流水线

原始 CSI 数据
      │
      ▼
┌─────────────┐
│  幅度处理    │  ← 归一化、滤波
└─────────────┘
      │
      ▼
┌─────────────┐
│  相位清理    │  ← 相位解卷绕、线性化
└─────────────┘
      │
      ▼
┌─────────────┐
│  特征提取    │  ← 时域、频域特征
└─────────────┘
      │
      ▼
┌─────────────┐
│  模型推理    │  ← RuVector AI
└─────────────┘
      │
      ▼
┌─────────────┐
│  姿态/体征   │  ← 输出结果
└─────────────┘

5.3 边缘智能模块

65 个 WASM 模块分类:

类别 模块数 功能
预处理 15 CSI 数据清洗、归一化
特征 12 时频域特征提取
检测 10 运动、存在检测
估计 8 姿态、位置估计
追踪 7 多目标追踪
适配 6 模型自适应
通信 7 数据传输、协议

5.4 自学习 WiFi AI (ADR-024)

对比自监督学习架构:

┌─────────────────────────────────────────────────────────────────┐
│                 自学习 WiFi AI 架构                              │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────────────┐     ┌──────────────┐                         │
│  │ CSI 样本 A   │     │ CSI 样本 B   │                         │
│  └──────────────┘     └──────────────┘                         │
│         │                    │                                  │
│         ▼                    ▼                                  │
│  ┌──────────────┐     ┌──────────────┐                         │
│  │  编码器 A    │     │  编码器 B    │                         │
│  └──────────────┘     └──────────────┘                         │
│         │                    │                                  │
│         └────────┬───────────┘                                  │
│                  ▼                                              │
│         ┌──────────────┐                                        │
│         │  对比损失    │  ← 正样本拉近,负样本推远               │
│         └──────────────┘                                        │
│                  │                                              │
│                  ▼                                              │
│         ┌──────────────┐                                        │
│         │  表征学习    │  ← 无标注自动学习                       │
│         └──────────────┘                                        │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

优势: - 无需人工标注 - 环境自适应 - 持续学习 - 边缘部署友好


六、使用场景

6.1 适用场景

场景 描述 推荐指数
智能家居 人员检测、手势控制 ⭐⭐⭐⭐⭐
健康监测 老人跌倒、呼吸监测 ⭐⭐⭐⭐⭐
安防监控 穿墙入侵检测 ⭐⭐⭐⭐⭐
搜索救援 灾后生命探测 ⭐⭐⭐⭐⭐
运动分析 姿态、动作识别 ⭐⭐⭐⭐
医疗康复 远程生命体征 ⭐⭐⭐⭐
隐私场所 浴室、更衣室监控 ⭐⭐⭐⭐⭐

6.2 不适用场景

场景 原因
高精度定位 精度约 10-50cm,不如 UWB
多人精细区分 超过 5 人时准确率下降
室外开放空间 WiFi 信号衰减快
金属密集环境 信号反射干扰严重

6.3 典型用例

用例 1: 老人跌倒检测

老人居住房间
      │
      ├── [ESP32 节点 x 4] ──→ CSI 数据流
      │                              │
      └── RuView 边缘服务器          │
                                     ▼
                              ┌─────────────┐
                              │  跌倒检测   │
                              └─────────────┘
                                     │
                    ┌────────────────┼────────────────┐
                    ▼                ▼                ▼
              [本地报警]       [推送子女]       [呼叫急救]

用例 2: 搜索救援

灾后废墟
      │
      ├── [便携 ESP32 阵列] ──→ CSI 扫描
      │                              │
      └── 移动边缘设备               │
                                     ▼
                              ┌─────────────┐
                              │ 生命体征   │
                              │ 检测       │
                              └─────────────┘
                                     │
                                     ▼
                              [定位被困者]

用例 3: 智能家居手势控制

用户手势 ──→ CSI 变化 ──→ RuView ──→ 手势识别 ──→ 智能家居控制
                                          │
                    ┌─────────────────────┼─────────────────────┐
                    ▼                     ▼                     ▼
              [开灯/关灯]            [调节音量]            [切换频道]

七、对比分析

7.1 RuView vs 摄像头 vs 激光雷达 vs 毫米波

维度 RuView 摄像头 激光雷达 毫米波雷达
穿墙能力 部分
隐私保护
光线依赖
成本 $20-60 $50-200 $500-5000 $100-500
精度 极高 中高
覆盖范围 5-10m 视角限制 100m+ 50-200m
3D 感知 部分
生命体征

7.2 技术选型建议

┌─────────────────────────────────────────────────────────────────┐
│                      场景选择指南                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  需要穿墙感知?                                                  │
│  │                                                              │
│  ├── 是 ──→ 预算有限?                                          │
│  │           │                                                   │
│  │           ├── 是 ──→ 【RuView】                              │
│  │           │                                                   │
│  │           └── 否 ──→ 需要极高精度?                           │
│  │                      │                                       │
│  │                      ├── 是 ──→ 【毫米波雷达】               │
│  │                      │                                       │
│  │                      └── 否 ──→ 【RuView】                   │
│  │                                                              │
│  └── 否 ──→ 隐私敏感?                                          │
│              │                                                   │
│              ├── 是 ──→ 【RuView】或【毫米波】                  │
│              │                                                   │
│              └── 否 ──→ 需要视觉细节?                           │
│                         │                                       │
│                         ├── 是 ──→ 【摄像头】                   │
│                         │                                       │
│                         └── 否 ──→ 【RuView】                   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

八、最佳实践

8.1 推荐做法

  1. 多节点部署
  2. 至少 4 个 ESP32 节点
  3. 分布在房间四角
  4. 确保视线覆盖

  5. 信号校准

  6. 部署后进行空房间校准
  7. 定期更新基线
  8. 环境变化后重新校准

  9. 边缘计算优先

  10. 使用 WASM 模块本地处理
  11. 减少网络延迟
  12. 保护隐私数据

8.2 避坑指南

问题 解决方案
信号干扰 避免与其他 2.4GHz 设备冲突
金属反射 调整节点位置,避开大型金属
多径效应 增加节点数量,多视角融合
精度不足 校准环境,优化模型参数

九、生态系统

9.1 相关项目

项目 描述 链接
ESP32-CSI-Tool ESP32 CSI 采集工具 GitHub
WiFi-DensePose 原始研究论文实现 CMU
RuVector AI 推理框架 ruv.net

9.2 学术研究

  • WiFi-DensePose: CMU 原始研究
  • Widar: WiFi 人体运动识别
  • WiVi: WiFi 可视化穿墙
  • RF-Capture: MIT 穿墙人体成像

十、总结

10.1 优势

优势 说明
穿墙感知 无需视线的独特能力
隐私友好 无摄像头,无隐私担忧
低成本 $8-9/节点的硬件成本
高性能 810x 加速,54,000 fps
边缘智能 65 个 WASM 模块本地处理
全功能 姿态、生命体征、运动检测

10.2 劣势

劣势 说明
精度限制 不如摄像头/激光雷达
环境敏感 金属、多径干扰
范围限制 5-10m 有效范围
硬件依赖 需要 ESP32 节点
生态较新 社区还在发展中

10.3 最终评价

RuView 是 WiFi 感知领域的突破性项目,通过创新的 CSI 处理和 Rust 性能优化,实现了低成本、高性能的穿墙人体感知。对于智能家居、健康监测、搜索救援等隐私敏感场景,它是理想的选择。

推荐指数: ⭐⭐⭐⭐⭐ (5/5) - 特定场景

适用人群: - 智能家居开发者 - 健康监测系统工程师 - 安防监控系统集成商 - 搜索救援技术研究者 - 隐私敏感应用开发者


参考资料