2、自动驾驶基础:传感器、高精地图、定位、感知、规划、控制的基本概念

自动驾驶系统是一个高度复杂的软硬件耦合工程,其核心逻辑可以概括为“感知-决策-执行”的闭环。在深入学习Autoware架构之前,必须对支撑该闭环的六大基础模块建立清晰认知:负责获取外部信息的传感器(激光雷达、相机、毫米波雷达)、提供先验知识的高精地图、确定自身位置的定位、理解环境的感知、决定行驶策略的规划以及执行指令的控制。本章将逐一拆解这些模块的基本概念、核心原理与工程实践要点,为后续学习Autoware的代码架构与算法实现奠定坚实基础。

自动驾驶基础模块关系与数据流 传感器组 激光雷达 (LiDAR) 相机 (Camera) 毫米波雷达 (Radar) 原始点云/图像/目标列表 高精地图 车道线/路网/交通标志 先验静态信息 定位 GNSS+IMU+轮速 点云配准(NDT/ICP) 地图匹配 输出: 位姿(x,y,yaw) 感知 目标检测/分类 语义分割/跟踪 融合(传感器级/目标级) 输出: 动态障碍物列表 规划 全局路径规划 行为决策(变道/跟车) 局部轨迹规划 输出: 轨迹点+速度 控制 横向控制(转向) 纵向控制(油门/制动) PID/MPC/Stanley 输出: 底盘控制指令 车辆底盘 转向/驱动/制动 CAN/以太网通信 执行反馈(轮速/转角) 传感器数据 先验地图 定位/感知结果 规划/控制指令 反馈信号

上图展示了自动驾驶系统中各基础模块的协作关系。传感器与高精地图为定位和感知提供输入,定位与感知的结果共同送入规划模块,规划生成的目标轨迹交由控制模块执行,最终作用于车辆底盘。值得注意的是,控制模块的执行结果(如实际转角、轮速)会通过底盘反馈回路影响后续的定位与规划,形成完整的闭环系统。

2.1 传感器:自动驾驶的“感官”

核心原理

传感器是自动驾驶系统获取外部环境信息的唯一途径。不同传感器基于不同的物理原理工作,各有优劣,因此现代自动驾驶系统普遍采用多传感器融合方案。

  • 激光雷达(LiDAR):通过发射激光束并测量反射时间差来计算目标距离,生成高精度3D点云。其优势在于测距精度高(厘米级)、不受光照影响,但成本较高且雨雾天气性能衰减明显。
  • 相机(Camera):被动接收环境光,生成2D图像。优势是信息丰富(颜色、纹理、文字),适合目标分类和交通标志识别,但深度估计困难,且对光照变化敏感。
  • 毫米波雷达(Radar):发射毫米波并接收反射波,直接测量目标的距离、速度和角度。优势是全天候工作(雨雪雾天性能稳定),测速精度高,但角分辨率低,难以识别目标类别。

传感器对比与选型

维度激光雷达相机毫米波雷达
测距原理TOF/相位差三角测量/视差多普勒频移
主要输出3D点云 (x,y,z,intensity)2D图像 (RGB/灰度)目标列表 (距离/速度/角度)
测距精度±2cm深度误差随距离增大±0.1m
测速能力需帧间差分需帧间差分直接测量径向速度
目标分类弱(依赖点云密度)强(深度学习)弱
环境适应性受雨雾影响大受光照影响大全天候稳定
典型成本高($1000-$10000+)低($50-$500)中($100-$1000)
工程经验:在Autoware中,传感器数据通过ROS 2的Topic机制发布。激光雷达通常发布为 sensor_msgs/msg/PointCloud2,相机发布为 sensor_msgs/msg/Image,毫米波雷达发布为 radar_msgs/msg/RadarTracks。理解这些消息类型是编写感知算法的前提。

实战场景:传感器标定与时间同步

多传感器融合的前提是精确的标定与时间同步。以Autoware为例,激光雷达与相机的外参标定通常使用Autoware提供的 calibration_tools 包,通过棋盘格或ArUco标记物进行联合标定。时间同步则需确保各传感器消息的时间戳对齐,Autoware中常用 message_filters 的 ApproximateTimeSynchronizer 实现。

