前言
随着 L2+ 自动驾驶的普及,驾驶员可能在系统运行时放松警惕。Euro NCAP 要求 DMS 系统评估驾驶员是否准备好接管控制,这是确保安全的关键。
一、接管准备度定义
1.1 什么是接管准备度
接管准备度 (Takeover Readiness): 驾驶员在系统请求时能够及时、正确地恢复车辆控制的能力。
1.2 评估维度
| 维度 |
说明 |
指标 |
| 注意力 |
驾驶员是否关注道路 |
视线方向 |
| 警觉性 |
驾驶员是否清醒 |
PERCLOS |
| 手部位置 |
手是否在方向盘附近 |
手部检测 |
| 响应能力 |
对警告的反应速度 |
响应时间 |
二、评估方法
2.1 视线追踪
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
| class TakeoverReadinessAssessor: def __init__(self): self.gaze_window = 5.0 def assess_attention(self, gaze_data): """ 评估注意力 参数: gaze_data: 近 5 秒的视线数据 返回: {'road_attention': float, 'off_road_time': float} """ road_time = sum(g['duration'] for g in gaze_data if g['target'] == 'road') road_attention = road_time / self.gaze_window return { 'road_attention': road_attention, 'off_road_time': self.gaze_window - road_time } def assess_alertness(self, eye_openness_sequence): """评估警觉性""" perclos = self.calculate_perclos(eye_openness_sequence) if perclos > 0.3: return {'level': 'low', 'perclos': perclos} elif perclos > 0.15: return {'level': 'medium', 'perclos': perclos} else: return {'level': 'high', 'perclos': perclos} def assess_hand_position(self, hand_data): """评估手部位置""" on_wheel = hand_data.get('left_on_wheel', False) or \ hand_data.get('right_on_wheel', False) return {'hands_on_wheel': on_wheel} def calculate_readiness_score(self, attention, alertness, hand_pos): """ 计算接管准备度评分 返回: 0-100 分 """ score = 0 score += attention['road_attention'] * 40 alertness_scores = {'high': 40, 'medium': 20, 'low': 0} score += alertness_scores[alertness['level']] score += 20 if hand_pos['hands_on_wheel'] else 0 return score
|
2.2 准备度等级
| 分数范围 |
等级 |
系统响应 |
| 80-100 |
高 |
正常运行 |
| 60-79 |
中 |
提高警觉 |
| 40-59 |
低 |
发出警告 |
| 0-39 |
极低 |
准备接管 |
三、测试场景
3.1 正常接管场景
| 场景 |
驾驶员状态 |
预期结果 |
| TO-01 |
视线在道路,手在方向盘 |
无警告 |
| TO-02 |
视线偶尔偏离,手在方向盘 |
无警告 |
| TO-03 |
视线长时间偏离 |
发出警告 |
3.2 低准备度场景
| 场景 |
驾驶员状态 |
预期结果 |
| TO-04 |
眼睛闭着(疲劳) |
立即警告 |
| TO-05 |
手离开方向盘 >10s |
发出警告 |
| TO-06 |
视线完全偏离 >5s |
发出警告 |
3.3 接管响应测试
| 场景 |
请求类型 |
响应时限 |
通过标准 |
| TO-07 |
视觉警告 |
5s |
驾驶员响应 |
| TO-08 |
听觉警告 |
3s |
驾驶员响应 |
| TO-09 |
紧急警告 |
2s |
驾驶员接管 |
四、警告策略
4.1 分级警告
| 准备度 |
警告级别 |
警告方式 |
| 中 (60-79) |
L1 |
视觉提示 |
| 低 (40-59) |
L2 |
视觉 + 听觉 |
| 极低 (0-39) |
L3 |
紧急警告 + 减速 |
4.2 警告时序
1 2 3 4 5 6 7 8 9 10
| def get_warning_timing(readiness_score): """获取警告时机""" if readiness_score >= 80: return None elif readiness_score >= 60: return {'level': 1, 'delay': 10.0} elif readiness_score >= 40: return {'level': 2, 'delay': 5.0} else: return {'level': 3, 'delay': 0}
|
五、ADAS 集成
5.1 数据接口
| 数据 |
DMS 提供 |
ADAS 使用 |
| 准备度分数 |
是 |
决策是否允许激活 |
| 视线方向 |
是 |
监控注意力 |
| 疲劳等级 |
是 |
限制自动驾驶时长 |
5.2 交互流程
1 2 3 4 5 6 7 8 9 10 11
| ADAS 请求激活 → DMS 检查准备度 → 准备度足够? ↓ 是 ↓ 否 允许激活 拒绝激活 ↓ 运行中持续监控 ↓ 准备度下降? ↓ 是 发出警告 ↓ 无响应 → MRM
|
六、IMS 开发指导
6.1 功能优先级
| 任务 |
优先级 |
工作量 |
| 视线追踪 |
P0 |
已有 |
| 疲劳检测 |
P0 |
已有 |
| 手部检测 |
P1 |
2 周 |
| 准备度评分 |
P1 |
1 周 |
| ADAS 接口 |
P1 |
2 周 |
6.2 检查清单
| 检查项 |
状态 |
| [ ] 视线追踪精度验证 |
|
| [ ] 疲劳检测集成 |
|
| [ ] 手部检测实现 |
|
| [ ] 准备度评分算法 |
|
| [ ] ADAS 接口定义 |
|
| [ ] Euro NCAP 测试场景 |
|
参考资料
- Euro NCAP Assisted Driving Graden Protocol
- AB Dynamics: Takeover Readiness Assessment
- Euro NCAP 2026 Roadmap
发布日期: 2026-04-17
标签: Euro NCAP, DMS, L2+, 接管准备度, ADAS