舱内雷达技术:从 CPD 到生命体征监测,60GHz 的多应用前景

舱内雷达技术:从 CPD 到生命体征监测,60GHz 的多应用前景

核心优势

舱内雷达 vs 摄像头:

特性 摄像头 60GHz 雷达
隐私 拍摄图像 无图像,隐私友好
穿透性 受遮挡 穿透毯子/衣物
夜间 需补光 全天候
生命体征 不可检测 呼吸/心跳

应用场景

1. CPD 儿童遗留检测

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
雷达 CPD 工作原理:

┌─────────────────────────────────────────────────────┐
│ 60GHz 雷达 CPD │
├─────────────────────────────────────────────────────┤
│ │
│ 1. 微动检测 │
│ ├─ 呼吸运动(胸部起伏 1-2mm) │
│ ├─ 心跳运动(胸部震动 0.5mm) │
│ └─ 身体微动 │
│ │
│ 2. 多普勒分析 │
│ ├─ 呼吸频率:12-30 次/分钟 │
│ ├─ 心跳频率:80-140 次/分钟 │
│ └─ 区分人体 vs 物体 │
│ │
│ 3. 距离-角度定位 │
│ ├─ 判断儿童在哪个座位 │
│ └─ 区分前后排 │
│ │
│ 优势: │
│ ✅ 穿透毯子、衣物 │
│ ✅ 无隐私问题 │
│ ✅ 精确生命体征 │
│ │
└─────────────────────────────────────────────────────┘

2. 生命体征监测

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
"""
舱内雷达生命体征监测

提取呼吸和心跳频率
"""

import numpy as np
from scipy import signal

class RadarVitalSignsMonitor:
"""
雷达生命体征监测器
"""

def __init__(self):
# 雷达参数
self.center_freq = 60e9 # 60 GHz
self.sample_rate = 1000 # Hz

# 滤波器参数
self.breathing_band = (0.2, 0.5) # Hz (12-30 bpm)
self.heart_rate_band = (1.0, 2.3) # Hz (60-140 bpm)

def process_radar_signal(
self,
radar_data: np.ndarray
) -> dict:
"""
处理雷达信号,提取生命体征

Args:
radar_data: (N,) 雷达相位信号

Returns:
{
'breathing_rate': float, # 次/分钟
'heart_rate': float, # 次/分钟
'presence_detected': bool
}
"""
# 1. 相位解调
phase = np.angle(radar_data)

# 2. 相位展开
phase_unwrapped = np.unwrap(phase)

# 3. 去除直流分量和趋势
phase_detrended = signal.detrend(phase_unwrapped)

# 4. 呼吸带通滤波
sos_breathing = signal.butter(
4, self.breathing_band, btype='band', fs=self.sample_rate, output='sos'
)
breathing_signal = signal.sosfilt(sos_breathing, phase_detrended)

# 5. 心跳带通滤波
sos_heart = signal.butter(
4, self.heart_rate_band, btype='band', fs=self.sample_rate, output='sos'
)
heart_signal = signal.sosfilt(sos_heart, phase_detrended)

# 6. 频谱分析
breathing_rate = self._find_dominant_freq(
breathing_signal, self.sample_rate, self.breathing_band
)
heart_rate = self._find_dominant_freq(
heart_signal, self.sample_rate, self.heart_rate_band
)

# 7. 检测存在
signal_energy = np.var(phase_detrended)
presence_detected = signal_energy > 0.01 # 阈值

return {
'breathing_rate': breathing_rate * 60, # 转换为 bpm
'heart_rate': heart_rate * 60,
'presence_detected': presence_detected
}

def _find_dominant_freq(
self,
signal_data: np.ndarray,
fs: float,
freq_band: tuple
) -> float:
"""找到主频率"""
# FFT
n = len(signal_data)
freqs = np.fft.fftfreq(n, 1/fs)
fft_result = np.abs(np.fft.fft(signal_data))

# 只取正频率
pos_mask = freqs > 0
freqs = freqs[pos_mask]
fft_result = fft_result[pos_mask]

# 频带内找最大值
band_mask = (freqs >= freq_band[0]) & (freqs <= freq_band[1])
if np.any(band_mask):
dominant_freq = freqs[band_mask][np.argmax(fft_result[band_mask])]
else:
dominant_freq = 0

return dominant_freq


class MultiTargetRadarCPD:
"""
多目标雷达 CPD 系统

检测车内多个生命体
"""

def __init__(self):
self.vital_monitor = RadarVitalSignsMonitor()

# 天线配置
self.num_tx = 2 # 发射天线
self.num_rx = 4 # 接收天线

# 角度分辨率
self.angle_resolution = 15 # 度

def scan_cabin(self, radar_frame: np.ndarray) -> list:
"""
扫描舱内,检测所有生命体

Args:
radar_frame: (num_rx, num_samples) 雷达数据帧

Returns:
[
{
'position': (range, angle),
'breathing_rate': float,
'heart_rate': float,
'type': 'adult' | 'child' | 'pet'
},
...
]
"""
# 1. 距离-角度成像
range_angle_map = self._form_range_angle_map(radar_frame)

# 2. 检测目标
targets = self._detect_targets(range_angle_map)

# 3. 对每个目标提取生命体征
results = []
for target in targets:
vital_signs = self.vital_monitor.process_radar_signal(
target['signal']
)

# 根据心跳频率判断类型
if vital_signs['heart_rate'] > 120:
target_type = 'child'
elif vital_signs['heart_rate'] > 100:
target_type = 'pet'
else:
target_type = 'adult'

results.append({
'position': target['position'],
'breathing_rate': vital_signs['breathing_rate'],
'heart_rate': vital_signs['heart_rate'],
'type': target_type
})

return results

def _form_range_angle_map(self, radar_frame):
"""形成距离-角度图"""
# 简化实现
# 实际需要 FFT + 波束成形
pass

def _detect_targets(self, range_angle_map):
"""检测目标"""
# 简化实现
pass

技术对比

雷达方案对比

频段 分辨率 成本 应用
24GHz 简单存在检测
60GHz CPD + 生命体征
77GHz 高精度 OOP

雷达 vs UWB vs 摄像头

特性 60GHz 雷达 UWB 摄像头
呼吸检测
心跳检测 ⚠️
位置定位
隐私友好
成本

Euro NCAP 合规

CPD 测试要求

测试场景 雷达表现 合规
新生儿检测 呼吸检测可靠
毯子覆盖 穿透检测
多儿童检测 多目标识别
宠物误报 心跳频率区分

总结

舱内雷达核心优势:

  1. 隐私友好 - 无图像,符合隐私法规
  2. 生命体征 - 检测呼吸和心跳
  3. 穿透性 - 不受毯子/衣物遮挡
  4. 全天候 - 夜间正常工作

对 IMS 开发的启示:

  • 雷达是 CPD 最佳方案之一
  • 与摄像头融合提升可靠性
  • 生命体征监测是新增功能

参考资源

资源 链接
TI IWR6843 ti.com
Infineon 60GHz infineon.com
Euro NCAP CPD euroncap.com

舱内雷达技术:从 CPD 到生命体征监测,60GHz 的多应用前景
https://dapalm.com/2026/04/26/2026-04-26-in-cabin-radar-vital-signs/
作者
Mars
发布于
2026年4月26日
许可协议