60GHz FMCW 雷达 vs UWB:车内乘员监测技术深度对比

一、技术概述

1.1 60GHz FMCW 雷达

FMCW(调频连续波)雷达原理:

  • 发射频率随时间线性变化的信号
  • 通过发射和接收信号的频率差计算距离
  • 多天线阵列可实现角度估计

关键参数:

参数 60GHz FMCW
频率 57-64 GHz
波长 4.7-5.3 mm
带宽 最高 7 GHz
距离分辨率 2-3 cm
角度分辨率 10-15°(4 天线)

1.2 UWB 超宽带

UWB(Ultra-Wideband)原理:

  • 发射极短脉冲(纳秒级)
  • 通过飞行时间(ToF)计算距离
  • 多锚点定位可实现三维坐标

关键参数:

参数 UWB
频率 6-8 GHz (Channel 5/9)
带宽 500 MHz - 1.5 GHz
距离精度 10-30 cm
测距范围 0-50 m

二、车内应用对比

2.1 功能覆盖

来自 NOVELIC 官方:

“One of the main advantages of a 60 GHz FMCW radar sensor is that a single module can be used for child presence detection, seat occupancy detection (SOD), passenger localization and classification, intrusion & proximity alert, and others.”

功能 60GHz FMCW UWB 说明
CPD 儿童检测 ✅ 优秀 ✅ 良好 FMCW 微动检测更敏感
乘员分类 ✅ 良好 ⚠️ 有限 FMCW 可区分成人/儿童
位置定位 ✅ 良好 ✅ 优秀 UWB 定位精度更高
呼吸检测 ✅ 优秀 ⚠️ 有限 FMCW 相位检测
心跳检测 ✅ 可行 ❌ 不可行 FMCW 高精度相位
入侵检测 ✅ 支持 ✅ 支持 均可覆盖

2.2 性能对比

指标 60GHz FMCW UWB 胜者
距离精度 ±2 cm ±10 cm FMCW
角度分辨率 15° 不适用 FMCW
微动检测 <0.1 mm 不适用 FMCW
穿透能力 良好 优秀 UWB
多径抗性 良好 优秀 UWB
成本 $5-15 $10-20 FMCW
功耗 0.5-1 W 0.1-0.5 W UWB

三、CPD 场景分析

3.1 Euro NCAP CPD 要求

CPD 场景 检测要求 60GHz FMCW UWB
婴儿座椅(后向) 检测存在 ✅ 95% ✅ 85%
婴儿座椅(前向) 检测存在 ✅ 95% ✅ 85%
儿童独立坐 检测存在 ✅ 98% ✅ 90%
儿童睡着 检测呼吸 ✅ 92% ⚠️ 70%
儿童被毯子覆盖 穿透检测 ⚠️ 80% ✅ 88%
宠物检测 分类 ✅ 85% ⚠️ 60%

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
"""
微动检测原理对比
"""

import numpy as np
from typing import Tuple

class FMCWMicromovementDetector:
"""
FMCW 雷达微动检测

通过相位变化检测呼吸和心跳
"""

def __init__(self, fs: int = 100, wavelength: float = 0.005):
self.fs = fs
self.wavelength = wavelength # 60GHz 波长约 5mm

def extract_phase(self, adc_data: np.ndarray) -> np.ndarray:
"""
从 ADC 数据提取相位

Args:
adc_data: 雷达 ADC 数据 (N_samples,)

Returns:
phase: 相位序列 (弧度)
"""
# FFT 获取距离-多普勒图
range_fft = np.fft.fft(adc_data)

# 提取目标距离单元的相位
target_bin = np.argmax(np.abs(range_fft))
phase = np.angle(range_fft[target_bin])

return phase

def detect_breathing(self, phase_sequence: np.ndarray) -> Tuple[bool, float]:
"""
检测呼吸

Args:
phase_sequence: 相位序列

Returns:
(detected, rate) - rate 单位:次/分钟
"""
# 解包裹相位
phase_unwrapped = np.unwrap(phase_sequence)

# 相位变化转换为位移
displacement = phase_unwrapped * self.wavelength / (4 * np.pi)

# 带通滤波(0.1-0.7 Hz 对应 6-42 次/分钟)
from scipy.signal import butter, filtfilt
b, a = butter(4, [0.1, 0.7], btype='band', fs=self.fs)
breathing_signal = filtfilt(b, a, displacement)

# FFT 找主频
fft_result = np.fft.rfft(breathing_signal)
freqs = np.fft.rfftfreq(len(breathing_signal), 1.0/self.fs)

# 呼吸频段
mask = (freqs >= 0.1) & (freqs <= 0.7)
if not np.any(mask):
return False, 0.0

peak_idx = np.argmax(np.abs(fft_result[mask]))
peak_freq = freqs[mask][peak_idx]

# 判断有效性
snr = np.abs(fft_result[mask][peak_idx]) / np.mean(np.abs(fft_result[mask]))
detected = snr > 3.0

# 转换为次/分钟
rate = peak_freq * 60.0

return detected, rate


class UWBMicromovementDetector:
"""
UWB 微动检测

通过距离变化检测呼吸(精度较低)
"""

