3. 自动驾驶系统架构与传感器基础

自动驾驶系统的工程实现,本质上是一个“感知-规划-控制”的闭环信息处理过程。对于基于NVIDIA Jetson平台的智能驾驶开发而言,理解这一分层架构是进行算法部署与优化的前提。Jetson系列模组(如Orin、Xavier NX)在车规级应用中通常承担边缘端的融合感知与决策计算任务,其硬件资源(GPU、DLA、CPU)的分配策略,直接取决于上层软件架构的划分方式。本章将系统梳理典型自动驾驶系统的分层逻辑,并深入解析相机、LiDAR、毫米波雷达与IMU等核心传感器的数据格式、坐标系定义及时间同步机制,为后续在Jetson平台上进行端到端算法开发打下坚实的工程认知基础。

自动驾驶系统分层架构与传感器数据链路 感知层 (Perception) • 相机: YUV/RGB 图像 • LiDAR: 3D点云 (XYZI) • 毫米波雷达: 目标列表/点云 • IMU: 加速度/角速度 • 传感器时间同步与融合 规划层 (Planning) • 环境感知结果输入 • 全局路径规划 (Routing) • 行为决策 (Behavior) • 运动规划 (Trajectory) • 轨迹生成与优化 控制层 (Control) • 轨迹跟踪控制 • PID / MPC / LQR • 转向/油门/制动执行 • 车辆动力学反馈 • 底盘CAN总线接口 车辆状态反馈 (IMU/轮速/定位) NVIDIA Jetson 边缘计算平台 (Orin / Xavier NX) GPU/CUDA加速感知模型推理 | DLA深度学习加速器 | CPU运行规划控制逻辑 | 硬件时间同步引擎 MIPI CSI / GMSL 相机图像采集 Ethernet / UDP LiDAR点云传输 CAN / CAN-FD 雷达/IMU/底盘数据 PTP / 时间同步 IEEE 802.1AS 时钟同步

上图展示了自动驾驶系统的核心数据链路与Jetson平台在其中的位置。感知层负责将物理世界的原始传感器数据转换为结构化环境信息;规划层基于感知结果与高精地图生成可执行的行驶轨迹;控制层则将轨迹转化为底盘执行指令。Jetson平台作为边缘计算核心,通过GPU/DLA加速感知模型,同时运行规划控制算法,并通过硬件时间同步引擎保证多传感器数据的时间对齐。下面将逐一展开各层级的核心原理与工程实现要点。

3.1 感知-规划-控制分层架构的核心原理

分层架构的设计初衷是降低系统复杂度,将“我在哪、周围有什么、接下来怎么走、怎么执行”四个问题解耦。每一层只依赖下一层提供的抽象接口,而不需要关心底层实现细节。这种设计使得算法团队可以并行开发、独立测试,也便于在Jetson平台上进行模块化部署与性能调优。

核心模块职责划分:

  • 感知层:负责目标检测(车辆/行人/骑行者)、车道线识别、可行驶区域分割、交通标志识别、障碍物测距与速度估计。输出为结构化目标列表(含位置、速度、朝向、类别置信度)与语义栅格地图。
  • 规划层:接收感知输出与定位信息,依次完成全局路径搜索(如A*、RRT*)、行为决策(跟车/超车/停车/变道)与局部轨迹优化(考虑动力学约束、避障、乘坐舒适性)。输出为未来5-8秒的轨迹点序列(时间戳+位置+速度+加速度)。
  • 控制层:采用PID、MPC或LQR等算法,将规划轨迹转化为方向盘转角、油门开度与制动压力指令。控制频率通常为50-100Hz,远高于规划层的10-20Hz,以保证车辆稳定跟踪。

在Jetson平台上,这种分层架构映射到具体的计算资源分配:感知模型(尤其是基于深度学习的检测/分割网络)通常部署在GPU或DLA上,利用TensorRT进行INT8量化加速;规划算法(如基于采样的轨迹生成)在CPU上运行,利用多核并行处理;控制算法则运行在实时核或独立MCU上,确保低延迟与确定性。

3.2 传感器数据格式与接口标准

不同传感器产生的数据格式差异巨大,理解其底层表示是进行融合与算法开发的基础。下表汇总了Jetson平台上常见传感器的数据格式、接口类型与关键参数。

传感器类型数据格式接口关键参数Jetson适配要点
相机 (Camera)YUV422 / RGB888 / RAW BayerMIPI CSI-2 / GMSL2分辨率、帧率、曝光、增益、畸变系数需配置V4L2或libargus,支持ISP处理
LiDARPCD / ROS PointCloud2 (XYZI)Ethernet (UDP)线数、扫描频率、角度分辨率、测距精度需处理大带宽数据,通常使用CUDA加速点云处理
毫米波雷达目标列表 (Object List) / 点云CAN / CAN-FD距离、速度、角度、RCS解析CAN报文,注意目标ID管理与跟踪
IMU三轴加速度 + 三轴角速度SPI / UART / CAN零偏稳定性、噪声密度、量程需进行温度补偿与标定,与GPS融合

