Euro NCAP 2026驾驶员参与度评分体系:从2分到25分的巨变

Euro NCAP 2026驾驶员参与度评分体系:从2分到25分的巨变

发布日期: 2026-07-03
标签: Euro NCAP, 驾驶员参与度, DMS评分
分类: 法规解读


核心摘要

Euro NCAP 2026将DMS从2分奖励项升级为25分独立评分类别”Driver Engagement”,这是DMS行业最大变化。本文解析25分评分结构(分心10分+疲劳8分+损伤7分)、评估流程(Dossier+实车测试+虚拟验证)、关键测试场景清单、以及IMS团队如何制定25分满分策略。


1. 评分结构巨变:2分→25分

1.1 历史演进

年份 DMS评分位置 分值 说明
2020-2022 无DMS评分 0分 DMS未纳入评估
2023 Safety Assist奖励 ≤2分 DMS作为奖励项
2024 Safety Assist奖励 ≤3分 新增VATS评估
2026 Driver Engagement独立类别 ≤25分 独立评分类别

1.2 2026评分架构

Euro NCAP 2026四阶段评分体系:

阶段 类别 满分 占比
Stage 1 Safe Driving 100分 包含Driver Engagement 25分
Stage 2 Crash Avoidance 100分 ADAS主动安全
Stage 3 Crash Protection 100分 被动安全
Stage 4 Post-Crash Safety 100分 碰撞后安全

Driver Engagement 25分分解:

检测类别 分值 检测内容 关键要求
分心检测 10分 长分心/短分心/VATS 注视偏离判定+警告时序
疲劳检测 8分 PERCLOS/KSS≥7 疲劳判定+警告升级
损伤检测 7分 酒精/药物/医疗 10分钟内启动评估

2. 分心检测评分细则(10分)

2.1 分心检测场景与分值

场景编号 场景名称 分值 检测条件 警告时限
D-01 长分心(3-4秒) 3分 注视偏离道路3-4秒 ≤3秒触发一级警告
D-02 手机使用(耳旁) 2分 手持手机至耳边 ≤3秒触发一级警告
D-03 手机使用(打字) 2分 低头打字操作 ≤3秒触发一级警告
D-04 短分心(10秒累积) 1分 多次短分心累积10秒 累积判定
D-05 短分心(30秒累积) 1分 多次短分心累积30秒 累积判定
D-06 VATS视觉注意力时间 1分 注视道路时间占比 VATS≥70%

2.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
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
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
"""
Euro NCAP 2026 分心检测评分
10分评分标准实现

评分逻辑:
- D-01 长分心(3-4秒):3分
- D-02 手机使用(耳旁):2分
- D-03 手机使用(打字):2分
- D-04 短分心(10秒累积):1分
- D-05 短分心(30秒累积):1分
- D-06 VATS:1分

满分条件:
- 所有6个场景均通过
- 总分 = 3+2+2+1+1+1 = 10分
"""

from typing import Dict, Tuple
from dataclasses import dataclass

@dataclass
class DistractionTestResult:
"""分心检测测试结果"""

scenario_id: str # 场景编号
scenario_name: str # 场景名称
max_score: int # 满分分值
achieved_score: int # 实际得分
passed: bool # 是否通过

# 检测参数
detection_latency_sec: float # 检测时延
warning_latency_sec: float # 警告时延

# 判定依据
criteria_met: str # 通过标准描述


class DistractionScoringEngine:
"""
分心检测评分引擎

Euro NCAP 2026分心检测评分标准:

D-01 长分心(3-4秒):
- 检测条件:注视偏离道路3-4秒
- 通过标准:≤3秒触发一级警告
- 分值:3分

D-02 手机使用(耳旁):
- 检测条件:手持手机至耳边
- 通过标准:≤3秒触发一级警告
- 分值:2分

D-03 手机使用(打字):
- 检测条件:低头打字操作
- 通过标准:≤3秒触发一级警告
- 分值:2分

D-04 短分心(10秒累积):
- 检测条件:多次短分心累积10秒
- 通过标准:累积判定触发警告
- 分值:1分

D-05 短分心(30秒累积):
- 检测条件:多次短分心累积30秒
- 通过标准:累积判定触发二级警告
- 分值:1分

D-06 VATS视觉注意力时间:
- 检测条件:注视道路时间占比
- 通过标准:VATS≥70%
- 分值:1分
"""

def __init__(self):
# Euro NCAP阈值
self.long_distraction_sec = 3.0 # 长分心阈值
self.short_distraction_10_sec = 10.0 # 短分心10秒累积
self.short_distraction_30_sec = 30.0 # 短分心30秒累积
self.vats_threshold = 0.70 # VATS阈值70%

