# WiFi感知人体姿态监测:基于双节点CSI的去重与定位方案

## 概述

本文介绍一种基于商用WiFi芯片(ESP32)的双节点CSI(Channel State Information)人体感知方案,实现室内环境下的人体存在检测、姿态识别与跌倒监测。

与传统穿戴式设备(手环、手表)或摄像头方案不同,本方案被动感知,无需佩戴任何设备,也无需担心隐私问题(无图像/视频数据采集)。

## 系统架构

```
┌─────────────┐ UDP/5005 ┌──────────────┐
│ ESP32-A │ ──────────────────→│ │
│ (卧室) │ │ CareBear │
│ │ │ 后端服务 │────────→ Web Dashboard
│ ESP32-B │ UDP/5005 │ (Python) │
│ (客厅) │ ──────────────────→│ │
└─────────────┘ └──────────────┘
```

两枚ESP32开发板(成本约¥30/枚)分别部署在不同房间,持续采集WiFi CSI数据(每秒约10-20帧)。后端Python服务接收UDP数据后进行:

1. **相位清洗** — 去缠绕、去野点、滑动平均平滑
2. **双节点相关性分析** — 判断两个节点检测到的是否为同一人体
3. **特征提取** — Enhanced值(相位能量)和Drift值(帧间变化)
4. **姿态判定** — 静止/走动/跌倒
5. **人数估计** — 基于相关性去重的独立目标计数

## 核心技术点

### 1. 相位增强与清洗

原始CSI相位数据包含大量噪声。我们采用了类RuView风格的相位清洗管道:

- **去缠绕(Unwrap)**:消除相位周期性跳变
- **野点剔除**:超过3倍标准差的异常值替换为均值
- **滑动平均(窗口=5)**:平滑短期波动

处理后得到的 `enhanced` 值反映人体对WiFi信道的综合影响强度。

### 2. 双节点相关性去重

当同一个人在室内活动时,两个ESP32节点都能感知到信号变化。但同一事件应在两个节点上表现出时间相关性。

我们实现的去重逻辑:
- 两帧到达时间在300ms以内,视为同一事件
- 比较两节点的enhanced值变化方向(同向或反向)
- 利用**信号比(A/B)**辅助定位:根据两节点的信号强度比值判断人体位置

### 3. 呼吸检测防误判

静止状态下(躺、坐),两节点的enhanced值保持稳定,但存在微弱的呼吸波(约0.2-0.5Hz)。

关键技术细节:
- **快速傅里叶变换(FFT)**检测呼吸频率成分
- 检测到呼吸时,即使enhanced值较高仍判定为"躺"而非"空"
- 有效区分"人躺着"和"房间空着"两种场景

### 4. 基于标注数据的分类器

采集了13个场景的标注数据(不同位置/姿态组合),包括:

| 场景 | 位置 | 姿态 |
|------|------|------|
| bedroom_lie | 卧室 | 躺着 |
| bedroom_sit | 卧室 | 坐 |
| bedroom_walk | 卧室 | 走动 |
| livingroom_sit | 客厅 | 坐 |
| livingroom_walk | 客厅 | 走动 |
| bathroom_sit | 卫生间 | 坐 |
| bathroom_walk | 卫生间 | 走动 |
| doorway_stand | 门口 | 站立 |
| bigroom_lie | 大房间 | 躺着 |
| ... | ... | ... |

分类器基于**均值+标准差**的模板匹配策略:
- 计算每个场景两节点的enhanced均值和标准差
- 实时传入的两节点值与模板库一一匹配,选最接近的场景
- 输出位置、姿态、活动类型和置信度

### 5. 跌倒检测

跌倒检测的双重判定标准:
- **Enhanced值骤变**:2秒内enhanced值变化超过6.0
- **Drift检测**:帧间变化率超过阈值
- 两节点均检测到异常事件以提高可信度

## 硬件部署

| 节点 | 位置 | 芯片 | 成本 |
|------|------|------|------|
| ESP32-A | 小卧室 | ESP32-WROOM-32 | ≈¥15 |
| ESP32-B | 客厅 | ESP32-WROOM-32 | ≈¥15 |
| 可选外壳 | - | 3D打印 | ≈¥6 |

## 与现有方案的对比

| 特性 | 本方案 | 摄像头方案 | 穿戴设备 | 雷达方案 |
|------|--------|------------|----------|----------|
| 隐私性 | ✅ 无图像 | ❌ 隐私问题 | ✅ 仅佩戴者 | ✅ 无图像 |
| 被动感知 | ✅ 无需穿戴 | ✅ 无需穿戴 | ❌ 需佩戴 | ✅ 无需穿戴 |
| 硬件成本 | ✅ ¥30 | ❌ ¥100+ | ❌ ¥100+ | ❌ ¥200+ |
| 跌倒检测 | ✅ 支持 | ✅ 支持 | ✅ 支持 | ✅ 支持 |
| 多人区分 | ⚠️ 有限 | ✅ 强 | ❌ 仅个人 | ⚠️ 有限 |
| 全天候 | ✅ 光线无关 | ❌ 暗光受限 | ✅ | ✅ 光线无关 |

## 总结与展望

本方案以极低成本实现了WiFi感知人体姿态监测,在隐私保护、被动感知和成本方面具有显著优势。

**下一步计划:**
- 引入更丰富的特征(呼吸波形、CSI幅值谱)
- 增加3号节点改善房间级定位精度
- 基于更多标注数据优化分类器
- 跌倒检测的真实场景验证

---

*本文首发于[小九AI技术站](https://xiaojiuai.cn/),记录CareBear看护公仔项目的技术实现细节。*