2. 自动驾驶系统基础

自动驾驶系统并不是一个“端到端黑箱”,而是由多个功能模块协同构成的实时闭环系统。理解异常检测与紧急接管,必须先看清系统的基本骨架:感知回答“周围有什么”,定位回答“我在哪里”,规划回答“我该怎么走”,控制回答“如何让车按计划走”。异常检测与紧急接管并不属于某一个单独模块,而是横跨全链路的“安全监督层”,在任一环节出现置信度下降、数据冲突或执行偏差时介入,必要时把控制权交还给驾驶员或触发最小风险策略。

自动驾驶系统四模块闭环与安全监督层 感知 Perception 摄像头 / 激光雷达 / 毫米波 目标检测 · 车道线 · 可行驶区域 输出:障碍物列表 + 置信度 定位 Localization GNSS / IMU / 轮速 / 高精地图 位姿估计 · 地图匹配 输出:位置 + 姿态 + 协方差 规划 Planning 路由 · 行为决策 · 轨迹生成 避障 · 换道 · 跟车 输出:轨迹点 + 速度曲线 控制 Control 横向:转向角 纵向:油门 / 制动 输出:执行器指令 车辆运动反馈(位置、速度、姿态) 安全监督层:异常检测 + 紧急接管 感知异常 遮挡 · 误检 · 置信度骤降 传感器失效 / 时间戳漂移 定位异常 GNSS 多径 · 隧道失锁 地图匹配跳变 / 协方差超限 规划异常 轨迹不可行 · 无解 决策冲突 / 超时 控制异常 / 执行偏差 跟踪误差大 · 执行器饱和 通信延迟 / 指令丢失 紧急接管:降级 / 靠边停车 / 请求驾驶员接管

一、四大模块的职责与接口

四个模块以固定节拍运行,通常感知与定位在 10~20 Hz,规划在 5~10 Hz,控制在 50~100 Hz。模块之间通过明确的数据契约连接,任何一个接口的字段缺失、时间戳过期或数值越界,都可能成为异常检测的触发点。

模块 核心输入 核心输出 典型异常
感知 图像、点云、雷达回波 障碍物列表、车道线、可行驶区域 漏检、误检、置信度骤降、传感器遮挡
定位 GNSS、IMU、轮速、高精地图 位姿、速度、协方差 多径、失锁、地图匹配跳变
规划 障碍物、地图、位姿、任务 轨迹点、速度曲线、行为决策 轨迹不可行、无解、决策超时
控制 目标轨迹、车辆状态 转向角、油门、制动指令 跟踪误差大、执行器饱和、通信延迟

二、异常检测在系统中的位置

异常检测不是单一模块,而是分布在三个层次:模块内自检、跨模块一致性校验、系统级安全监控。模块内自检关注传感器数据是否在物理合理范围内,例如激光雷达点云数量突然归零、摄像头曝光异常;跨模块一致性校验关注感知与定位是否“互相矛盾”,例如感知到车辆在移动,但定位显示自车静止;系统级安全监控则关注整条链路的时延、心跳和资源占用。

异常检测的核心判断逻辑可以概括为:期望值 vs 观测值。期望值来自模型预测、历史趋势或冗余传感器,观测值来自当前帧。当偏差超过阈值并持续若干帧,才判定为异常,避免单帧噪声导致误触发。

三、紧急接管的触发与执行流程

紧急接管是异常检测的下游动作,目标是“在系统无法安全完成驾驶任务时,把风险降到最低”。典型流程如下:

  1. 异常确认:连续 N 帧检测到同一类异常,或多种异常同时出现,排除瞬时噪声。
  2. 风险分级:根据异常类型、当前车速、道路环境,判定为提示、降级、靠边停车或立即接管。
  3. 接管请求:通过声音、视觉、触觉(方向盘振动、座椅振动)向驾驶员发出接管请求,并给出剩余时间。
  4. 执行接管:若驾驶员未响应,系统执行最小风险策略,如减速、靠边停车、开启双闪。
  5. 记录与复盘:保存异常前后 30 秒数据,用于后续根因分析和模型迭代。
# 异常检测与接管触发伪代码
for frame in sensor_stream:
    perception = perception_module(frame)
    localization = localization_module(frame)
    planning = planning_module(perception, localization)

    if perception.confidence < 0.3 and consecutive_frames > 5:
        trigger("PERCEPTION_DEGRADED", level="HIGH")
    if localization.covariance > 2.0:
        trigger("LOCALIZATION_UNSTABLE", level="HIGH")
    if planning.status == "NO_SOLUTION":
        trigger("PLANNING_FAILED", level="CRITICAL")

    if any_trigger_active():
        request_takeover(driver_alert=True, timeout=4.0)
        if not driver_responded(timeout=4.0):
            execute_minimal_risk_maneuver()

四、典型场景与常见误区

场景一:隧道内 GNSS 失锁。定位协方差迅速增大,感知仍正常。系统应降级为惯性导航 + 地图匹配,同时提示驾驶员准备接管,而不是直接退出自动驾驶。

场景二:大雨导致摄像头遮挡。感知置信度下降,但激光雷达仍可用。系统应切换为多传感器融合的降级模式,并降低最高车速。

场景三:规划模块输出轨迹穿越障碍物。这属于跨模块一致性异常,安全监督层应直接拦截该轨迹,触发紧急接管,而不是等待控制模块执行。

常见误区:把异常检测等同于“传感器故障检测”。实际上,感知误检、规划无解、控制跟踪偏差都属于异常范畴。另一个误区是接管请求发出后不设超时,导致驾驶员未响应时系统仍保持自动驾驶状态,风险极高。
工程建议:异常检测阈值应结合场景动态调整。例如高速场景下对定位异常更敏感,低速泊车场景下对感知近距离障碍物更敏感。接管请求的剩余时间应随车速提高而延长,给驾驶员更充分的反应窗口。

总结来看,感知、定位、规划、控制构成自动驾驶的“执行链”,异常检测与紧急接管构成“安全链”。执行链追求通行效率与舒适性,安全链追求风险最小化。两者在系统架构中并行运行,安全链拥有最高优先级,可以在任意时刻打断执行链,把车辆带入安全状态。理解这一位置关系,是后续学习具体异常检测算法和接管策略设计的基础。