π RuView
Beta 软件 — 正在积极开发中。API 和固件可能发生变更。已知限制:
- 不支持 ESP32-C3 和原始 ESP32(单核,不足以处理 CSI DSP)
- 单个 ESP32 部署的空间分辨率有限 — 请使用 2 个以上节点或添加 Cognitum Seed 以获得最佳效果
- 无摄像头姿态精度有限 — 请使用摄像头真值训练以获得 92.9% 的 PCK@20
用 WiFi 透视墙壁
将普通 WiFi 变成传感系统。 检测人员、测量呼吸和心率、跟踪运动、监控房间 — 穿墙、在黑暗中、无需摄像头或可穿戴设备。仅凭物理原理。
π RuView 是一个将无线电信号转化为空间智能的 WiFi 传感平台。
每个 WiFi 路由器都已经用无线电波填满了你的空间。当人们移动、呼吸甚至静坐时,他们会以可测量的方式扰动这些波。RuView 使用来自低成本 ESP32 传感器的信道状态信息 (CSI) 捕获这些扰动,并将其转化为可操作的数据:谁在那里、他们在做什么、以及他们是否安好。
它能感知什么:
- 存在和占用 — 穿墙检测人员、计数、跟踪进出
- 生命体征 — 呼吸频率和心率,非接触式,睡眠或静坐时
- 活动识别 — 行走、坐、手势、跌倒 — 基于时序 CSI 模式
- 环境映射 — 射频指纹识别房间、检测移动的家具、发现新物体
- 睡眠质量 — 夜间监测,包含睡眠阶段分类和呼吸暂停筛查
基于 RuVector 和 Cognitum Seed,RuView 完全在边缘硬件上运行 — 一个 ESP32 网状网络(每个节点低至 9 美元)搭配 Cognitum Seed 用于持久内存、加密证明和 AI 集成。无需云、无需摄像头、无需互联网。
系统使用脉冲神经网络在本地学习每个环境,30 秒内完成适应,并通过 6 个 WiFi 信道进行多频网状扫描,利用邻居的路由器作为免费雷达照明源。每次测量都通过 Ed25519 见证链进行加密证明。
RuView 还支持姿态估计(通过 WiFlow 架构实现 17 个 COCO 关键点),完全无需摄像头,仅使用 10 个传感器信号进行训练 — 这项技术源于卡内基梅隆大学最初的 DensePose From WiFi 研究。
为低功耗边缘应用而构建
边缘模块 是直接在 ESP32 传感器上运行的小型程序 — 无需互联网、无云费用、即时响应。
| 功能 |
原理 |
速度 |
| 姿态估计 |
CSI 子载波幅度/相位 → 17 个 COCO 关键点 |
171K 嵌入/秒 (M4 Pro) |
| 呼吸检测 |
带通 0.1-0.5 Hz → 过零 BPM |
6-30 BPM |
| 心率 |
带通 0.8-2.0 Hz → 过零 BPM |
40-120 BPM |
| 存在感知 |
训练模型 + PIR 融合 — 100% 准确率 |
0.012 ms 延迟 |
| 穿墙 |
菲涅尔区几何 + 多径建模 |
穿透深度达 5m |
| 边缘智能 |
8 维特征向量 + Cognitum Seed 上的 RVF 存储 |
总物料成本 $140 |
| 无摄像头训练 |
10 个传感器信号,无需标签 |
M4 Pro 上 84 秒 |
| 摄像头监督训练 |
MediaPipe + ESP32 CSI → 92.9% PCK@20 |
笔记本上 19 分钟 |
| 多频网状网络 |
6 个频段跳频,邻居 AP 作为照明源 |
3 倍传感带宽 |
# 选项 1:Docker(模拟数据,无需硬件)
docker pull ruvnet/wifi-densepose:latest
docker run -p 3000:3000 ruvnet/wifi-densepose:latest
# 打开 http://localhost:3000
# 选项 2:使用 ESP32-S3 硬件进行实时传感(9 美元)
# 烧录固件、配置 WiFi 并开始传感:
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
# 选项 3:带 Cognitum Seed 的完整系统(140 美元)
# ESP32 流式 CSI → 桥接转发至 Seed 进行持久存储 + kNN + 见证链
node scripts/rf-scan.js --port 5006 # 实时射频房间扫描
node scripts/snn-csi-processor.js --port 5006 # SNN 实时学习
node scripts/mincut-person-counter.js --port 5006 # 正确的人员计数
[!NOTE]
推荐使用支持 CSI 的硬件。 存在、生命体征、穿墙感知以及所有高级功能都需要来自 ESP32-S3(9 美元)或研究网卡的信道状态信息 (CSI)。Docker 镜像使用模拟数据进行评估。消费级 WiFi 笔记本电脑仅提供基于 RSSI 的存在检测。
用于实时 CSI 捕获的硬件选项:
| 选项 |
硬件 |
成本 |
完整 CSI |
功能 |
| ESP32 + Cognitum Seed(推荐) |
ESP32-S3 + Cognitum Seed |
~$140 |
是 |
姿态、呼吸、心跳、运动、存在 + 持久向量存储、kNN 搜索、见证链、MCP 代理 |
| ESP32 网状网络 |
3-6 个 ESP32-S3 + WiFi 路由器 |
~$54 |
是 |
姿态、呼吸、心跳、运动、存在 |
| 研究网卡 |
Intel 5300 / Atheros AR9580 |
~$50-100 |
是 |
完整 CSI,支持 3x3 MIMO |
| 任何 WiFi |
Windows、macOS 或 Linux 笔记本 |
$0 |
否 |
仅 RSSI:粗粒度的存在和运动 |
没有硬件?使用确定性参考信号验证信号处理流水线:python v1/data/proof/verify.py
实时密集点云(新)
RuView 现在通过融合摄像头深度 + WiFi CSI + 毫米波雷达生成实时 3D 点云。所有传感器同时流式传输到一个统一的空间模型中。
| 传感器 |
数据 |
集成方式 |
| 摄像头 |
MiDaS 单目深度(GPU) |
640×480 → 每帧 19,200+ 深度点 |
| ESP32 CSI |
ADR-018 二进制帧(UDP) |
射频断层扫描 → 8×8×4 占用网格 |
| WiFlow 姿态 |
来自 CSI 的 17 个 COCO 关键点 |
点云上的骨骼叠加 |
| 生命体征 |
来自 CSI 相位的呼吸频率 |
每 60 秒存储到 ruOS 大脑 |
| 运动 |
CSI 幅度方差 |
自适应捕获率(静止时跳过深度) |
快速开始:
cd rust-port/wifi-densepose-rs
cargo build --release -p wifi-densepose-pointcloud
./target/release/ruview-pointcloud serve --bind 127.0.0.1:9880
# 打开 http://localhost:9880 查看实时 3D 查看器
CLI 命令:
ruview-pointcloud demo # 合成演示
ruview-pointcloud serve --bind 127.0.0.1:9880 # 实时服务器 + Three.js 查看器
ruview-pointcloud capture --output room.ply # 捕获到 PLY 文件
ruview-pointcloud train # 深度校准 + DPO 对
ruview-pointcloud cameras # 列出可用摄像头
ruview-pointcloud csi-test --count 100 # 发送测试 CSI 帧
ruview-pointcloud fingerprint office --seconds 5 # 记录带名称的 CSI 房间指纹
HTTP/查看器服务器默认使用环回地址(127.0.0.1) — 将实时摄像头/CSI/生命体征暴露在 0.0.0.0 上是显式的选择加入。大脑 URL 默认为 http://127.0.0.1:9876,可通过 RUVIEW_BRAIN_URL 环境变量或 serve/train 的 --brain 标志覆盖。
姿态叠加目前使用幅度能量启发式(heuristic_pose_from_amplitude)而非训练好的 WiFlow 推理 — 真正的 ONNX/Candle 推理将在后续跟进。
性能: 22ms 流水线,905 请求/秒 API,20 帧构建 40K 体素房间模型。
大脑集成: 空间观测数据(运动、生命体征、骨骼、占用)每 60 秒同步到 ruOS 大脑,供智能体推理。
详细信息请参见 PR #405。
v0.7.0 中的新功能
摄像头真值训练 — 92.9% PCK@20
**v0.7.0 添加了摄像头监督的姿态训练**,使用 MediaPipe + 真实 ESP32 CSI 数据:
| 功能 | 作用 | ADR |
|-----------|-------------|-----|
| **摄像头真值收集** | MediaPipe PoseLandmarker 以 30fps 捕获 17 个 COCO 关键点,与 ESP32 CSI 同步 | [ADR-079](docs/adr/ADR-079-camera-ground-truth-training.md) |
| **ruvector 子载波选择** | 基于方差的 top-K 将输入减少 50%(70 → 35 个子载波) | ADR-079 O6 |
| **Stoer-Wagner 最小割** | 针对多人员训练的人员特定子载波聚类分离 | ADR-079 O8 |
| **可扩展 WiFlow 模型** | 4 种预设:lite (189K) → small (474K) → medium (800K) → full (7.7M 参数) | ADR-079 |
```bash
# 收集真值(摄像头 + ESP32 同时)
python scripts/collect-ground-truth.py --duration 300 --preview
python scripts/record-csi-udp.py --duration 300
# 将 CSI 窗口与摄像头关键点对齐
node scripts/align-ground-truth.js --gt data/ground-truth/*.jsonl --csi data/recordings/*.csi.jsonl
# 训练 WiFlow 模型(从 lite 开始,随着数据增长扩展规模)
node scripts/train-wiflow-supervised.js --data data/paired/*.jsonl --scale lite
# 评估
node scripts/eval-wiflow.js --model models/wiflow-real/wiflow-v1.json --data data/paired/*.jsonl
```
**结果:** 使用一个 ESP32-S3 和一个网络摄像头进行 5 分钟数据收集会话,获得 **92.9% PCK@20**。
| 指标 | 之前(代理) | 之后(摄像头监督) |
|--------|----------------|--------------------------|
| PCK@20 | 0% | **92.9%** |
| 评估损失 | 0.700 | **0.082** |
| 骨骼约束 | 不适用 | **0.008** |
| 训练时间 | 不适用 | **19 分钟** |
| 模型大小 | 不适用 | **974 KB** |
预训练模型:[HuggingFace ruv/ruview/wiflow-v1](https://huggingface.co/ruv/ruview)
预训练模型(v0.6.0)— 无需训练
从 HuggingFace 下载并立即开始感知
预训练模型可在 HuggingFace 上获取:
> **https://huggingface.co/ruv/ruview**(主要)| [镜像](https://huggingface.co/ruvnet/wifi-densepose-pretrained)
基于 8 小时通宵收集的 60,630 个真实世界样本训练。只需下载并运行 — 无需数据集、无需 GPU、无需训练。
| 模型 | 大小 | 作用 |
|-------|------|-------------|
| `model.safetensors` | 48 KB | 对比编码器 — 用于存在、活动、环境的 128 维嵌入 |
| `model-q4.bin` | 8 KB | 4 位量化 — 适合 ESP32-S3 SRAM,用于边缘推理 |
| `model-q2.bin` | 4 KB | 2 位超紧凑型,适用于内存受限设备 |
| `presence-head.json` | 2.6 KB | 100% 准确的存在检测头 |
| `node-1.json` / `node-2.json` | 21 KB | 每房间 LoRA 适配器(更换房间时替换) |
```bash
# 下载并使用(Python)
pip install huggingface_hub
huggingface-cli download ruv/ruview --local-dir models/
# 或者直接与传感流水线一起使用
node scripts/train-ruvllm.js --data data/recordings/*.csi.jsonl # 用自己的数据重新训练
node scripts/benchmark-ruvllm.js --model models/csi-ruvllm # 基准测试
```
**基准测试(Apple M4 Pro,在通宵数据上重新训练):**
| 测量指标 | 结果 | 重要性 |
|-----------------|--------|---------------|
| **存在检测** | **100% 准确率** | 从不漏掉人员,从不误报 |
| **推理速度** | **每嵌入 0.008 ms** | 比实时快 125,000 倍 |
| **吞吐量** | **164,183 嵌入/秒** | 一台 Mac Mini 可处理 1,600+ 个 ESP32 节点 |
| **对比学习** | **51.6% 提升** | 从真实通宵数据中学习到强模式 |
| **模型大小** | **8 KB**(4 位量化) | 适合 ESP32 SRAM — 无需服务器 |
| **总硬件成本** | **$140** | ESP32(9 美元)+ [Cognitum Seed](https://cognitum.one)(131 美元) |
17 个传感应用(v0.6.0)
健康、环境、安全、多频网状网络感知
所有应用都可在单个 ESP32 + 可选 Cognitum Seed 上运行。无需摄像头、无需云、无需互联网。
**健康与保健:**
| 应用 | 脚本 | 检测内容 |
|------------|--------|----------------|
| 睡眠监测器 | `node scripts/sleep-monitor.js` | 睡眠阶段(深/浅/REM/清醒)、效率、睡眠图 |
| 呼吸暂停检测器 | `node scripts/apnea-detector.js` | 呼吸暂停 >10 秒,AHI 严重程度评分 |
| 压力监测器 | `node scripts/stress-monitor.js` | 心率变异性,LF/HF 压力比 |
| 步态分析器 | `node scripts/gait-analyzer.js` | 步行节奏、步幅不对称、震颤检测 |
**环境与安全:**
| 应用 | 脚本 | 检测内容 |
|------------|--------|----------------|
| 人员计数器 | `node scripts/mincut-person-counter.js` | 正确的占用计数(修复 #348) |
| 房间指纹 | `node scripts/room-fingerprint.js` | 活动状态聚类、日常模式、异常 |
| 材料检测器 | `node scripts/material-detector.js` | 通过子载波零点变化检测新/移动的物体 |
| 设备指纹 | `node scripts/device-fingerprint.js` | 电子设备活动(打印机、路由器等) |
**多频网状网络**(需要 `--hop-channels` 配置):
| 应用 | 脚本 | 检测内容 |
|------------|--------|----------------|
| 射频断层扫描 | `node scripts/rf-tomography.js` | 通过射频反投影进行 2D 房间成像 |
| 无源雷达 | `node scripts/passive-radar.js` | 邻居 WiFi AP 作为双基地雷达照明源 |
| 材料分类器 | `node scripts/material-classifier.js` | 从频率响应识别金属/水/木材/玻璃 |
| 穿墙 | `node scripts/through-wall-detector.js` | 利用低频穿透性检测墙后运动 |
所有脚本支持 `--replay data/recordings/*.csi.jsonl` 进行离线分析,以及 `--json` 用于程序化输出。
v0.5.5 中的新功能
高级感知:SNN + MinCut + WiFlow + 多频网状网络
**v0.5.5 新增了四种感知能力**,基于 [ruvector](https://github.com/ruvnet/ruvector) 生态系统:
| 功能 | 作用 | ADR |
|-----------|-------------|-----|
| **脉冲神经网络** | 通过 STDP 在线学习在 <30 秒内适应您的房间 — 无需标签、无需批次,计算量减少 16-160 倍 | [ADR-074](docs/adr/ADR-074-spiking-neural-csi-sensing.md) |
| **MinCut 人员计数** | 在子载波相关图上执行 Stoer-Wagner 最小割 — **修复 #348**(之前总是 4,现在正确) | [ADR-075](docs/adr/ADR-075-mincut-person-separation.md) |
| **CNN 频谱图嵌入** | 将 CSI 视为 64×20 图像 → 128 维嵌入,用于环境指纹识别(相似度 0.95+) | [ADR-076](docs/adr/ADR-076-csi-spectrogram-embeddings.md) |
| **WiFlow SOTA 架构** | TCN + 轴向注意力 + 姿态解码器 → 17 个 COCO 关键点,1.8M 参数(4 位下 881 KB) | [ADR-072](docs/adr/ADR-072-wiflow-architecture.md) |
| **多频网状网络** | 在 6 个频段上跳频,邻居 WiFi 作为无源雷达照明源 | [ADR-073](docs/adr/ADR-073-multifrequency-mesh-scan.md) |
```bash
# 实时射频房间扫描(频谱可视化)
node scripts/rf-scan.js --port 5006 --duration 30
# 正确的人员计数(修复 #348)
node scripts/mincut-person-counter.js --port 5006
# SNN 实时适应
node scripts/snn-csi-processor.js --port 5006
# CNN 频谱图嵌入
node scripts/csi-spectrogram.js --replay data/recordings/*.csi.jsonl
# WiFlow 17 关键点姿态训练
node scripts/train-wiflow.js --data data/recordings/*.csi.jsonl
# 在 ESP32 上启用跳频
python firmware/esp32-csi-node/provision.py --port COM9 --hop-channels "1,6,11"
```
**验证基准:**
| 指标 | v0.5.4 | v0.5.5 |
|--------|--------|--------|
| 人员计数 | 损坏(总是 4) | **正确**(MinCut,24/24) |
| WiFi 信道 | 1 | **6**(多频跳频) |
| 空子载波 | 19% 被阻塞 | **16%**(频率分集) |
| 姿态模型 | 16K 参数(仅全连接) | **1.8M 参数**(WiFlow) |
| 在线适应 | 无 | **<30 秒**(SNN STDP) |
| 指纹维度 | 8 | **128**(CNN 频谱图) |
| 多节点融合 | 平均 | **GATv2 注意力** |
| 新脚本 | 0 | **15+** |
| 新 ADR | 3 | **8**(069-076) |
v0.5.4 中的新功能
Cognitum Seed 集成 + 无摄像头姿态训练
**v0.5.4 将 RuView 从实时感知工具转变为持久的边缘 AI 系统。** 您的 ESP32 现在能记住它感知到的东西,无需摄像头即可学习,并加密证明其数据。
| 功能 | 详细信息 | 硬件 |
|-----------|---------|----------|
| **持久向量存储** | 每个感知事件以 RVF 格式存储为可搜索的 8 维向量 | ESP32 + [Cognitum Seed](https://cognitum.one)(140 美元) |
| **kNN 相似性搜索** | “查找与当前状态最相似的 10 个状态” — 异常检测、指纹识别 | Cognitum Seed |
| **见证链** | 每次测量的 SHA-256 防篡改审计跟踪(已验证 1,747 条记录) | Cognitum Seed |
| **无摄像头姿态训练** | 来自 10 个传感器信号的 17 个 COCO 关键点 — PIR、RSSI 三角测量、子载波不对称、振动、BME280 | 2x ESP32 + Seed |
| **预训练模型** | 82.8 KB(4 位量化下 8 KB),100% 存在准确率,0 骨骼违规 | 从发布版下载 |
| **亚毫秒推理** | 0.012 ms 延迟,M4 Pro 上 171,472 嵌入/秒 | 任何装有 Node.js 的机器 |
| **SONA 适应** | 无需重新训练即可在 <1ms 内适应新房间 | ruvllm 运行时 |
| **LoRA 房间适配器** | 每节点微调,每个适配器 2,048 个参数 | 自动 |
| **114 工具 MCP 代理** | AI 助手(Claude、GPT)通过 JSON-RPC 直接查询传感器 | Cognitum Seed |
| **多频网状网络** | 在信道 1/3/5/6/9/11 上跳频 — 邻居 WiFi 作为无源雷达 | 2x ESP32(18 美元) |
| **射频房间扫描器** | 实时频谱可视化:零点、反射器、运动、多径 | `node scripts/rf-scan.js` |
| **安全加固** | Bearer 令牌、TLS、源 IP 过滤、NaN 拒绝、凭证轮换 | 所有组件 |
**训练流水线(ruvllm,无需 PyTorch):**
```bash
# 收集数据(2 分钟,ESP32 必须正在流式传输)
python scripts/collect-training-data.py --port 5006 --duration 120
# 训练 — 对比预训练 + 任务头 + LoRA + 量化 + EWC
node scripts/train-ruvllm.js --data data/recordings/pretrain-*.csi.jsonl
# 无摄像头 17 关键点姿态(使用 PIR + RSSI + 振动 + 子载波不对称)
node scripts/train-camera-free.js --data data/recordings/pretrain-*.csi.jsonl
# 基准测试
node scripts/benchmark-ruvllm.js --model models/csi-ruvllm
```
**基准测试 — 在真实硬件上验证(Apple M4 Pro + ESP32-S3 + Cognitum Seed):**
| 测量指标 | 结果 | 重要性 |
|-----------------|--------|---------------|
| **存在检测** | **100% 准确率** | 从不漏掉人员,从不误报 |
| **人员计数** | **24/24 正确**(MinCut) | 修复了 #1 用户报告的问题 |
| **推理速度** | **每嵌入 0.012 ms** | 比实时快 83,000 倍 |
| **吞吐量** | **171,472 嵌入/秒** | 一台 Mac Mini 可处理 1,700+ 个 ESP32 节点 |
| **训练时间** | **84 秒** | 从零到训练模型不到 2 分钟 |
| **对比学习** | **33.9% 提升** | 模型从 CSI 学习有意义的模式 |
| **模型大小** | **8 KB**(4 位量化) | 适合 ESP32 SRAM — 无需服务器 |
| **骨骼物理** | 100 帧中 **0 违规** | 每个姿态在解剖学上都是有效的 |
| **姿态关键点** | **17 个 COCO 关键点** | 全身姿态,无需摄像头 |
| **WiFi 信道** | **6 个同时** | 比单信道多 3 倍传感数据 |
| **在线适应** | **<30 秒**(SNN) | 无需重新训练即可学习新房间 |
| **见证链** | **2,547 条记录**已验证 | 加密证明每次测量都是真实的 |
| **测试套件** | **1,463 个测试通过** | 坚实的基础 |
| **总硬件成本** | **$140** | ESP32(9 美元)+ [Cognitum Seed](https://cognitum.one)(131 美元) |
详细信息请参见 [ADR-069](docs/adr/ADR-069-cognitum-seed-csi-pipeline.md)、[ADR-071](docs/adr/ADR-071-ruvllm-training-pipeline.md) 和 [Cognitum Seed 教程](docs/tutorials/cognitum-seed-pretraining.md)。
📖 文档
| 文档 |
描述 |
| 用户指南 |
分步指南:安装、首次运行、API 使用、硬件设置、训练 |
| 构建指南 |
从源代码构建(Rust 和 Python) |
| 架构决策 |
79 个 ADR — 每个技术选择的原因,按领域组织(硬件、信号处理、机器学习、平台、基础设施) |
| 领域模型 |
7 个 DDD 模型(RuvSense、信号处理、训练流水线、硬件平台、传感服务器、WiFi-Mat、CHCI)— 有界上下文、聚合、领域事件、通用语言 |
| 桌面应用 |
进行中 — 用于节点管理、OTA 更新、WASM 部署和网状网络可视化的 Tauri v2 桌面应用 |
| 医疗示例 |
通过 60 GHz 毫米波雷达实现非接触式血压、心率、呼吸频率 — 15 美元硬件,无需可穿戴设备 |
来自 WiFi CSI 信号的实时姿态骨骼 — 无需摄像头,无需可穿戴设备
▶ 实时天文台演示
|
▶ 双模态姿态融合演示
服务器 对于可视化和聚合是可选的 — ESP32 独立运行 以进行存在检测、生命体征和跌倒警报。
实时 ESP32 流水线:连接一个 ESP32-S3 节点 → 运行传感服务器 → 打开姿态融合演示 进行实时双模态姿态估计(网络摄像头 + WiFi CSI)。参见 ADR-059。
🚀 主要特性
感知
仅使用房间内已有的 WiFi 信号,即可透视墙壁看到人、呼吸和心跳。
| |
特性 |
含义 |
| 🔒 |
隐私优先 |
仅使用 WiFi 信号跟踪人体姿态 — 无需摄像头、无视频、不存储图像 |
| 💓 |
生命体征 |
无需任何可穿戴设备即可检测呼吸频率(6-30 次/分钟)和心率(40-120 bpm) |
| 👥 |
多人 |
同时跟踪多人,每个人具有独立的姿态和生命体征 — 无硬性软件限制(物理限制:每个 AP 约 3-5 人,使用 56 个子载波,多 AP 可更多) |
| 🧱 |
穿墙 |
WiFi 可穿透墙壁、家具和碎片 — 可在摄像头无法工作的地方工作 |
| 🚑 |
灾难响应 |
通过废墟检测被困幸存者,并对伤情严重程度进行分类(START 分诊) |
| 📡 |
多基地网状网络 |
4-6 个低成本传感器节点协同工作,结合 12 条以上的重叠信号路径,实现 360 度全方位房间覆盖,亚英寸精度,无人员混淆(ADR-029) |
| 🌐 |
持久场模型 |
系统学习每个房间的射频特征 — 然后减去房间特征以隔离人体运动,检测数天内的漂移,在运动开始前预测意图,并标记欺骗尝试(ADR-030) |
智能
系统自主学习,随时间变得更聪明 — 无需手动调整,无需标记数据。
| |
特性 |
含义 |
| 🧠 |
自学习 |
从原始 WiFi 数据中自我教学 — 无需标记训练集,无需摄像头启动(ADR-024) |
| 🎯 |
AI 信号处理 |
注意力网络、图算法和智能压缩取代手动调整的阈值 — 自动适应每个房间(RuVector) |
| 🌍 |
随处工作 |
训练一次,部署到任何房间 — 对抗性领域泛化消除环境偏差,使模型能够在不同房间、建筑和硬件之间迁移(ADR-027) |
| 👁️ |
跨视角融合 |
AI 结合每个传感器从其自身角度看到的内容 — 填补任何单一视角无法解决的盲点和深度模糊(ADR-031) |
| 🔮 |
信号线协议 |
一个 6 阶段处理流水线,将原始 WiFi 信号转换为结构化的人体表示 — 从信号清理到基于图的空间推理,最终输出姿态(ADR-033) |
| 🔒 |
QUIC 网状网络安全 |
所有传感器间通信均经过端到端加密,具有篡改检测、重放保护和节点移动或离线时的无缝重连(ADR-032) |
| 🎯 |
自适应分类器 |
记录带标签的 CSI 会话,在纯 Rust 中训练 15 个特征的逻辑回归模型,并学习您房间独特的信号特征 — 用数据驱动的分类取代手动调整的阈值(ADR-048) |
性能与部署
足够快以满足实时使用,足够小以适应边缘设备,足够简单以实现一键设置。
| |
特性 |
含义 |
| ⚡ |
实时 |
每帧在 100 微秒内分析 WiFi 信号 — 足够快以进行实时监控 |
| 🦀 |
810 倍更快 |
完整的 Rust 重写:54,000 帧/秒流水线、多架构 Docker 镜像、1,031+ 测试 |
| 🐳 |
一键设置 |
docker pull ruvnet/wifi-densepose:latest — 30 秒内实时感知,无需工具链(amd64 + arm64 / Apple Silicon) |
| 📡 |
完全本地 |
完全在 9 美元的 ESP32 上运行 — 无需互联网连接、无需云账户、无经常性费用。在设备上检测存在、生命体征和跌倒,即时响应 |
| 📦 |
便携模型 |
训练好的模型打包成单个 .rvf 文件 — 可在边缘、云或浏览器(WASM)上运行 |
| 🔭 |
天文台可视化 |
电影级 Three.js 仪表板,带有 5 个全息面板 — 子载波流形、生命体征预言机、存在热图、相位星座、融合引擎 — 全部由实时或演示 CSI 数据驱动(ADR-047) |
| 📟 |
AMOLED 显示屏 |
带有内置 AMOLED 屏幕的 ESP32-S3 板可直接在传感器上显示实时存在、生命体征和房间状态 — 无需手机或电脑(ADR-045) |
🔬 工作原理
WiFi 路由器用无线电波充斥每个房间。当人移动 — 甚至呼吸时 — 这些波的散射方式会发生变化。WiFi DensePose 读取这种散射模式并重建发生的事情:
WiFi 路由器 → 无线电波穿过房间 → 击中人体 → 散射
↓
ESP32 网状网络(4-6 个节点)通过 TDM 协议捕获信道 1/6/11 上的 CSI
↓
多频段融合:3 个信道 × 56 个子载波 = 每条链路 168 个虚拟子载波
↓
多基地融合:N×(N-1) 条链路 → 注意力加权的跨视角嵌入
↓
相干门:接受/拒绝测量 → 无需调整即可稳定运行数天
↓
信号处理:Hampel、SpotFi、菲涅尔、BVP、频谱图 → 干净的特征
↓
AI 骨干(RuVector):注意力、图算法、压缩、场模型
↓
信号线协议(CRV):6 阶段 — 完形 → 感知 → 拓扑 → 相干 → 搜索 → 模型
↓
神经网络:处理后的信号 → 17 个身体关键点 + 生命体征 + 房间模型
↓
输出:实时姿态、呼吸、心率、房间指纹、漂移警报
无需训练摄像头 — 自学习系统(ADR-024) 仅从原始 WiFi 数据中启动。MERIDIAN(ADR-027) 确保模型在任何房间都能工作,而不仅仅是在它训练过的房间。
🏢 用例与应用
WiFi 传感可以在任何有 WiFi 的地方工作。大多数情况下无需新硬件 — 只需在现有接入点或 8 美元的 ESP32 附加组件上安装软件。由于没有摄像头,部署从设计上避免了隐私法规(GDPR 视频、HIPAA 成像)的约束。
扩展性: 每个 AP 可区分约 3-5 人(56 个子载波)。多 AP 线性扩展 — 一个 4 AP 的零售网状网络可覆盖约 15-20 人。没有硬性软件限制;实际上限是信号物理特性。
| |
WiFi 传感的优势 |
传统替代方案 |
| 🔒 |
无视频,无 GDPR/HIPAA 成像规则 |
摄像头需要同意、标识、数据保留策略 |
| 🧱 |
可穿透墙壁、货架、碎片 |
摄像头需要每个房间的视线 |
| 🌙 |
可在完全黑暗中工作 |
摄像头需要红外或可见光 |
| 💰 |
每区域 0-8 美元(现有 WiFi 或 ESP32) |
摄像头系统:每区域 200-2,000 美元 |
| 🔌 |
WiFi 已无处不在 |
PIR/雷达传感器每个房间需要新布线 |
🏥 日常 — 医疗、零售、办公室、酒店(商用 WiFi)
| 用例 | 功能 | 硬件 | 关键指标 | 边缘模块 |
|----------|-------------|----------|------------|-------------|
| **老年人护理 / 辅助生活** | 跌倒检测、夜间活动监测、睡眠时呼吸频率 — 无需可穿戴设备依从性 | 每个房间 1 个 ESP32-S3(8 美元) | 跌倒警报 <2 秒 | [睡眠呼吸暂停](docs/edge-modules/medical.md)、[步态分析](docs/edge-modules/medical.md) |
| **医院病人监护** | 非重症床位持续呼吸 + 心率监测,无需有线传感器;异常时提醒护士 | 每个病房 1-2 个 AP | 呼吸:6-30 BPM | [呼吸窘迫](docs/edge-modules/medical.md)、[心律失常](docs/edge-modules/medical.md) |
| **急诊室分诊** | 自动占用计数 + 等待时间估计;在等候区检测患者痛苦(异常呼吸) | 现有医院 WiFi | 占用准确率 >95% | [队列长度](docs/edge-modules/retail.md)、[恐慌运动](docs/edge-modules/security.md) |
| **零售占用与客流** | 实时人流量、各区域停留时间、队列长度 — 无摄像头、无需选择加入、符合 GDPR | 现有商店 WiFi + 1 个 ESP32 | 停留分辨率约 1 米 | [顾客流](docs/edge-modules/retail.md)、[停留热图](docs/edge-modules/retail.md) |
| **办公空间利用率** | 哪些办公桌/房间实际被占用、会议室缺席、基于真实存在的 HVAC 优化 | 现有企业 WiFi | 存在延迟 <1 秒 | [会议室](docs/edge-modules/building.md)、[HVAC 存在](docs/edge-modules/building.md) |
| **酒店与款待** | 无需门磁的房间占用、迷你吧/浴室使用模式、空房间节能 | 现有酒店 WiFi | 15-30% HVAC 节省 | [能源审计](docs/edge-modules/building.md)、[照明区域](docs/edge-modules/building.md) |
| **餐厅与食品服务** | 餐桌周转跟踪、厨房员工存在、洗手间占用显示 — 用餐区无摄像头 | 现有 WiFi | 队列等待 ±30 秒 | [餐桌周转](docs/edge-modules/retail.md)、[队列长度](docs/edge-modules/retail.md) |
| **停车场** | 楼梯间和电梯内摄像头有盲区时的人员存在;有人逗留时发出安全警报 | 现有 WiFi | 穿透混凝土墙 | [逗留](docs/edge-modules/security.md)、[电梯计数](docs/edge-modules/building.md) |
🏟️ 专业 — 活动、健身、教育、市政(支持 CSI 的硬件)
| 用例 | 功能 | 硬件 | 关键指标 | 边缘模块 |
|----------|-------------|----------|------------|-------------|
| **智能家居自动化** | 穿墙工作的房间级存在触发器(灯光、HVAC、音乐)— 无死角、无运动传感器超时 | 2-3 个 ESP32-S3 节点(24 美元) | 穿墙范围约 5 米 | [HVAC 存在](docs/edge-modules/building.md)、[照明区域](docs/edge-modules/building.md) |
| **健身与运动** | 重复计数、姿势纠正、运动时呼吸节奏 — 无需可穿戴设备、更衣室无摄像头 | 3+ 个 ESP32-S3 网状网络 | 姿态:17 个关键点 | [呼吸同步](docs/edge-modules/exotic.md)、[步态分析](docs/edge-modules/medical.md) |
| **托儿所与学校** | 午睡呼吸监测、游乐场人数统计、限制区域警报 — 对未成年人隐私安全 | 每区域 2-4 个 ESP32-S3 | 呼吸:±1 BPM | [睡眠呼吸暂停](docs/edge-modules/medical.md)、[周界入侵](docs/edge-modules/security.md) |
| **活动场所与音乐会** | 人群密度映射、通过呼吸压缩检测拥挤风险、紧急疏散流量跟踪 | 多 AP 网状网络(4-8 AP) | 每平方米密度 | [顾客流](docs/edge-modules/retail.md)、[恐慌运动](docs/edge-modules/security.md) |
| **体育场与竞技场** | 用于动态定价、特许经营人员配备、紧急出口流量建模的区域级占用 | 企业 AP 网格 | 每个 AP 网状网络 15-20 人 | [停留热图](docs/edge-modules/retail.md)、[队列长度](docs/edge-modules/retail.md) |
| **礼拜场所** | 无需面部识别的出席计数 — 注重隐私的会众、多园区校园跟踪 | 现有 WiFi | 区域级准确率 | [电梯计数](docs/edge-modules/building.md)、[能源审计](docs/edge-modules/building.md) |
| **仓库与物流** | 工人安全区、叉车接近警报、危险区域占用 — 可穿透货架和托盘工作 | 工业 AP 网状网络 | 警报延迟 <500 毫秒 | [叉车接近](docs/edge-modules/industrial.md)、[密闭空间](docs/edge-modules/industrial.md) |
| **市政基础设施** | 公共洗手间占用(无法安装摄像头)、地铁站台拥挤、紧急情况下避难所人数统计 | 市政 WiFi + ESP32 | 实时人数统计 | [顾客流](docs/edge-modules/retail.md)、[逗留](docs/edge-modules/security.md) |
| **博物馆与画廊** | 参观者流量热图、展品停留时间、人群瓶颈警报 — 艺术品附近无摄像头(闪光/盗窃风险) | 现有 WiFi | 区域停留 ±5 秒 | [停留热图](docs/edge-modules/retail.md)、[货架互动](docs/edge-modules/retail.md) |
🤖 机器人与工业 — 自主系统、制造、机器人空间感知
WiFi 传感为机器人和自主系统提供了一层空间感知能力,可在激光雷达和摄像头失效的地方工作 — 穿透灰尘、烟雾、雾气,以及绕过角落。CSI 信号场充当了“第六感”,无需视线即可检测环境中的人。
| 用例 | 功能 | 硬件 | 关键指标 | 边缘模块 |
|----------|-------------|----------|------------|-------------|
| **协作机器人安全区** | 检测协作机器人附近的人 — 在接触前自动减速或停止,即使在障碍物后面 | 每个单元 2-3 个 ESP32-S3 | 存在延迟 <100 毫秒 | [叉车接近](docs/edge-modules/industrial.md)、[周界入侵](docs/edge-modules/security.md) |
| **仓库 AMR 导航** | 自主移动机器人感知盲角后、货架后的人 — 无激光雷达遮挡 | 沿过道的 ESP32 网状网络 | 穿透货架检测 | [叉车接近](docs/edge-modules/industrial.md)、[逗留](docs/edge-modules/security.md) |
| **安卓/人形机器人空间感知** | 社交机器人的环境人体姿态感知 — 无需摄像头始终开启即可检测手势、接近方向和个人空间 | 板载 ESP32-S3 模块 | 17 关键点姿态 | [手势语言](docs/edge-modules/exotic.md)、[情绪检测](docs/edge-modules/exotic.md) |
| **生产线监控** | 每个工位的工人存在、符合人体工学的姿势警报、轮班合规人数统计 — 可穿透设备工作 | 每个区域的工业 AP | 姿态 + 呼吸 | [密闭空间](docs/edge-modules/industrial.md)、[步态分析](docs/edge-modules/medical.md) |
| **施工现场安全** | 重型机械周围的禁区执行、脚手架跌倒检测、人员统计 | 加固型 ESP32 网状网络 | 警报 <2 秒,穿透灰尘 | [恐慌运动](docs/edge-modules/security.md)、[结构振动](docs/edge-modules/industrial.md) |
| **农业机器人** | 在多尘/多雾的田间条件下检测靠近自主收割机的农场工人,此时摄像头不可靠 | 防风雨 ESP32 节点 | 开阔地范围约 10 米 | [叉车接近](docs/edge-modules/industrial.md)、[雨水检测](docs/edge-modules/exotic.md) |
| **无人机着陆区** | 验证着陆区无人 — WiFi 传感可在雨天、灰尘和低光下工作,而向下摄像头会失效 | 地面 ESP32 节点 | 存在准确率 >95% | [周界入侵](docs/edge-modules/security.md)、[尾随](docs/edge-modules/security.md) |
| **洁净室监控** | 无摄像头的人员跟踪(摄像头风扇带来的颗粒污染风险)— 通过姿态验证工作服合规性 | 现有洁净室 WiFi | 无颗粒排放 | [洁净室](docs/edge-modules/industrial.md)、[牲畜监测](docs/edge-modules/industrial.md) |
🔥 极端场景 — 穿墙、灾难、国防、地下
这些场景利用了 WiFi 穿透固体材料(混凝土、碎石、泥土)的能力 — 光学或红外传感器无法到达的地方。WiFi-Mat 灾难模块(ADR-001)专门为此层级设计。
| 用例 | 功能 | 硬件 | 关键指标 | 边缘模块 |
|----------|-------------|----------|------------|-------------|
| **搜索与救援(WiFi-Mat)** | 通过呼吸特征检测废墟下的幸存者、START 分诊颜色分类、3D 定位 | 便携 ESP32 网状网络 + 笔记本 | 穿透 30 厘米混凝土 | [呼吸窘迫](docs/edge-modules/medical.md)、[癫痫检测](docs/edge-modules/medical.md) |
| **消防** | 进入前通过烟雾和墙壁定位 occupants;远程呼吸检测确认生命迹象 | 卡车上的便携网状网络 | 零能见度下工作 | [睡眠呼吸暂停](docs/edge-modules/medical.md)、[恐慌运动](docs/edge-modules/security.md) |
| **监狱与安全设施** | 牢房占用验证、痛苦检测(异常生命体征)、周界感知 — 无摄像头盲点 | 专用 AP 基础设施 | 7x24 生命体征 | [心律失常](docs/edge-modules/medical.md)、[逗留](docs/edge-modules/security.md) |
| **军事/战术** | 穿墙人员检测、房间清空确认、对峙距离的人质生命体征 | 定向 WiFi + 定制固件 | 穿墙范围:5 米 | [周界入侵](docs/edge-modules/security.md)、[武器检测](docs/edge-modules/security.md) |
| **边境与周界安全** | 检测隧道、围栏后、车辆内的人 — 无源感知,无主动照明暴露位置 | 隐蔽 ESP32 网状网络 | 无源/隐蔽 | [周界入侵](docs/edge-modules/security.md)、[尾随](docs/edge-modules/security.md) |
| **采矿与地下** | GPS/摄像头失效的隧道中的工人存在、坍塌后呼吸检测、安全点人数统计 | 加固型 ESP32 网状网络 | 穿透岩石/泥土 | [密闭空间](docs/edge-modules/industrial.md)、[呼吸窘迫](docs/edge-modules/medical.md) |
| **海事与海军** | 通过钢制舱壁的甲板下人员跟踪(范围有限,需调优)、人员落水检测 | 舰船 WiFi + ESP32 | 穿透 1-2 个舱壁 | [结构振动](docs/edge-modules/industrial.md)、[恐慌运动](docs/edge-modules/security.md) |
| **野生动物研究** | 围栏或巢穴中的非侵入式动物活动监测 — 无光污染、无视觉干扰 | 防风雨 ESP32 节点 | 零光发射 | [牲畜监测](docs/edge-modules/industrial.md)、[梦境阶段](docs/edge-modules/exotic.md) |
直接在 ESP32 传感器上运行的小型程序 — 无需互联网、无云费用、即时响应。每个模块是一个 tiny WASM 文件(5-30 KB),可通过无线方式上传到设备。它在本地读取 WiFi 信号数据并在 10 毫秒内做出决策。ADR-041 定义了 13 个类别中的 60 个模块 — 所有 60 个均已实现,609 个测试通过。
| |
类别 |
示例 |
| 🏥 |
医疗与健康 |
睡眠呼吸暂停检测、心律失常、步态分析、癫痫检测 |
| 🔐 |
安全与安保 |
入侵检测、周界入侵、逗留、恐慌运动 |
| 🏢 |
智能建筑 |
区域占用、HVAC 控制、电梯计数、会议室跟踪 |
| 🛒 |
零售与款待 |
队列长度、停留热图、顾客流、餐桌周转 |
| 🏭 |
工业 |
叉车接近、密闭空间监控、结构振动 |
| 🔮 |
奇异与研究 |
睡眠分期、情绪检测、手语、呼吸同步 |
| 📡 |
信号智能 |
清理和锐化原始 WiFi 信号 — 聚焦重要区域、过滤噪声、填补缺失数据、跟踪人员身份 |
| 🧠 |
自适应学习 |
传感器随时间自主学习新的手势和模式 — 无需云,即使更新后也能记住所学内容 |
| 🗺️ |
空间推理 |
确定房间内人的位置、哪些区域最重要,并使用基于图的空间逻辑跟踪区域间的移动 |
| ⏱️ |
时序分析 |
学习日常规律,检测模式中断(某人未起床),并验证安全规则是否随时间得到遵守 |
| 🛡️ |
AI 安全 |
检测信号重放攻击、WiFi 干扰、注入尝试,并标记可能表明篡改的异常行为 |
| ⚛️ |
量子启发 |
使用量子启发的数学方法映射全房间信号相干性,并搜索最优传感器配置 |
| 🤖 |
自主与奇异 |
自我管理的传感器网状网络 — 自动修复掉线节点、规划自身行动、探索实验性信号表示 |
所有已实现的模块都是 no_std Rust,共享一个通用工具库,并通过一个 12 函数 API 与主机通信。完整文档:边缘模块指南。请参阅下面的完整已实现模块列表。
🧩 边缘智能 — 全部 65 个模块已实现(ADR-041 完成)
所有 60 个模块均已实现、测试(609 个测试通过)并准备部署。它们编译为 `wasm32-unknown-unknown`,通过 WASM3 在 ESP32-S3 上运行,并共享一个[通用工具库](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/vendor_common.rs)。源代码:[`crates/wifi-densepose-wasm-edge/src/`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/)
**核心模块**(ADR-040 旗舰 + 早期实现):
| 模块 | 文件 | 功能 |
|--------|------|-------------|
| 手势分类器 | [`gesture.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/gesture.rs) | 用于手势的 DTW 模板匹配 |
| 相干滤波器 | [`coherence.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/coherence.rs) | 用于信号质量的相位相干门控 |
| 对抗检测器 | [`adversarial.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/adversarial.rs) | 检测物理上不可能的信号模式 |
| 入侵检测器 | [`intrusion.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/intrusion.rs) | 人与非人运动分类 |
| 占用计数器 | [`occupancy.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/occupancy.rs) | 区域级人员计数 |
| 生命体征趋势 | [`vital_trend.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/vital_trend.rs) | 长期呼吸和心率趋势 |
| RVF 解析器 | [`rvf.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/rvf.rs) | RVF 容器格式解析 |
**供应商集成模块**(24 个模块,ADR-041 类别 7):
**📡 信号智能** — 实时 CSI 分析和特征提取
| 模块 | 文件 | 功能 | 预算 |
|--------|------|-------------|--------|
| 闪存注意力 | [`sig_flash_attention.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_flash_attention.rs) | 在 8 个子载波组上进行分块注意力 — 查找空间焦点区域和熵 | S (<5ms) |
| 相干门 | [`sig_coherence_gate.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_coherence_gate.rs) | 带滞后的 Z 得分相量门控:接受 / 仅预测 / 拒绝 / 重新校准 | L (<2ms) |
| 时序压缩 | [`sig_temporal_compress.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_temporal_compress.rs) | 3 层自适应量化(8 位热 / 5 位温 / 3 位冷) | L (<2ms) |
| 稀疏恢复 | [`sig_sparse_recovery.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_sparse_recovery.rs) | 用于丢失子载波的 ISTA L1 重建 | H (<10ms) |
| 人员匹配 | [`sig_mincut_person_match.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_mincut_person_match.rs) | 用于多人跟踪的匈牙利式二分指派 | S (<5ms) |
| 最优传输 | [`sig_optimal_transport.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_optimal_transport.rs) | 带 4 个投影的切片 Wasserstein-1 距离 | L (<2ms) |
**🧠 自适应学习** — 无需云连接的设备上学习
| 模块 | 文件 | 功能 | 预算 |
|--------|------|-------------|--------|
| DTW 手势学习 | [`lrn_dtw_gesture_learn.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_dtw_gesture_learn.rs) | 用户可教的手势识别 — 3 次排练协议,16 个模板 | S (<5ms) |
| 异常吸引子 | [`lrn_anomaly_attractor.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_anomaly_attractor.rs) | 带李雅普诺夫指数的 4D 动力系统吸引子分类 | H (<10ms) |
| 元适应 | [`lrn_meta_adapt.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_meta_adapt.rs) | 带安全回滚的爬山法自优化 | L (<2ms) |
| EWC 终身学习 | [`lrn_ewc_lifelong.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_ewc_lifelong.rs) | 弹性权重巩固 — 在学习新任务时记住旧任务 | S (<5ms) |
**🗺️ 空间推理** — 位置、接近度和影响映射
| 模块 | 文件 | 功能 | 预算 |
|--------|------|-------------|--------|
| PageRank 影响 | [`spt_pagerank_influence.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/spt_pagerank_influence.rs) | 带幂迭代 PageRank 的 4x4 互相关图 | L (<2ms) |
| 微型 HNSW | [`spt_micro_hnsw.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/spt_micro_hnsw.rs) | 用于最近邻搜索的 64 向量可导航小世界图 | S (<5ms) |
| 脉冲跟踪器 | [`spt_spiking_tracker.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/spt_spiking_tracker.rs) | 32 个 LIF 神经元 + 4 个输出区域神经元,带 STDP 学习 | S (<5ms) |
**⏱️ 时序分析** — 活动模式、逻辑验证、自主规划
| 模块 | 文件 | 功能 | 预算 |
|--------|------|-------------|--------|
| 模式序列 | [`tmp_pattern_sequence.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/tmp_pattern_sequence.rs) | 活动规律检测和偏差警报 | S (<5ms) |
| 时序逻辑守卫 | [`tmp_temporal_logic_guard.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/tmp_temporal_logic_guard.rs) | 在 CSI 事件流上的 LTL 公式验证 | S (<5ms) |
| GOAP 自主性 | [`tmp_goap_autonomy.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/tmp_goap_autonomy.rs) | 用于自主模块管理的目标导向行动规划 | S (<5ms) |
**🛡️ AI 安全** — 篡改检测和行为异常分析
| 模块 | 文件 | 功能 | 预算 |
|--------|------|-------------|--------|
| 提示盾 | [`ais_prompt_shield.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ais_prompt_shield.rs) | FNV-1a 重放检测、注入检测(10 倍幅度)、干扰(SNR) | L (<2ms) |
| 行为分析器 | [`ais_behavioral_profiler.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ais_behavioral_profiler.rs) | 带马氏距离异常评分的 6D 行为画像 | S (<5ms) |
**⚛️ 量子启发** — 应用于 CSI 分析的量子计算隐喻
| 模块 | 文件 | 功能 | 预算 |
|--------|------|-------------|--------|
| 量子相干 | [`qnt_quantum_coherence.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/qnt_quantum_coherence.rs) | 布洛赫球映射、冯·诺依曼熵、退相干检测 | S (<5ms) |
| 干涉搜索 | [`qnt_interference_search.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/qnt_interference_search.rs) | 16 个房间状态假设,带 Grover 启发式预言机 + 扩散 | S (<5ms) |
**🤖 自主系统** — 自我治理和自我修复行为
| 模块 | 文件 | 功能 | 预算 |
|--------|------|-------------|--------|
| 心理符号 | [`aut_psycho_symbolic.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/aut_psycho_symbolic.rs) | 带矛盾检测的 16 规则前向链接知识库 | S (<5ms) |
| 自愈网状网络 | [`aut_self_healing_mesh.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/aut_self_healing_mesh.rs) | 带健康跟踪、退化/恢复、覆盖修复的 8 节点网状网络 | S (<5ms) |
**🔮 奇异(供应商)** — 用于 CSI 解释的新颖数学模型
| 模块 | 文件 | 功能 | 预算 |
|--------|------|-------------|--------|
| 时间晶体 | [`exo_time_crystal.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_time_crystal.rs) | 在 256 帧历史中的自相关次谐波检测 | S (<5ms) |
| 双曲空间 | [`exo_hyperbolic_space.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_hyperbolic_space.rs) | 带 32 个参考位置的庞加莱球嵌入,双曲距离 | S (<5ms) |
**🏥 医疗与健康**(类别 1)— 非接触式健康监测
| 模块 | 文件 | 功能 | 预算 |
|--------|------|-------------|--------|
| 睡眠呼吸暂停 | [`med_sleep_apnea.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_sleep_apnea.rs) | 检测睡眠期间的呼吸暂停 | S (<5ms) |
| 心律失常 | [`med_cardiac_arrhythmia.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_cardiac_arrhythmia.rs) | 监测心率是否存在不规则节律 | S (<5ms) |
| 呼吸窘迫 | [`med_respiratory_distress.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_respiratory_distress.rs) | 对异常呼吸模式发出警报 | S (<5ms) |
| 步态分析 | [`med_gait_analysis.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_gait_analysis.rs) | 跟踪步行模式并检测变化 | S (<5ms) |
| 癫痫检测 | [`med_seizure_detect.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_seizure_detect.rs) | 用于强直-阵挛发作识别的 6 状态机 | S (<5ms) |
**🔐 安全与安保**(类别 2)— 周界和威胁检测
| 模块 | 文件 | 功能 | 预算 |
|--------|------|-------------|--------|
| 周界入侵 | [`sec_perimeter_breach.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_perimeter_breach.rs) | 检测边界穿越,带接近/离开判断 | S (<5ms) |
| 武器检测 | [`sec_weapon_detect.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_weapon_detect.rs) | 通过 CSI 幅度偏移检测金属异常 | S (<5ms) |
| 尾随 | [`sec_tailgating.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_tailgating.rs) | 检测入口点的非法跟随 | S (<5ms) |
| 逗留 | [`sec_loitering.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_loitering.rs) | 当某人在一个区域逗留过长时间时发出警报 | S (<5ms) |
| 恐慌运动 | [`sec_panic_motion.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_panic_motion.rs) | 检测逃离、挣扎或恐慌性运动 | S (<5ms) |
**🏢 智能建筑**(类别 3)— 自动化和能源效率
| 模块 | 文件 | 功能 | 预算 |
|--------|------|-------------|--------|
| HVAC 存在 | [`bld_hvac_presence.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_hvac_presence.rs) | 基于占用的 HVAC 控制,带离开倒计时 | S (<5ms) |
| 照明区域 | [`bld_lighting_zones.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_lighting_zones.rs) | 基于区域活动自动调暗/关闭照明 | S (<5ms) |
| 电梯计数 | [`bld_elevator_count.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_elevator_count.rs) | 统计进出人数,带超载警告 | S (<5ms) |
| 会议室 | [`bld_meeting_room.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_meeting_room.rs) | 跟踪会议生命周期:开始、人数、结束、可用性 | S (<5ms) |
| 能源审计 | [`bld_energy_audit.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_energy_audit.rs) | 跟踪非工作时间使用情况和房间利用率 | S (<5ms) |
**🛒 零售与款待**(类别 4)— 无摄像头的顾客洞察
| 模块 | 文件 | 功能 | 预算 |
|--------|------|-------------|--------|
| 队列长度 | [`ret_queue_length.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_queue_length.rs) | 估计队列大小和等待时间 | S (<5ms) |
| 停留热图 | [`ret_dwell_heatmap.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_dwell_heatmap.rs) | 显示人们在哪里花费时间(热/冷区域) | S (<5ms) |
| 顾客流 | [`ret_customer_flow.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_customer_flow.rs) | 统计进出人数并跟踪净占用 | S (<5ms) |
| 餐桌周转 | [`ret_table_turnover.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_table_turnover.rs) | 餐厅餐桌生命周期:入座、用餐、离开 | S (<5ms) |
| 货架互动 | [`ret_shelf_engagement.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_shelf_engagement.rs) | 检测浏览、考虑和伸手取产品 | S (<5ms) |
**🏭 工业与专业**(类别 5)— 安全与合规
| 模块 | 文件 | 功能 | 预算 |
|--------|------|-------------|--------|
| 叉车接近 | [`ind_forklift_proximity.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_forklift_proximity.rs) | 当人员过于接近车辆时发出警告 | S (<5ms) |
| 密闭空间 | [`ind_confined_space.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_confined_space.rs) | 符合 OSHA 的工人监控,带撤离警报 | S (<5ms) |
| 洁净室 | [`ind_clean_room.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_clean_room.rs) | 占用限制和湍流运动检测 | S (<5ms) |
| 牲畜监测 | [`ind_livestock_monitor.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_livestock_monitor.rs) | 动物存在、静止和逃跑警报 | S (<5ms) |
| 结构振动 | [`ind_structural_vibration.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_structural_vibration.rs) | 地震事件、机械共振、结构漂移 | S (<5ms) |
**🔮 奇异与研究**(类别 6)— 实验性传感应用
| 模块 | 文件 | 功能 | 预算 |
|--------|------|-------------|--------|
| 梦境阶段 | [`exo_dream_stage.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_dream_stage.rs) | 非接触式睡眠阶段分类(清醒/浅睡/深睡/REM) | S (<5ms) |
| 情绪检测 | [`exo_emotion_detect.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_emotion_detect.rs) | 从微运动中检测唤醒、压力和平静 | S (<5ms) |
| 手势语言 | [`exo_gesture_language.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_gesture_language.rs) | 通过 WiFi 识别手语字母 | S (<5ms) |
| 音乐指挥 | [`exo_music_conductor.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_music_conductor.rs) | 从指挥手势中跟踪节奏和动态 | S (<5ms) |
| 植物生长 | [`exo_plant_growth.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_plant_growth.rs) | 监测植物生长、昼夜节律、枯萎检测 | S (<5ms) |
| 幽灵猎人 | [`exo_ghost_hunter.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_ghost_hunter.rs) | 环境异常分类(气流/昆虫/风/未知) | S (<5ms) |
| 雨水检测 | [`exo_rain_detect.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_rain_detect.rs) | 通过信号散射检测降雨开始、强度和停止 | S (<5ms) |
| 呼吸同步 | [`exo_breathing_sync.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_breathing_sync.rs) | 检测多人之间的同步呼吸 | S (<5ms) |
🧠 自学习 WiFi AI(ADR-024) — 自适应识别、自优化和智能异常检测
每个穿过房间的 WiFi 信号都会创建该空间的独特指纹。WiFi-DensePose 已经读取这些指纹来跟踪人员,但直到现在,它还在每次读取后丢弃内部的“理解”。自学习 WiFi AI 捕获并将这种理解保存为紧凑、可重用的向量 — 并持续为每个新环境进行自我优化。
**简单来说它能做什么:**
- 将任何 WiFi 信号转换为一个 128 个数字的“指纹”,唯一描述房间内发生的情况
- 完全从原始 WiFi 数据中自主学习 — 无需摄像头、无需标记、无需人工监督
- 仅使用 WiFi 识别房间、检测入侵者、识别人员、分类活动
- 在 8 美元的 ESP32 芯片上运行(整个模型适合 55 KB 内存)
- 在单次计算中同时输出身体姿态跟踪和环境指纹
**关键能力**
| 功能 | 工作原理 | 重要性 |
|------|-------------|----------------|
| **自监督学习** | 模型观察 WiFi 信号并自学“相似”和“不同”的样子,无需任何人工标记数据 | 随处部署 — 只需插入 WiFi 传感器并等待 10 分钟 |
| **房间识别** | 每个房间产生不同的 WiFi 指纹模式 | 无需 GPS 或信标即可知道某人在哪个房间 |
| **异常检测** | 意外的人或事件产生与之前见过的任何模式都不匹配的指纹 | 自动入侵和跌倒检测作为免费副产品 |
| **人员重识别** | 每个人以略微不同的方式扰动 WiFi,形成个人签名 | 无需摄像头即可跨会话跟踪个人 |
| **环境适应** | MicroLoRA 适配器(每个房间 1,792 个参数)为每个新空间微调模型 | 以最少的数据适应新房间 — 比从头重新训练少 93% |
| **记忆保存** | EWC++ 正则化记住预训练期间学到的内容 | 切换到新任务不会抹去先前的知识 |
| **困难负样本挖掘** | 训练聚焦于最令人困惑的示例以更快学习 | 使用相同数量的训练数据获得更高的准确率 |
**架构**
```
WiFi 信号 [56 通道] → Transformer + 图神经网络
├→ 128 维环境指纹(用于搜索 + 识别)
└→ 17 关节身体姿态(用于人员跟踪)
```
**快速开始**
```bash
# 步骤 1:从原始 WiFi 数据学习(无需标签)
cargo run -p wifi-densepose-sensing-server -- --pretrain --dataset data/csi/ --pretrain-epochs 50
# 步骤 2:使用姿态标签进行微调以获得完整能力
cargo run -p wifi-densepose-sensing-server -- --train --dataset data/mmfi/ --epochs 100 --save-rvf model.rvf
# 步骤 3:使用模型 — 从实时 WiFi 提取指纹
cargo run -p wifi-densepose-sensing-server -- --model model.rvf --embed
# 步骤 4:搜索 — 查找相似环境或检测异常
cargo run -p wifi-densepose-sensing-server -- --model model.rvf --build-index env
```
**训练模式**
| 模式 | 你需要什么 | 你得到什么 |
|------|--------------|-------------|
| 自监督 | 仅原始 WiFi 数据 | 理解 WiFi 信号结构的模型 |
| 监督 | WiFi 数据 + 身体姿态标签 | 完整的姿态跟踪 + 环境指纹 |
| 跨模态 | WiFi 数据 + 摄像头画面 | 与视觉理解对齐的指纹 |
**指纹索引类型**
| 索引 | 存储内容 | 实际应用 |
|-------|---------------|----------------|
| `env_fingerprint` | 平均房间指纹 | “这是厨房还是卧室?” |
| `activity_pattern` | 活动边界 | “有人在做饭、睡觉还是锻炼?” |
| `temporal_baseline` | 正常条件 | “这个房间里刚刚发生了不寻常的事” |
| `person_track` | 个人移动特征 | “A 人刚刚进入客厅” |
**模型大小**
| 组件 | 参数 | 内存(在 ESP32 上) |
|-----------|-----------|-------------------|
| Transformer 骨干 | ~28,000 | 28 KB |
| 嵌入投影头 | ~25,000 | 25 KB |
| 每房间 MicroLoRA 适配器 | ~1,800 | 2 KB |
| **总计** | **~55,000** | **55 KB**(可用 520 KB 中) |
自学习系统建立在 [AI 骨干(RuVector)](#ai-骨干-ruvector) 信号处理层之上 — 注意力、图算法和压缩 — 并在其之上添加对比学习。
参见 [`docs/adr/ADR-024-contrastive-csi-embedding-model.md`](docs/adr/ADR-024-contrastive-csi-embedding-model.md) 了解完整的架构细节。
📦 安装
引导安装程序 — 交互式硬件检测和配置文件选择
```bash
./install.sh
```
安装程序逐步执行 7 个步骤:系统检测、工具链检查、WiFi 硬件扫描、配置文件推荐、依赖项安装、构建和验证。
| 配置文件 | 安装内容 | 大小 | 要求 |
|---------|-----------------|------|-------------|
| `verify` | 仅流水线验证 | ~5 MB | Python 3.8+ |
| `python` | 完整 Python API 服务器 + 感知 | ~500 MB | Python 3.8+ |
| `rust` | Rust 流水线(~810 倍更快) | ~200 MB | Rust 1.70+ |
| `browser` | 用于浏览器内执行的 WASM | ~10 MB | Rust + wasm-pack |
| `iot` | ESP32 传感器网状网络 + 聚合器 | 视情况而定 | Rust + ESP-IDF |
| `docker` | 基于 Docker 的部署 | ~1 GB | Docker |
| `field` | WiFi-Mat 灾难响应工具包 | ~62 MB | Rust + wasm-pack |
| `full` | 所有可用内容 | ~2 GB | 所有工具链 |
```bash
# 非交互式
./install.sh --profile rust --yes
# 仅硬件检查
./install.sh --check-only
```
从源代码 — Rust(主要)或 Python
```bash
git clone https://github.com/ruvnet/RuView.git
cd RuView
# Rust(主要 — 810 倍更快)
cd rust-port/wifi-densepose-rs
cargo build --release
cargo test --workspace
# Python(旧版 v1)
pip install -r requirements.txt
pip install -e .
# 或通过 pip
pip install wifi-densepose
pip install wifi-densepose[gpu] # GPU 加速
pip install wifi-densepose[all] # 所有可选依赖
```
Docker — 预构建镜像,无需工具链
```bash
# Rust 感知服务器(132 MB — 推荐)
docker pull ruvnet/wifi-densepose:latest
docker run -p 3000:3000 -p 3001:3001 -p 5005:5005/udp ruvnet/wifi-densepose:latest
# Python 感知流水线(569 MB)
docker pull ruvnet/wifi-densepose:python
docker run -p 8765:8765 -p 8080:8080 ruvnet/wifi-densepose:python
# 通过 docker-compose 同时运行两者
cd docker && docker compose up
# 导出 RVF 模型
docker run --rm -v $(pwd):/out ruvnet/wifi-densepose:latest --export-rvf /out/model.rvf
```
| 镜像 | 标签 | 平台 | 端口 |
|-------|-----|-----------|-------|
| `ruvnet/wifi-densepose` | `latest`、`rust` | linux/amd64、linux/arm64 | 3000(REST)、3001(WS)、5005/udp(ESP32) |
| `ruvnet/wifi-densepose` | `python` | linux/amd64 | 8765(WS)、8080(UI) |
系统要求
- **Rust**:1.70+(主要运行时 — 通过 [rustup](https://rustup.rs/) 安装)
- **Python**:3.8+(用于验证和旧版 v1 API)
- **操作系统**:Linux(Ubuntu 18.04+)、macOS(10.15+)、Windows 10+
- **内存**:最低 4GB RAM,推荐 8GB+
- **存储**:模型和数据需要 2GB 可用空间
- **网络**:具有 CSI 能力的 WiFi 接口(可选 — 安装程序会检测你有什么)
- **GPU**:可选(NVIDIA CUDA 或 Apple Metal)
Rust Crates — crates.io 上的各个 crate
Rust 工作区由 15 个 crate 组成,全部发布到 [crates.io](https://crates.io/):
```bash
# 将各个 crate 添加到你的 Cargo.toml
cargo add wifi-densepose-core # 类型、特征、错误
cargo add wifi-densepose-signal # CSI 信号处理(6 个 SOTA 算法)
cargo add wifi-densepose-nn # 神经推理(ONNX、PyTorch、Candle)
cargo add wifi-densepose-vitals # 生命体征提取(呼吸 + 心率)
cargo add wifi-densepose-mat # 灾难响应(MAT 幸存者检测)
cargo add wifi-densepose-hardware # ESP32、Intel 5300、Atheros 传感器
cargo add wifi-densepose-train # 训练流水线(MM-Fi 数据集)
cargo add wifi-densepose-wifiscan # 多 BSSID WiFi 扫描
cargo add wifi-densepose-ruvector # RuVector v2.0.4 集成层(ADR-017)
```
| Crate | 描述 | RuVector | crates.io |
|-------|-------------|----------|-----------|
| [`wifi-densepose-core`](https://crates.io/crates/wifi-densepose-core) | 基础类型、特征和工具 | -- | [](https://crates.io/crates/wifi-densepose-core) |
| [`wifi-densepose-signal`](https://crates.io/crates/wifi-densepose-signal) | SOTA CSI 信号处理(SpotFi、FarSense、Widar 3.0) | `mincut`、`attn-mincut`、`attention`、`solver` | [](https://crates.io/crates/wifi-densepose-signal) |
| [`wifi-densepose-nn`](https://crates.io/crates/wifi-densepose-nn) | 多后端推理(ONNX、PyTorch、Candle) | -- | [](https://crates.io/crates/wifi-densepose-nn) |
| [`wifi-densepose-train`](https://crates.io/crates/wifi-densepose-train) | 使用 MM-Fi 数据集的训练流水线(NeurIPS 2023) | **全部 5 个** | [](https://crates.io/crates/wifi-densepose-train) |
| [`wifi-densepose-mat`](https://crates.io/crates/wifi-densepose-mat) | 大规模伤亡评估工具(灾难幸存者检测) | `solver`、`temporal-tensor` | [](https://crates.io/crates/wifi-densepose-mat) |
| [`wifi-densepose-ruvector`](https://crates.io/crates/wifi-densepose-ruvector) | RuVector v2.0.4 集成层 — 7 个信号+MAT 集成点(ADR-017) | **全部 5 个** | [](https://crates.io/crates/wifi-densepose-ruvector) |
| [`wifi-densepose-vitals`](https://crates.io/crates/wifi-densepose-vitals) | 生命体征:呼吸(6-30 BPM)、心率(40-120 BPM) | -- | [](https://crates.io/crates/wifi-densepose-vitals) |
| [`wifi-densepose-hardware`](https://crates.io/crates/wifi-densepose-hardware) | ESP32、Intel 5300、Atheros CSI 传感器接口 | -- | [](https://crates.io/crates/wifi-densepose-hardware) |
| [`wifi-densepose-wifiscan`](https://crates.io/crates/wifi-densepose-wifiscan) | 多 BSSID WiFi 扫描(Windows、macOS、Linux) | -- | [](https://crates.io/crates/wifi-densepose-wifiscan) |
| [`wifi-densepose-wasm`](https://crates.io/crates/wifi-densepose-wasm) | 用于浏览器部署的 WebAssembly 绑定 | -- | [](https://crates.io/crates/wifi-densepose-wasm) |
| [`wifi-densepose-sensing-server`](https://crates.io/crates/wifi-densepose-sensing-server) | Axum 服务器:UDP 接收、WebSocket 广播 | -- | [](https://crates.io/crates/wifi-densepose-sensing-server) |
| [`wifi-densepose-cli`](https://crates.io/crates/wifi-densepose-cli) | 用于 MAT 灾难扫描的命令行工具 | -- | [](https://crates.io/crates/wifi-densepose-cli) |
| [`wifi-densepose-api`](https://crates.io/crates/wifi-densepose-api) | REST + WebSocket API 层 | -- | [](https://crates.io/crates/wifi-densepose-api) |
| [`wifi-densepose-config`](https://crates.io/crates/wifi-densepose-config) | 配置管理 | -- | [](https://crates.io/crates/wifi-densepose-config) |
| [`wifi-densepose-db`](https://crates.io/crates/wifi-densepose-db) | 数据库持久化(PostgreSQL、SQLite、Redis) | -- | [](https://crates.io/crates/wifi-densepose-db) |
| `wifi-densepose-pointcloud` | 来自摄像头 + WiFi CSI 融合的实时密集点云(Three.js 查看器、大脑桥接)。目前仅限工作区。 | -- | — |
| `wifi-densepose-geo` | 地理空间上下文(Sentinel-2 瓦片、SRTM 高程、OSM、天气、夜间模式)。目前仅限工作区。 | -- | — |
所有 crate 都与 [RuVector v2.0.4](https://github.com/ruvnet/ruvector) 集成 — 请参见下面的 [AI 骨干](#ai-骨干-ruvector)。
**[rUv Neural](rust-port/wifi-densepose-rs/crates/ruv-neural/)** — 一个独立的 12-crate 工作区,用于大脑网络拓扑分析、神经解码和医疗传感。请参见 [模型与训练](#ruv-neural) 中的 rUv Neural。
🚀 快速开始
3 条命令完成第一次 API 调用
### 1. 安装
```bash
# 最快路径 — Docker
docker pull ruvnet/wifi-densepose:latest
docker run -p 3000:3000 ruvnet/wifi-densepose:latest
# 或从源代码(Rust)
./install.sh --profile rust --yes
```
### 2. 启动系统
```python
from wifi_densepose import WiFiDensePose
system = WiFiDensePose()
system.start()
poses = system.get_latest_poses()
print(f"检测到 {len(poses)} 人")
system.stop()
```
### 3. REST API
```bash
# 健康检查
curl http://localhost:3000/health
# 最新感知帧
curl http://localhost:3000/api/v1/sensing/latest
# 生命体征
curl http://localhost:3000/api/v1/vital-signs
# 姿态估计
curl http://localhost:3000/api/v1/pose/current
# 服务器信息
curl http://localhost:3000/api/v1/info
```
### 4. 实时 WebSocket
```python
import asyncio, websockets, json
async def stream():
async with websockets.connect("ws://localhost:3001/ws/sensing") as ws:
async for msg in ws:
data = json.loads(msg)
print(f"人数: {len(data.get('persons', []))}")
asyncio.run(stream())
```
📋 目录
📡 信号处理与感知 — 从原始 WiFi 帧到生命体征
信号处理堆栈将原始 WiFi 信道状态信息转换为可操作的人体感知数据。从以 20 Hz 捕获的 56-192 个子载波复数值开始,流水线应用研究级算法(SpotFi 相位校正、Hampel 异常值剔除、菲涅尔区建模)来提取呼吸频率、心率、运动水平和多人身体姿态 — 全部在纯 Rust 中实现,零外部 ML 依赖。
| 章节 | 描述 | 文档 |
|---------|-------------|------|
| [主要特性](#主要特性) | 感知、智能、性能与部署能力 | — |
| [工作原理](#工作原理) | 端到端流水线:无线电波 → CSI 捕获 → 信号处理 → AI → 姿态 + 生命体征 | — |
| [ESP32-S3 硬件流水线](#esp32-s3-硬件流水线) | 20 Hz CSI 流式传输、二进制帧解析、烧录与配置 | [ADR-018](docs/adr/ADR-018-esp32-dev-implementation.md) · [教程 #34](https://github.com/ruvnet/RuView/issues/34) |
| [生命体征检测](#生命体征检测) | 呼吸 6-30 BPM、心跳 40-120 BPM、FFT 峰值检测 | [ADR-021](docs/adr/ADR-021-vital-sign-detection-rvdna-pipeline.md) |
| [WiFi 扫描领域层](#wifi-扫描领域层) | 8 阶段 RSSI 流水线、多 BSSID 指纹识别、Windows WiFi | [ADR-022](docs/adr/ADR-022-windows-wifi-enhanced-fidelity-ruvector.md) · [教程 #36](https://github.com/ruvnet/RuView/issues/36) |
| [WiFi-Mat 灾难响应](#wifi-mat-灾难响应) | 搜索与救援、START 分诊、通过废墟的 3D 定位 | [ADR-001](docs/adr/ADR-001-wifi-mat-disaster-detection.md) · [用户指南](docs/wifi-mat-user-guide.md) |
| [SOTA 信号处理](#sota-信号处理) | SpotFi、Hampel、菲涅尔、STFT 频谱图、子载波选择、BVP | [ADR-014](docs/adr/ADR-014-sota-signal-processing.md) |
🧠 模型与训练 — DensePose 流水线、RVF 容器、SONA 适应、RuVector 集成
神经流水线使用带有交叉注意力的图 Transformer 将 CSI 特征矩阵映射到 17 个 COCO 身体关键点和 DensePose UV 坐标。模型被打包为单文件 `.rvf` 容器,支持渐进加载(A 层即时、B 层预热、C 层完整)。SONA(自优化神经架构)通过微 LoRA + EWC++ 实现持续的设备上适应,而不会发生灾难性遗忘。信号处理由 5 个 [RuVector](https://github.com/ruvnet/ruvector) crate(v2.0.4)驱动,在 Rust 工作区中有 7 个集成点,此外还有 6 个用于推理和图智能的额外供应商 crate。
| 章节 | 描述 | 文档 |
|---------|-------------|------|
| [RVF 模型容器](#rvf-模型容器) | 带 Ed25519 签名的二进制打包、渐进式 3 层加载、SIMD 量化 | [ADR-023](docs/adr/ADR-023-trained-densepose-model-ruvector-pipeline.md) |
| [训练与微调](#训练与微调) | 8 阶段纯 Rust 流水线(7,832 行)、MM-Fi/Wi-Pose 预训练、6 项复合损失、SONA LoRA | [ADR-023](docs/adr/ADR-023-trained-densepose-model-ruvector-pipeline.md) |
| [RuVector Crates](#ruvector-crates) | 从 [ruvector](https://github.com/ruvnet/ruvector) 供应的 11 个 Rust crate:注意力、最小割、求解器、GNN、HNSW、时序压缩、稀疏推理 | [GitHub](https://github.com/ruvnet/ruvector) · [源代码](vendor/ruvector/) |
| [rUv Neural](#ruv-neural) | 12-crate 大脑拓扑分析生态系统:神经解码、量子传感器集成、认知状态分类、BCI 输出 | [README](rust-port/wifi-densepose-rs/crates/ruv-neural/README.md) |
| [AI 骨干(RuVector)](#ai-骨干-ruvector) | 5 项取代手动调整阈值的 AI 能力:注意力、图最小割、稀疏求解器、分层压缩 | [crates.io](https://crates.io/crates/wifi-densepose-ruvector) |
| [自学习 WiFi AI(ADR-024)](#自学习-wifi-ai-adr-024) | 对比自监督学习、房间指纹识别、异常检测、55 KB 模型 | [ADR-024](docs/adr/ADR-024-contrastive-csi-embedding-model.md) |
| [跨环境泛化(ADR-027)](docs/adr/ADR-027-cross-environment-domain-generalization.md) | 领域对抗训练、几何条件推理、硬件归一化、零样本部署 | [ADR-027](docs/adr/ADR-027-cross-environment-domain-generalization.md) |
🖥️ 使用与配置 — CLI 标志、API 端点、硬件设置
Rust 感知服务器是主要接口,提供全面的 CLI,包含用于数据源选择、模型加载、训练、基准测试和 RVF 导出的标志。REST API(Axum)和 WebSocket 服务器提供实时数据访问。Python v1 CLI 仍可用于旧版工作流。
| 章节 | 描述 | 文档 |
|---------|-------------|------|
| [CLI 使用](#cli-使用) | `--source`、`--train`、`--benchmark`、`--export-rvf`、`--model`、`--progressive` | — |
| [REST API 与 WebSocket](#rest-api--websocket) | 6 个 REST 端点(感知、生命体征、BSSID、SONA)、WebSocket 实时流 | — |
| [硬件支持](#硬件支持-1) | ESP32-S3(8 美元)、Intel 5300(15 美元)、Atheros AR9580(20 美元)、Windows RSSI(0 美元) | [ADR-012](docs/adr/ADR-012-esp32-csi-sensor-mesh.md) · [ADR-013](docs/adr/ADR-013-feature-level-sensing-commodity-gear.md) |
⚙️ 开发与测试 — 542+ 测试、CI、部署
项目维护 542+ 个纯 Rust 测试,涵盖 7 个 crate 套件,零模拟 — 每个测试都针对真实算法实现运行。无硬件模拟模式(`--source simulate`)支持在没有物理设备的情况下进行全栈测试。Docker 镜像发布在 Docker Hub 上,实现零设置部署。
| 章节 | 描述 | 文档 |
|---------|-------------|------|
| [测试](#测试) | 7 个测试套件:sensing-server(229)、signal(83)、mat(139)、wifiscan(91)、RVF(16)、vitals(18) | — |
| [部署](#部署) | Docker 镜像(132 MB Rust / 569 MB Python)、docker-compose、环境变量 | — |
| [贡献](#贡献) | Fork → 分支 → 测试 → PR 工作流、Rust 和 Python 开发设置 | — |
📊 性能与基准 — 实测吞吐量、延迟、资源使用
所有基准测试均在 Rust 感知服务器上使用 `cargo bench` 和内置的 `--benchmark` CLI 标志测量。Rust v2 实现比 Python v1 基线实现了 810 倍的端到端加速,运动检测达到 5,400 倍的改进。生命体征检测器在单线程基准测试中处理 11,665 帧/秒。
| 章节 | 描述 | 关键指标 |
|---------|-------------|------------|
| [性能指标](#性能指标) | 生命体征、CSI 流水线、运动检测、Docker 镜像、内存 | 11,665 fps 生命体征 · 54K fps 流水线 |
| [Rust vs Python](#python-vs-rust) | 5 个操作并排基准 | **810 倍** 完整流水线加速 |
📄 元信息 — 许可证、更新日志、支持
WiFi DensePose 是 MIT 许可的开源项目,由 [ruvnet](https://github.com/ruvnet) 开发。该项目自 2025 年 3 月以来一直在积极开发,已发布 3 个主要版本,带来了 Rust 移植、SOTA 信号处理、灾难响应模块和端到端训练流水线。
| 章节 | 描述 | 链接 |
|---------|-------------|------|
| [更新日志](#更新日志) | v3.0.0(AETHER AI + Docker)、v2.0.0(Rust 移植 + SOTA + WiFi-Mat) | [CHANGELOG.md](CHANGELOG.md) |
| [许可证](#许可证) | MIT 许可证 | [LICENSE](LICENSE) |
| [支持](#支持) | Bug 报告、功能请求、社区讨论 | [Issues](https://github.com/ruvnet/RuView/issues) · [Discussions](https://github.com/ruvnet/RuView/discussions) |
🌍 跨环境泛化(ADR-027 — 项目 MERIDIAN) — 训练一次,部署到任何房间,无需重新训练
| 功能 | 工作原理 | 重要性 |
|------|-------------|----------------|
| **梯度反转层** | 一个对抗性分类器试图猜测信号来自哪个房间;主网络被训练来欺骗它 | 强制模型丢弃特定于房间的捷径 |
| **几何编码器(FiLM)** | 发射器/接收器位置通过傅里叶编码并作为缩放+偏移条件注入每一层 | 模型知道硬件*在哪里*,因此不需要记忆布局 |
| **硬件归一化器** | 将任何芯片组的 CSI 重采样为标准 56 子载波格式,幅度标准化 | Intel 5300 和 ESP32 数据对模型来说看起来相同 |
| **虚拟领域增强** | 生成具有随机房间尺度、墙壁反射、散射体和噪声分布的合成环境 | 即使只有 2-3 个房间的数据,训练也能看到数千个房间 |
| **快速适应(TTT)** | 使用来自少量未标记帧的 LoRA 权重生成进行对比测试时训练 | 零样本部署 — 模型到达时自我调整 |
| **跨领域评估器** | 在所有训练环境中进行留一评估,并给出每个环境的 PCK/OKS 指标 | 证明泛化能力,而不仅仅是记忆 |
**架构**
```
CSI 帧 [任何芯片组]
│
▼
硬件归一化器 ──→ 标准 56 子载波,N(0,1) 幅度
│
▼
CSI 编码器(现有)──→ 潜在特征
│
├──→ 姿态头 ──→ 17 关节姿态(环境不变)
│
├──→ 梯度反转层 ──→ 领域分类器(对抗性)
│ λ 通过余弦/指数调度从 0 上升到 1
│
└──→ 几何编码器 ──→ FiLM 条件(缩放 + 偏移)
傅里叶位置编码 → DeepSets → 每层调制
```
**安全加固:**
- 有界校准缓冲区(最多 10,000 帧)防止内存耗尽
- `adapt()` 返回 `Result<_, AdaptError>` — 对错误输入不会 panic
- 原子实例计数器确保线程间唯一的权重初始化
- 所有增强参数都有除零保护
参见 [`docs/adr/ADR-027-cross-environment-domain-generalization.md`](docs/adr/ADR-027-cross-environment-domain-generalization.md) 了解完整的架构细节。
🔍 独立能力审计(ADR-028) — 1,031 个测试、SHA-256 证明、自验证见证包
一个[3 代理并行审计](docs/adr/ADR-028-esp32-capability-audit.md)独立验证了此仓库中的每项声明 — ESP32 硬件、信号处理、神经网络、训练流水线、部署和安全。结果:
```
Rust 测试: 1,031 通过,0 失败
Python 证明: 判决:通过(SHA-256:8c0680d7...)
包验证: 7/7 检查通过
```
**33 行证明矩阵:** 31 项能力验证为是,2 项在审计时未测量(基准吞吐量、Kubernetes 部署)。
**自己验证**(无需硬件):
```bash
# 运行所有测试
cd rust-port/wifi-densepose-rs && cargo test --workspace --no-default-features
# 运行确定性证明
python v1/data/proof/verify.py
# 生成并验证见证包
bash scripts/generate-witness-bundle.sh
cd dist/witness-bundle-ADR028-*/ && bash VERIFY.sh
```
| 文档 | 内容 |
|----------|-----------------|
| [ADR-028](docs/adr/ADR-028-esp32-capability-audit.md) | 完整审计:ESP32 规格、信号算法、NN 架构、训练阶段、部署基础设施 |
| [见证日志](docs/WITNESS-LOG-028.md) | 11 个可重现的验证步骤 + 33 行证明矩阵,每行附带证据 |
| [`generate-witness-bundle.sh`](scripts/generate-witness-bundle.sh) | 创建包含测试日志、证明输出、固件哈希、crate 版本、VERIFY.sh 的自包含 tar.gz |
📡 多基地感知(ADR-029/030/031 — 项目 RuvSense + RuView) — 多个 ESP32 节点融合视角,实现生产级姿态、跟踪和奇异感知
单个 WiFi 接收器可以跟踪人员,但有盲点 — 躯干后面的肢体不可见,深度模糊,并且距离相近的两个人会产生重叠信号。RuvSense 通过协调多个 ESP32 节点组成**多基地网状网络**来解决此问题,其中每个节点既作为发射器又作为接收器,从 N 个设备创建 N×(N-1) 条测量链路。
**简单来说它能做什么:**
- 4 个 ESP32-S3 节点(总计 48 美元)提供 12 条 TX-RX 测量链路,覆盖 360 度
- 每个节点在 WiFi 信道 1/6/11 上跳频,将有效带宽从 20 倍增至 60 MHz
- 相干门自动拒绝噪声帧 — 无需手动调整,稳定运行数天
- 以 20 Hz 跟踪两人,10 分钟内零身份交换
- 房间本身成为一个持久模型 — 系统记住、预测和解释
**三个 ADR,一条流水线:**
| ADR | 代号 | 新增功能 |
|-----|----------|-------------|
| [ADR-029](docs/adr/ADR-029-ruvsense-multistatic-sensing-mode.md) | **RuvSense** | 跳频、TDM 协议、多节点融合、相干门、17 关键点卡尔曼跟踪器 |
| [ADR-030](docs/adr/ADR-030-ruvsense-persistent-field-model.md) | **RuvSense 场** | 房间电磁本征结构(SVD)、射频断层扫描、纵向漂移检测、意图预测、手势识别、对抗检测 |
| [ADR-031](docs/adr/ADR-031-ruview-sensing-first-rf-mode.md) | **RuView** | 带几何偏差的跨视角注意力、视角多样性优化、嵌入级融合 |
**架构**
```
4x ESP32-S3 节点(48 美元) TDM:每个依次发射,所有其他接收
│ 跳频:每个 dwell(50ms) ch1→ch6→ch11
▼
每节点信号处理 相位清理 → Hampel → BVP → 子载波选择
│ (ADR-014,每个视角不变)
▼
多频段帧融合 3 个信道 × 56 个子载波 = 168 个虚拟子载波
│ 通过 NeumannSolver 进行跨信道相位对齐
▼
多基地视角融合 N 个节点 → 注意力加权融合 → 单个嵌入
│ 来自节点放置角度的几何偏差
▼
相干门 接受 / 仅预测 / 拒绝 / 重新校准
│ 防止模型漂移,稳定运行数天
▼
持久场模型 SVD 基线 → 身体 = 观测 - 环境
│ 射频断层扫描、漂移检测、意图信号
▼
姿态跟踪器 + DensePose 17 关键点卡尔曼,通过 AETHER 嵌入进行重识别
多人最小割分离,零身份交换
```
**七个奇异感知层级(ADR-030)**
| 层级 | 能力 | 检测内容 |
|------|-----------|-----------------|
| 1 | 场正常模式 | 通过 SVD 的房间电磁本征结构 |
| 2 | 粗射频断层扫描 | 来自链路衰减的 3D 占用体积 |
| 3 | 意图引导信号 | 动作前 200-500ms 的预运动预测 |
| 4 | 纵向生物力学 | 数天/数周内的个人运动变化 |
| 5 | 跨房间连续性 | 无需摄像头即可跨房间保留身份 |
| 6 | 无形交互 | 穿墙的多用户手势控制 |
| 7 | 对抗检测 | 识别物理上不可能的信号 |
**验收测试**
| 指标 | 阈值 | 证明内容 |
|--------|-----------|---------------|
| 躯干关键点抖动 | < 30mm RMS | 精度足以满足应用需求 |
| 身份交换 | 10 分钟(12,000 帧)内 0 次 | 可靠的多人跟踪 |
| 更新率 | 20 Hz(50ms 周期) | 实时响应 |
| 呼吸信噪比 | 3 米处 > 10 dB | 确认小运动灵敏度 |
**新的 Rust 模块(9,000+ 行)**
| Crate | 新模块 | 用途 |
|-------|------------|---------|
| `wifi-densepose-signal` | `ruvsense/`(10 个模块) | 多频段融合、相位对齐、多基地融合、相干性、场模型、断层扫描、纵向漂移、意图检测 |
| `wifi-densepose-ruvector` | `viewpoint/`(5 个模块) | 带几何偏差的跨视角注意力、多样性指数、相干门控、融合编排器 |
| `wifi-densepose-hardware` | `esp32/tdm.rs` | TDM 传感协议、同步信标、时钟漂移补偿 |
**固件扩展(C,向后兼容)**
| 文件 | 新增内容 |
|------|---------|
| `csi_collector.c` | 跳频表、定时器驱动的跳频、NDP 注入存根 |
| `nvs_config.c` | 5 个新的 NVS 键:hop_count、channel_list、dwell_ms、tdm_slot、tdm_node_count |
**DDD 领域模型** — 6 个有界上下文:多基地感知、相干性、姿态跟踪、场模型、跨房间身份、对抗检测。完整规范:[`docs/ddd/ruvsense-domain-model.md`](docs/ddd/ruvsense-domain-model.md)。
有关完整的架构细节、GOAP 集成计划和研究参考文献,请参见 ADR 文档。
🔮 信号线协议(CRV)
### 6 阶段 CSI 信号线
通过 `ruvector-crv` 将 CRV(坐标远程查看)信号线方法映射到 WiFi CSI 处理:
| 阶段 | CRV 名称 | WiFi CSI 映射 | ruvector 组件 |
|-------|----------|-----------------|-------------------|
| I | 表意文字 | 原始 CSI 完形(人造/自然/运动/能量) | 庞加莱球双曲嵌入 |
| II | 感知 | 幅度纹理、相位模式、频率颜色 | 多头注意力向量 |
| III | 维度 | AP 网状网络空间拓扑、节点几何 | GNN 图拓扑 |
| IV | 情感/AOL | 相干门控 — 信号与噪声分离 | SNN 时序编码 |
| V | 询问 | 跨阶段探测 — 根据 CSI 历史查询姿态 | 可微搜索 |
| VI | 3D 模型 | 复合人员估计、MinCut 分区 | 图分区 |
**跨会话收敛**:当多个 AP 集群观测同一个人时,CRV 收敛分析在其信号嵌入中找到一致性 — 直接映射到跨房间身份连续性。
```rust
use wifi_densepose_ruvector::crv::WifiCrvPipeline;
let mut pipeline = WifiCrvPipeline::new(WifiCrvConfig::default());
pipeline.create_session("room-a", "person-001")?;
// 通过 6 阶段流水线处理 CSI 帧
let result = pipeline.process_csi_frame("room-a", &litudes, &phases)?;
// result.gestalt = Movement, confidence = 0.87
// result.sensory_embedding = [0.12, -0.34, ...]
// 通过收敛进行跨房间身份匹配
let convergence = pipeline.find_cross_room_convergence("person-001", 0.75)?;
```
**架构**:
- `CsiGestaltClassifier` — 将 CSI 幅度/相位模式映射到 6 种完形类型
- `CsiSensoryEncoder` — 从子载波提取纹理/颜色/温度/亮度特征
- `MeshTopologyEncoder` — 将 AP 网状网络编码为 GNN 图(阶段 III)
- `CoherenceAolDetector` — 将相干门状态映射到 AOL 噪声检测(阶段 IV)
- `WifiCrvPipeline` — 将所有 6 个阶段编排成统一的感知会话
📡 信号处理与感知
📡 ESP32-S3 硬件流水线(ADR-018) — 28 Hz CSI 流式传输、烧录与配置
单个 ESP32-S3 板(约 9 美元)以每秒 28 次的速度捕获 WiFi 信号数据,并通过 UDP 流式传输。主机服务器可以可视化和记录数据,但 ESP32 也可以独立运行 — 无需任何服务器即可检测存在、测量呼吸和心率以及发出跌倒警报。
```
ESP32-S3 节点 UDP/5005 主机服务器(可选)
┌───────────────────────┐ ──────────> ┌──────────────────────┐
│ 捕获 WiFi 信号 │ 二进制帧 │ 解析帧 │
│ 28 Hz,每帧最多 │ 或 32 字节 │ 可视化姿态 │
│ 192 个子载波 │ 生命体征包 │ 记录 CSI 数据 │
│ │ │ REST API + WebSocket │
│ 设备上(可选): │ └──────────────────────┘
│ 存在检测 │
│ 呼吸 + 心率 │
│ 跌倒检测 │
│ WASM 自定义模块 │
└───────────────────────┘
```
| 指标 | 硬件实测 |
|--------|----------------------|
| CSI 帧率 | 28.5 Hz(信道 5,BW20) |
| 每帧子载波数 | 64 / 128 / 192(取决于 WiFi 模式) |
| UDP 延迟 | 局域网 < 1 ms |
| 存在检测范围 | 穿墙 3 米可靠 |
| 二进制大小 | 990 KB(8MB 闪存)/ 773 KB(4MB 闪存) |
| 启动到就绪 | ~3.9 秒 |
### 烧录和配置
下载预构建二进制文件 — 无需构建工具链:
| 版本 | 包含内容 | 标签 |
|---------|-----------------|-----|
| [v0.7.0](https://github.com/ruvnet/RuView/releases/tag/v0.7.0) | **最新** — 摄像头监督的 WiFlow 模型(92.9% PCK@20)、真值训练流水线、ruvector 优化 | `v0.7.0` |
| [v0.6.0](https://github.com/ruvnet/RuView/releases/tag/v0.6.0-esp32) | [HuggingFace 上的预训练模型](https://huggingface.co/ruv/ruview)、17 个传感应用、51.6% 对比改进、0.008ms 推理 | `v0.6.0-esp32` |
| [v0.5.5](https://github.com/ruvnet/RuView/releases/tag/v0.5.5-esp32) | SNN + MinCut(修复 #348)+ CNN 频谱图 + WiFlow + 多频网状网络 + 图 Transformer | `v0.5.5-esp32` |
| [v0.5.4](https://github.com/ruvnet/RuView/releases/tag/v0.5.4-esp32) | Cognitum Seed 集成([ADR-069](docs/adr/ADR-069-cognitum-seed-csi-pipeline.md))、8 维特征向量、RVF 存储、见证链、安全加固 | `v0.5.4-esp32` |
| [v0.5.0](https://github.com/ruvnet/RuView/releases/tag/v0.5.0-esp32) | 毫米波传感器融合([ADR-063](docs/adr/ADR-063-mmwave-sensor-fusion.md))、自动检测 MR60BHA2/LD2410、48 字节融合生命体征、所有 v0.4.3.1 修复 | `v0.5.0-esp32` |
| [v0.4.3.1](https://github.com/ruvnet/RuView/releases/tag/v0.4.3.1-esp32) | 跌倒检测修复([#263](https://github.com/ruvnet/RuView/issues/263))、4MB 闪存([#265](https://github.com/ruvnet/RuView/issues/265))、看门狗修复([#266](https://github.com/ruvnet/RuView/issues/266)) | `v0.4.3.1-esp32` |
| [v0.4.1](https://github.com/ruvnet/RuView/releases/tag/v0.4.1-esp32) | CSI 构建修复、编译守卫、AMOLED 显示屏、边缘智能([ADR-057](docs/adr/ADR-057-firmware-csi-build-guard.md)) | `v0.4.1-esp32` |
| [v0.3.0-alpha](https://github.com/ruvnet/RuView/releases/tag/v0.3.0-alpha-esp32) | Alpha — 添加设备上边缘智能和 WASM 模块([ADR-039](docs/adr/ADR-039-esp32-edge-intelligence.md)、[ADR-040](docs/adr/ADR-040-wasm-programmable-sensing.md)) | `v0.3.0-alpha-esp32` |
| [v0.2.0](https://github.com/ruvnet/RuView/releases/tag/v0.2.0-esp32) | 原始 CSI 流式传输、多节点 TDM、跳频 | `v0.2.0-esp32` |
```bash
# 1. 将固件烧录到 ESP32-S3(8MB 闪存 — 大多数板)
python -m esptool --chip esp32s3 --port COM7 --baud 460800 \
write_flash --flash-mode dio --flash-size 8MB --flash-freq 80m \
0x0 bootloader.bin 0x8000 partition-table.bin \
0xf000 ota_data_initial.bin 0x20000 esp32-csi-node.bin
# 1b. 对于 4MB 闪存板(例如 ESP32-S3 SuperMini 4MB)— 使用 4MB 二进制文件:
python -m esptool --chip esp32s3 --port COM7 --baud 460800 \
write_flash --flash-mode dio --flash-size 4MB --flash-freq 80m \
0x0 bootloader.bin 0x8000 partition-table-4mb.bin \
0xF000 ota_data_initial.bin 0x20000 esp32-csi-node-4mb.bin
# 2. 设置 WiFi 凭据和服务器地址(存储在闪存中,重启后保留)
python firmware/esp32-csi-node/provision.py --port COM7 \
--ssid "YourWiFi" --password "secret" --target-ip 192.168.1.20
# 3. (可选)启动主机服务器以可视化数据
cargo run -p wifi-densepose-sensing-server -- --http-port 3000 --source auto
# 打开 http://localhost:3000
```
### 多节点网状网络
为了提高准确性和房间覆盖范围,部署 3-6 个节点,采用时分多址(TDM),让它们轮流发射:
```bash
# 3 节点网状网络中的节点 0
python firmware/esp32-csi-node/provision.py --port COM7 \
--ssid "YourWiFi" --password "secret" --target-ip 192.168.1.20 \
--node-id 0 --tdm-slot 0 --tdm-total 3
# 节点 1
python firmware/esp32-csi-node/provision.py --port COM8 \
--ssid "YourWiFi" --password "secret" --target-ip 192.168.1.20 \
--node-id 1 --tdm-slot 1 --tdm-total 3
```
节点还可以在 WiFi 信道(1、6、11)上跳频以增加传感带宽 — 通过 [ADR-029](docs/adr/ADR-029-ruvsense-multistatic-sensing-mode.md) 跳频进行配置。
### Cognitum Seed 集成(ADR-069)
将 ESP32 连接到 [Cognitum Seed](https://cognitum.one)(131 美元)以获得持久向量存储、kNN 搜索、加密见证链和 AI 可访问的 MCP 代理:
```
ESP32-S3(9 美元) ──UDP──> 主机桥接 ──HTTPS──> Cognitum Seed(15 美元)
CSI 捕获 seed_csi_bridge.py RVF 向量存储
1 Hz 的 8 维特征 kNN 相似性搜索
生命体征 + 存在 Ed25519 见证链
114 工具 MCP 代理
```
```bash
# 1. 配置 ESP32 将特征发送到你的笔记本
python firmware/esp32-csi-node/provision.py --port COM9 \
--ssid "YourWiFi" --password "secret" --target-ip 192.168.1.20 --target-port 5006
# 2. 运行桥接(通过 HTTPS 转发到 Seed)
export SEED_TOKEN="your-pairing-token"
python scripts/seed_csi_bridge.py \
--seed-url https://169.254.42.1:8443 --token "$SEED_TOKEN" --validate
# 3. 检查 Seed 统计信息
python scripts/seed_csi_bridge.py --token "$SEED_TOKEN" --stats
```
8 维特征向量捕获:存在、运动、呼吸频率、心率、相位方差、人员计数、跌倒检测和 RSSI — 全部归一化到 [0.0, 1.0]。有关完整架构,请参见 [ADR-069](docs/adr/ADR-069-cognitum-seed-csi-pipeline.md)。
### 设备上智能(v0.3.0-alpha)
Alpha 固件可以在本地分析信号并发送紧凑结果,而不是原始数据。这意味着 ESP32 可以独立工作 — 基本感知无需服务器。为了向后兼容,默认禁用。
| 层级 | 功能 | 使用的 RAM |
|------|-------------|----------|
| **0** | 关闭 — 仅流式传输原始 CSI(与 v0.2.0 相同) | 0 KB |
| **1** | 清理信号、选择最佳子载波、压缩数据(节省 30-50% 带宽) | ~30 KB |
| **2** | 层级 1 的所有功能 + 检测存在、测量呼吸和心率、检测跌倒 | ~33 KB |
| **3** | 层级 2 的所有功能 + 运行自定义 WASM 模块(手势识别、入侵检测等 [63 个以上](docs/edge-modules/README.md)) | ~160 KB/模块 |
无需重新烧录即可启用 — 只需重新配置:
```bash
# 在已烧录的节点上打开层级 2(生命体征)
python firmware/esp32-csi-node/provision.py --port COM7 \
--ssid "YourWiFi" --password "secret" --target-ip 192.168.1.20 \
--edge-tier 2
# 微调检测阈值(fall-thresh 以毫单位表示:15000 = 15.0 rad/s²)
python firmware/esp32-csi-node/provision.py --port COM7 \
--edge-tier 2 --vital-int 500 --fall-thresh 15000 --subk-count 16
```
当层级 2 激活时,节点每秒发送一个 32 字节的生命体征包,包含:存在、运动水平、呼吸 BPM、心率 BPM、置信度分数、跌倒警报标志和占用计数。
请参见 [firmware/esp32-csi-node/README.md](firmware/esp32-csi-node/README.md)、[ADR-039](docs/adr/ADR-039-esp32-edge-intelligence.md)、[ADR-044](docs/adr/ADR-044-provisioning-tool-enhancements.md) 和 [教程 #34](https://github.com/ruvnet/RuView/issues/34)。
🦀 Rust 实现(v2) — 810 倍更快,54K fps 流水线
### 性能基准(已验证)
| 操作 | Python(v1) | Rust(v2) | 加速比 |
|-----------|-------------|-----------|---------|
| CSI 预处理(4x64) | ~5ms | **5.19 µs** | ~1000x |
| 相位清理(4x64) | ~3ms | **3.84 µs** | ~780x |
| 特征提取(4x64) | ~8ms | **9.03 µs** | ~890x |
| 运动检测 | ~1ms | **186 ns** | ~5400x |
| **完整流水线** | ~15ms | **18.47 µs** | ~810x |
| **生命体征** | 不适用 | **86 µs** | 11,665 fps |
| 资源 | Python(v1) | Rust(v2) |
|----------|-------------|-----------|
| 内存 | ~500 MB | ~100 MB |
| Docker 镜像 | 569 MB | 132 MB |
| 测试 | 41 | 542+ |
| WASM 支持 | 否 | 是 |
```bash
cd rust-port/wifi-densepose-rs
cargo build --release
cargo test --workspace
cargo bench --package wifi-densepose-signal
```
💓 生命体征检测(ADR-021) — 通过 FFT 进行呼吸和心跳
| 能力 | 范围 | 方法 |
|------------|-------|------------|
| **呼吸频率** | 6-30 BPM(0.1-0.5 Hz) | 带通滤波器 + FFT 峰值检测 |
| **心率** | 40-120 BPM(0.8-2.0 Hz) | 带通滤波器 + FFT 峰值检测 |
| **采样率** | 20 Hz(ESP32 CSI) | 实时流式传输 |
| **置信度** | 每个信号 0.0-1.0 | 谱相干性 + 信号质量 |
```bash
./target/release/sensing-server --source simulate --http-port 3000 --ws-port 3001 --ui-path ../../ui
curl http://localhost:3000/api/v1/vital-signs
```
请参见 [ADR-021](docs/adr/ADR-021-vital-sign-detection-rvdna-pipeline.md)。
📡 WiFi 扫描领域层(ADR-022/025) — 适用于 Windows、macOS 和 Linux WiFi 的 8 阶段 RSSI 流水线
| 阶段 | 用途 |
|-------|---------|
| **预测门控** | 使用时序预测预过滤扫描结果 |
| **注意力加权** | 按信号相关性对 BSSID 加权 |
| **空间相关** | 跨 AP 空间信号相关 |
| **运动估计** | 从 RSSI 方差检测运动 |
| **呼吸提取** | 从亚 Hz 振荡提取呼吸频率 |
| **质量门控** | 拒绝低置信度估计 |
| **指纹匹配** | 通过射频指纹进行位置和姿态分类 |
| **编排** | 将所有阶段融合为统一的感知输出 |
```bash
cargo test -p wifi-densepose-wifiscan
```
请参见 [ADR-022](docs/adr/ADR-022-windows-wifi-enhanced-fidelity-ruvector.md) 和 [教程 #36](https://github.com/ruvnet/RuView/issues/36)。
🚨 WiFi-Mat:灾难响应 — 搜索与救援、START 分诊、3D 定位
WiFi 信号可以穿透非金属碎片(混凝土、木材、石膏板),而摄像头和热传感器无法到达。WiFi-Mat 模块(`wifi-densepose-mat`,139 个测试)使用 CSI 分析检测被困在废墟下的幸存者,使用 START 分诊协议对其状况进行分类,并估计其 3D 位置 — 在部署后几秒钟内为救援队提供可操作的情报。
| 能力 | 工作原理 | 性能目标 |
|------------|-------------|-------------------|
| **呼吸检测** | 带通 0.07-1.0 Hz + 菲涅尔区建模检测 5 GHz 下 5-10mm 的胸部位移 | 4-60 BPM,<500ms 延迟 |
| **心跳检测** | 从细粒度 CSI 相位变化中提取微多普勒频移 | 通过 ruvector-temporal-tensor |
| **3D 定位** | 多 AP 三角测量 + CSI 指纹匹配 + 通过废墟层的深度估计 | 3-5m 穿透 |
| **START 分诊** | 集成分类器对呼吸 + 运动 + 生命体征稳定性进行投票 → P1-P4 优先级 | <1% 假阴性 |
| **区域扫描** | 16+ 个并发扫描区域,定期重新扫描和审计日志记录 | 整个灾难现场 |
**分诊分类(兼容 START 协议):**
| 状态 | 颜色 | 检测标准 | 优先级 |
|--------|-------|-------------------|--------|
| 立即 | 红色 | 检测到呼吸,无运动 | P1 |
| 延迟 | 黄色 | 运动 + 呼吸,生命体征稳定 | P2 |
| 轻微 | 绿色 | 强烈运动,有反应模式 | P3 |
| 死亡 | 黑色 | 连续扫描 >30 分钟无生命体征 | P4 |
**部署模式:** 便携式(单 TX/RX 手持)、分布式(坍塌点周围多个 AP)、无人机安装(UAV 扫描)、车载(移动指挥所)。
```rust
use wifi_densepose_mat::{DisasterResponse, DisasterConfig, DisasterType, ScanZone, ZoneBounds};
let config = DisasterConfig::builder()
.disaster_type(DisasterType::Earthquake)
.sensitivity(0.85)
.max_depth(5.0)
.build();
let mut response = DisasterResponse::new(config);
response.initialize_event(location, "Building collapse")?;
response.add_zone(ScanZone::new("North Wing", ZoneBounds::rectangle(0.0, 0.0, 30.0, 20.0)))?;
response.start_scanning().await?;
```
**安全保证:** 故障安全默认值(在模糊信号下假设生命存在)、冗余多算法投票、完整审计跟踪、离线能力(无需网络)。
- [WiFi-Mat 用户指南](docs/wifi-mat-user-guide.md) | [ADR-001](docs/adr/ADR-001-wifi-mat-disaster-detection.md) | [领域模型](docs/ddd/wifi-mat-domain-model.md)
🔬 SOTA 信号处理(ADR-014) — 6 个研究级算法
信号处理层弥合了原始商用 WiFi 硬件输出与研究级传感精度之间的差距。每个算法都解决了朴素 CSI 处理的特定局限性 — 从硬件引起的相位损坏到环境依赖的多径干扰。所有六个算法都在 `wifi-densepose-signal/src/` 中实现,具有确定性测试且无模拟数据。
| 算法 | 功能 | 重要性 | 数学原理 | 来源 |
|-----------|-------------|----------------|------|--------|
| **共轭乘法** | 将 CSI 天线对相乘:`H₁[k] × conj(H₂[k])` | 消除损坏原始相位的 CFO、SFO 和包检测延迟 — 仅保留环境引起的相位差 | `CSI_ratio[k] = H₁[k] * conj(H₂[k])` | [SpotFi](https://dl.acm.org/doi/10.1145/2789168.2790124)(SIGCOMM 2015) |
| **Hampel 滤波器** | 使用运行中位数 ± 缩放 MAD 替换异常值 | Z 得分使用均值和标准差,这些会被其检测到的异常值破坏(掩蔽效应)。Hampel 使用中位数/MAD,抵抗高达 50% 的污染 | `σ̂ = 1.4826 × MAD` | 标准 DSP;WiGest(2015) |
| **菲涅尔区模型** | 模拟胸部位移穿过菲涅尔区边界引起的信号变化 | 零交叉计数在多径丰富的环境中失效。菲涅尔预测呼吸应*在哪里*出现,基于 TX-RX-身体几何 | `ΔΦ = 2π × 2Δd / λ`,`A = \|sin(ΔΦ/2)\|` | [FarSense](https://dl.acm.org/doi/10.1145/3300061.3345431)(MobiCom 2019) |
| **CSI 频谱图** | 每个子载波的滑动窗口 FFT(STFT)→ 2D 时频矩阵 | 呼吸 = 0.2-0.4 Hz 频带,行走 = 1-2 Hz,静态 = 噪声。2D 结构使 CNN 能够进行空间模式识别,这是 1D 特征所缺少的 | `S[t,f] = \|Σₙ x[n] w[n-t] e^{-j2πfn}\|²` | 2018 年以来标准 |
| **子载波选择** | 按运动灵敏度(方差比)对子载波排序,选择 top-K | 并非所有子载波都对运动有响应 — 有些位于多径零点。选择 10-20 个最敏感的子载波可将 SNR 提高 6-10 dB | `sensitivity[k] = var_motion / var_static` | [WiDance](https://dl.acm.org/doi/10.1145/3117811.3117826)(MobiCom 2017) |
| **身体速度剖面** | 从跨子载波的多普勒频移中提取速度分布 | BVP 是领域无关的 — 无论房间布局、家具或 AP 位置如何,速度剖面都相同。跨环境识别的基础 | `BVP[v,t] = Σₖ \|STFTₖ[v,t]\|` | [Widar 3.0](https://dl.acm.org/doi/10.1145/3328916)(MobiSys 2019) |
**处理流水线顺序:** 原始 CSI → 共轭乘法(相位清理)→ Hampel 滤波器(异常值剔除)→ 子载波选择(top-K)→ CSI 频谱图(时频)→ 菲涅尔模型(呼吸)+ BVP(活动)
有关完整的数学推导,请参见 [ADR-014](docs/adr/ADR-014-sota-signal-processing.md)。
🧠 模型与训练
🤖 AI 骨干:RuVector — 为传感流水线提供动力的注意力、图算法和边缘 AI 压缩
原始 WiFi 信号嘈杂、冗余且依赖于环境。[RuVector](https://github.com/ruvnet/ruvector) 是 AI 智能层,将它们转换为干净、结构化的输入,供 DensePose 神经网络使用。它使用**注意力机制**学习信任哪些信号,使用**图算法**自动发现哪些 WiFi 信道对身体运动敏感,以及使用**压缩表示**使得在 8 美元微控制器上进行边缘推理成为可能。
如果没有 RuVector,WiFi DensePose 将需要手动调整的阈值、蛮力矩阵数学和 4 倍以上的内存 — 使得实时边缘推理不可能。
```
原始 WiFi CSI(56 个子载波,嘈杂)
|
+-- ruvector-mincut ---------- 哪些信道携带身体运动信号?(学习到的图分区)
+-- ruvector-attn-mincut ----- 哪些时间帧是信号 vs 噪声?(注意力门控滤波)
+-- ruvector-attention ------- 如何融合多天线数据?(学习到的加权聚合)
|
v
干净、结构化的信号 --> DensePose 神经网络 --> 17 关键点身体姿态
--> FFT 生命体征 -----------> 呼吸频率、心率
--> ruvector-solver ------------> 基于物理的定位
```
[`wifi-densepose-ruvector`](https://crates.io/crates/wifi-densepose-ruvector) crate([ADR-017](docs/adr/ADR-017-ruvector-signal-mat-integration.md))连接所有 7 个集成点:
| AI 能力 | 取代了什么 | RuVector Crate | 结果 |
|--------------|-----------------|----------------|--------|
| **自优化信道选择** | 当房间改变时会失效的手动调整阈值 | `ruvector-mincut` | 图最小割自动适应任何环境 |
| **基于注意力的信号清理** | 会错过细微呼吸的固定能量截止值 | `ruvector-attn-mincut` | 学习到的门控放大身体信号,抑制噪声 |
| **学习到的信号融合** | 一个坏信道会污染所有的简单平均 | `ruvector-attention` | Transformer 式注意力降低损坏信道的权重 |
| **基于物理的定位** | 昂贵的非线性求解器 | `ruvector-solver` | 实时菲涅尔几何的稀疏最小二乘法 |
| **O(1) 幸存者三角测量** | O(N^3) 矩阵求逆 | `ruvector-solver` | 用于即时位置更新的诺伊曼级数线性化 |
| **75% 内存压缩** | 会溢出边缘设备的 13.4 MB 呼吸缓冲区 | `ruvector-temporal-tensor` | 分层 3-8 位量化,将 60 秒的生命体征适配到 3.4 MB |
有关代码示例的深入探讨,请参见 [issue #67](https://github.com/ruvnet/RuView/issues/67),或使用 [`cargo add wifi-densepose-ruvector`](https://crates.io/crates/wifi-densepose-ruvector) 直接使用。
# 参考资料
* any list
{:toc}