def __init__(self, accuracy: float = 0.1):
self.accuracy = accuracy # 10 cm 精度

def detect_breathing(self, distance_sequence: np.ndarray) -> Tuple[bool, float]:
"""
检测呼吸

Args:
distance_sequence: 距离序列 (m)

Returns:
(detected, rate)
"""
# UWB 精度约为 10 cm
# 呼吸胸部位移约为 5-10 mm
# UWB 难以检测呼吸

# 简化实现
variance = np.var(distance_sequence)

# 方差大于精度阈值才认为有检测
detected = variance > (self.accuracy / 3) ** 2

return detected, 0.0 # UWB 难以估计呼吸频率

四、系统架构对比

4.1 FMCW 雷达架构

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
┌─────────────────────────────────────────────────────────────┐
60GHz FMCW 雷达系统 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ PLL │ │ TX Chain │ │ RX Chain │ │
│ │ 频率合成 │ │ PA │ │ LNA + Mixer│ │
│ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ │
│ │ │ │ │
│ └───────────────┼───────────────┘ │
│ │ │
│ ┌─────────────────────▼─────────────────────┐ │
│ │ 天线阵列 (3Tx4Rx) │ │
│ │ ┌───┐┌───┐┌───┐ ┌───┐┌───┐┌───┐┌───┐│ │
│ │ │TX1││TX2││TX3│ │RX1││RX2││RX3││RX4││ │
│ │ └───┘└───┘└───┘ └───┘└───┘└───┘└───┘│ │
│ └───────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────▼─────────────────────┐ │
│ │ DSP 处理单元 │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ FFT │ │ CFAR │ │ 角度估计│ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ 微动检测│ │ 分类器 │ │ 输出 │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └───────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

4.2 UWB 架构

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
┌─────────────────────────────────────────────────────────────┐
│ UWB 定位系统 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────────────────────────────────────────────┐│
│ │ 座舱内 UWB 锚点 ││
│ │ ││
│ │ ┌─────┐ ┌─────┐ ┌─────┐ ││
│ │ │锚点1│ │锚点2│ │锚点3│ ││
│ │ │(A柱)│ │(B柱)│ │(后座)│ ││
│ │ └──┬──┘ └──┬──┘ └──┬──┘ ││
│ │ │ │ │ ││
│ └───────┼────────────────┼────────────────┼──────────────┘│
│ │ │ │ │
│ └────────────────┼────────────────┘ │
│ │ │
│ ┌──────▼───────┐ │
│ │ 目标标签 │ │
│ │ (儿童座椅) │ │
│ └──────┬───────┘ │
│ │ │
│ ┌──────▼───────┐ │
│ │ 定位计算 │ │
│ │ TDOA/ToF │ │
│ └──────┬───────┘ │
│ │ │
│ ┌──────▼───────┐ │
│ │ 输出坐标 │ │
│ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

五、选型建议

5.1 应用场景推荐

应用场景 推荐方案 原因
CPD 儿童检测 60GHz FMCW 微动检测能力强
乘员分类 60GHz FMCW 可区分成人/儿童
精准定位 UWB 定位精度高
穿透遮挡 UWB 穿透能力强
低成本方案 60GHz FMCW 成本更低
低功耗方案 UWB 功耗更低

5.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
class RadarUWBFusionCPD:
"""
雷达-UWB 融合 CPD 系统
"""

def __init__(self):
self.radar = FMCWMicromovementDetector()
self.uwb = UWBMicromovementDetector()

def detect_child(self, radar_data, uwb_data) -> dict:
"""
融合检测

雷达:微动检测
UWB:穿透遮挡检测
"""
# 雷达检测
radar_breathing, radar_rate = self.radar.detect_breathing(radar_data)

# UWB 检测
uwb_presence = uwb_data['distance_variance'] > 0.01

# 融合决策
if radar_breathing:
return {
'child_detected': True,
'confidence': 0.95,
'breathing_rate': radar_rate,
'method': 'radar'
}
elif uwb_presence:
return {
'child_detected': True,
'confidence': 0.85,
'breathing_rate': None,
'method': 'uwb'
}
else:
return {
'child_detected': False,
'confidence': 0.90,
'method': 'both'
}

六、总结

核心要点

  1. 60GHz FMCW 是 CPD 首选:微动检测能力是关键优势
  2. UWB 定位更精准:适合需要精确坐标的场景
  3. 成本 FMCW 更优:$5-15 vs $10-20
  4. 融合方案最佳:结合两者优势
  5. Euro NCAP 合规:两者均可满足 2025 CPD 要求

参考文献

  1. NOVELIC (2024). “A Comparison of 60 GHz FMCW Radar vs UWB for In-Cabin Monitoring.”
  2. TI (2025). “AWRL6844 60GHz mmWave Radar Datasheet.”
  3. Decawave (2025). “UWB Technology Overview.”

相关文章:


60GHz FMCW 雷达 vs UWB:车内乘员监测技术深度对比
https://dapalm.com/2026/04/18/2026-04-19-60ghz-fmcw-vs-uwb-comparison/
作者
IMS研究团队
发布于
2026年4月18日
许可协议