Euro NCAP 2026 儿童存在检测(CPD)详解:5分评分标准与干预要求

Euro NCAP 2026 儿童存在检测(CPD)详解:5分评分标准与干预要求

发布时间: 2026-06-14
标签: Euro NCAP 2026, CPD, 儿童检测, 雷达融合, 车内监控
来源: Smart Eye, Euro NCAP 官方协议


背景:每年 37 名儿童死于车内中暑

仅在美国,每年平均有 37 名儿童 因被遗忘在停放的车辆内而死于中暑。这些死亡悲剧的可预防性使 CPD 成为 Euro NCAP 2026 的重点。

CPD 评分变化

年份 评分地位 分值
2023 可选(加分项) 最多 3 分
2026 Occupant Monitoring 类别 最多 5 分

核心要求:直接检测而非间接推断

❌ 不合格的方法

方法 原理 为什么不合格
后门提醒 行程开始前检测后门是否打开 无法确认儿童存在
重量传感器 检测座椅压力 无法区分儿童与物品
门锁逻辑 基于车门开关记录推断 间接推断,非直接检测

✅ 合格的方法

检测方法 原理 技术方案
运动检测 检测儿童肢体运动 摄像头 / 雷达
呼吸检测 检测胸部起伏 60GHz 雷达
心跳检测 检测心脏跳动 毫米波雷达

Euro NCAP 2026 明确要求:

“CPD 系统必须通过运动、呼吸或心跳直接检测儿童存在。”


功能要求清单

1. 检测场景

场景 描述 检测时限
遗忘儿童 儿童被遗留在锁闭车辆内 锁车后 15 秒内警告
自锁困童 儿童进入未锁车辆后被困 关门后 10 分钟内警告

2. 覆盖区域

区域 要求
所有座椅位置 包括可选和可拆卸座椅
脚坑区域 儿童可能藏身
驾驶座 可能被遗忘的婴儿座椅
行李箱 ❌ 不要求

3. 检测对象

  • 年龄: ≤6 岁(包括新生儿)
  • 状态: 睡眠、清醒、运动、静止

警告与干预时序要求

锁闭车辆场景

1
2
3
4
5
6
7
8
9
10
11
时间线:
├─ T=0 锁车
├─ T=15s 检测到儿童 → 初始警告开始
│ └─ 视觉/听觉信号 ≥3秒
│ └─ 可延迟一次(最多10分钟)
├─ T=90s 升级警告开始
│ └─ 每分钟重复,持续 ≥15秒
│ └─ 至少持续 20 分钟
│ └─ 车内显示 "Check the seats"
└─ T=10min 干预措施启动
└─ 空调开启 / 车门解锁 / 远程通知

未锁车辆场景

1
2
3
4
5
时间线:
├─ T=0 关门(未锁)
├─ T=10min 检测到儿童 → 初始警告开始
├─ T=11.5min 升级警告开始
└─ T=15min 干预措施启动

完整警告流程代码实现

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
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
import time
from enum import Enum
from dataclasses import dataclass
from typing import Optional, List

class CPDState(Enum):
"""CPD 状态枚举"""
MONITORING = "monitoring" # 正常监控
CHILD_DETECTED = "child_detected" # 检测到儿童
INITIAL_ALERT = "initial_alert" # 初始警告
ESCALATION = "escalation" # 升级警告
INTERVENTION = "intervention" # 干预激活

@dataclass
class CPDConfig:
"""CPD 配置参数"""
# 检测参数
child_max_age: int = 6 # 儿童最大年龄(岁)

# 时间参数(秒)
locked_detection_delay: int = 15 # 锁车后检测延迟
unlocked_detection_delay: int = 600 # 未锁车检测延迟(10分钟)

initial_alert_duration: int = 3 # 初始警告持续时间
delay_max_duration: int = 600 # 最大延迟时间(10分钟)

escalation_start_delay: int = 90 # 升级警告开始延迟
escalation_interval: int = 60 # 升级警告间隔
escalation_duration: int = 15 # 每次升级警告持续时间
escalation_total_time: int = 1200 # 升级警告总时间(20分钟)

intervention_delay: int = 600 # 干预延迟(10分钟)

class CPDSystem:
"""
儿童存在检测系统

符合 Euro NCAP 2026 标准
"""

def __init__(self, config: CPDConfig = CPDConfig()):
self.config = config
self.state = CPDState.MONITORING
self.state_start_time: Optional[float] = None

