UWB 雷达儿童检测(CPD)技术深度解析:从原理到量产方案

UWB 雷达儿童检测(CPD)技术深度解析:从原理到量产方案

Euro NCAP 要求 2026 年起 CPD 成为标配。YFORE 推出 UWB 多场景雷达方案,生命检出率 >99%。本文深度解析 UWB CPD 技术原理、与摄像头/超声波方案对比、及 YFORE 量产方案。

1 CPD 法规背景

1.1 Euro NCAP CPD 要求

Euro NCAP 2026 协议明确要求新车配备儿童遗留检测(Child Presence Detection, CPD)系统:

要求项 指标
响应时间 < 13 秒
检测对象 婴儿/儿童(含被毯子覆盖)
触发条件 后排有儿童且车辆锁止
警告级别 一级:车内警报;二级:手机 App 推送
环境条件 全光照、全温度范围

1.2 技术路线选择

方案 原理 优势 劣势
摄像头 视觉识别 可识别儿童身份 毛毯遮挡失效
超声波 声波反射 成本低 风/虫易误报
重量传感器 座椅压力 简单可靠 无法区分儿童与重物
UWB 雷达 呼吸微动 穿透毛毯/座椅 需专用芯片
毫米波雷达 调频连续波 精度高 成本较高

核心结论: UWB 雷达因”穿透障碍物+检测呼吸”两大特性,成为 CPD 最优方案。

2 UWB 雷达技术原理

2.1 工作原理

UWB(Ultra-Wideband)雷达通过发射极短脉冲信号检测微运动:

1
发射脉冲 → 反射回波 → CIR分析 → 提取呼吸信号 → 判定生命存在

关键参数:

参数 典型值 说明
频率范围 6-8 GHz UWB 频段
带宽 >500 MHz 超宽带定义
脉冲宽度 <1 ns 纳秒级脉冲
空间分辨率 ~1 cm 高精度距离测量
功耗 <10 mW 低功耗持续监测
穿透能力 穿透毛毯/座椅/衣物 核心优势

2.2 通道脉冲响应(CIR)分析

UWB 芯片不只是一收一发,它生成丰富的 Channel Impulse Response (CIR) 数据集:

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

class UWBCPDDetector:
"""
UWB 雷达儿童遗留检测算法

原理:
1. 发射超短脉冲,接收反射信号
2. 静态物体反射时间恒定 → CIR 不变
3. 活体呼吸导致胸壁微动 → CIR 对应距离bin 微变
4. 提取呼吸频率 (婴儿 20-40 次/分) → 判定生命存在

参考: RF Wireless World UWB CPD App Note, 2026
"""

def __init__(self, config: dict = None):
config = config or {}
self.sample_rate = config.get('sample_rate', 100) # Hz, CIR 采样率
self.range_bins = config.get('range_bins', 128) # 距离bin数
self.range_resolution = config.get('range_res', 0.01) # 1cm per bin

# 呼吸参数
self.breathing_freq_min = config.get('breath_min', 0.2) # Hz (12次/分)
self.breathing_freq_max = config.get('breath_max', 1.0) # Hz (60次/分)
self.infant_breath_min = 0.33 # 20次/分
self.infant_breath_max = 0.67 # 40次/分

# 检测阈值
self.motion_threshold = config.get('motion_thr', 1e-4)
self.breath_amplitude_thr = config.get('breath_amp', 1e-5)

def process_cir(self, cir_data: np.ndarray) -> dict:
"""
处理 CIR 数据,检测生命体征

Args:
cir_data: CIR 数据, shape=(N_frames, N_bins)
N_frames = 时间序列帧数
N_bins = 距离bin数

Returns:
result: 检测结果字典
"""
n_frames, n_bins = cir_data.shape

# 1. 计算每个距离bin的时间变化
bin_variance = np.var(cir_data, axis=0)

# 2. 找到有运动的距离bin
active_bins = np.where(bin_variance > self.motion_threshold)[0]

if len(active_bins) == 0:
return {
'life_detected': False,
'reason': 'No motion detected',
'breathing_rate': 0,
'confidence': 0.0,
}