# 警告时延阈值
self.warning_latency_threshold_sec = 3.0

def score_d01_long_distraction(self,
detection_latency_sec: float,
warning_latency_sec: float) -> DistractionTestResult:
"""
D-01 长分心(3-4秒)评分

通过条件:
- 检测到注视偏离道路3-4秒
- ≤3秒触发一级警告
- 警告内容:视觉+听觉

Args:
detection_latency_sec: 检测时延
warning_latency_sec: 警告时延

Returns:
DistractionTestResult: 测试结果
"""
passed = warning_latency_sec <= self.warning_latency_threshold_sec
achieved_score = 3 if passed else 0

return DistractionTestResult(
scenario_id='D-01',
scenario_name='长分心(3-4秒)',
max_score=3,
achieved_score=achieved_score,
passed=passed,
detection_latency_sec=detection_latency_sec,
warning_latency_sec=warning_latency_sec,
criteria_met=f"警告时延{warning_latency_sec:.1f}s {'≤' if passed else '>'}3s"
)

def score_d02_phone_ear(self,
detection_latency_sec: float,
warning_latency_sec: float) -> DistractionTestResult:
"""
D-02 手机使用(耳旁)评分
通过条件:≤3秒触发一级警告
分值:2分
"""
passed = warning_latency_sec <= self.warning_latency_threshold_sec
achieved_score = 2 if passed else 0

return DistractionTestResult(
scenario_id='D-02',
scenario_name='手机使用(耳旁)',
max_score=2,
achieved_score=achieved_score,
passed=passed,
detection_latency_sec=detection_latency_sec,
warning_latency_sec=warning_latency_sec,
criteria_met=f"警告时延{warning_latency_sec:.1f}s {'≤' if passed else '>'}3s"
)

def score_d03_phone_texting(self,
detection_latency_sec: float,
warning_latency_sec: float) -> DistractionTestResult:
"""
D-03 手机使用(打字)评分
通过条件:≤3秒触发一级警告
分值:2分
"""
passed = warning_latency_sec <= self.warning_latency_threshold_sec
achieved_score = 2 if passed else 0

return DistractionTestResult(
scenario_id='D-03',
scenario_name='手机使用(打字)',
max_score=2,
achieved_score=achieved_score,
passed=passed,
detection_latency_sec=detection_latency_sec,
warning_latency_sec=warning_latency_sec,
criteria_met=f"警告时延{warning_latency_sec:.1f}s {'≤' if passed else '>'}3s"
)

def score_d04_short_distraction_10s(self,
cumulative_distraction_sec: float,
warning_triggered: bool) -> DistractionTestResult:
"""
D-04 短分心(10秒累积)评分
通过条件:多次短分心累积10秒触发警告
分值:1分
"""
passed = warning_triggered and cumulative_distraction_sec >= self.short_distraction_10_sec
achieved_score = 1 if passed else 0

return DistractionTestResult(
scenario_id='D-04',
scenario_name='短分心(10秒累积)',
max_score=1,
achieved_score=achieved_score,
passed=passed,
detection_latency_sec=cumulative_distraction_sec,
warning_latency_sec=0,
criteria_met=f"累积分心{cumulative_distraction_sec:.1f}s {'≥' if passed else '<'}10s"
)

def score_d05_short_distraction_30s(self,
cumulative_distraction_sec: float,
warning_triggered: bool) -> DistractionTestResult:
"""
D-05 短分心(30秒累积)评分
通过条件:多次短分心累积30秒触发二级警告
分值:1分
"""
passed = warning_triggered and cumulative_distraction_sec >= self.short_distraction_30_sec
achieved_score = 1 if passed else 0

return DistractionTestResult(
scenario_id='D-05',
scenario_name='短分心(30秒累积)',
max_score=1,
achieved_score=achieved_score,
passed=passed,
detection_latency_sec=cumulative_distraction_sec,
warning_latency_sec=0,
criteria_met=f"累积分心{cumulative_distraction_sec:.1f}s {'≥' if passed else '<'}30s"
)

def score_d06_vats(self,
gaze_road_ratio: float) -> DistractionTestResult:
"""
D-06 VATS视觉注意力时间评分
通过条件:注视道路时间占比≥70%
分值:1分
"""
passed = gaze_road_ratio >= self.vats_threshold
achieved_score = 1 if passed else 0

return DistractionTestResult(
scenario_id='D-06',
scenario_name='VATS视觉注意力时间',
max_score=1,
achieved_score=achieved_score,
passed=passed,
detection_latency_sec=0,
warning_latency_sec=0,
criteria_met=f"VATS {gaze_road_ratio:.1%} {'≥' if passed else '<'}70%"
)

def compute_total_distraction_score(self,
results: list) -> Dict:
"""
计算分心检测总分

Args:
results: 所有场景测试结果列表

Returns:
total_score: 总分结果
"""
total_achieved = sum(r.achieved_score for r in results)
total_max = sum(r.max_score for r in results)

return {
'total_achieved': total_achieved,
'total_max': total_max,
'percentage': total_achieved / total_max * 100 if total_max > 0 else 0,
'scenario_results': results,
'full_score_possible': total_achieved == total_max
}


# 测试示例
if __name__ == "__main__":
engine = DistractionScoringEngine()

print("=== Euro NCAP 2026 分心检测评分测试 ===")

# 模拟各场景测试结果
results = []

# D-01 长分心(3-4秒):检测时延2.5秒,警告时延2.8秒
r1 = engine.score_d01_long_distraction(2.5, 2.8)
results.append(r1)
print(f"\n{r1.scenario_id} {r1.scenario_name}:")
print(f" 得分:{r1.achieved_score}/{r1.max_score}")
print(f" 判定:{r1.criteria_met}")

# D-02 手机使用(耳旁):警告时延2.5秒
r2 = engine.score_d02_phone_ear(2.0, 2.5)
results.append(r2)
print(f"\n{r2.scenario_id} {r2.scenario_name}:")
print(f" 得分:{r2.achieved_score}/{r2.max_score}")
print(f" 判定:{r2.criteria_met}")

# D-03 手机使用(打字):警告时延3.2秒(未通过)
r3 = engine.score_d03_phone_texting(2.8, 3.2)
results.append(r3)
print(f"\n{r3.scenario_id} {r3.scenario_name}:")
print(f" 得分:{r3.achieved_score}/{r3.max_score}")
print(f" 判定:{r3.criteria_met}")

# D-04 短分心(10秒累积):累积12秒,警告触发
r4 = engine.score_d04_short_distraction_10s(12.0, True)
results.append(r4)
print(f"\n{r4.scenario_id} {r4.scenario_name}:")
print(f" 得分:{r4.achieved_score}/{r4.max_score}")
print(f" 判定:{r4.criteria_met}")

# D-05 短分心(30秒累积):累积25秒(未通过)
r5 = engine.score_d05_short_distraction_30s(25.0, False)
results.append(r5)
print(f"\n{r5.scenario_id} {r5.scenario_name}:")
print(f" 得分:{r5.achieved_score}/{r5.max_score}")
print(f" 判定:{r5.criteria_met}")

# D-06 VATS:道路注视比例75%
r6 = engine.score_d06_vats(0.75)
results.append(r6)
print(f"\n{r6.scenario_id} {r6.scenario_name}:")
print(f" 得分:{r6.achieved_score}/{r6.max_score}")
print(f" 判定:{r6.criteria_met}")

# 总分计算
total = engine.compute_total_distraction_score(results)

print(f"\n=== 分心检测总分 ===")
print(f" 得分:{total['total_achieved']}/{total['total_max']}")
print(f" 百分比:{total['percentage']:.1f}%")
print(f" 满分可能:{total['full_score_possible']}")

3. 疲劳检测评分细则(8分)

场景编号 场景名称 分值 检测条件 警告要求
F-01 PERCLOS≥30% 3分 眼睑闭合比例≥30% ≤5秒触发一级警告
F-02 微睡眠检测 2分 闭眼1.5±0.2秒 ≤3秒触发一级警告
F-03 Yawning检测 1分 打哈欠动作 检测到即警告
F-04 疲劳等级升级 1分 持续疲劳→二级警告 无响应10秒升级
F-05 疲劳-驾驶时间关联 1分 连续驾驶≥2小时 提示休息建议

4. 损伤检测评分细则(7分)

场景编号 场景名称 分值 检测条件 警告要求
IMP-01 损伤检测启动 2分 行驶10分钟内,车速≥50km/h 启动评估
IMP-02 损伤-疲劳区分 2分 区分损伤与疲劳 正确分类
IMP-03 ADAS参数调整 2分 FCW/AEB灵敏度提升 联动触发
IMP-04 无响应驾驶员干预 1分 闭眼≥6秒或无操作≥10秒 触发MRM

5. Euro NCAP评估流程

5.1 三阶段评估

