RT-VSS:FR3频段(7-24GHz)生命体征感知——座舱雷达新频段探索

论文信息

项目 内容
标题 RT-VSS: In-House Ray Tracing for Vital Signs Sensing in the FR3 Band
arXiv 2609.15310
作者 Rudranil Chattopadhyay 等
提交时间 2026-09-14
关键词 FR3频段, 生命体征感知, 射线追踪, ISAC

核心发现

FR3频段(7-24GHz)可以用于室内生命体征(呼吸+心跳)监测,且相比FR1(sub-6GHz)和FR2(mmWave)有独特优势。

关键发现:

  1. 厘米级波长提升对胸腔微动的相位灵敏度
  2. 丰富多径增强时间和空间分集
  3. 大带宽提供高时间分辨率
  4. 使用 Sionna Ray Tracing + Blender 物理仿真验证可行性

频段对比

频段 频率范围 波长 相位灵敏度 多径丰富度 穿透力
FR1 (sub-6GHz) 0.4-6GHz 5-75cm 低 中 强
FR3 7-24GHz 1.25-4.3cm 高 丰富 中
FR2 (mmWave) 24-52GHz 0.6-1.25cm 极高 少 弱

方法详解

仿真管道

核心代码实现

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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
import numpy as np
from scipy import signal
from typing import Tuple

class FR3VitalSignsSimulator:
"""
FR3频段生命体征感知仿真器

论文核心方法实现:
1. 建模胸腔运动(呼吸+心跳)
2. 模拟FR3频段雷达回波
3. 提取生命体征信号

Args:
freq: 载波频率 (Hz), 默认14GHz (FR3中间)
tx_power: 发射功率 (dBm)
"""

def __init__(self, freq=14e9, tx_power=10):
self.freq = freq
self.wavelength = 3e8 / freq # ~2.14cm @14GHz
self.tx_power = tx_power

# 生理信号参数
self.breathing_rate = 0.25 # 15 breaths/min = 0.25Hz
self.heart_rate = 1.2 # 72 beats/min = 1.2Hz
self.breathing_amplitude = 6e-3 # 6mm 胸腔起伏
self.heart_amplitude = 0.3e-3 # 0.3mm 心脏微动

def model_chest_displacement(self, duration=10, fs=1000):
"""
建模胸腔位移(呼吸+心跳叠加)

物理模型:
- 呼吸:胸腔大幅度缓慢起伏
- 心跳:胸壁微小快速振动

Returns:
displacement: 胸部位移 (m), shape=(N,)
"""
t = np.arange(0, duration, 1/fs)

# 呼吸信号(正弦+谐波)
breathing = self.breathing_amplitude * (
np.sin(2 * np.pi * self.breathing_rate * t) +
0.3 * np.sin(2 * np.pi * 2 * self.breathing_rate * t)
)

# 心跳信号(更复杂波形)
heartbeat = self.heart_amplitude * (
np.sin(2 * np.pi * self.heart_rate * t) +
0.5 * np.sin(2 * np.pi * 2 * self.heart_rate * t) +
0.2 * np.sin(2 * np.pi * 3 * self.heart_rate * t)
)

# 叠加 + 少量随机运动
noise = np.random.normal(0, 0.1e-4, len(t))
displacement = breathing + heartbeat + noise

return t, displacement

def simulate_radar_echo(self, displacement, target_distance=1.0,
snr_db=20):
"""
模拟FR3频段雷达回波

物理原理:
- 胸腔位移导致相位变化: Δφ = 4π·Δd/λ
- FR3波长~2cm, 0.3mm心跳 → Δφ ≈ 0.1 rad (可检测)
- sub-6GHz波长~10cm, 0.3mm → Δφ ≈ 0.02 rad (难检测)

Args:
displacement: 胸部位移 (m)
target_distance: 目标距离
snr_db: 信噪比
"""
# 相位调制
phase_mod = 4 * np.pi * displacement / self.wavelength

# 载波信号
t = np.arange(len(displacement)) / 1000 # 1kHz采样
carrier = np.exp(1j * (2 * np.pi * self.freq * t + phase_mod))

# 添加多径(简化)
multipath_delays = [0, 3e-9, 8e-9] # 直射+2条多径
multipath_gains = [1.0, 0.5, 0.3]

received = np.zeros_like(carrier, dtype=complex)
for delay, gain in zip(multipath_delays, multipath_gains):
delayed = np.roll(carrier, int(delay * 1000))
received += gain * delayed

# 添加噪声
signal_power = np.mean(np.abs(received)**2)
noise_power = signal_power / (10 ** (snr_db / 10))
noise = np.random.normal(0, np.sqrt(noise_power/2), len(received)) + \
1j * np.random.normal(0, np.sqrt(noise_power/2), len(received))

return received + noise

def extract_vital_signs(self, received_signal, fs=1000):
"""
从雷达回波提取生命体征

信号处理管道:
1. 相位解调
2. 带通滤波分离呼吸/心跳
3. 频谱分析
"""
# 1. 相位解调
phase = np.angle(received_signal)
phase_unwrapped = np.unwrap(phase)

# 2. 去趋势
phase_detrended = signal.detrend(phase_unwrapped)

# 3. 带通滤波
# 呼吸: 0.1-0.5 Hz (6-30 breaths/min)
breathing_filter = signal.butter(4, [0.1, 0.5], btype='band', fs=fs)
breathing_signal = signal.filtfilt(*breathing_filter, phase_detrended)

