用 WiFi 信号穿墙识人:开源空间感知框架 RuView 的信号链与边缘架构拆解
在卧室、浴室、病房以及养老看护等高私密性场景中,部署光学摄像头往往面临不可逾越的隐私伦理与合规红线。传统红外传感器(PIR)仅能检测是否有大动作,无法感知静止微动;而高精度的毫米波雷达设备成本偏高,且难以穿透厚重障碍物。如何以极低成本实现非接触、穿墙、全天候且完全不触及视觉图像的人体姿态与生命体征监测,一直是智能感知领域的核心课题。
近期斩获过十万星关注的开源项目 RuView 给出了一个极具工程实操性的解法:直接利用室内无处不在的商用 WiFi 射频信号。当人体在空间内移动、坐立甚至微弱呼吸时,散落的电磁波会被调制并在多径传播中形成独特的扰动指纹。RuView 通过捕获低成本微控制器(如几美元的 ESP32-S3 / C6)或商用 WiFi 路由器的信道状态信息(CSI,Channel State Information),经由 Rust 高性能信号处理管道与边缘轻量级神经网络,实时重构出人体 17 处关键点骨骼姿态、呼吸心率以及三维空间点云,实现了全流程无视觉像素的被动式空间智能感知。

为什么传统 WiFi CSI 感知长期停留在实验室?
通过 WiFi CSI 做感知在学术界已有超过十年的研究历史,但工程落地一直饱受困扰,核心阻碍集中在三个现实痛点:
- 多径反射与环境漂移: 室内桌椅挪动、门窗开关甚至室外车辆驶过,都会彻底改变多径反射拓扑。如果模型单纯拟合时域波形,往往换个房间或改变家具布局后准确率就会骤降。
- 生理微动信号极其微弱: 人体呼吸引起的胸腔起伏位移大约在 2 到 5 毫米,心跳引起的微动甚至小于 0.5 毫米。在 2.4GHz 或 5GHz 频段下,这类微多普勒频移很容易被射频收发前端的时钟抖动与天线相位噪声彻底淹没。
- 多节点协同与边缘算力失衡: 高频捕获多天线子载波矩阵需要密集的网络吞吐与时钟同步,传统做法依赖昂贵的工控机或外部 GPU 集群,难以跑在轻量嵌入式硬件上。
RuView 之所以在工程界引发强烈反响,关键在于其将物理学菲涅尔区建模、经典信号滤波与现代化 Rust 边缘推理引擎结合,构建了一套容错率极高的确定性信号处理链。

核心技术链路与系统架构拆解
RuView 整个系统采用解耦的边缘分布式架构,主要包含四个核心层级:
1. 硬件节点与多频段 TDM 采集
感知节点采用低成本硬件构建。标准固件支持 ESP32-S3 以及 WiFi 6 规格的 ESP32-C6:
- 多频段跳频融合: 节点通过时分复用(TDM)协议在信道 1、6、11 之间交替捕获 CSI,将每个信道的 56 个子载波合成为 168 个虚拟子载波,大幅提升了频域分辨率与对静止多径的解析能力。
- 低功耗边缘监听: 在 ESP32-C6 上,RuView 引入了 802.15.4 网状时钟同步,并利用其内部 RISC-V 低功耗核心(LP-core)运行去抖动运动门控程序,待机功耗可压低至 5 微安级别,实现电池供电下的按需唤醒。
2. 相位去噪与相干门控(Coherence Gate)
未经净化的原始 CSI 相位包含严重的非线性跳变。RuView 在数据进入模型前施加了多阶段信号调节:
- 采用 Hampel 滤波器剔除突发离群包,并结合 SpotFi 算法解析超分辨率到达角(AoA)与飞行时间(ToF)。
- 引入 Coherence Gate(相干门控) 机制:动态计算不同子载波之间的相位相关系数,直接丢弃由于射频振荡器漂移或瞬间宽带干扰导致的失真帧,保证了感知流在连续运行数天无需重新标定。
3. 多重视角张量融合与神经网络估计
当空间中部署 4 到 6 个节点时,节点间两两互联构成了 N×(N-1) 条定向射频链路。RuView 的后端核心库(基于 Rust 编写的 wifi-densepose-core 与 ruvector)对各链路的微多普勒特征进行注意力加权跨视角对齐,将射频扰动矩阵投射为人体体素表示,最终由轻量级卷积与图神经网络解码输出:
- 17 点三维骨骼关键点(DensePose): 实时识别站立、坐下、行走、跌倒等姿势,在完全黑暗或有视线阻挡的墙后依然保持追踪。
- 微动体征提取: 通过带通滤波与频谱分解,分离胸腔起伏(0.1~0.5 Hz)与心肌搏动(0.8~2.5 Hz)微扰动,输出连续呼吸率与心率数值。