# 3. 对活动bin提取呼吸信号
breathing_signals = []
for bin_idx in active_bins:
signal = cir_data[:, bin_idx]

# 带通滤波提取呼吸频率 (0.2-1.0 Hz)
filtered = self._bandpass_filter(signal)
breathing_signals.append(filtered)

# 4. 合并呼吸信号
combined_breath = np.mean(breathing_signals, axis=0)

# 5. FFT 分析呼吸频率
freqs = np.fft.rfftfreq(len(combined_breath), 1.0/self.sample_rate)
fft_mag = np.abs(np.fft.rfft(combined_breath))

# 只看呼吸频率范围
breath_mask = (freqs >= self.breathing_freq_min) & \
(freqs <= self.breathing_freq_max)
breath_freqs = freqs[breath_mask]
breath_mag = fft_mag[breath_mask]

if len(breath_freqs) == 0:
return {
'life_detected': False,
'reason': 'No breathing frequency found',
'breathing_rate': 0,
'confidence': 0.0,
}

# 6. 找到主呼吸频率
peak_idx = np.argmax(breath_mag)
breath_freq = breath_freqs[peak_idx]
breath_rate_bpm = breath_freq * 60 # 转 次/分
breath_amplitude = breath_mag[peak_idx]

# 7. 判定是否为婴儿/儿童呼吸
is_infant_breath = (self.infant_breath_min <= breath_freq <= self.infant_breath_max)
is_child_breath = (self.breathing_freq_min <= breath_freq <= self.breathing_freq_max)

confidence = min(breath_amplitude / self.breath_amplitude_thr, 1.0)

life_detected = (is_child_breath or is_infant_breath) and \
confidence > 0.5 and \
breath_amplitude > self.breath_amplitude_thr

return {
'life_detected': life_detected,
'breathing_rate': breath_rate_bpm,
'is_infant': is_infant_breath,
'confidence': confidence,
'active_range': active_bins.tolist(),
'breath_freq': breath_freq,
}

def _bandpass_filter(self, signal: np.ndarray) -> np.ndarray:
"""带通滤波: 0.2-1.0 Hz"""
nyq = self.sample_rate / 2
low = self.breathing_freq_min / nyq
high = self.breathing_freq_max / nyq
b, a = butter(4, [low, high], btype='band')
return filtfilt(b, a, signal)


# 测试代码
if __name__ == "__main__":
np.random.seed(42)

detector = UWBCPDDetector({
'sample_rate': 100,
'range_bins': 128,
'motion_thr': 1e-5,
'breath_amp': 1e-4,
})

# 模拟有儿童的 CIR 数据
n_frames = 1000 # 10秒@100Hz
n_bins = 128

# 静态背景
cir_empty = np.random.normal(0, 1e-6, (n_frames, n_bins))

# 模拟儿童呼吸 (0.4 Hz = 24次/分) 在 bin 45 处
cir_child = cir_empty.copy()
t = np.arange(n_frames) / 100.0
breath_signal = 5e-4 * np.sin(2 * np.pi * 0.4 * t)
cir_child[:, 45] += breath_signal
cir_child[:, 46] += breath_signal * 0.7 # 相邻bin也有

# 测试1: 空座
result_empty = detector.process_cir(cir_empty)
print("=== 空座测试 ===")
print(f"生命检出: {result_empty['life_detected']}")
print(f"原因: {result_empty.get('reason', 'N/A')}")

# 测试2: 有儿童
result_child = detector.process_cir(cir_child)
print("\n=== 儿童检测测试 ===")
print(f"生命检出: {result_child['life_detected']}")
print(f"呼吸频率: {result_child['breathing_rate']:.1f} 次/分")
print(f"婴儿呼吸: {result_child.get('is_infant', False)}")
print(f"置信度: {result_child['confidence']:.2%}")
print(f"活动距离bin: {result_child.get('active_range', [])}")

2.3 为什么 UWB 能穿透毛毯