对于相机数据,Jetson平台通过MIPI CSI接口接收原始图像,并利用内置ISP(图像信号处理器)进行去马赛克、白平衡、色彩校正等处理。开发者需要关注像素格式(如NV12、RGBA)与内存布局(线性/平铺),这直接影响GPU纹理访问效率。对于LiDAR点云,数据通常以浮点型XYZ坐标加反射强度(Intensity)存储,单帧64线激光雷达的数据量约为12-20万点,在Jetson上需要采用CUDA并行处理才能满足实时性要求。

3.3 传感器时间同步与坐标系标定

多传感器融合的前提是时间对齐与空间对齐。时间同步解决“同一时刻”的问题,空间标定解决“同一坐标系”的问题。在Jetson平台上,时间同步通常采用硬件级方案:利用板载的PTP(Precision Time Protocol)网卡或外部GPS脉冲(PPS)信号,为所有传感器打上统一的时间戳。

工程实践建议:在Jetson Orin上,推荐使用(IEEE 802.1AS)实现以太网传感器(如LiDAR)的时间同步,精度可达微秒级。对于相机,则利用硬件触发线(GPIO)与PPS信号对齐,确保曝光时刻与LiDAR扫描时刻一致。软件层面,可使用ROS2的message_filters进行近似时间同步(ApproximateTime),但精度远低于硬件方案。

坐标系标定方面,需要完成相机内参标定(焦距、主点、畸变)、相机-LiDAR外参标定(旋转+平移矩阵)、以及IMU到车体坐标系的安装角标定。标定结果通常以4x4齐次变换矩阵(T矩阵)存储。在Jetson上,可使用OpenCV或Kalibr工具进行离线标定,在线运行时则通过CUDA加速的变换操作将点云投影到图像平面。

// 示例:LiDAR点云到相机图像的投影变换(CUDA伪代码)
// 输入:LiDAR点云 (x, y, z, intensity)
// 输出:像素坐标 (u, v) 与深度值
float3 pt_lidar = make_float3(x, y, z);
float4 pt_cam = T_lidar_to_cam * make_float4(pt_lidar, 1.0f);
float2 uv = project(pt_cam); // 相机内参投影
if (uv.x > 0 && uv.x < width && uv.y > 0 && uv.y < height) {
    depth_map[uv.y * width + uv.x] = pt_cam.z;
}

3.4 实战场景:Jetson平台多传感器融合部署案例

以一个典型的L2+级自动驾驶开发项目为例,我们在一辆测试车上集成了前视双目相机、一个32线LiDAR、五个毫米波雷达和一个高精度IMU。目标是在Jetson AGX Orin上实现10Hz的感知融合输出与20Hz的规划控制指令。

初始现象与约束:系统在初期测试时发现,当车辆通过隧道或高架桥下时,相机出现曝光异常,导致目标检测丢失;同时,LiDAR点云与相机图像在时间上存在约80ms的延迟,导致融合后的目标位置出现明显跳变。

分析与解决过程:

  1. 时间同步优化:检查发现LiDAR通过以太网UDP传输,时间戳由主机软件生成,存在调度延迟。改用硬件时间同步后,将LiDAR驱动改为使用网卡硬件时间戳,延迟降低至2ms以内。
  2. 相机曝光控制:针对隧道场景,在感知前处理中加入基于图像亮度统计的自动曝光(AE)策略,并利用Jetson的ISP硬件加速,将曝光调整延迟控制在1帧以内。
  3. 空间标定验证:使用标定板重新进行相机-LiDAR外参标定,发现原标定结果在Z轴方向存在0.5度的偏差,导致远距离目标投影误差达1.2米。修正后,将融合目标的位置误差控制在0.3米以内。

结果与复盘:优化后,系统在隧道场景下的感知帧率稳定在12Hz,规划控制指令延迟低于50ms,车辆在80km/h时速下的车道保持与自适应巡航功能表现稳定。复盘经验:时间同步是融合质量的基石,任何软件层面的“近似同步”都无法替代硬件级时间戳;同时,标定参数需要定期校验,尤其在车辆经过剧烈颠簸或碰撞后。

3.5 常见误区与总结

常见误区提醒:

  • 误区一:认为所有传感器数据都可以在Jetson上直接使用。实际上,相机RAW数据需要经过ISP处理,LiDAR点云需要滤波与降采样,雷达目标需要跟踪管理,这些预处理步骤会消耗大量CPU/GPU资源。
  • 误区二:忽略传感器坐标系差异。不同传感器安装位置不同,若未正确标定,融合结果会出现系统性偏差,尤其在近距离目标上表现明显。
  • 误区三:在Jetson上直接使用高精度模型而不做优化。端到端部署必须考虑TensorRT量化、模型剪枝与内存复用,否则无法满足实时性要求。