graph TD
    A[Stage 1: Dossier提交<br/>OEM自证材料] --> B[Stage 2: 实车测试<br/>Euro NCAP测试]
    B --> C[Stage 3: 虚拟验证<br/>合成数据+仿真]
    
    A --> A1[系统功能描述]
    A --> A2[检测算法说明]
    A --> A3[警告时序设计]
    A --> A4[鲁棒性说明]
    
    B --> B1[分心测试场景<br/>D-01至D-06]
    B --> B2[疲劳测试场景<br/>F-01至F-05]
    B --> B3[损伤测试场景<br/>IMP-01至IMP-04]
    
    C --> C1[合成数据验证<br/>夜间/遮挡/边缘案例]
    C --> C2[仿真场景验证<br/>2,000km道路验证]
    C --> C3[抽查验证<br/>Euro NCAP抽查]

5.2 Dossier提交清单

文档类型 内容 OEM责任
系统描述 DMS/OMS功能说明 必须提交
算法说明 检测算法技术文档 必须提交
警告时序 警告触发时序图 必须提交
鲁棒性说明 墨镜/口罩/光照鲁棒性 必须提交
测试数据 内部测试结果 必须提交
性能数据 检测准确率/误报率 必须提交

6. IMS开发落地指导

6.1 25分满分策略

评分项 满分 IMS当前能力 差距 行动计划
分心检测 10分 7分 D-04/D-05累积判定 实现累积分心判定
疲劳检测 8分 5分 F-04升级/F-05时间关联 实现警告升级+时间关联
损伤检测 7分 0分 全部缺失 实现损伤检测算法
总分 25分 12分 13分差距 6个月开发周期

6.2 开发路线图

阶段 任务 时间 目标分值
Phase 1 分心累积判定(D-04/D-05) 1月 10分
Phase 2 疲劳升级+时间关联(F-04/F-05) 1月 8分
Phase 3 损伤检测算法(IMP-01/02) 2月 4分
Phase 4 ADAS联动(IMP-03/04) 1月 3分
Phase 5 Dossier准备+测试验证 1月 25分满分

6.3 测试场景清单

场景编号 检测项 测试条件 通过标准
SC-01 D-01长分心 注视偏离3.5秒 ≤3秒警告
SC-02 D-02手机耳旁 手持手机至耳边 ≤3秒警告
SC-03 D-03手机打字 低头打字 ≤3秒警告
SC-04 D-04累积10秒 多次短分心累积10秒 触发警告
SC-05 D-05累积30秒 多次短分心累积30秒 触发二级警告
SC-06 D-06 VATS 注视道路占比 VATS≥70%
SC-07 F-01 PERCLOS PERCLOS≥30% ≤5秒警告
SC-08 F-02微睡眠 闭眼1.5秒 ≤3秒警告
SC-09 IMP-01损伤启动 行驶10分钟 启动评估
SC-10 IMP-02损伤-疲劳区分 损伤vs疲劳场景 正确分类

7. 参考文献

  1. Euro NCAP Safe Driving Protocol v1.1 (2025-10-01), Driver Engagement Scoring Criteria
  2. Smart Eye (2025-11-11), What’s Changing in Euro NCAP’s 2026 Safety Ratings?
  3. Smart Eye (2025-04-29), Driver Monitoring 2.0: How Euro NCAP is Raising the Bar in 2026
  4. Smart Eye (2026-02-16), A Guide to Euro NCAP’s 2026 Safety Ratings Update
  5. AVL (2025-10-22), Euro NCAP 2026: What’s Changing and How to Stay Compliant
  6. Euro NCAP (2025-11-26), Euro NCAP Announces 2026 Protocol Changes

IMS开发启示

优先级排序

优先级 任务 原因 目标分值
P0(最高) 分心累积判定 差距3分 10分
P1(高) 疲劳升级+时间关联 差距3分 8分
P2(中) 损伤检测算法 差距7分 7分
P3(低) Dossier准备 提交必需 -

技术路线判断

  1. 分心路线: 长分心+短分心累积+VATS三项并行开发
  2. 疲劳路线: PERCLOS+微睡眠+警告升级+时间关联四项
  3. 损伤路线: 自适应基线+多特征融合+ADAS联动+MRM
  4. 验证路线: Dossier自证+实车测试+虚拟验证三阶段

下一步行动:

  1. 实现分心累积判定算法(D-04/D-05)
  2. 实现疲劳警告升级机制(F-04)
  3. 开发损伤检测算法(IMP-01/02)
  4. 准备Euro NCAP Dossier文档

Euro NCAP 2026驾驶员参与度评分体系:从2分到25分的巨变
https://dapalm.com/2026/07/03/2026-07-03-euro-ncap-2026-driver-engagement-25-points-zh/
作者
Mars
发布于
2026年7月3日
许可协议