物理特性 UWB 雷达 摄像头 超声波
波长 ~3cm (10GHz) ~500nm (可见光) ~1cm (40kHz)
穿透毛毯 ✅ 毛毯对电波近乎透明 ❌ 完全遮挡 ⚠️ 部分穿透
穿透座椅 ✅ 可穿透 ❌ 完全遮挡 ❌ 被吸收
暗光环境 ✅ 无影响 ❌ 需IR补光 ✅ 无影响
隐私 ✅ 无图像 ❌ 视频数据 ✅ 无图像

物理原理: 电磁波波长越长,绕射能力越强。UWB 的厘米级波长可以绕过毛毯纤维间的缝隙,而光波的微米级波长被完全阻挡。

3 YFORE UWB 多场景量产方案

3.1 系统架构

YFORE Technology 在 2026 年 8 月发布了 UWB 雷达感知产品组合:

graph TD
    A[YFORE UWB 雷达感知平台] --> B[车内安全]
    A --> C[车辆接入]
    A --> D[自动泊车]
    
    B --> B1[CPD 儿童遗留检测]
    B --> B2[乘员检测 ODS]
    B --> B3[ODMS 智能后视镜融合]
    
    C --> C1[踢脚感应尾门]
    C --> C2[UWB 数字钥匙]
    
    D --> D1[泊车辅助]
    D --> D2[障碍物检测]
    D --> D3[地面杂波滤除]
    
    B1 --> E1[生命检出率 >99%]
    B1 --> E2[信号泄漏 <20cm]
    B1 --> E3[Euro NCAP <13s]
    
    C1 --> F1[触发率 >98%]
    D1 --> F2[无传感器开孔外观]

3.2 核心性能指标

功能模块 关键指标 Euro NCAP 要求
CPD 儿童检测 生命检出率 >99% 需可靠检测
CPD 响应时间 <13s <13s
信号泄漏 窗外泄漏 <20cm 防误触发
ODS 乘员检测 多目标空间坐标 支持 eCall
ODMS 驾驶员监控 雷达+视觉融合 消除盲区
尾门踢脚 触发率 >98% 用户体验
泊车辅助 无开孔外观 设计美观

3.3 CPD + ODS + ODMS 三合一

YFORE 的核心创新是 一套 UWB 硬件实现三个功能

功能 需要的 UWB 能力 算法
CPD 微呼吸检测 CIR 方差 + FFT
ODS 多目标定位 MIMO 角度估计
ODMS 驾驶员状态 雷达+视觉融合

IMS 启示: UWB 硬件复用是降低 BOM 成本的关键。一套传感器覆盖多个法规需求。

4 UWB vs 毫米波雷达对比

维度 UWB 雷达 60GHz 毫米波 (TI IWR6843)
频率 6-8 GHz 60-64 GHz
带宽 >500 MHz ~4 GHz
分辨率 ~1 cm ~3.75 cm
穿透力 ✅ 强(穿毛毯/座椅) ⚠️ 中等
生命体征 ✅ 呼吸检测 ✅ 呼吸+心率
天线尺寸 中等 小(波长短)
成本 $3-5 $8-15
量产就绪 ✅ YFORE 已量产 ✅ TI 参考设计
Euro NCAP ✅ 满足 ✅ 满足

结论: UWB 在穿透力和成本上更有优势;毫米波在分辨率和心率检测上更强。两者可互补使用。

5 硬件配置建议

5.1 UWB CPD 部署方案

组件 型号/规格 数量 安装位置
UWB 雷达芯片 NXP SR150 / Qorvo DW3000 2 后排顶部
天线 PCB 天线阵列 2 顶灯区域
处理器 MCU (Cortex-M4) 1 车身控制器
通信 CAN-FD 1 车辆网络
云端通知 TCU 远程通信 1 已有模块
手机App OEM App - 用户手机

5.2 安装位置优化

位置 优势 劣势 推荐
后排顶灯 俯视后排,无遮挡 需布线 ✅ 首选
后视镜 已有电子 距后排远 ⚠️ 备选
后排座椅下方 近距离 被金属遮挡 ❌ 不推荐
B柱内侧 侧向覆盖 盲区 ⚠️ 补充

