1. 自动驾驶系统的整体技术架构:先建立全局视角
1.1 自动驾驶的分级与功能边界
自动驾驶这个词被提了很多年,真正入行之后才会意识到,市面上几乎所有自称“自动驾驶”的功能,其实处在完全不同的技术等级上。行业里最常引用的分级标准是国际自动机工程师学会的六级分类,从L0到L5。L0就是纯人类驾驶,最多带点提醒;L1和L2分别承担横向或纵向的单维度控制,以及同时控制加减速和转向;L3是个分水岭,系统开始承担主要驾驶责任,但人类仍需在请求时接管;到了L4,系统在限定区域内可以完全自主,不需要人类干预;L5则是无条件的全场景自动驾驶。
理解这个分级特别重要,因为整个技术栈的设计都围绕“系统承担多少责任”来展开。L2级别的自适应巡航加车道居中,和L4级别的无人出租车,虽然都叫自动驾驶,但背后的传感器配置、计算平台、软件架构、安全冗余完全不是同一个量级。我在实际项目中见过不少新人上来就纠结“为什么不做全无人驾驶”,其实是没有先搞清楚目标运行域。所谓运行设计域(ODD),就是一套对场景的约束条件,比如车速上限、天气要求、道路类型、是否有高精地图覆盖。L4系统只能在ODD内运行,出了这个范围就必须安全停车或请求接管,这是非常现实的设计约束。
很多技术文章一上来就堆名词,反而让读者更糊涂。我个人的建议是,先分清自动驾驶系统要解决的三个核心问题:“我在哪里”“周边发生了什么”“我下一步该怎么动”。这三个问题分别对应定位与感知、预测与决策、规划与控制。整个技术栈的搭建,本质上就是围绕这三个问题展开的。后续讲到的每一个技术点,最终都要落到这三大能力上。如果能想清楚这一点,再看各种传感器、算法、芯片,就不会觉得它们是零散的技术拼盘,而是环环相扣的完整系统。
1.2 核心子系统:感知、决策、执行三层闭环
自动驾驶系统业内通常抽象成感知、决策、执行三个层次。感知层负责收集和处理环境信息,决策层负责理解场景并规划行为,执行层负责把指令转化为车辆的运动。这三层之间是典型的闭环关系:感知输出目标列表和道路结构,决策规划根据这些信息生成轨迹,执行器按照轨迹执行,同时车辆本身的实时状态又会反馈回感知与决策模块,形成持续迭代的循环。
这不是一句空话。以最简单的车道保持为例:摄像头采集图像,感知算法输出车道线的拟合曲线,决策模块判断车辆相对于车道中心的横向偏差,规划模块生成修正方向盘的转角指令,线控转向系统执行转角。整个过程每秒要运行几十帧,每一帧都存在微小的延迟和处理误差,因此整个系统必须容忍噪声和时延,并具备一定的预测能力。这也是为什么自动驾驶不能简单理解为“拿摄像头看路然后打方向盘”,它更像是一套实时反馈控制系统,只是复杂度被场景的开放性无限放大了。
从工程管理角度看,这三层又对应着完全不同的技术栈。感知层偏重计算机视觉、信号处理和传感器融合;决策层偏重机器学习、搜索算法、优化理论和状态机设计;执行层偏重车辆动力学、嵌入式控制和线控底盘。一个人很难在所有方向都成为专家,所以我经常建议新人先选一个切入点深入,但要在系统层面理解其他模块的接口和约束。很多项目推进不顺,问题并不出在单个模块,而是模块之间的接口定义不一致,比如感知输出的目标置信度阈值和决策模块的输入期望不匹配,这种问题在分层架构设计阶段就要反复对齐。
1.3 为什么需要这么多技术协同
有人问,为什么不能靠一个大模型或者一颗超级芯片解决所有问题?答案也很简单:因为自动驾驶的每个环节都面临不确定性和资源限制。传感器有自己的物理极限,比如摄像头在逆光和黑夜下的成像质量会剧烈下降;激光雷达在很多恶劣天气下会有噪点;芯片的算力无论多高也有功耗和散热上限;算法模型有泛化边界,训练数据里没见过的场景就可能失效。所以自动驾驶系统的本质,是在多重物理限制下做概率化的决策。
这也是为什么行业里特别强调“冗余”和“协同”。感知需要多种传感器互相印证,决策需要规则和模型两种路径互相兜底,执行需要备份通道确保失效时能安全降级。没有哪一项技术可以单打独斗。举个很实际的例子:高精地图可以提前提供几百米外的道路拓扑,但地图和真实世界总有偏差,这时候就需要定位模块实时对齐,需要感知模块检测临时施工或障碍物。地图、定位、感知三者的协同,远不是把几个结果简单加在一起那么简单,而是要把不同置信度的信息做概率融合。理解了这一点,你才算真正进入了自动驾驶的语境。
2. 感知层:让车辆“看见”世界的多种传感器技术
2.1 摄像头:视觉语义理解的核心
摄像头是自动驾驶感知中最便宜的传感器,也是信息量最丰富的传感器。它输出的图像天然适合深度学习算法处理,能完成目标检测、车道线分割、交通标志识别、红绿灯状态分类等任务。和激光雷达不同,摄像头能看到颜色,这对识别“红灯还是绿灯”“施工区域标志牌上的文字”至关重要。目前行业里主流的方案一般在车辆周围布置6到12颗摄像头,覆盖前视、后视、环视和侧视,形成一个近乎360度的视觉感知范围。
摄像头在实际工程中有几个非常关键的细节。第一个是曝光和动态范围,车辆在隧道出入口、夜间对向远光灯这些场景下,环境亮度会出现极端反差,如果摄像头的动态范围不够,画面会过曝或欠曝,直接影响检测精度。所以自动驾驶用的摄像头基本都是高动态范围(HDR)传感器,并且会配合ISP(图像信号处理器)做调优。第二个是帧率与延迟,图像处理链路从传感器曝光到算法输出结果,整个过程不能有明显的帧率波动,否则下游的融合和预测模块会受到很大影响。第三个是标定,摄像头的内参和外参必须精确,尤其是有多个摄像头时,它们之间的相对位姿如果漂移,后续将不同视角的目标关联到同一坐标系时就会出现严重的“接缝”问题。
很多初学者容易忽略的一个点,是摄像头对运动模糊非常敏感。车辆高速行驶时,曝光时间过长会让图像产生拖影,导致远处的目标边缘模糊。工程上通常会在曝光时间和进光量之间做取舍,同时结合软件算法对运动模糊做一定补偿。我在某个项目里遇到过夜晚行人检测框不断跳变的问题,排查到最后发现是曝光时间设置不合理,导致行人在帧与帧之间出现了位移破碎。这类问题只有在实车调参时才能暴露,单看离线数据集很难发现。
2.2 激光雷达:三维空间建模的关键
激光雷达利用激光束测距,能够在几十米甚至两百米的范围内生成高精度的三维点云。它的核心优势是直接测量距离,而且不受环境光照影响,晚上同样工作,这让它在夜间自动驾驶场景中比摄像头稳定得多。早期的机械式激光雷达通过旋转电机带动激光收发模块,能实现360度扫描;近几年的固态和半固态激光雷达则通过微振镜或光学相控阵改变光束方向,体积更小、可靠性更高,更符合车规量产需求。
激光雷达的数据呈现为点云,每个点带有三维坐标和反射强度信息。处理点云和图像使用的算法路径很不一样:图像是规则的密集像素,适合用卷积神经网络;点云是稀疏且无序的三维点集,通常要用PointNet类网络或体素化方法做目标检测。此外,点云数据量远大于图像,一帧64线激光雷达的数据可能包含百万个点,这对计算平台的存储带宽和并行计算要求很高。所以目前很多方案会先对点云做降采样和地面分割,再送入检测模型。
在工程实践中,激光雷达最让人头疼的问题是恶劣天气和灰尘。大雨中激光束会被雨滴反射和衰减,点云噪点会急剧增加;灰尘环境下形成的“假目标”甚至会让系统误判障碍物。应对措施包括多回波技术、动态阈值滤波以及与摄像头融合的方式。激光雷达的标定同样是件精细活,它需要在车辆坐标系下与多个摄像头做联合标定,机械式激光雷达还要考虑旋转相位和电机转速的同步问题。如果标定偏差超过几厘米,融合后的目标位置就会出现明显跳变,决策模块基于错误位置做规划,后果不堪设想。
2.3 毫米波雷达与超声波雷达:测距与稳健性补充
毫米波雷达通过发射毫米波段的电磁波并测量回波频率变化来测距和测速,它的穿透性很好,能在大雨、大雾、扬尘等恶劣环境下工作,这是摄像头和激光雷达都难以做到的。同时,毫米波雷达可以非常直接地测量径向速度,对判断前方目标是否静止还是运动、追尾风险是否升高很有价值。它也被广泛应用于前向碰撞预警和自适应巡航的核心测距传感器。缺点是角度分辨率和点云密度远低于激光雷达,而且对静止金属物体容易产生较多反射点。
超声波雷达系统则是近距感知的“守门员”,探测距离通常在0.2到5米左右,主要用于自动泊车、近距离障碍物检测和低速场景下的盲区补盲。它靠声波飞行时间测距,成本和功耗都极低,但容易受同频干扰和空气温度影响。超声波雷达在传统倒车雷达上应用已久,进入自动驾驶系统后,它更多是作为低速场景下的兜底传感器,因为一旦到了高速阶段,超声波响应速度已经跟不上车辆的移动距离。
说到多传感器配置,行业里一直有“纯视觉 vs 激光雷达”的路线之争。我的看法是,该争论本质上谈的是“在特定ODD和成本约束下,哪种传感组合能提供足够的安全冗余”。如果只做高速领航这类相对规则化场景,摄像头加毫米波雷达确实具备可行性;但如果要做城市复杂路口、夜间人车混行等场景,激光雷达提供的精确三维几何信息能显著降低算法的不确定性。工程上不存在绝对最优,只有特定约束下的合适方案。关键是每种传感器都有物理上限,多传感器融合的意义就在于让彼此的弱点尽量互补。
2.4 传感器融合:从冗余到互补
传感器融合不是简单地“多个传感器共同工作”,而是把不同模态的数据在时间戳和空间坐标上严格对齐,并进行概率化融合。时间上,各传感器的采样频率和延迟不同,通常要基于全球时钟做硬件同步,或者在软件里根据时间戳插值对齐。空间上,要把摄像头像素坐标、激光雷达三维坐标、毫米波雷达径向距离都转换到统一的车体坐标系下。任何一个环节出错,融合后的目标列表就会出现“同一个目标被检出两遍”或者“目标位置跳变”的问题。
我参与过的很多感知项目中,最花时间的往往不是算法模型本身,而是标定、时间同步和同步验证。举个例子,一颗前向摄像头可能延迟约80毫秒,而激光雷达延迟约30毫秒,如果直接拿最新帧做融合,车辆已经走了好几米,算出的目标位置会全部偏后。工程上通常通过传感器硬件打时间戳,结合可配置的延迟补偿,确保送入融合模块的数据具有相同的有效时刻。这套在数据流层面做的工作,比想象中更繁琐,却直接决定了下游决策的鲁棒性。
从融合算法上看,方法可以大致分成三类:后融合(目标级融合)、前融合(数据级融合)和混合融合。后融合把每个传感器的目标检测结果做关联匹配,再合并属性和置信度,实现相对简单,但信息损失较大;前融合把图像、点云等原始数据在输入层就叠加到一起,模型能充分利用底层特征,但对计算资源和系统复杂度的要求也更高。现在行业的一个趋势是“深度前融合”,比如把图像特征映射到点云坐标系后与点云特征做拼接,再统一输出目标。这条路仍然在快速演进中,不过背后的工程原则始终没变:宁可信息多一点,也要确保数据质量可控、可验证。
3. 计算与决策层:自动驾驶的“大脑”
3.1 车载计算平台与域控制器
自动驾驶系统需要有一个足够的“算力中枢”来处理多路传感器的海量数据。过去分布式ECU(电子控制单元)适合跑简单的规则控制,但处理深度学习模型的实时推理就显得力不从心。现在的趋势是把多个功能整合到一个高性能的域控制器中,集中式架构可以大幅减少线束和通信延迟,也方便软件 OTA 更新。域控制器里通常包含大算力的车规级AI芯片、高带宽的存储、高速网络接口和安全监控模块。
选择车载计算平台时,除了光看算力TOPS,还得考虑几个实际因素。第一是功耗和散热,车辆环境温度变化极快,如果散热设计不到位,芯片降频后算力会急剧下降,直接拉高感知端到端延迟。第二是车规级认证,消费级芯片可能在实验室跑得很欢,但无法承受车辆长期振动、温度和电磁干扰的考验。第三是工具链成熟度,一个芯片即使算力很高,如果编译器、底层驱动和算子库不好用,模型落地时反而会事倍功半。我在实际项目中就遇到过芯片理论算力很高,但移植一个轻量级检测模型时,因为算子支持不全被迫反复写自定义算子的情况。
域控制器往往还会被划分为功能安全域和自动驾驶域。传统车辆的转向、制动等关键功能,依然需要符合高安全等级的微控制器来控制;而自动驾驶域控制器更多负责感知、规划、预测等算力密集任务。两个域之间通过高带宽的车载以太网交互,并设计有监督和降级机制。如果自动驾驶域控制器出现异常,安全冗余模块必须能在规定时间内通知驾驶人或触发降级策略。可以说,计算平台不是一个单纯的“大电脑”,而是和功能安全强耦合的电子电气架构核心。
3.2 感知算法:目标检测、语义分割、跟踪预测
感知算法在深度学习时代已经成为一个庞大的技术族。目标检测负责回答“前方有什么”,语义分割负责回答“哪些像素属于道路或障碍物”,多目标跟踪负责回答“这些目标从哪来、要往哪去”,其中每一个子任务都会直接影响后续决策。早期自动驾驶普遍使用两阶段检测器来追求精度,后来随着芯片算力提升和模型轻量化技术的发展,单阶段的实时检测器逐渐承担了更多前视感知任务。与此同时,Transformer结构也被引入到自动驾驶感知中,通过注意力机制更好地建模全局上下文。
多目标跟踪更像是“感知层中的决策层”。它需要把每一帧的检测结果和目标历史轨迹关联起来,估计每个目标的速度、加速度、航向角以及未来几秒内的位置概率。常用的方法有基于卡尔曼滤波和匈牙利匹配的传统框架,也有基于端到端深度学习的联合检测与跟踪方法。传统方法稳定且可解释,适合工程落地;端到端方法能学习到更复杂的交互模式,但样本需求和可解释性仍是挑战。跟踪模块在实车中最怕的是身份切换(ID Switch),比如两辆并排车辆交错、目标被临时遮挡后再出现时被当成新目标,这种错误往往会让下游的碰撞风险判断产生误导。
除了单车感知,当前行业还在探索“多传感器跨镜融合”和“多车协同感知”,比如用路侧单元或附近车辆的信息来补盲。在技术架构上这是很自然的发展方向,但工程上要处理通信带宽、延迟和相对位姿的动态变化。我在技术评审中最常问的一句话是“感知模块不确定度的边界在哪里”,因为一个没有置信度评估的感知结果,会让决策模块非常被动。好的感知系统不仅要输出“是什么、在哪里”,还要输出“我有多确信”。
3.3 决策规划:行为决策、路径规划、运动控制
决策规划层负责把感知结果转化为实际的行车行为。它通常可以拆成三个层级:行为决策层决定车辆“该不该变道、该以什么车速通过这个路口、要不要让行”;路径规划层在可行空间中搜索出一条满足动力学约束的轨迹;运动控制层把轨迹转化为方向盘的转角、油门的开度和制动压力。
行为决策层最常见的方法有三种:基于规则的状态机、基于场景的分层决策树、以及基于强化学习的端到端决策模型。基于规则的方法逻辑清晰、可解释性强,但面对海量长尾场景容易陷入规则爆炸;强化学习方法在处理复杂交互时很灵活,但训练周期长、难以满足安全验证要求。目前行业的主流做法是“规则兜底 + 模型预测”,用规则处理基本安全约束,用模型处理常规驾驶策略。
路径规划中,全局规划基于高精地图和车道拓扑,搜索一条从起点到终点的可行路径,常见算法有A星和基于图搜索的变体;局部规划则要考虑动态障碍物、车道边界和车辆动力学,生成平滑、安全且舒适的具体轨迹段。这里面的核心是对“成本函数”的设计,比如偏离车道中心的惩罚、急转向的惩罚、靠近障碍物的惩罚等。很多新人以为规划就是调参让轨迹好看,其实真正难的是在极端场景下保证轨迹始终落在机械可控区间内,并且与安全决策严格闭环。
运动控制再往下走,就是底层动力学控制。经典PID控制实现起来简单,但面对高速变道、上下坡等非线性工况时会力不从心。更常用的方案是模型预测控制(MPC),它可以根据车辆动力学模型预测未来一段时域内的响应,并在每一帧求解一个带约束的优化问题。MPC的优点是能把转向、制动、驱动等约束直接加入优化过程,缺点是计算量较大,对模型准确性比较敏感。没有算法是银弹,最后做得好不好,很大程度取决于对车辆底盘的深刻理解和大量实车调参经验。
3.4 中间件与操作系统
自动驾驶软件栈运行在操作系统和中间件之上,这层基础设施经常被外行忽略,但在工程实现中决定了开发效率与稳定性。车载操作系统需要满足实时性和高可靠性,常见的底层系统包括实时Linux以及符合车规的操作系统。中间件则负责不同模块(传感器、感知、规划、控制)之间的通信,业内常用基于发布订阅模式的通信框架,比如轻量化的消息总线协议。它必须解决数据序列化、网络传输、线程调度、共享内存、故障恢复等问题。
选择什么样的中间件,直接影响软件架构的扩展性。如果每个模块之间都用硬编码的接口,功能迭代时会非常痛苦。我在某次重构中,把规范级通信改为使用共享内存传输点云数据,大幅降低了数据拷贝的CPU开销,但随之而来的是缓存一致性和数据生命周期管理的复杂性。这里要特别强调时间同步日志的重要性:在实车联调阶段,如果各个模块不能把时间对齐到一个统一的时间基准,排查问题是难上加难。
中间件之上还有一套“自动驾驶框架”,负责模块生命周期管理、配置中心、日志探针和运行监控。项目早期可以完全靠脚本起节点,但随着功能模块增加,优雅的模块编排与故障隔离就变得异常重要。一个模块崩溃不能拖垮整个系统,这是底线。实际操作中,我们会为每个模块设置看门狗、心跳监控和动态重启策略,同时把关键模块的输入输出录制下来用于回放分析。这套基础设施也许算不上什么“黑科技”,但决定了团队能不能高效地把算法落地到量产车上去。
4. 地图定位与通信:自动驾驶的外部感知
4.1 高精地图:先验信息与厘米级精度
与普通导航地图不同,高精地图是面向机器的“驾驶底稿”,它不仅包含道路中心线、车道边界、曲率、坡度,还包含参考线、交通标志位置、车道连接关系和交通规则语义。车辆在行驶前就能通过高精地图知道前方很远处有路口或施工区,这种先验信息能显著降低在线感知的难度。高精地图的精度通常在厘米级,远超普通导航地图的米级精度,因此对采集设备和制作工艺都有极高的要求。
高精地图的构建主要有两种思路:激光雷达测绘与视觉众包。激光雷达测绘可以在一次扫描中生成高密度点云,精度很高,但成本高昂,适合作为基础底图的数据源。视觉众包则利用量产车上的摄像头,通过大量车辆采集图像和融合位姿数据,在线更新地图增量,适合保持地图新鲜度。这里会遇到一个经典问题:高精地图的时效性。现实中道路会经常变化,如果地图过期,自动驾驶系统就容易“坚信”一条已经改变的车道线,带来严重安全风险。因此,高精地图必须配合实时感知做校验,以感知结果为准,地图只是“建议信息”。
底层的地图格式也在向开放化演进。早期每家公司的地图格式都是私有化、强耦合的,导致地图数据难以跨平台复用。之后行业里出现了统一的地理数据标准,用逻辑模型描述道路关系,让自动驾驶系统可以像普通地图应用一样查询道路元素。对工程师来说,理解高精地图的“元素-属性-关系”模型,与理解感知算法同样重要。地图只是先验,最终仍需靠在线感知、定位来不断修正,这是一个系统级共识。
4.2 定位技术:GPS/IMU/视觉/激光融合
自动驾驶要求定位精度通常要达到厘米级到分米级,这单靠普通GPS是不可能的,因为普通GPS在没有差分修正时的误差可能达到数米。行业里普遍使用RTK(实时动态差分)技术,通过地面基准站提供修正,让GNSS定位精度提升到厘米级。GNSS/RTK的一个明显软肋是信号遮挡,比如在高架桥下、隧道内和城市密集高楼区,卫星信号会被遮蔽或多径效应干扰,导致定位漂移很严重。
因此,GNSS不能单独作为定位系统。IMU(惯性测量单元)利用加速度计和陀螺仪,通过积分推算车辆的运动轨迹,能在GNSS失效时提供短时间内的相对位姿,但它的缺点是误差会随时间累积。所以典型做法是多传感器融合定位:在GNSS信号良好时用RTK修正IMU漂移;在GNSS失效时用车辆里程计和IMU做短时推算,同时用车轮转速、转向角等信号来约束位置变化。
视觉和激光雷达也可以被引入定位系统,这就是所谓的“感知定位”。车辆通过摄像头提取车道线、杆柱等地标,并与高精地图中的特征进行匹配,从而获得横向和纵向的位置修正;激光雷达则可以通过点云匹配算法,将当前帧与地图点云做配准,获得非常精确的六自由度位姿。整体上,定位是一个多信息源加权融合的过程,关键点在于为每一路信息来源设置合理的置信度,并为不同场景动态切换融合策略。我在测试中见过最典型的案例是车辆在隧道里行驶,卫星信号消失后,如果IMU标定不好且没有视觉地标,车辆位置会逐渐偏到相邻车道,最终导致车道保持系统误判。
4.3 车路协同V2X:超视距感知的补充
单车智能始终有一个物理极限:哪怕传感器再先进,也会被建筑物、大型车辆或者弯道遮挡视线。车路协同(V2X)让车辆可以与路侧设施、其他车辆、行人终端甚至云端通信,共享传感器数据、交通信号灯状态、前方事故和道路施工信息。这种“超视距信息”能够帮助自动驾驶系统提前规划,提升行车安全和通行效率。
目前车联网通信技术有两大方向,一个是以直连通信为核心的短程通信方案,低延迟、不依赖基站覆盖;另一个是基于蜂窝网络与车路协同的通信方案,覆盖广、能灵活承载不同业务,可以依托5G网络演进。在整个行业内,标准版本和频段规划一直在演进,实现起来比很多人想象的要复杂。车辆不仅要发送自身状态(位置、速度、转向灯状态),还要解析接收到的地图服务、信号灯状态等,并保证通信安全、认证、防篡改。这些消息的时延和丢包会显著影响决策,因此通讯协议栈的设计也非常重要。
在落地层面,V2X需要设施端大规模改造,单靠车端难以快速见到回报,所以目前很多自动驾驶公司采取“车路云”协同的方案,将路侧信息回传云端再迭代优化模型。对我个人的体会来说,V2X短期内是感知的“增强器”,而不是“替代者”。但长远来看,如果车路协同真正普及,自动驾驶系统将从一个“独立智能体”变成“组网智能体”,面临的技术问题会从单车的感知规划变成多车协同的博弈与调度。这个方向值得持续关注。
5. 执行与安全:从决策到车辆动作
5.1 线控底盘与执行器
自动驾驶的最终指令要落到车辆底盘上,由转向、制动、驱动等执行器完成动作。传统汽车上的转向和制动是机械连接,驾驶员操作直接通过物理结构传递到执行机构,而自动驾驶需要电子化的线控底盘,让控制指令通过电信号直接驱动执行器。线控转向、线控制动、线控驱动,每一环都必须做到响应迅速、控制精准,并且要有故障监控和降级能力。
线控转向不仅仅是用电机代替方向盘,它还取消了转向管柱的物理连接,转向执行器根据整车控制器的指令转角来转动车轮。这就要求转向系统能精确复现目标转角,并且在传感器失效时依然能提供足够的路感反馈或安全回正能力。线控制动也是如此,它能以毫秒级响应速度执行制动请求,但需要保证冗余,比如主制动系统失效后,第二套制动系统能继续提供至少一定减速度。这些执行器都直接关系到车辆安全,验证标准远比普通车辆子系统严格。
执行器与规划控制模块之间的交互,是实车调校的重头戏。车辆动力学模型中的转向响应延迟、制动滞环、轮胎非线性,都会让算法仿真中的完美轨迹在实车上跑偏。我在早期项目里吃过一次亏:控制模块理论上设计了很精确的转角序列,但实车转向响应比模型延迟了大约80毫秒,结果在紧急变道测试中车辆轨迹出现了肉眼可见的震荡。后来在控制算法里增加了延迟补偿,并且对转向执行器做了一组伪随机输入辨识实验,情况才好转。这个经验提醒我,自动驾驶算法工程师一定要理解底层执行器的物理响应,不能只看仿真曲线。
5.2 功能安全与冗余设计
安全是自动驾驶不可回避的底线。功能安全中最常被提到的一个标准是ISO 26262,它提出了从车辆级、系统级到软硬件级的全流程安全评估方法,并以汽车安全完整性等级(ASIL)来定义风险等级。比如转向系统的关键部件通常会被要求很高的安全等级,而娱乐系统只需要很低的要求。设计时首先要做危害分析与风险评估,确定在各个失效场景下需要达到的安全等级,再逐层分配安全目标。
在这个框架下,系统必须提供足够的冗余。感知有不同传感器互补,计算有主备芯片或者异构芯片互相备份,供电有双路电源,通信有双通道,制动和转向有第二套执行结构。但这不代表所有部件都要简单复制一份,因为成本和复杂度也会急剧上升。更聪明的做法是设计降级流程:比如主传感器全部正常时全功能运行;某个关键传感器失效后仍能在限定车速下继续行驶到安全停车点;再严重的情况下则请求驾驶员接管或者触发紧急停车。
我在项目中见到很多团队对“功能安全文档”非常头疼,觉得繁文缛节。但实际上,写危害分析和安全概念的过程,本身就是把系统设计漏洞挖出来的过程。比如你原本以为某个传感器故障后系统还能安全运行,但对照安全目标逐一推演,就会发现缺少一个额外监控机制。当前主机厂和供应商都对功能安全能力提出硬性要求,所以从项目一开始就建立功能安全思维,比后期补一堆文档要省力得多。
5.3 预期功能安全与网络安全
除了传感器或控制器硬件失效,自动驾驶还会遇到“传感器本身没有坏,但能力不足”的情况。这类问题被归到预期功能安全,相关标准为ISO 21448。通用解释是,当感知和决策算法遇到了超出其设计预期能力的场景(比如极端天气、突然的异形工程车、复杂鬼探头),虽然系统没有因为零部件失效而故障,但还是会发生安全风险。这个领域考验的是团队对ODD边界的定义能力,以及在算法设计时如何引入自评估和自监控机制。
实践中的做法包括:给模型增加输入异常检测,给目标输出增加置信度下限,在系统层设置一个“安全驾驶模型”来监控主决策器的行为。安全驾驶模型通常会简化一些,用可解释的规则判断主决策器给出的轨迹是否可能撞上目标。如果发现主轨迹违反了安全边界,就启动降级或干预。这种“主决策器+安全监控器”的双通道结构,是目前工程上比较认可的思路。
网络安全也被视为自动驾驶安身立命的基础,对应标准如ISO/SAE 21434。车辆与外界通信、OTA升级、远程诊断等都会带来新的攻击面。攻击者可能通过伪装路侧设备向车辆广播虚假红绿灯信息,或者篡改软件更新包。抵御这类威胁要靠密钥管理、安全启动、通信认证和入侵检测系统。我在项目中曾经参与过一段时间的车辆渗透测试,测试中我们模拟了恶意CAN报文注入,结果车辆仪表盘直接显示了错误的车速和转向角。这个实验给全团队的震撼很大,自此之后,任何新功能上线前都必须过一遍网络安全评估。没有网络安全的自动驾驶,就是一辆可以被远程操控的“行走炸弹”。
6. 数据闭环与仿真测试:自动驾驶的成长引擎
6.1 数据采集与标注
数据是自动驾驶系统的燃料,特别是深度学习类算法严重依赖大规模高质量标注数据。一套成熟的自动驾驶系统,日常运行时不仅要输出决策和控制结果,还要把传感器原始数据、感知结果、规划轨迹、控制指令、车辆状态以及天气、道路工况等元信息录制下来。回传云端之后,工程师可以从中筛选出恶劣天气、危险目标、特殊交通场景等“高价值片段”,送入标注平台进行人工标注。
数据标注并不只是画框那么简单。自动驾驶标注任务通常包括3D目标框、车道线、可行驶区域、障碍物语义分割、交通信号状态、行人关键点等。标注规范要定义清楚“遮挡目标怎么处理”“目标刚露头时要不要标”“不同传感器之间的差异优先级如何取舍”,否则不同标注员给出的结果会产生严重不一致。随着数据规模爆炸式增长,自动标注和大模型辅助标注已经成为活跃方向,但最终仍需人工抽检来保证质量。
数据闭环的建设,会给整个团队带来巨大效率提升。我以前见过几个团队一开始不做数据管理,等到训练模型时才发现关键场景数据根本找不到,或者记录的传感器时间戳没对齐导致无法复现。数据平台的价值在于打通“采集-筛选-标注-训练-回放-测试”这条链路。哪怕一开始数据量不大,也要先建好命名规范和索引体系,因为后期迁移数据的成本远高于起步时多花的一点时间。
6.2 仿真测试与场景库
自动驾驶如果全靠实车路测来验证,成本和风险都难以承受。仿真测试通过构建虚拟环境,可以在短时间内生成大量可重复的测试场景。仿真平台通常需要具备高保真传感器模型、车辆动力学模型、真实道路场景、动态交通参与者以及天气光照等条件。它既能用于回归测试算法更新,也能用于生成现实世界中不易遇到的危险边缘场景。
仿真测试和实车测试并不是替代关系。仿真能够快速覆盖大量组合情况,但传感器模型再逼真也无法完全复现真实物理世界的噪声和细节,因此仿真里表现良好的算法仍然需要通过实车验证。行业中普遍采用“仿真-封闭场地-开放道路”三级测试体系。封闭场地中我们可以布置假车、假人、模拟雨雾隧道,精确复现危险工况;开放道路测试则更加贴近真实,但需要更多的安全和审批准备。
场景库的建设是一项长期积累工作。它既包含从真实路采数据中截取的自然场景,也包含根据标准法规和事故数据组合生成的抽象场景。测试人员经常做的事,是把一段真实路测数据流导入仿真环境,让算法从感知到控制完整地“回放”一遍,定位问题到底出在哪一层。能做到“30分钟定位一次失效问题”,比“跑三天路测还说不清原因”要高效得多。
6.3 实车测试与法规认证
实车测试是自动驾驶落地前最硬核的一环。测试车辆上除了自动驾驶系统本身,还必须安装急停按钮、安全员监控设备、数据记录仪等安全设施。测试开始前要做详细的ODD定义和风险备案,测试过程还要划分功能测试、可靠性测试和耐久性测试等不同阶段。每一轮测试都要制定详细的操作脚本,比如在什么速度下切换车道、在前车急刹时系统如何响应,测试人员要精确记录每个用例的通过情况。
随着各地陆续出台自动驾驶道路测试和示范运营管理办法,企业需要按照当地法规要求完成车辆检测和审核,取得测试资质后才能上路。这里面的细节非常多,比如测试车辆需要在指定区域、指定时段、指定天气条件下进行;需要配备安全员和远程监管通道;需要能够全过程记录数据并按要求提交。合规性不是简简单单的“跑通功能”就行,它涉及整套测试管理体系和数据安全体系的建设。
我在项目中最深的体会是,测试报告的价值取决于“可追溯性”。你不仅要记录系统有没有通过用例,还要记录当时的传感器标定状态、地图版本、软件版本、天气条件和车辆载重。一个看似通过的长尾场景测试,如果事后发现地图版本已经过期或者传感器标定参数不对,测试结论就完全不可信。把所有环境信息工程化地记录下来,才能在问题暴露时快速回溯,这也是从“能跑”走向“可靠”的关键一步。
从我个人的实际经验来看,想真正进入自动驾驶这个领域,最重要的一点不是追逐每一项热门技术,而是建立系统工程思维。感知、决策、执行、定位、地图、仿真、安全,每一个环节都值得细究,但只有把它们放在同一个系统框架里看,才知道每一项技术的位置和边界。如果你正打算入门,我的建议是:先找一辆搭载基础辅助驾驶的车实际开一开,感受启动、接管、退出这些体验背后的状态流转;再找一个开源仿真环境,完整跑通一次感知和规划链路,你会发现这个领域远比你想象的更有意思。自动驾驶不是某一家公司、某一种算法的独角戏,而是一整套持续进化的工业体系。这个系列后面我还会继续拆解传感器标定、规划控制细节和数据闭环相关的工程实践,期待下次和你继续聊。