L2→L3自动驾驶接管就绪度:Tobii单一摄像头DMS+OMS方案深度解读

背景

自动驾驶从 L2 向 L3 演进的核心挑战不是”车辆能不能自己开”,而是人机协作是否可信赖。Tobii Autosense 在 InCabin USA 2026 (底特律) 提出了从”监控驾驶员”到”支持人机协作”的理念转变。

核心理念:从监控到理解

传统DMS vs 未来DMS

维度 传统DMS Tobii未来方案
目标 监控驾驶员是否在看路 理解驾驶员是否准备好接管
问题 “驾驶员在看哪里?” “这个行为在当前场景合理吗?”
响应 不在路就警告 按情境智能干预
交互 单向:系统→人 双向:人机协作
信任 驾驶员感觉被监视 驾驶员信任系统

接管就绪度三维模型

Tobii 提出接管就绪度的三个维度:

维度 定义 检测指标 不可用原因
Availability 身体是否能够接管 姿势、视线方向、手部位置 睡着、转身、手离方向盘
Capability 心智是否准备好 认知状态、注意力、清醒度 认知分心、疲劳、药物影响
Intent 是否开始重新介入 对TOR的反应、转向输入、踏板操作 无响应、反应迟缓、未识别请求

Tobii 单摄方案技术细节

1. 单摄像头 DMS+OMS 融合

属性 规格
摄像头 单个广角摄像头
覆盖 驾驶员 + 前排乘员
DMS功能 视线估计、眼睑状态、头部姿态、面部表情
OMS功能 乘员存在、姿势估计、安全带状态
量产 已部署超过 100 万辆车
优势 单硬件点、简化集成、低校准复杂度

2. 上下文感知DMS

Tobii 的关键创新:将DMS数据与ADAS上下文融合

场景 传统DMS判断 上下文感知判断
高速汇入时看左右 ❌ 分心警告 ✅ 正常驾驶行为
复杂环岛扫视 ❌ 分心警告 ✅ 正常驾驶行为
直行时看手机 ✅ 分心警告 ✅ 分心警告
跟车时看仪表盘 ⚠️ 可能误报 ✅ 正常检查行为

核心理念: “不看路”不一定危险——要看不看路是否合理。

3. Holistic Sensing → Evolving Cabin

Tobii 提出座舱感知的演进路线:

L2→L3 接管流程

标准接管协议

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
"""
L2→L3 自动驾驶接管就绪度评估系统

基于Tobii三维模型: Availability + Capability + Intent
"""

import time
from dataclasses import dataclass, field
from typing import Optional

@dataclass
class DriverState:
"""驾驶员状态三维模型"""
# Availability
eyes_on_road: bool = False
hands_on_wheel: bool = False
body_upright: bool = False
# Capability
alertness_score: float = 0.0 # 0-1
cognitive_load: float = 0.0 # 0-1
fatigue_level: float = 0.0 # 0-1
# Intent
response_to_tor: bool = False # 对接管请求的响应
steering_input: float = 0.0 # 转向输入
pedal_input: float = 0.0 # 踏板输入

# Context
driving_scene: str = "" # highway/urban/parking/merge
adas_status: str = "" # active/disengaged/warning

def availability_score(self) -> float:
"""可用性评分"""
score = 0
if self.eyes_on_road: score += 0.4
if self.hands_on_wheel: score += 0.4
if self.body_upright: score += 0.2
return min(score, 1.0)

def capability_score(self) -> float:
"""能力评分"""
alert = self.alertness_score
load_penalty = self.cognitive_load * 0.5
fatigue_penalty = self.fatigue_level * 0.7
return max(0, alert - load_penalty - fatigue_penalty)

def intent_score(self) -> float:
"""意图评分"""
if self.response_to_tor:
score = 0.5
if abs(self.steering_input) > 0.1: score += 0.3
if self.pedal_input > 0.1: score += 0.2
return min(score, 1.0)
return 0.0

def takeover_ready(self) -> bool:
"""是否准备好接管"""
return (
self.availability_score() > 0.7 and
self.capability_score() > 0.5 and
self.intent_score() > 0.3
)


class TakeoverManager:
"""
接管管理器

管理L3→L2的接管流程
"""

# 接管时间预算(秒)
TOR_PHASES = {
'initial_alert': 0.5, # 初始提醒
'escalation': 2.0, # 升级警告
'final_warning': 1.5, # 最终警告
'safe_stop': 5.0, # 安全停靠
}
TOTAL_BUDGET = sum(TOR_PHASES.values()) # 9秒

def __init__(self):
self.driver = DriverState()
self.phase = 'normal' # normal/alert/escalation/final/safe_stop
self.phase_start = None