# 心跳: 0.8-2.0 Hz (48-120 bpm)
heart_filter = signal.butter(4, [0.8, 2.0], btype='band', fs=fs)
heart_signal = signal.filtfilt(*heart_filter, phase_detrended)

# 4. 频谱分析
freqs_b, psd_b = signal.welch(breathing_signal, fs=fs, nperseg=1024)
freqs_h, psd_h = signal.welch(heart_signal, fs=fs, nperseg=1024)

breathing_freq = freqs_b[np.argmax(psd_b)]
heart_freq = freqs_h[np.argmax(psd_h)]

return {
'breathing_signal': breathing_signal,
'heart_signal': heart_signal,
'breathing_rate_hz': breathing_freq,
'heart_rate_hz': heart_freq,
'breathing_bpm': breathing_freq * 60,
'heart_bpm': heart_freq * 60
}


# 频段对比分析
def compare_frequency_bands():
"""对比FR1/FR3/FR2频段性能"""

bands = {
'FR1 (5GHz)': {'freq': 5e9, 'wavelength': 0.06},
'FR3 (14GHz)': {'freq': 14e9, 'wavelength': 0.0214},
'FR3 (24GHz)': {'freq': 24e9, 'wavelength': 0.0125},
'FR2 (60GHz)': {'freq': 60e9, 'wavelength': 0.005},
}

print("=" * 75)
print("频段对比:心跳微动(0.3mm)的相位变化")
print("=" * 75)
print(f"{'频段':<15} {'波长(mm)':<12} {'相位变化(rad)':<15} {'可检测性':<10}")
print("-" * 75)

heart_displacement = 0.3e-3 # 0.3mm

for name, params in bands.items():
phase_change = 4 * np.pi * heart_displacement / params['wavelength']
detectable = "✅" if phase_change > 0.05 else "⚠️"
print(f"{name:<15} {params['wavelength']*1e3:<12.1f} {phase_change:<15.4f} {detectable:<10}")

print("\n关键结论:FR3频段(7-24GHz)在心跳检测方面具有最优性价比")
print(" - 相位灵敏度远高于FR1")
print(" - 多径丰富度优于FR2(mmWave)")
print(" - 穿透力优于FR2")


if __name__ == "__main__":
# 运行仿真
simulator = FR3VitalSignsSimulator(freq=14e9)

# 1. 建模胸部位移
t, displacement = simulator.model_chest_displacement(duration=10)
print(f"胸部位移: 范围 [{displacement.min()*1e3:.2f}mm, {displacement.max()*1e3:.2f}mm]")

# 2. 模拟雷达回波
echo = simulator.simulate_radar_echo(displacement, snr_db=20)

# 3. 提取生命体征
results = simulator.extract_vital_signs(echo)
print(f"\n提取结果:")
print(f" 呼吸频率: {results['breathing_bpm']:.1f} bpm (真值: 15.0)")
print(f" 心率: {results['heart_bpm']:.1f} bpm (真值: 72.0)")

# 4. 频段对比
print()
compare_frequency_bands()

IMS 座舱应用启示

FR3 vs 60GHz 对比

特性 FR3 (7-24GHz) 60GHz (当前CPD主流)
波长 1.25-4.3cm 5mm
心跳检测灵敏度 高(相位变化大) 极高
穿透衣物/毯子 ✅ 强 ⚠️ 较弱
多径丰富度 丰富(有利分集) 少
人体安全性 ✅ 功率密度低 ✅
法规可用性 ⚠️ 6G频段争议 ✅ 已分配
硬件成本 中(新兴) 低(成熟)

座舱部署架构

座舱场景可行性

场景 目标 FR3可行性 60GHz可行性 融合优势
CPD 婴儿呼吸 呼吸率 ✅ 穿透毯子 ⚠️ 被毯子衰减 FR3穿透+60GHz高精度
驾驶员疲劳 心率/HRV ✅ 1m距离 ⚠️ 距离受限 FR3长距离+60GHz精细
乘员分类 体型/位置 ✅ 多径分集 ✅ 高分辨率 双频段融合
紧急医疗 呼吸+心跳 ✅ 连续监测 ⚠️ 遮挡敏感 FR3全覆盖+60GHz增强

硬件方案

组件 规格 说明
FR3雷达芯片 7-24GHz, 200MHz BW 新兴ISAC芯片
天线阵列 2x2 MIMO 座舱覆盖
采样率 1kHz 相位解调需求
处理器 QCS8255 NPU 实时滤波+FFT
与60GHz共存 频段隔离 无干扰

局限性

  1. 仿真验证 — 仅用射线追踪仿真,缺少实物验证
  2. 室内环境 — 座舱环境更复杂(金属反射、座椅吸收)
  3. 多人体干扰 — 多乘员信号叠加分离未验证
  4. 法规不确定性 — FR3频段尚在6G讨论中
  5. 运动干扰 — 车辆行驶时的振动和乘员运动未建模

总结

RT-VSS 首次系统验证了 FR3 频段(7-24GHz)用于生命体征感知的可行性。对 IMS 团队的启示:

  1. FR3 是 CPD+生命体征的潜在新频段 — 穿透力强于60GHz,相位灵敏度优于sub-6GHz
  2. 多径是朋友不是敌人 — FR3的丰富多径可作为分集来源
  3. 与60GHz互补而非替代 — FR3做穿透检测,60GHz做高精度检测
  4. ISAC趋势 — 通信感知一体化,座舱雷达可复用通信频段
  5. 需关注6G频谱分配 — FR3法规走向影响汽车可用性

参考链接: