打开网易新闻 查看精彩图片

2024年,某头部自动驾驶团队复盘了一次高速场景下的接管事故。数据回放显示,感知模块在0.3秒内完成了目标检测,但规划模块因为等待前序节点的输出,整体延迟飙到了180毫秒——刚好错过变道窗口。问题根本不在算法精度,而在数据流图的调度策略。

这不是个案。InfoQ最新技术解析披露,量产级自动驾驶系统(AV stack)的工程复杂度,远超多数人的直觉想象。

800个节点在抢同一碗饭

800个节点在抢同一碗饭

现代AV stack的本质,是一张分布式的数据流图(dataflow graph)。节点之间通过发布/订阅机制通信,常常形成循环结构——感知输出驱动规划,规划结果又触发感知重新标定关注区域。这套架构通常基于ROS 2构建,底层跑在DDS(数据分发服务)协议上。

某L4级团队的技术负责人打了个比方:「就像同时指挥800个乐手演奏,每个乐手的谱子还实时在变。」

这张图的节点数确实惊人。感知层 alone 就包含摄像头预处理、激光雷达点云去噪、多传感器时空对齐、目标检测、跟踪、预测等数十个模块。规划层再叠加上行为决策、路径优化、轨迹生成、碰撞检测。每个节点都有独立的计算需求、内存占用和实时性约束。

真正的工程挑战不是让每个模块跑得快,而是让它们在同一套硬件上不争抢、不饿死、不互相拖后腿。

资源管理成了隐形战场。工程师需要为每个节点分配CPU核心、设置线程优先级、调优服务质量(QoS)策略。一个节点的内存泄漏可能拖垮整个数据流;一次不当的锁竞争能让关键路径延迟翻倍。

感知层的"偷懒"艺术

感知层的"偷懒"艺术

传统认知里,感知是算力黑洞——分辨率越高越好,模型越大越准。但量产团队的实践完全相反:他们在教系统"看情况偷懒"。

打开网易新闻 查看精彩图片

这叫上下文感知的优先级调度(context-aware prioritization)。核心逻辑是,不同驾驶场景对感知精度的需求差异巨大。

高速巡航时,系统只需要关注远处车道线和前向车辆,侧向的行人检测可以降采样甚至跳过。进入城区路口,注意力立刻重新分配:360度近距离障碍物检测优先级拉满,远处景物暂时忽略。夜间低光照场景,图像增强模块全力运转,其他任务让路。

某量产方案披露的数据:通过动态调整感知管道的计算强度,整体算力消耗波动范围达到3:1,而关键场景的安全性指标没有下降。

这种优化依赖一个精确定义的运营设计域(ODD)。工程师需要事先划定系统的"舒适区"——哪些场景能处理,哪些必须降级或退出。ODD边界越清晰,资源调度的策略空间越大。

换句话说,自动驾驶的"智能"一部分体现在知道什么时候该"不智能"。

规划层的数学游戏

规划层的数学游戏

如果说感知是"看什么",规划就是"怎么走"。这里的主流方法已经从规则引擎转向优化求解。

工程师不再手写"如果前车距离小于X米则刹车"这类硬编码。取而代之的是定义一个代价函数(Cost Function,记作J),让求解器自动寻找最小值。J通常包含多项:舒适性(加速度平滑度)、效率(到达时间)、安全性(碰撞风险)、合规性(交规约束)。

这听起来优雅,实现起来全是坑。

非凸优化问题存在大量局部极小值,求解器可能卡在"合理但非最优"的解上。实时性约束又要求算法必须在50-100毫秒内收敛——在复杂城区场景,这相当于用解数独的速度做微积分。

打开网易新闻 查看精彩图片

工程团队的应对策略是分层的。高层行为决策用轻量级规则或学习模型快速输出粗略方向;中层路径规划用采样或搜索方法生成候选轨迹;底层轨迹优化才动用重武器,在有限解空间里精细调参。

某团队的实践细节:他们将轨迹优化问题拆分为纵向(速度曲线)和横向(路径形状)两个子问题,交替迭代求解。这种"坐标下降"策略牺牲了理论最优性,换取了10倍以上的速度提升。

计算预算本身也是优化变量

计算预算本身也是优化变量

最反直觉的发现:很多团队把"有多少算力"当成一个可优化的工程参数,而非固定约束。

具体做法包括:精确测量每个节点的执行时间分布(不是平均延迟,是P99甚至P99.9尾延迟);动态调整任务到核心的映射,避免缓存失效和总线竞争;设计降级策略——当负载过高时,主动降低非关键任务的精度或频率,保证安全关键路径的确定性。

某方案披露了一个极端案例。在雨天夜间场景,感知负载暴涨,系统检测到规划模块的输入延迟即将突破安全阈值。调度器自动触发降级:关闭两个侧向摄像头的深度估计,将算力集中给前向融合感知。规划模块得以按时收到输入,整体系统延迟控制在目标范围内。

这种"丢卒保车"的策略需要精密的故障模式分析。哪些功能可以降级?降级的触发条件是什么?降级后的系统行为如何验证?每个答案都需要海量场景测试支撑。

自动驾驶的工程化,本质上是在不确定性中管理不确定性。

物理世界的复杂度无法消除,计算资源的边界真实存在,安全要求又容不得妥协。工程师的解题思路不是追求单点最优,而是构建一套动态平衡机制——让系统在约束条件的张力中找到可行解。

某技术负责人总结:「我们花了三年才意识到,AV stack不是写代码,是养生态系统。每个模块都是活的,会互相影响,会随环境变化。你的任务不是控制它,是设计好反馈机制,让它自己稳定下来。」

这套方法论正在从自动驾驶向外渗透。机器人、无人机、工业控制——任何需要感知-决策-执行闭环的复杂系统,都面临类似的架构挑战。DDS+数据流图的组合,可能成为下一代实时系统的默认基建。

一个值得追问的细节:当系统复杂度超过人类直觉能把握的范围,我们该如何验证它的安全性?是靠更多的测试里程,还是形式化方法的突破,抑或是全新的系统架构范式?