常见误区:初学者常忽略传感器安装位置对感知的影响。例如,激光雷达安装在车顶与保险杠位置,其视野盲区完全不同。在Autoware的 sensor_kit 配置中,必须准确填写每个传感器的安装位姿(x,y,z,yaw,pitch,roll),否则后续的感知融合将产生系统性偏差。

2.2 高精地图:自动驾驶的“记忆”

核心原理

高精地图(HD Map)与普通导航地图的本质区别在于其厘米级精度和丰富的语义信息。它包含车道级路网模型、车道线几何与属性、交通标志、信号灯位置、道路曲率、坡度等静态信息,为定位、感知和规划提供先验知识。

高精地图通常分为三层:道路层(车道拓扑关系)、几何层(车道线3D坐标)、语义层(交通规则、限速等)。在Autoware中,高精地图以Lanelet2或Vector Map格式存储,通过 autoware_map_loader 节点加载。

地图在系统中的作用

  • 辅助定位:通过点云与地图的配准(NDT/ICP)实现高精度定位。
  • 感知增强:将动态障碍物与静态地图元素分离,降低感知难度。
  • 规划约束:提供车道中心线、可行驶区域、限速等约束条件。

案例拆解:Lanelet2地图结构

Lanelet2是Autoware广泛使用的高精地图格式。其核心概念包括:

Lanelet(车道段): 由左右边界线(LineString)围成的可行驶区域
Regulatory Element(规则元素): 关联交通规则(如限速、红绿灯)
Traffic Light(信号灯): 与Lanelet关联的信号灯组

在Autoware中,规划模块通过查询Lanelet2地图获取当前车道的中心线、前后车道的连接关系以及交通规则,从而生成符合交规的行驶轨迹。

复盘要点:高精地图的维护是一个持续过程。地图更新延迟可能导致定位漂移或规划错误。工程实践中,应建立地图版本管理机制,并在地图切换时进行一致性校验。

2.3 定位:自动驾驶的“自我认知”

核心原理

定位模块回答“我在哪里”的问题。自动驾驶要求定位精度达到厘米级,且在城市峡谷、隧道等GNSS信号受限场景下依然可靠。因此,现代自动驾驶系统普遍采用多源融合定位策略。

主流方案包括:

  1. GNSS+IMU+轮速计:提供位置与姿态的初始估计,但GNSS存在多路径效应和更新频率低的问题。
  2. 点云配准(NDT/ICP):将当前激光雷达扫描与高精地图进行配准,获得高精度位姿修正。
  3. 卡尔曼滤波融合:将上述多源信息通过扩展卡尔曼滤波(EKF)或无迹卡尔曼滤波(UKF)进行最优融合。

操作流程:Autoware中的定位模块

Autoware的定位模块主要由 ndt_scan_matcher 和 ekf_localizer 两个节点组成。其工作流程如下:

1. 加载高精地图点云(.pcd文件)
2. 接收当前激光雷达扫描(PointCloud2)
3. NDT配准:计算当前扫描与地图的位姿变换
4. 将NDT结果与GNSS/IMU数据输入EKF
5. 输出融合后的位姿(/localization/pose_estimator/pose)

常见误区与排障

排障案例:某测试车辆在隧道中定位漂移严重。排查发现,GNSS信号丢失后,EKF过度信任IMU积分,导致位置误差累积。解决方案是:在GNSS信号丢失时,增大NDT配准的权重,并降低IMU的置信度。在Autoware的EKF参数中,可通过调整 process_noise 和 measurement_noise 矩阵实现。

2.4 感知:自动驾驶的“理解”

核心原理

感知模块负责将传感器原始数据转化为对环境的语义理解,包括目标检测(识别车辆、行人、骑行者)、目标分类、语义分割(区分可行驶区域、路沿)以及目标跟踪(估计目标的速度与运动轨迹)。

感知算法经历了从传统CV(如HOG+SVM)到深度学习(如YOLO、PointPillars)的演进。在Autoware中,感知模块采用模块化设计,支持多种算法插件。

多传感器融合策略

融合层级方法优势劣势
数据级融合点云与图像像素级对齐信息损失最小计算量大,对同步要求极高
目标级融合各传感器独立检测后融合容错性好,实现简单信息损失较大
特征级融合提取特征后融合平衡性能与精度特征设计复杂

实战场景:目标检测与跟踪

