PolyPulse:非接触雷达血压感知——CMU 多部位脉搏波传导时间测量

论文标题: PolyPulse: Multi-Site Contactless Pulse Transit Time Measurement via mmWave Radar
作者: Jiangyifei Zhu, Kuang Yuan, Swarun Kumar, Justin Chan(CMU 电气与计算机工程系)
发表: Nature Communications, 2026年7月
arXiv: 2510.18141
机构: 卡内基梅隆大学工程学院


核心创新

PolyPulse 首次实现了非接触多部位脉搏波传导时间(PTT)测量,通过 mmWave 雷达同时追踪多个身体部位的微动,推算血压和动脉硬度:

  1. 多部位同时测量:心尖、颈动脉、桡动脉、乳突——形成血管路径地图
  2. 非接触:无需电极、袖带或穿戴设备
  3. 血压估算:通过 PTT 推算舒张压
  4. 紧凑硬件:16.5×14cm,可嵌入智能家居

1. 技术原理

1.1 脉搏波传导时间(PTT)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
class PTTPrimer:
"""脉搏波传导时间基础"""

def __init__(self):
self.explanation = """
PTT = 脉搏波从心脏传导到末梢所需的时间

物理原理:
- 心脏收缩产生压力波
- 压力波沿动脉传导
- 传导速度取决于血管弹性(硬度)

临床意义:
- PTT 短 → 血管硬 → 血压高
- PTT 长 → 血管弹性好 → 血压低

PolyPulse 的创新:
- 同时测量 4 个部位的脉搏到达时间
- 计算多路径 PTT
- 构建血管地图
"""

self.measurement_points = {
'heart_apex': {'location': '心尖', 'distance_from_heart': 0, 'role': '起点'},
'carotid': {'location': '颈动脉', 'distance_from_heart': '~20cm', 'role': '近端'},
'radial': {'location': '桡动脉(手腕)', 'distance_from_heart': '~60cm', 'role': '远端'},
'mastoid': {'location': '乳突(耳后)', 'distance_from_heart': '~30cm', 'role': '中段'}
}

self.ptt_pairs = {
'heart_to_carotid': '~20ms (正常)',
'heart_to_mastoid': '~30ms (正常)',
'heart_to_radial': '~60ms (正常)',
'carotid_to_radial': '~40ms (正常)'
}

def ptt_to_bp(self, ptt_ms, distance_m=0.6):
"""
PTT 到血压的转换(Moens-Korteweg 方程简化版)

PWV = distance / PTT
BP ∝ PWV^2
"""
if ptt_ms <= 0:
return None
ptt_s = ptt_ms / 1000
pwv = distance_m / ptt_s # m/s
# 简化估算
bp_estimate = 80 + 0.5 * (pwv - 5) ** 2
return bp_estimate

1.2 mmWave 雷达如何测量脉搏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
import torch
import torch.nn as nn
import numpy as np

class MultiSiteRadarPTT(nn.Module):
"""
PolyPulse 多部位雷达 PTT 测量模型

论文核心方法:
1. mmWave 波束成形指向 4 个身体部位
2. 每个部位提取微动信号(脉搏引起的皮肤位移)
3. 检测脉搏到达时间
4. 计算多路径 PTT
"""
def __init__(self, num_sites=4, num_antennas=16):
super().__init__()
self.num_sites = num_sites

# 波束成形网络
self.beamformer = nn.ModuleList([
nn.Conv1d(num_antennas, 1, kernel_size=1, bias=False)
for _ in range(num_sites)
])

# 脉搏检测网络
self.pulse_detector = nn.ModuleList([
nn.Sequential(
nn.Conv1d(1, 32, kernel_size=15, padding=7),
nn.BatchNorm1d(32),
nn.ReLU(),
nn.Conv1d(32, 64, kernel_size=11, padding=5),
nn.BatchNorm1d(64),
nn.ReLU(),
nn.Conv1d(64, 1, kernel_size=5, padding=2),
nn.Sigmoid()
)
for _ in range(num_sites)
])

