Euro NCAP 2026协议深度解读:从2分到25分,DMS如何成为安全核心

官方协议信息

2023 vs 2026 对比:核心变化

评估类别 2023协议 2026协议 分值变化
驾驶员监测(DMS) 最多2分 驾驶员参与类别中最多25分 12.5倍
损伤检测 不包含 必须检测酒精/药物损伤 新增
无响应驾驶员 仅发警告 递进警告+紧急停止功能 强化
儿童存在检测(CPD) 直接传感最多4分 最多5分,15秒内检测 强化
安全带监测 检测是否扣好 检测错误佩戴+后排 强化
气囊自适应 无要求 按乘员大小/位置/姿态调整 新增
eCall碰撞响应 事故严重度 必须包含乘员数量 新增

DMS具体测试场景清单

1. 疲劳检测(高速公路场景)

场景编号 场景描述 检测条件 通过标准
F-01 轻度疲劳 速度≥50km/h,PERCLOS 15-25% ≤10秒检测,一级警告
F-02 中度疲劳 PERCLOS 25-40% ≤5秒检测,二级警告
F-03 重度疲劳 PERCLOS>40%,持续5秒 ≤3秒检测,三级警告+干预
F-04 微睡眠 闭眼1.5±0.2秒 ≤3秒检测,一级警告
F-05 打哈欠 嘴部张开>2秒 记录但不单独触发

2. 分心检测

场景编号 场景描述 触发条件 警告时限
D-01 视线偏离道路 视线偏离>3秒(单次) ≤4秒一级警告
D-02 手持手机(耳边) 手机至耳边 ≤3秒一级警告
D-03 手机打字操作 低头+手部操作 ≤3秒一级警告
D-04 频繁短瞥 短瞥累计>5次/30秒 ≤30秒二级警告
D-05 转身看后排 躯干旋转>45° ≤4秒一级警告
D-06 调节中控 视线在中控>4秒 ≤5秒一级警告

3. 损伤检测(2026新增)

场景编号 场景描述 检测方法 通过标准
I-01 酒精损伤 面部特征+头部运动模式 检测到异常时发出警告
I-02 药物损伤 瞳孔+面部+反应延迟 检测到异常时发出警告
I-03 驾驶能力下降 车道偏离频率+反应时延 综合评分触发警告

4. 无响应驾驶员(2026强化)

场景编号 场景描述 递进响应 时限要求
U-01 眼睛闭合不响应 一级声音警告 ≤5秒
U-02 一级警告无响应 二级声光警告 ≤10秒
U-03 二级警告无响应 三级:收紧安全带+空调 ≤15秒
U-04 持续无响应 紧急停车功能激活 ≤30秒

5. CPD儿童存在检测

场景编号 场景描述 检测时限 响应要求
C-01 锁车后儿童在座 ≤15秒 车外声光警告
C-02 未锁车儿童在座 ≤10分钟 车外声光警告
C-03 警告持续无人响应 每分钟重复≥20分钟 钥匙/App通知
C-04 高温紧急 车内温度>40°C 空调开启+解锁+紧急通知

6. 安全带监测

场景编号 场景描述 检测要求 通过标准
B-01 前排未系安全带 速度>22km/h 声光提醒
B-02 后排未系安全带 座椅有人+未扣 声光提醒
B-03 安全带在背后 扣好但位置错误 ≤10秒检测到
B-04 安全带仅腰部 肩带未正确使用 ≤10秒检测到

7. 气囊自适应

场景编号 场景描述 系统响应 通过标准
A-01 后向儿童座椅 气囊自动禁用 检测到即禁用
A-02 前排乘员体型小 减小气囊展开力度 按体型分类调整
A-03 脚搭仪表台 警告+气囊调整 ≤5秒警告
A-04 上身靠近仪表台 警告(<20cm) ≤3秒警告

技术架构要求