6 测试场景定义

场景 描述 前置条件 预期结果
CPD-01 婴儿在后排安全座椅 体重 3-10kg, 被毛毯覆盖 <13s 检出, 触发警报
CPD-02 幼儿在后排 体重 10-20kg, 正常坐姿 <13s 检出
CPD-03 空后排 无乘客 不误报
CPD-04 成人后排 成人乘客 检出生命,不触发CPD
CPD-05 宠物遗留 猫/狗在后排 检出生命(可选区分)
CPD-06 极端温度 -20°C 至 60°C 正常检测
CPD-07 全黑暗环境 0 lux 正常检测
CPD-08 毛毯/衣物覆盖 5cm 厚毛毯 正常检出呼吸
CPD-09 车窗微开 窗户开 5cm 不影响检测
CPD-10 车辆震动 路边停车,车辆震动 不误报

7 对 IMS 开发的启示

7.1 技术路线建议

优先级 任务 周期 价值
P0 UWB CPD 算法集成 3 月 满足 Euro NCAP 2026
P0 CIR 数据采集系统 1 月 算法训练基础
P1 UWB+毫米波融合 6 月 提升检测可靠性
P1 宠物/儿童区分算法 6 月 减少误报
P2 ODS 乘员定位 9 月 eCall 支持
P2 ODMS 雷达+视觉融合 9 月 驾驶员监控增强

7.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
# UWB CPD 算法验证清单
class CPDValidationSuite:
"""CPD 算法验证测试套件"""

tests = [
# 基础功能测试
{"id": "CPD-BASIC-01", "desc": "婴儿呼吸检测", "target": "检出率>99%"},
{"id": "CPD-BASIC-02", "desc": "毛毯覆盖检测", "target": "穿透5cm毛毯"},
{"id": "CPD-BASIC-03", "desc": "空座不误报", "target": "误报率<0.1%"},

# 环境鲁棒性
{"id": "CPD-ENV-01", "desc": "极端温度", "target": "-20°C~60°C正常"},
{"id": "CPD-ENV-02", "desc": "全黑暗", "target": "0 lux正常"},
{"id": "CPD-ENV-03", "desc": "高湿环境", "target": "95%RH正常"},

# 性能指标
{"id": "CPD-PERF-01", "desc": "响应时间", "target": "<13s"},
{"id": "CPD-PERF-02", "desc": "CPU占用", "target": "<10% MCU"},
{"id": "CPD-PERF-03", "desc": "功耗", "target": "<10mW"},

# 误报测试
{"id": "CPD-FP-01", "desc": "震动干扰", "target": "不误报"},
{"id": "CPD-FP-02", "desc": "物品遗留", "target": "不误报"},
{"id": "CPD-FP-03", "desc": "电磁干扰", "target": "不误报"},
]

7.3 与 Euro NCAP 对齐

Euro NCAP CPD 要求 UWB 方案 状态
后排儿童检测 UWB 呼吸检测 ✅ 满足
<13s 响应 CIR 实时处理 ✅ 满足
毛毯覆盖 电波穿透 ✅ 满足
暗光环境 不依赖光照 ✅ 满足
隐私保护 无图像数据 ✅ 满足
一级警告 车内声光 ✅ 支持
二级警告 TCU→App 推送 ✅ 支持

8 总结

UWB 雷达是 CPD 的最优技术路线,核心优势在于”穿透障碍物+检测呼吸微动”。YFORE 的量产方案验证了 UWB 可同时覆盖 CPD/ODS/ODMS 三大功能,大幅降低 BOM 成本。

对 IMS 开发,建议优先集成 UWB CPD 算法(CIR 方差分析+FFT呼吸提取),配合现有 DMS 摄像头系统,形成”雷达+视觉”双模态座舱感知方案。


参考来源:


UWB 雷达儿童检测(CPD)技术深度解析:从原理到量产方案
https://dapalm.com/2026/09/09/2026-09-09-uwb-radar-cpd-child-presence-detection-yfore-量产方案-ims/
作者
Mars
发布于
2026年9月9日
许可协议