# PTT 估计网络
self.ptt_estimator = nn.Sequential(
nn.Linear(num_sites * 64, 256),
nn.ReLU(),
nn.Linear(256, 128),
nn.ReLU(),
nn.Linear(128, num_sites * (num_sites - 1) // 2) # PTT 对数
)

self.site_names = ['heart_apex', 'carotid', 'radial', 'mastoid']

def forward(self, radar_tensor: torch.Tensor) -> dict:
"""
Args:
radar_tensor: (B, num_antennas, T) - 多天线雷达回波
Returns:
ptt_matrix: dict of site pairs -> PTT estimates
"""
B, A, T = radar_tensor.shape

# 1. 波束成形:每个部位单独提取
site_signals = []
for i in range(self.num_sites):
beam = self.beamformer[i](radar_tensor) # (B, 1, T)
site_signals.append(beam)

# 2. 脉搏检测
pulse_features = []
for i in range(self.num_sites):
feat = self.pulse_detector[i](site_signals[i]) # (B, 1, T)
# 提取特征
feat_flat = feat.mean(dim=2) # 简化:实际用更复杂特征
pulse_features.append(feat_flat)

all_features = torch.cat(pulse_features, dim=1) # (B, num_sites*64... 简化)

# 3. PTT 估计
ptt_raw = self.ptt_estimator(all_features)

return {
'site_signals': site_signals,
'ptt_raw': ptt_raw,
'sites': self.site_names
}


class PolyPulseSystem(nn.Module):
"""
PolyPulse: 完整的非接触雷达血压感知系统

论文:arXiv:2510.18141, Nature Communications
应用:座舱心血管监测、居家健康监测
"""
def __init__(self):
super().__init__()
self.radar_ptt = MultiSiteRadarPTT(num_sites=4, num_antennas=16)

def forward(self, radar_data: torch.Tensor) -> dict:
"""
完整推理管道

Args:
radar_data: (B, 16, T) - 16天线 mmWave 雷达数据
Returns:
health_assessment: dict with PTT, BP estimate, risk
"""
# 多部位 PTT 测量
ptt_results = self.radar_ptt(radar_data)

# PTT -> 血压估算
ptt_heart_radial = ptt_results['ptt_raw'][0] # 简化
pwv = 0.6 / (ptt_heart_radial / 1000) # m/s

# 血压估算
bp_diastolic = 80 + 0.5 * max(0, pwv - 5) ** 2

# 动脉硬度评估
if pwv > 10:
stiffness_risk = 'high'
elif pwv > 7:
stiffness_risk = 'moderate'
else:
stiffness_risk = 'low'

return {
'ptt_ms': ptt_heart_radial.item(),
'pwv': pwv,
'bp_diastolic_estimate': bp_diastolic,
'arterial_stiffness': stiffness_risk,
**ptt_results
}


# ==================== 测试 ====================

if __name__ == "__main__":
print("=" * 60)
print("PolyPulse 非接触雷达血压感知测试")
print("=" * 60)

model = PolyPulseSystem()

# 模拟 16 天线 mmWave 雷达数据
T = 1000 # 5秒 @ 200Hz
radar_data = torch.randn(1, 16, T) * 0.1

# 推理
results = model(radar_data)

print(f"输入: {radar_data.shape} (B, antennas, T)")
print(f"PTT (ms): {results['ptt_ms']:.2f}")
print(f"PWV (m/s): {results['pwv']:.2f}")
print(f"舒张压估算: {results['bp_diastolic_estimate']:.1f} mmHg")
print(f"动脉硬度风险: {results['arterial_stiffness']}")

total_params = sum(p.numel() for p in model.parameters())
print(f"\n模型参数量: {total_params / 1e3:.1f}K")

# 硬件参数
print(f"\n硬件参数:")
print(f" 尺寸: 16.5 × 14 cm")
print(f" 天线: 16 阵列")
print(f" 频段: mmWave (60GHz)")
print(f" 测量部位: 4 个(心尖、颈动脉、桡动脉、乳突)")

2. 实验结果

2.1 性能指标

指标 PolyPulse 传统袖带 穿戴式
接触方式 非接触 需袖带 需佩戴
血压估算 ✅ 舒张压 ✅ 金标准 ⚠️ 估算
PTT 精度 多路径 单路径 单路径
连续监测 ✅ ❌ ✅
隐私 ✅ ✅ ✅
环境适应 穿材料 无限制 皮肤接触

2.2 临床意义

PTT/PWV 值 血管状态 临床建议
PWV < 7 m/s 弹性好 健康
PWV 7-10 m/s 轻度硬化 关注
PWV > 10 m/s 中度硬化 医疗评估
PWV > 15 m/s 重度硬化 紧急

3. IMS 开发启示

3.1 座舱血压监测的可行性

PolyPulse 部位 座舱对应位置 可行性 挑战
心尖 方向盘雷达 ✅ 已有 驾驶员距离近
颈动脉 A柱/后视镜 ✅ 距离 50-80cm
桡动脉 方向盘 ⚠️ 手腕在方向盘上
乳突 头枕 ✅ 头部需靠头枕

3.2 与 TU Braunschweig 方案的融合

3.3 部署成本

组件 来源 成本 用途
mmWave 雷达 (16天线) CMU 方案 $20-40 血压+PTT
ECG 电极 方向盘嵌入 $5-10 心律
rPPG 摄像头 复用 DMS $0 心率+呼吸
PCG 麦克风 安全带嵌入 $3-5 心音
融合控制器 边缘 AI $10-20 多模态融合
总计 $38-75 完整 HMS

4. 未来展望

4.1 从座舱到家庭的连续监测

场景 PolyPulse 角色 互补方案
驾驶中 方向盘+头枕雷达 + ECG + rPPG
居家 智能音箱式雷达 单部位简化版
办公 桌面雷达 趋势监测
睡眠 床头雷达 夜间血压

4.2 与 IMS 的长期路线

  1. 2026: DMS + 基础生命体征(心率、呼吸)
  2. 2027: + ECG + 血压估算
  3. 2028: + 多部位 PTT + 动脉硬度
  4. 2029: + 长期趋势 + 疾病预测
  5. 2030: 诊断级座舱

参考来源