快速上手与部署方式
RuView 提供了极为灵活的分层接入方案,覆盖从免硬件仿真到生产级网关的各种需求:
方案 A:Docker 快速仿真体验(无需任何硬件)
如果你手头暂时没有 ESP32 开发板,可以直接启动官方预置的 Docker 仿真镜像,系统会内置合成 CSI 数据流并开放前端可视化看板:
# 启动 Docker 仿真感知环境
docker run -d -p 3000:3000 -p 8080:8080 ruvnet/ruview:latest
# 浏览器访问 WebUI 控制台
http://localhost:3000
方案 B:Python SDK 与嵌入式调用
RuView 将底层经过严格优化的 Rust 信号内核通过 PyO3 导出为标准 Python Wheel 包,可以在 Linux、macOS 与 Windows 上直接安装调用:
# 安装 Python 绑定与 WebSocket 客户端拓展
pip install ruview[client]
在业务逻辑中,只需几行代码即可直接订阅生命体征流或跌倒预警事件:
from ruview import BreathingExtractor, HeartRateExtractor
from ruview.client import SensingClient
# 连接至本地或网关数据流
client = SensingClient(uri="ws://localhost:8080/v1/sensing")
async def monitor():
async for frame in client.stream_csi():
breathing_rate = BreathingExtractor.process(frame)
heart_rate = HeartRateExtractor.process(frame)
print(f"实时体征检测 -> 呼吸: {breathing_rate:.1f} bpm, 心率: {heart_rate:.1f} bpm")
客观边界与工程取舍
在理解 RuView 优势的同时,开发者也需要客观看待 WiFi 射频感知的物理边界:
- 空间容量限制: 单对收发链路通常能清晰区分 3 到 5 个人的人形轨迹。如果空间内人数进一步增加,多径相互叠加会导致重影与识别率衰减,必须通过增加多视角网状节点来线性拓展并发追踪能力。
- 建筑材质对衰减的影响: 常见石膏板隔墙、木门和家具对 2.4G/5GHz 信号的衰减较小,穿墙感知效果稳定;但如果是高厚度钢筋混凝土剪力墙或带有金属屏蔽层的结构,射频穿透衰减急剧增加,需要将节点合理布置在门廊或反射通道处。
- 非视觉像素的替代定位: 射频感知重在解决存在性、跌倒告警、轨迹跟踪与睡眠体征监测,它无法识别面部特征或衣物颜色。但正是这一物理特质,让它天然免疫隐私审查,能够在敏感场景发挥不可替代的价值。
项目资源与参考链接
RuView 代码库已全量开放,包含完整的 Rust 信号核心、ESP32 固件驱动、预训练模型权重与 Home Assistant / Matter 插件:
- GitHub 仓库源码: https://github.com/ruvnet/RuView
- 官方平台与技术文档: https://cognitum.one/RuView
- Hugging Face 预训练模型: https://huggingface.co/ruvnet/wifi-densepose-pretrained