Infineon 60GHz雷达CPD方案:下一代座舱监测技术

核心突破

Infineon 60GHz雷达芯片BGT60ATR24AIP专为车内监测设计,功耗仅100mW,可穿透座椅和人体遮挡检测遗忘儿童,是Euro NCAP 2026 CPD评分的量产级解决方案。

graph LR
    A[60GHz雷达] --> B[穿透遮挡]
    B --> C[生命体征检测]
    C --> D{目标识别}
    
    D -->|呼吸/心跳| E[儿童检测]
    D -->|无信号| F[空座]
    D -->|微动| G[宠物检测]
    
    E --> H[报警触发]
    G --> H
    
    style A fill:#e3f2fd
    style E fill:#fff9c4
    style H fill:#ffcdd2

为什么选择60GHz?

频段对比

频段 波长 穿透性 分辨率 车内应用
24GHz 12.5mm 低(~30cm) 盲区检测(淘汰中)
60GHz 5mm 高(~5cm) ✅ CPD/生命体征
77GHz 3.9mm 极高 ADAS/外环境
79GHz 3.8mm 极高 ADAS(主流)

60GHz独特优势

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
"""
60GHz雷达车内监测优势

1. 分辨率优势:
- 波长5mm,可检测微小胸部运动(呼吸)
- 距离分辨率可达5cm,区分前后排

2. 穿透优势:
- 可穿透座椅填充物
- 可穿透儿童毯子/衣物
- 可穿透前排乘客身体(检测后排)

3. 功耗优势:
- Infineon BGT60ATR24AIP仅100mW
- 支持持续监控(熄火后)
- 不消耗电池电量

4. 尺寸优势:
- 芯片封装小,可安装在顶棚
- 单芯片实现3D检测
"""

RADAR_SPECS = {
"frequency": "60GHz (57-64GHz)",
"wavelength": "5mm",
"max_range": "5m(车内足够)",
"range_resolution": "5cm",
"velocity_resolution": "0.1m/s",
"power_consumption": "100mW(avg)",
"update_rate": "10Hz(生命体征)"
}

BGT60ATR24AIP芯片详解

核心参数

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
from dataclasses import dataclass

@dataclass
class BGT60ATR24AIP_Specs:
"""Infineon 60GHz雷达芯片规格"""

# 射频参数
frequency_range_GHz: tuple = (57, 64) # 频段
tx_channels: int = 2 # 发射通道
rx_channels: int = 4 # 接收通道
max_bandwidth_GHz: float = 7.0 # 最大带宽

# 性能指标
max_range_m: float = 5.0 # 最大检测距离
range_resolution_cm: float = 5.0 # 距离分辨率
velocity_resolution_cm_s: float = 10.0 # 速度分辨率
angular_resolution_deg: float = 15.0 # 角度分辨率

# 功耗
power_active_mW: float = 100.0 # 工作功耗
power_idle_mW: float = 5.0 # 待机功耗

# 尺寸
package_size_mm: tuple = (8.0, 8.0) # 封装尺寸

# 接口
interface: str = "SPI / I2C"
adc_resolution_bits: int = 12

# 应用特性
features: list = None

def __post_init__(self):
self.features = [
"儿童存在检测(CPD)",
"生命体征监测(呼吸/心跳)",
"乘员定位",
"入侵检测",
"手势识别"
]


# 实例化
chip = BGT60ATR24AIP_Specs()
print(f"检测范围: {chip.max_range_m}m")
print(f"功耗: {chip.power_active_mW}mW")
print(f"应用: {chip.features}")

内部架构

graph TD
    A[天线阵列] --> B[RF前端]
    B --> C[混频器]
    C --> D[ADC]
    D --> E[FFT处理]
    E --> F[目标检测]
    F --> G[生命体征提取]
    G --> H[决策输出]
    
    I[MCU控制] --> B
    I --> E
    I --> F
    
    J[电源管理] --> B
    J --> I
    
    style A fill:#e1f5fe
    style G fill:#fff9c4
    style H fill:#c8e6c9

CPD检测原理

1. 生命体征检测

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
import numpy as np
from scipy.signal import butter, filtfilt, find_peaks