self.child_detected = False
self.vehicle_locked = False
self.doors_closed_time: Optional[float] = None

self.alert_delayed = False
self.delay_start_time: Optional[float] = None

self.escalation_count = 0
self.last_escalation_time: Optional[float] = None

def update_vehicle_state(self, locked: bool, doors_closed: bool):
"""
更新车辆状态

Args:
locked: 车辆是否锁闭
doors_closed: 车门是否关闭
"""
self.vehicle_locked = locked

if doors_closed and self.doors_closed_time is None:
self.doors_closed_time = time.time()
elif not doors_closed:
self.doors_closed_time = None
self._reset()

def update_detection(self, child_present: bool, child_age: int = 3):
"""
更新检测结果

Args:
child_present: 是否检测到儿童
child_age: 儿童年龄
"""
if child_age > self.config.child_max_age:
return # 超出检测范围

self.child_detected = child_present

if child_present and self.state == CPDState.MONITORING:
self._transition_to(CPDState.CHILD_DETECTED)

def _transition_to(self, new_state: CPDState):
"""状态转换"""
self.state = new_state
self.state_start_time = time.time()

def _reset(self):
"""重置系统"""
self.state = CPDState.MONITORING
self.state_start_time = None
self.child_detected = False
self.alert_delayed = False
self.delay_start_time = None
self.escalation_count = 0
self.last_escalation_time = None

def process(self) -> dict:
"""
处理当前状态,返回应执行的动作

Returns:
动作字典,包含警告类型、干预措施等
"""
current_time = time.time()
action = {
'alert_type': None,
'alert_duration': 0,
'intervention': [],
'display_message': None,
'send_notification': False
}

if self.state == CPDState.CHILD_DETECTED:
# 计算检测延迟
if self.vehicle_locked:
delay = self.config.locked_detection_delay
else:
delay = self.config.unlocked_detection_delay

if self._time_in_state() >= delay:
self._transition_to(CPDState.INITIAL_ALERT)

elif self.state == CPDState.INITIAL_ALERT:
action['alert_type'] = 'initial'
action['alert_duration'] = self.config.initial_alert_duration
action['display_message'] = 'Child detected in vehicle'

# 检查是否被延迟
if self.alert_delayed:
if self._time_in_state() >= self.config.delay_max_duration:
self._transition_to(CPDState.ESCALATION)
else:
# 初始警告结束后进入升级阶段
if self._time_in_state() >= self.config.initial_alert_duration:
self._transition_to(CPDState.ESCALATION)

elif self.state == CPDState.ESCALATION:
action['alert_type'] = 'escalation'
action['display_message'] = 'Check the seats'

# 检查是否需要发出升级警告
if self._should_escalate(current_time):
self.escalation_count += 1
self.last_escalation_time = current_time

action['alert_duration'] = self.config.escalation_duration
action['send_notification'] = True

# 检查是否需要干预
if self._time_in_state() >= self.config.intervention_delay:
self._transition_to(CPDState.INTERVENTION)

elif self.state == CPDState.INTERVENTION:
action['alert_type'] = 'intervention'
action['intervention'] = self._get_intervention_actions()
action['display_message'] = 'INTERVENTION ACTIVE'

return action

def _time_in_state(self) -> float:
"""计算在当前状态的时间(秒)"""
if self.state_start_time is None:
return 0
return time.time() - self.state_start_time

def _should_escalate(self, current_time: float) -> bool:
"""判断是否需要升级警告"""
if self.last_escalation_time is None:
return True

time_since_last = current_time - self.last_escalation_time
return time_since_last >= self.config.escalation_interval

def _get_intervention_actions(self) -> List[str]:
"""获取干预措施列表"""
actions = []

# 空调控制
actions.append('activate_climate_control')

# 车门解锁
actions.append('unlock_doors')

# 远程通知
actions.append('send_remote_alert')

return actions

def driver_delay(self):
"""驾驶员延迟警告(仅限一次)"""
if self.state == CPDState.INITIAL_ALERT and not self.alert_delayed:
self.alert_delayed = True
self.delay_start_time = time.time()


# 使用示例
if __name__ == "__main__":
cpd = CPDSystem()

# 模拟场景:锁车后检测到儿童
cpd.update_vehicle_state(locked=False, doors_closed=True)
time.sleep(1)

# 锁车
cpd.update_vehicle_state(locked=True, doors_closed=True)

