3. 自动驾驶系统性能指标
在自动驾驶系统中,性能问题往往不是“能不能跑”,而是“能不能稳定、及时、可预测地跑”。同一套感知、定位、规划、控制算法,在实验室里可能表现良好,但一旦进入实车、多传感器并发、长时间运行和复杂交通场景,延迟、抖动、资源占用和功耗就会成为决定安全性的关键因素。因此,性能指标不是单纯的工程优化参数,而是自动驾驶系统可靠性设计的基础语言。
本节的核心目标:建立一套可测量、可比较、可追踪的性能指标体系,把“系统是否足够快、足够稳、足够省”转化为明确的量化定义。
3.1 核心指标定义与关系
自动驾驶系统通常由传感器采集、时间同步、感知推理、目标跟踪、定位融合、预测、规划、控制、执行器反馈等环节组成。每个环节都会引入时间开销和资源消耗,最终叠加为端到端时延。理解这些指标,需要先区分“单点性能”和“链路性能”。
- 延迟(Latency):从事件发生到系统产生有效响应的时间间隔。例如,从激光雷达扫描到点云进入感知节点,再到障碍物被识别并输出给规划模块的时间。
- 抖动(Jitter):同一类事件延迟的波动程度。平均延迟低不代表安全,若抖动大,控制周期可能忽长忽短,导致车辆行为不稳定。
- 吞吐量(Throughput):单位时间内系统能够处理的数据量或任务数,如每秒处理的图像帧数、点云帧数、消息数。
- CPU/GPU占用:计算资源的使用比例。CPU占用高可能导致调度延迟,GPU占用高可能影响推理帧率和显存分配。
- 内存占用:包括物理内存、显存、共享内存和消息队列缓存。内存泄漏或频繁分配会造成长尾延迟。
- 功耗:计算平台、传感器和冷却系统的能量消耗,直接影响续航、散热和长期稳定性。
- 端到端时延:从传感器原始数据采集到控制指令输出的总时间,是自动驾驶安全裕度最直接的约束之一。
- 安全裕度:系统在时延、抖动、资源余量等方面距离安全边界还剩多少空间。安全裕度不是单一数值,而是多指标共同决定的系统能力。
这些指标之间并非独立。提高吞吐量可能增加CPU/GPU占用,进而抬高延迟和抖动;降低功耗可能限制算力,影响端到端时延。因此,性能工程本质上是在多目标之间寻找可验证的平衡点。
3.2 指标测量方法与流程
要让性能指标真正可用,必须建立统一的测量口径。推荐流程如下:
- 定义时间基准:所有节点使用同一时钟源,优先采用PTP或gPTP进行硬件时间同步,避免用本地墙上时钟直接比较。
- 埋点采集:在传感器驱动、ROS2回调、推理前后、规划输出、控制指令下发等关键位置记录时间戳。
- 计算延迟与抖动:延迟取P50、P95、P99等分位数;抖动可用相邻周期延迟差的标准差或P99-P50表示。
- 资源采样:使用
top、tegrastats、nvidia-smi、ros2 topic hz等工具周期性采集CPU、GPU、内存和功耗。 - 关联分析:将时延尖峰与资源占用、消息队列深度、调度延迟进行时间对齐,定位瓶颈环节。
- 设定阈值与裕度:根据车辆动力学和安全距离模型,反推允许的最大端到端时延和抖动范围。
# 示例:查看ROS2话题频率与延迟统计
ros2 topic hz /perception/obstacles
ros2 topic delay /planning/trajectory
# 示例:查看GPU占用与功耗
nvidia-smi --query-gpu=utilization.gpu,memory.used,power.draw --format=csv
# 示例:查看CPU调度延迟
cyclictest -t -p 80 -n -i 10000 -l 10000
3.3 典型场景与指标约束
不同自动驾驶场景对指标的敏感度不同。高速巡航更关注端到端时延和抖动,因为车速高、可用反应时间短;城市低速场景更关注吞吐量和CPU/GPU占用,因为传感器多、目标密集、计算负载重;泊车场景则对功耗和内存更敏感,因为平台往往算力有限且需要长时间待机。
| 场景 | 关键指标 | 典型约束 | 风险点 |
|---|---|---|---|
| 高速巡航 | 端到端时延、抖动 | 时延P99 ≤ 100ms,抖动 ≤ 20ms | 急刹或避让不及时 |
| 城市低速 | 吞吐量、CPU/GPU占用 | 感知帧率 ≥ 10Hz,GPU ≤ 80% | 目标漏检、规划超时 |
| 自动泊车 | 内存、功耗 | 内存余量 ≥ 20%,功耗 ≤ 平台上限 | 长时间运行后卡顿 |
| 园区接驳 | 延迟、安全裕度 | 端到端时延 ≤ 150ms,裕度 ≥ 30% | 人车混行时响应不足 |
3.4 常见误区与复盘
误区一:只看平均延迟。平均延迟低,但P99延迟很高,仍然可能在关键时刻失效。自动驾驶必须关注长尾延迟。
误区二:把CPU占用低等同于系统健康。CPU占用低可能是任务被阻塞、消息丢失或调度优先级配置错误,必须结合吞吐量和端到端时延一起判断。
误区三:忽略抖动。控制周期抖动会直接导致车辆横向控制不平顺,甚至引发执行器频繁修正。
复盘建议:每次性能问题都应记录“时间、场景、指标异常、资源状态、根因、修复动作、回归结果”。只有形成闭环,安全裕度才可被持续验证。
总结来看,延迟、抖动、吞吐量、CPU/GPU占用、内存、功耗、端到端时延和安全裕度共同构成自动驾驶系统的性能画像。工程实践中,应把它们作为一组相互约束的指标进行采集、分析和优化,而不是孤立地追求某一项最优。只有明确指标定义、测量方法和安全边界,才能让自动驾驶系统在真实道路上具备可预测、可验证的可靠性。