class VitalSignsExtractor:
"""
从雷达信号提取生命体征

原理:
- 呼吸:胸部周期性运动,频率0.1-0.5Hz
- 心跳:心脏跳动引起的微弱胸部振动,频率0.8-2.0Hz

60GHz雷达优势:
- 波长5mm,可检测毫米级运动
- 高分辨率区分呼吸和心跳
"""

def __init__(self, sample_rate_hz: float = 100.0):
self.sample_rate = sample_rate_hz

# 呼吸频段:0.1-0.5 Hz (6-30 次/分钟)
self.breath_band = (0.1, 0.5)

# 心跳频段:0.8-2.0 Hz (48-120 次/分钟)
self.heart_band = (0.8, 2.0)

def extract(self, radar_signal: np.ndarray) -> dict:
"""
提取生命体征

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

Returns:
{
'breathing_rate': 呼吸频率 (次/分钟),
'heart_rate': 心跳频率 (次/分钟),
'signal_quality': 信号质量 (0-1)
}
"""
# 带通滤波提取呼吸
breath_signal = self._bandpass_filter(
radar_signal,
self.breath_band[0],
self.breath_band[1]
)

# 带通滤波提取心跳
heart_signal = self._bandpass_filter(
radar_signal,
self.heart_band[0],
self.heart_band[1]
)

# 频谱分析
breath_freq = self._find_dominant_freq(breath_signal)
heart_freq = self._find_dominant_freq(heart_signal)

# 转换为次数/分钟
breathing_rate = breath_freq * 60
heart_rate = heart_freq * 60

# 信号质量评估(基于信噪比)
signal_quality = self._estimate_signal_quality(radar_signal, breath_signal, heart_signal)

return {
'breathing_rate': breathing_rate,
'heart_rate': heart_rate,
'signal_quality': signal_quality
}

def _bandpass_filter(self, signal: np.ndarray,
low_cut: float, high_cut: float) -> np.ndarray:
"""带通滤波"""
nyq = 0.5 * self.sample_rate
low = low_cut / nyq
high = high_cut / nyq
b, a = butter(4, [low, high], btype='band')
return filtfilt(b, a, signal)

def _find_dominant_freq(self, signal: np.ndarray) -> float:
"""寻找主频率"""
# FFT
n = len(signal)
freq = np.fft.rfftfreq(n, 1/self.sample_rate)
spectrum = np.abs(np.fft.rfft(signal))

# 找峰值
peaks, _ = find_peaks(spectrum)
if len(peaks) > 0:
peak_idx = peaks[np.argmax(spectrum[peaks])]
return freq[peak_idx]
return 0.0

def _estimate_signal_quality(self, raw: np.ndarray,
breath: np.ndarray,
heart: np.ndarray) -> float:
"""估计信号质量"""
# 信号功率
breath_power = np.var(breath)
heart_power = np.var(heart)

# 噪声估计(高频)
noise = self._bandpass_filter(raw, 5.0, 20.0)
noise_power = np.var(noise)

# SNR
signal_power = breath_power + heart_power
snr = signal_power / (noise_power + 1e-8)

# 归一化到[0, 1]
quality = np.clip(np.log10(snr + 1) / 2, 0, 1)

return quality


# 使用示例
if __name__ == "__main__":
extractor = VitalSignsExtractor()

# 模拟雷达信号(含呼吸+心跳)
t = np.arange(0, 10, 0.01) # 10秒
breath_signal = 0.5 * np.sin(2 * np.pi * 0.25 * t) # 15次/分钟呼吸
heart_signal = 0.05 * np.sin(2 * np.pi * 1.2 * t) # 72次/分钟心跳
noise = 0.01 * np.random.randn(len(t))

radar_signal = breath_signal + heart_signal + noise

# 提取生命体征
vitals = extractor.extract(radar_signal)
print(f"呼吸频率: {vitals['breathing_rate']:.1f} 次/分钟")
print(f"心跳频率: {vitals['heart_rate']:.1f} 次/分钟")
print(f"信号质量: {vitals['signal_quality']:.2f}")

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
class ChildPresenceDetector:
"""
儿童存在检测器

流程:
1. 车辆熄火 → 启动监控模式
2. 雷达扫描座舱 → 检测生命体征
3. 发现儿童 → 触发报警
4. 持续监控 → 直至救援到达

Euro NCAP要求:
- 检测时间:< 60秒
- 漏检率:< 5%
- 误报率:< 10%
"""