graph TB
    subgraph 传感器层
        A[DMS摄像头 RGB-IR]
        B[OMS摄像头 后排]
        C[mmWave雷达 CPD+生命体征]
        D[座椅压力阵列]
        E[安全带张力传感器]
        F[重量传感器]
    end
    
    subgraph 处理层
        G[高通8255 Hexagon NPU]
        H[实时眼/头跟踪]
        I[PERCLOS计算]
        J[手机使用检测]
        K[损伤特征检测]
        L[乘员分类]
        M[安全带状态]
        N[姿态/OOP检测]
    end
    
    subgraph 决策层
        O[场景匹配引擎]
        P[警告等级判定]
        Q[递进响应控制]
    end
    
    subgraph 执行层
        R[声音/灯光警告]
        S[安全带收紧]
        T[空调控制]
        U[气囊调整]
        V[紧急停车eCall]
    end
    
    A --> H
    A --> I
    A --> J
    A --> K
    B --> L
    B --> N
    C --> L
    D --> N
    E --> M
    F --> L
    
    H --> O
    I --> O
    J --> O
    K --> O
    L --> O
    M --> O
    N --> O
    
    O --> P
    P --> Q
    Q --> R
    Q --> S
    Q --> T
    Q --> U
    Q --> V

IMS系统开发落地清单

传感器硬件BOM

传感器 型号 覆盖场景 单价(估)
DMS RGB-IR OV2311, 2MP, 全局快门 F/D/I/U 全覆盖 $8
OMS后排 OV2311, 2MP L/N/B-02 $8
60GHz mmWave TI IWR6843AOP C/L $15
77GHz mmWave LinpoWave 77GHz C+心率 $20
座椅压力阵列 16×16织物 N/L $12
安全带张力 应变片 B-03/B-04 $3
重量传感器 压阻式 L/儿童座椅 $5
总计 - - ~$71

软件模块开发优先级

模块 覆盖场景 开发周期 优先级
眼/头跟踪+PERCLOS F-01~F-04 3月 🔴 P0
分心检测+手机识别 D-01~D-06 4月 🔴 P0
安全带状态检测 B-01~B-04 2月 🔴 P0
CPD雷达 C-01~C-04 3月 🔴 P0
乘员分类 A-01~A-02 4月 🟡 P1
OOP检测 A-03~A-04 3月 🟡 P1
损伤检测 I-01~I-03 6月 🟡 P1
无响应递进 U-01~U-04 3月 🟡 P1
紧急停车集成 U-04 6月 🟢 P2
eCall乘员数据 eCall 3月 🟢 P2

参考实现代码

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
"""
Euro NCAP 2026 场景检测引擎

根据官方协议v1.2实现场景匹配和警告等级判定
"""

from dataclasses import dataclass
from enum import IntEnum
from typing import Dict, Optional

class WarningLevel(IntEnum):
NONE = 0
LEVEL_1 = 1 # 声音+灯光提醒
LEVEL_2 = 2 # 强化声光+收紧安全带
LEVEL_3 = 3 # 紧急停车+eCall

@dataclass
class DriverState:
"""驾驶员状态输入"""
perclos: float = 0.0 # PERCLOS值 0-1
eye_closure_duration: float = 0.0 # 当前闭眼时长(秒)
gaze_off_road_duration: float = 0.0 # 视线偏离时长(秒)
phone_detected: bool = False # 手机使用
phone_position: str = "" # ear/texting/none
head_rotation: float = 0.0 # 头部旋转角度
yawn_detected: bool = False
impairment_score: float = 0.0 # 损伤评分0-1
responsive: bool = True # 是否响应

@dataclass
class OccupantState:
"""乘员状态输入"""
seat_occupied: bool = False
weight_kg: float = 0.0
seatbelt_buckled: bool = False
seatbelt_position: str = "correct" # correct/behind_back/lap_only
child_seat_detected: bool = False
child_seat_type: str = "" # rear_facing/forward_facing/booster
posture: str = "normal" # normal/leaning/feet_up/oop
distance_to_dashboard: float = 999.0 # cm