def request_takeover(self):
"""发起接管请求(L3→L2)"""
self.phase = 'initial_alert'
self.phase_start = time.time()
# 发起视觉+听觉+触觉提醒
return {
'action': 'alert',
'visual': 'HUD takeover icon + flash',
'audio': 'escalating chime',
'haptic': 'steering wheel vibration',
}

def evaluate_takeover(self, driver_state: DriverState):
"""评估接管就绪度"""
self.driver = driver_state
elapsed = time.time() - self.phase_start if self.phase_start else 0

if driver_state.takeover_ready():
self.phase = 'handover_complete'
return {'action': 'handover', 'status': 'driver_in_control'}

# 按时间预算升级
if elapsed > self.TOR_PHASES['initial_alert'] + self.TOR_PHASES['escalation']:
if self.phase != 'final_warning':
self.phase = 'final_warning'
return {
'action': 'escalate',
'visual': 'red dashboard warning',
'audio': 'continuous alarm',
'haptic': 'strong vibration + seatbelt tug',
}

if elapsed > self.TOTAL_BUDGET:
self.phase = 'safe_stop'
return {
'action': 'safe_stop',
'vehicle': 'lane keep + decelerate to stop',
'hazard_lights': True,
'ecall': True, # 紧急呼叫
}

return {'action': 'continue_alert', 'phase': self.phase}

Euro NCAP 接管场景对应

NCAP 接管场景 描述 三维评估
TOR-01 正常驾驶中发起接管 A: 眼睛在路上, C: 清醒, I: 响应转向
TOR-02 驾驶员走神后接管 A: 眼睛不在路, C: 认知分心, I: 需要时间
TOR-03 驾驶员疲劳后接管 A: 眼睛闭合, C: 疲劳, I: 反应迟缓
TOR-04 驾驶员手离方向盘 A: 手不在盘, C: 可正常, I: 需伸手
TOR-05 驾驶员无响应 A: 不满足, C: 不满足, I: 不满足 → 安全停靠

上下文感知的误报降低

关键场景对比

场景 无上下文DMS 上下文感知DMS
高速汇入看后视镜 ❌ 分心警告 ✅ 正常驾驶
复杂路口扫视 ❌ 分心警告 ✅ 正常驾驶
跟车时看仪表 ⚠️ 可能误报 ✅ 正常检查
手动变道前看盲区 ❌ 分心警告 ✅ 正常驾驶
真实分心(直行看手机) ✅ 正确检测 ✅ 正确检测

上下文来源:

信号 来源 用途
速度 车辆 低速时更宽松
加速度 IMU 激烈操作时更严格
车道保持 ADAS 车道稳定时更宽松
前车距离 雷达 近跟车时更严格
路口/高速 地图 复杂路口容忍扫视
天气 传感器 恶劣天气更严格

IMS 开发启示

1. 接管就绪度系统集成

2. 三阶段部署路线

阶段 时间 功能 目标
阶段1 2026-2027 上下文感知DMS 降低误报率,区分正常驾驶vs分心
阶段2 2027-2028 接管就绪度评估 L2+到L3过渡,三维模型
阶段3 2028+ Evolving Cabin 人机协作座舱,预测性交互

3. 与现有IMS模块的融合

IMS 模块 接管就绪度融合点
疲劳检测 capability_score 输入
分心检测 availability_score 输入
视线估计 eyes_on_road 判断
安全带检测 body_position 确认
酒驾检测 capability_score 降级
CPD 非直接相关(停车场景)

4. Tobii 方案 vs 竞品

方案 摄像头数 DMS+OMS 上下文感知 量产验证 接管就绪度
Tobii 1 ✅ 融合 ✅ ADAS融合 ✅ 100万+ ✅ 三维模型
YFORE ODMS 1摄+1雷达 ✅ 融合 ⚠️ 基础 ✅ 30+OEM ❌ 未提
Seeing Machines 1-2 ⚠️ 分离 ✅ 有 ✅ 量产 ✅ 有
Smart Eye 1-2 ⚠️ 分离 ⚠️ 基础 ✅ 量产 ⚠️ 基础

总结

Tobii 的核心理念转变值得关注:从”监控”到”理解”。

  1. 单摄方案 — 已量产100万+,验证了可行性
  2. 上下文感知 — DMS × ADAS 融合大幅降低误报
  3. 三维接管模型 — Availability + Capability + Intent
  4. Evolving Cabin — 从合规驱动到体验驱动
  5. 信任是关键 — 不被信任的自动化无法被使用

对 IMS 团队的建议:

  • 接管就绪度评估是L2+功能的核心差异化
  • 上下文感知(DMS × ADAS融合)是降低误报的关键
  • 三维模型可作为接管评估的框架
  • 跟踪 Tobii 单摄方案的量产案例

来源: Tobii Autosense Blog | InCabin USA 2026 (Detroit)