def __init__(self):
self.vitals_extractor = VitalSignsExtractor()

# 儿童生命体征范围
self.child_breath_range = (20, 50) # 次/分钟
self.child_heart_range = (80, 140) # 次/分钟

# 成人范围(用于区分)
self.adult_breath_range = (12, 20)
self.adult_heart_range = (60, 100)

def detect(self, radar_data: np.ndarray) -> dict:
"""
检测儿童存在

Args:
radar_data: 雷达数据 (N_frames, N_rx, N_samples)

Returns:
{
'child_detected': bool,
'location': (row, seat),
'vitals': {...},
'confidence': float
}
"""
# 对每个接收通道提取生命体征
vitals_list = []
for rx in range(radar_data.shape[1]):
signal = radar_data[:, rx, :].mean(axis=1) # 简化:取均值
vitals = self.vitals_extractor.extract(signal)
vitals_list.append(vitals)

# 合并结果
best_vitals = max(vitals_list, key=lambda v: v['signal_quality'])

# 判断是否为儿童
breath_ok = self.child_breath_range[0] <= best_vitals['breathing_rate'] <= self.child_breath_range[1]
heart_ok = self.child_heart_range[0] <= best_vitals['heart_rate'] <= self.child_heart_range[1]

# 信号质量足够高
quality_ok = best_vitals['signal_quality'] > 0.5

child_detected = quality_ok and (breath_ok or heart_ok)

return {
'child_detected': child_detected,
'location': (0, 0), # 简化:需要实际角度估计
'vitals': best_vitals,
'confidence': best_vitals['signal_quality']
}

def monitor_loop(self, radar_interface, callback):
"""
持续监控循环

熄火后每10秒检测一次
"""
while True:
# 获取雷达数据
radar_data = radar_interface.acquire_frame()

# 检测
result = self.detect(radar_data)

# 发现儿童
if result['child_detected']:
callback(result)

# 等待下次检测
time.sleep(10)

传感器融合:雷达+摄像头

Infineon方案

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
class RadarCameraFusion:
"""
Infineon推荐的雷达+摄像头融合方案

融合策略:
1. 雷达:检测生命体征(呼吸/心跳)
2. 摄像头:识别面部/体型特征
3. 决策融合:降低误报率

优势:
- 雷达穿透遮挡检测隐藏儿童
- 摄像头提供视觉确认
- 互补降低误报
"""

def __init__(self):
self.radar_detector = ChildPresenceDetector()
# self.camera_detector = ... # 摄像头检测器

def fused_detect(self, radar_data, camera_frame) -> dict:
"""
融合检测

Args:
radar_data: 雷达数据
camera_frame: 摄像头帧

Returns:
融合检测结果
"""
# 雷达检测
radar_result = self.radar_detector.detect(radar_data)

# 摄像头检测(简化)
# camera_result = self.camera_detector.detect(camera_frame)
camera_result = {'detected': False, 'confidence': 0.0}

# 决策融合
if radar_result['child_detected'] and camera_result['detected']:
# 双重确认:高置信度
final_decision = True
confidence = 0.95

elif radar_result['child_detected']:
# 仅雷达检测:可能是遮挡
final_decision = True
confidence = 0.80

elif camera_result['detected']:
# 仅摄像头检测:可能是误报
final_decision = False # 保守策略
confidence = 0.50

else:
# 都未检测到
final_decision = False
confidence = 0.90

return {
'child_detected': final_decision,
'confidence': confidence,
'radar_vitals': radar_result['vitals'],
'camera_confidence': camera_result['confidence']
}