# 检测到儿童(3岁)
cpd.update_detection(child_present=True, child_age=3)

# 处理 30 秒
for i in range(30):
action = cpd.process()
if action['alert_type']:
print(f"[{i}s] Alert: {action['alert_type']}, Message: {action['display_message']}")
time.sleep(1)

干预措施要求

基础要求(必须)

措施 触发条件 时限
空调激活 车内温度危险或干预阶段 锁车后 10 分钟内
车门解锁 干预阶段启动时 警告升级后 5 分钟内

加分项(可选)

措施 分值 说明
移动应用通知 +1 分 推送到驾驶员手机
钥匙震动/蜂鸣 +0.5 分 钥匙反馈提醒
远程联系紧急联系人 +1 分 自动拨打预设联系人
第三方服务通知 +0.5 分 如 OnStar 等服务

满分路径(5分)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
检测功能(2分)
├─ 所有座椅位置覆盖
├─ 脚坑区域覆盖
└─ 运动检测 ≤15秒

警告功能(1.5分)
├─ 初始警告 ≥3秒
├─ 升级警告每分钟一次
└─ 持续 ≥20分钟

干预功能(1.5分)
├─ 空调激活
├─ 车门解锁
└─ 远程通知

技术方案对比

传感器选型

方案 优点 缺点 成本
60GHz 雷达 生命体征检测、不受遮挡影响 分辨率较低
RGB 摄像头 图像识别准确、可检测运动 光线依赖、隐私问题
IR 摄像头 夜间可用、隐私友好 分辨率较低
超声波 成本低 易受干扰、精度低 很低
压力传感器 成本低 无法区分儿童与物品 很低

推荐方案:雷达 + 摄像头融合

graph TB
    A[60GHz 雷达] --> C[生命体征检测]
    B[IR 摄像头] --> D[运动检测]
    C --> E[传感器融合]
    D --> E
    E --> F[儿童存在判定]
    F --> G{置信度}
    G -->|高| H[触发警告]
    G -->|低| I[持续监控]

融合优势:

  1. 互补性: 雷达检测呼吸/心跳,摄像头检测运动
  2. 鲁棒性: 单一传感器失效时另一传感器备份
  3. 准确性: 多传感器确认降低误报率

对 IMS 开发的启示

1. 功能优先级

优先级 功能 技术方案
P0 雷达生命体征检测 60GHz 雷达
P0 运动检测 IR 摄像头
P1 传感器融合 雷达 + 摄像头
P1 警告流程实现 状态机
P2 干预措施集成 空调/车门控制
P2 远程通知 T-Box 集成

2. 硬件配置

组件 推荐型号 参数
60GHz 雷达 TI IWR6843AOP 4发4收,60-64GHz
IR 摄像头 OV2311 2MP,全局快门
处理器 QCS8255 Hexagon NPU

3. 测试场景

Euro NCAP CPD 测试场景(部分):

场景 儿童位置 检测时限
CPD-01 前排乘客座椅 锁车后 15 秒
CPD-02 后排左侧座椅 锁车后 15 秒
CPD-03 后排右侧座椅 锁车后 15 秒
CPD-04 第三排座椅(如有) 锁车后 15 秒
CPD-05 前排脚坑 锁车后 15 秒
CPD-06 后排脚坑 锁车后 15 秒

参考资料

  1. Euro NCAP 2026 Protocols: https://www.euroncap.com/en/for-engineers/protocols/2026-protocols/
  2. Smart Eye CPD Blog: https://smarteye.se/blog/what-euro-ncap-2026-says-about-child-presence-detection/
  3. NSC Hot Cars Statistics: https://injuryfacts.nsc.org/motor-vehicle/motor-vehicle-safety-issues/hotcars/

总结

Euro NCAP 2026 对 CPD 的要求:

  1. 直接检测: 必须检测运动、呼吸或心跳
  2. 全覆盖: 所有座椅位置和脚坑
  3. 快速响应: 锁车后 15 秒内警告
  4. 主动干预: 空调、解锁、远程通知

对 IMS 开发,雷达 + 摄像头融合是推荐技术路线。


Euro NCAP 2026 儿童存在检测(CPD)详解:5分评分标准与干预要求
https://dapalm.com/2026/06/14/2026-06-14-Euro-NCAP-2026-CPD-Child-Presence-Detection-5-Points/
作者
Mars
发布于
2026年6月14日
许可协议