在Autoware中,感知流程通常为:激光雷达点云经 pointcloud_preprocessor 滤波后,送入 detection_by_tracker 或 lidar_apollo_segmentation 进行目标检测;相机图像经 tensorrt_yolo 进行2D检测;最后通过 fusion 节点将两类检测结果进行目标级融合,输出统一的障碍物列表(autoware_auto_perception_msgs/msg/PredictedObjects)。

经验提醒:感知算法的性能评估不能只看mAP(平均精度),更要关注召回率(漏检率)和误检率。在自动驾驶中,漏检一个行人比误检一个静态障碍物危险得多。Autoware提供了 perception_eval 工具,可对感知结果进行离线评估。

2.5 规划:自动驾驶的“决策”

核心原理

规划模块根据定位、感知结果和高精地图,生成一条安全、舒适、符合交规的行驶轨迹。规划通常分为三个层级:

  • 全局路径规划:在路网层面规划从起点到终点的宏观路径(如A*、Dijkstra算法)。
  • 行为决策:根据当前交通场景做出驾驶行为决策(如跟车、变道、停车让行)。
  • 局部轨迹规划:在全局路径约束下,生成具体的轨迹点(位置+速度+加速度),常用方法有样条曲线、模型预测控制(MPC)等。

Autoware中的规划架构

Autoware的规划模块分为 behavior_planner 和 motion_planner。行为规划器负责场景决策,运动规划器负责生成轨迹。其输入包括:

- 当前位姿(/localization/pose_estimator/pose)
- 障碍物列表(/perception/object_recognition/objects)
- 高精地图(Lanelet2)
- 全局路径(/planning/mission_planning/route)

案例拆解:变道决策与轨迹生成

假设车辆在高速上行驶,前方有一辆慢车。行为规划器检测到前方车辆速度低于设定巡航速度,且相邻车道空闲,则决策“变道”。运动规划器随后在相邻车道中心线附近采样多条候选轨迹,通过代价函数评估(安全性、舒适性、效率),选择最优轨迹输出给控制模块。

复盘要点:规划算法的核心挑战在于实时性与最优性的平衡。Autoware中,运动规划器的计算频率通常要求10Hz以上,因此算法优化(如轨迹采样数量、碰撞检测的加速)至关重要。

2.6 控制:自动驾驶的“执行”

核心原理

控制模块将规划生成的轨迹转化为车辆底盘可执行的指令(转向角、油门开度、制动压力)。控制算法需要处理车辆动力学非线性、轮胎滑移、延迟等复杂因素。

常用控制算法包括:

  • PID控制:简单可靠,适合线性系统,但难以处理强耦合和延迟。
  • 纯跟踪(Pure Pursuit):基于几何模型的横向控制,实现简单,适合低速场景。
  • 模型预测控制(MPC):基于车辆动力学模型,预测未来轨迹并优化控制量,精度高但计算量大。

操作流程:Autoware控制模块

Autoware的控制模块由 controller_manager 统一管理,支持多种控制器插件。其工作流程为:

1. 接收规划轨迹(/planning/trajectory)
2. 根据当前位姿计算横向偏差和航向偏差
3. 调用控制器(如MPC)计算前轮转角
4. 根据目标速度计算油门/制动指令
5. 通过CAN接口发送至底盘(/vehicle/command)

常见误区与调优

调优案例:某测试车辆在高速变道时出现明显横向振荡。排查发现,MPC控制器的预测时域(prediction_horizon)设置过短,导致控制器对前方曲率变化响应滞后。将预测时域从1.0s增加到2.5s,并适当增大控制权重后,振荡明显改善。此外,还需检查底盘执行器的延迟补偿参数(steering_lag)。

2.7 模块协同与系统集成

上述六大模块并非孤立运行,而是通过ROS 2的通信机制紧密耦合。Autoware采用组件化架构,每个模块以节点(Node)形式运行,通过Topic和Service进行通信。模块间的数据流遵循“感知-决策-执行”的闭环逻辑,任何一环的延迟或错误都会影响整体性能。

在系统集成时,需重点关注:

  • 时间同步:各模块消息的时间戳必须对齐,否则融合结果失真。
  • 计算资源分配:感知和规划模块计算密集,需合理分配CPU/GPU资源。
  • 故障降级:当某个传感器或模块失效时,系统应能降级运行(如从L4降级到L2)。