@dataclass
class CabinState:
"""座舱环境"""
speed_kmh: float = 0.0
door_locked: bool = False
engine_on: bool = False
cabin_temp: float = 25.0
time_since_lock: float = 0.0 # 秒

class EuroNCAP2026ScenarioEngine:
"""
Euro NCAP 2026 协议场景检测引擎

根据协议v1.2实现:
- DMS: 疲劳/分心/损伤/无响应
- CPD: 儿童存在检测
- 安全带监测
- 气囊自适应
"""

def evaluate_dms(self, driver: DriverState,
cabin: CabinState) -> Dict:
"""评估DMS场景"""
results = []

# === 疲劳检测 (速度≥50km/h) ===
if cabin.speed_kmh >= 50:
if driver.perclos > 0.40 and driver.eye_closure_duration > 5:
results.append(('F-03', 'severe_fatigue',
WarningLevel.LEVEL_2, 3.0))
elif driver.perclos > 0.25:
results.append(('F-02', 'moderate_fatigue',
WarningLevel.LEVEL_1, 5.0))
elif driver.perclos > 0.15:
results.append(('F-01', 'mild_fatigue',
WarningLevel.LEVEL_1, 10.0))

# 微睡眠
if 1.3 <= driver.eye_closure_duration <= 1.7:
results.append(('F-04', 'microsleep',
WarningLevel.LEVEL_1, 3.0))

# === 分心检测 ===
if driver.gaze_off_road_duration > 3.0:
results.append(('D-01', 'gaze_off_road',
WarningLevel.LEVEL_1, 4.0))

if driver.phone_detected:
if driver.phone_position == 'ear':
results.append(('D-02', 'phone_ear',
WarningLevel.LEVEL_1, 3.0))
elif driver.phone_position == 'texting':
results.append(('D-03', 'phone_texting',
WarningLevel.LEVEL_1, 3.0))

if abs(driver.head_rotation) > 45:
results.append(('D-05', 'turning_back',
WarningLevel.LEVEL_1, 4.0))

# === 损伤检测 ===
if driver.impairment_score > 0.6:
results.append(('I-01', 'impairment_detected',
WarningLevel.LEVEL_1, 5.0))

# === 无响应驾驶员 ===
if not driver.responsive:
results.append(('U-01', 'unresponsive_l1',
WarningLevel.LEVEL_1, 5.0))
# 递进逻辑在实际中需要时间追踪

return {
'scenarios': results,
'max_level': max(r[2] for r in results) if results else 0,
}

def evaluate_cpd(self, occupant: OccupantState,
cabin: CabinState) -> Dict:
"""评估CPD场景"""
results = []

if not cabin.engine_on and not occupant.seat_occupied:
return {'scenarios': [], 'max_level': 0}

# 检测到儿童(重量<30kg或儿童座椅)
is_child = (occupant.weight_kg < 30 or
occupant.child_seat_detected)

if is_child and cabin.door_locked:
if cabin.time_since_lock <= 15:
results.append(('C-01', 'child_detected_locked',
WarningLevel.LEVEL_1, 15.0))

# 高温
if cabin.cabin_temp > 40:
results.append(('C-04', 'hot_car_emergency',
WarningLevel.LEVEL_3, 0.0))

return {
'scenarios': results,
'max_level': max(r[2] for r in results) if results else 0,
}

def evaluate_seatbelt(self, occupant: OccupantState,
cabin: CabinState) -> Dict:
"""评估安全带场景"""
results = []

if occupant.seat_occupied and not occupant.seatbelt_buckled:
if cabin.speed_kmh > 22:
results.append(('B-01', 'no_seatbelt_front',
WarningLevel.LEVEL_1, 0.0))
elif occupant.seatbelt_buckled:
if occupant.seatbelt_position == 'behind_back':
results.append(('B-03', 'belt_behind_back',
WarningLevel.LEVEL_1, 10.0))
elif occupant.seatbelt_position == 'lap_only':
results.append(('B-04', 'belt_lap_only',
WarningLevel.LEVEL_1, 10.0))