多雷达布置方案

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
RADAR_PLACEMENT_OPTIONS = {
"方案1:单雷达顶棚": {
"location": "顶棚中央",
"coverage": "全座舱",
"pros": ["成本低", "安装简单"],
"cons": ["后排检测弱"],
"suitable": "紧凑型车"
},

"方案2:双雷达前后": {
"location": ["顶棚前部", "顶棚后部"],
"coverage": "前后排分区",
"pros": ["检测精度高", "定位准确"],
"cons": ["成本增加"],
"suitable": "中大型车"
},

"方案3:四雷达全覆盖": {
"location": ["顶棚四角"],
"coverage": "3D全覆盖",
"pros": ["最佳精度", "3D定位"],
"cons": ["成本最高", "算法复杂"],
"suitable": "豪华车型"
}
}

Euro NCAP CPD评分要求

2026评分草案

项目 要求 分值
检测能力 能检测座椅上儿童(包括被遮挡) 2分
报警方式 鸣笛/灯光/手机通知 1分
检测时间 熄火后60秒内检测 1分
误报率 <10% 1分
漏检率 <5% 1分
工作时长 熄火后至少30分钟持续监控 1分
OTA升级 支持OTA更新算法 1分

合规实现

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
class EuroNCAPCompliance:
"""Euro NCAP CPD合规检查"""

def __init__(self):
self.requirements = {
'max_detection_time_s': 60,
'max_false_alarm_rate': 0.10,
'max_miss_rate': 0.05,
'min_monitor_duration_min': 30
}

def validate_system(self, system) -> dict:
"""验证系统合规性"""
results = {}

# 检测时间测试
detection_times = self._test_detection_time(system)
results['detection_time_ok'] = all(t < self.requirements['max_detection_time_s'] for t in detection_times)

# 误报率测试
false_alarm_rate = self._test_false_alarm_rate(system)
results['false_alarm_ok'] = false_alarm_rate < self.requirements['max_false_alarm_rate']

# 漏检率测试
miss_rate = self._test_miss_rate(system)
results['miss_rate_ok'] = miss_rate < self.requirements['max_miss_rate']

# 工作时长测试
monitor_duration = system.get_monitor_duration()
results['monitor_duration_ok'] = monitor_duration >= self.requirements['min_monitor_duration_min']

# 总体合规
results['compliant'] = all(v for k, v in results.items() if k.endswith('_ok'))

return results

IMS开发实施建议

第一阶段:硬件选型(2周)

项目 推荐方案 原因
雷达芯片 Infineon BGT60ATR24AIP 功耗低、集成度高
天线方案 板载天线阵列 成本低、易集成
MCU Infineon Aurix或外部MCU 实时处理能力强
摄像头 现有OMS摄像头复用 降低成本

第二阶段:算法开发(4周)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DEVELOPMENT_TASKS = [
{
"week": 1,
"task": "雷达信号处理链搭建",
"deliverable": "原始数据采集 + FFT处理"
},
{
"week": 2,
"task": "生命体征提取算法",
"deliverable": "呼吸/心跳频率提取"
},
{
"week": 3,
"task": "目标检测与分类",
"deliverable": "儿童/成人/宠物区分"
},
{
"week": 4,
"task": "融合与报警逻辑",
"deliverable": "完整检测流程 + 报警触发"
}
]

第三阶段:验证测试(3周)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
TEST_PLAN = {
"lab_tests": [
"假人呼吸模拟测试",
"不同遮挡物测试",
"不同温度环境测试",
"不同座椅位置测试"
],

"vehicle_tests": [
"实车儿童假人测试",
"太阳直射高温测试",
"夜间低温测试",
"成人占用误报测试"
],

"acceptance_criteria": {
"detection_rate": ">95%",
"false_alarm_rate": "<10%",
"detection_time": "<60s"
}
}

参考资料

  1. Infineon ICMS Radar Webinar (Feb 2025)
  2. Euro NCAP CPD Assessment Protocol (Draft)
  3. Infineon BGT60ATR24AIP Datasheet
  4. ABI Research: 60GHz Automotive Radar Market Report

总结:Infineon 60GHz雷达为CPD提供了功耗低、穿透强的量产级方案。IMS团队应优先评估与现有OMS系统的融合可能性,并启动生命体征提取算法开发,为Euro NCAP 2026评分做好准备。


Infineon 60GHz雷达CPD方案:下一代座舱监测技术
https://dapalm.com/2026/07/22/2026-07-23-infineon-60ghz-radar-cpd/
作者
Mars
发布于
2026年7月22日
许可协议