return {
'scenarios': results,
'max_level': max(r[2] for r in results) if results else 0,
}

def evaluate_airbag(self, occupant: OccupantState) -> Dict:
"""评估气囊自适应场景"""
results = []

if occupant.child_seat_detected and occupant.child_seat_type == 'rear_facing':
results.append(('A-01', 'rear_facing_child_seat',
WarningLevel.NONE, 0.0))

if occupant.distance_to_dashboard < 20:
results.append(('A-04', 'too_close_dashboard',
WarningLevel.LEVEL_1, 3.0))

if occupant.posture == 'feet_up':
results.append(('A-03', 'feet_on_dashboard',
WarningLevel.LEVEL_1, 5.0))

return {
'scenarios': results,
'max_level': max(r[2] for r in results) if results else 0,
}


# 测试
if __name__ == "__main__":
engine = EuroNCAP2026ScenarioEngine()

# 模拟疲劳+手机使用场景
driver = DriverState(
perclos=0.28,
eye_closure_duration=0.5,
gaze_off_road_duration=4.5,
phone_detected=True,
phone_position='texting',
)
cabin = CabinState(speed_kmh=80, engine_on=True)

dms_result = engine.evaluate_dms(driver, cabin)
print("=== DMS评估 ===")
for scenario_id, name, level, max_delay in dms_result['scenarios']:
print(f" {scenario_id}: {name} → 警告等级{level}, 时限{max_delay}秒")
print(f" 最高警告等级: {dms_result['max_level']}")

# 模拟CPD场景
child = OccupantState(
seat_occupied=True, weight_kg=15,
child_seat_detected=True, child_seat_type='rear_facing'
)
locked_cabin = CabinState(door_locked=True, time_since_lock=10,
cabin_temp=42, engine_on=False)

cpd_result = engine.evaluate_cpd(child, locked_cabin)
print("\n=== CPD评估 ===")
for scenario_id, name, level, max_delay in cpd_result['scenarios']:
print(f" {scenario_id}: {name} → 警告等级{level}, 时限{max_delay}秒")
print(f" 最高警告等级: {cpd_result['max_level']}")

# 模拟安全带场景
passenger = OccupantState(
seat_occupied=True, seatbelt_buckled=True,
seatbelt_position='behind_back'
)
belt_result = engine.evaluate_seatbelt(passenger, cabin)
print("\n=== 安全带评估 ===")
for scenario_id, name, level, max_delay in belt_result['scenarios']:
print(f" {scenario_id}: {name} → 警告等级{level}, 时限{max_delay}秒")

参考文献

  1. Euro NCAP Protocol v1.2: https://cdn.euroncap.com/cars/assets/Euro_NCAP_Protocol_Safe_Driving_Occupant_Monitoring_v1_2_aebbc7361f.pdf
  2. Driver Engagement Protocol: https://www.euroncap.com/media/85854/euro-ncap-protocol-safe-driving-driver-engagement-v10.pdf
  3. Smart Eye分析: https://smarteye.se/blog/euro-ncap-2026-whats-changing/
  4. Anyverse OEM指南: https://anyverse.ai/euro-ncap-2026-in-cabin-monitoring-oem-guidelines-to-readiness/
  5. AutoSens 2026讲解: https://auto-sens.com/watch/euro-ncap-occupant-and-driver-monitoring-assessment-2026/
  6. Sky Engine AI: https://www.skyengine.ai/blog/navigating-euro-ncap-2026-how-synthetic-data-powers-next-gen-in-cabin-monitoring-systems

https://dapalm.com/2026/10/03/2026-10-03-01-euro-ncap-2026-protocol-dms-25-points-scenarios-ims/
作者
Mars
发布于
2026年10月3日
许可协议