2、自动驾驶基础:传感器、高精地图、定位、感知、规划、控制的基本概念
自动驾驶系统是一个高度复杂的软硬件耦合工程,其核心逻辑可以概括为“感知-决策-执行”的闭环。在深入学习Autoware架构之前,必须对支撑该闭环的六大基础模块建立清晰认知:负责获取外部信息的传感器(激光雷达、相机、毫米波雷达)、提供先验知识的高精地图、确定自身位置的定位、理解环境的感知、决定行驶策略的规划以及执行指令的控制。本章将逐一拆解这些模块的基本概念、核心原理与工程实践要点,为后续学习Autoware的代码架构与算法实现奠定坚实基础。
上图展示了自动驾驶系统中各基础模块的协作关系。传感器与高精地图为定位和感知提供输入,定位与感知的结果共同送入规划模块,规划生成的目标轨迹交由控制模块执行,最终作用于车辆底盘。值得注意的是,控制模块的执行结果(如实际转角、轮速)会通过底盘反馈回路影响后续的定位与规划,形成完整的闭环系统。
2.1 传感器:自动驾驶的“感官”
核心原理
传感器是自动驾驶系统获取外部环境信息的唯一途径。不同传感器基于不同的物理原理工作,各有优劣,因此现代自动驾驶系统普遍采用多传感器融合方案。
- 激光雷达(LiDAR):通过发射激光束并测量反射时间差来计算目标距离,生成高精度3D点云。其优势在于测距精度高(厘米级)、不受光照影响,但成本较高且雨雾天气性能衰减明显。
- 相机(Camera):被动接收环境光,生成2D图像。优势是信息丰富(颜色、纹理、文字),适合目标分类和交通标志识别,但深度估计困难,且对光照变化敏感。
- 毫米波雷达(Radar):发射毫米波并接收反射波,直接测量目标的距离、速度和角度。优势是全天候工作(雨雪雾天性能稳定),测速精度高,但角分辨率低,难以识别目标类别。
传感器对比与选型
| 维度 | 激光雷达 | 相机 | 毫米波雷达 |
|---|---|---|---|
| 测距原理 | TOF/相位差 | 三角测量/视差 | 多普勒频移 |
| 主要输出 | 3D点云 (x,y,z,intensity) | 2D图像 (RGB/灰度) | 目标列表 (距离/速度/角度) |
| 测距精度 | ±2cm | 深度误差随距离增大 | ±0.1m |
| 测速能力 | 需帧间差分 | 需帧间差分 | 直接测量径向速度 |
| 目标分类 | 弱(依赖点云密度) | 强(深度学习) | 弱 |
| 环境适应性 | 受雨雾影响大 | 受光照影响大 | 全天候稳定 |
| 典型成本 | 高($1000-$10000+) | 低($50-$500) | 中($100-$1000) |
sensor_msgs/msg/PointCloud2,相机发布为 sensor_msgs/msg/Image,毫米波雷达发布为 radar_msgs/msg/RadarTracks。理解这些消息类型是编写感知算法的前提。
实战场景:传感器标定与时间同步
多传感器融合的前提是精确的标定与时间同步。以Autoware为例,激光雷达与相机的外参标定通常使用Autoware提供的 calibration_tools 包,通过棋盘格或ArUco标记物进行联合标定。时间同步则需确保各传感器消息的时间戳对齐,Autoware中常用 message_filters 的 ApproximateTimeSynchronizer 实现。
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信号受限场景下依然可靠。因此,现代自动驾驶系统普遍采用多源融合定位策略。
主流方案包括:
- GNSS+IMU+轮速计:提供位置与姿态的初始估计,但GNSS存在多路径效应和更新频率低的问题。
- 点云配准(NDT/ICP):将当前激光雷达扫描与高精地图进行配准,获得高精度位姿修正。
- 卡尔曼滤波融合:将上述多源信息通过扩展卡尔曼滤波(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)
常见误区与排障
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)。
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)
案例拆解:变道决策与轨迹生成
假设车辆在高速上行驶,前方有一辆慢车。行为规划器检测到前方车辆速度低于设定巡航速度,且相邻车道空闲,则决策“变道”。运动规划器随后在相邻车道中心线附近采样多条候选轨迹,通过代价函数评估(安全性、舒适性、效率),选择最优轨迹输出给控制模块。
2.6 控制:自动驾驶的“执行”
核心原理
控制模块将规划生成的轨迹转化为车辆底盘可执行的指令(转向角、油门开度、制动压力)。控制算法需要处理车辆动力学非线性、轮胎滑移、延迟等复杂因素。
常用控制算法包括:
- PID控制:简单可靠,适合线性系统,但难以处理强耦合和延迟。
- 纯跟踪(Pure Pursuit):基于几何模型的横向控制,实现简单,适合低速场景。
- 模型预测控制(MPC):基于车辆动力学模型,预测未来轨迹并优化控制量,精度高但计算量大。
操作流程:Autoware控制模块
Autoware的控制模块由 controller_manager 统一管理,支持多种控制器插件。其工作流程为:
1. 接收规划轨迹(/planning/trajectory)
2. 根据当前位姿计算横向偏差和航向偏差
3. 调用控制器(如MPC)计算前轮转角
4. 根据目标速度计算油门/制动指令
5. 通过CAN接口发送至底盘(/vehicle/command)
常见误区与调优
prediction_horizon)设置过短,导致控制器对前方曲率变化响应滞后。将预测时域从1.0s增加到2.5s,并适当增大控制权重后,振荡明显改善。此外,还需检查底盘执行器的延迟补偿参数(steering_lag)。
2.7 模块协同与系统集成
上述六大模块并非孤立运行,而是通过ROS 2的通信机制紧密耦合。Autoware采用组件化架构,每个模块以节点(Node)形式运行,通过Topic和Service进行通信。模块间的数据流遵循“感知-决策-执行”的闭环逻辑,任何一环的延迟或错误都会影响整体性能。
在系统集成时,需重点关注:
- 时间同步:各模块消息的时间戳必须对齐,否则融合结果失真。
- 计算资源分配:感知和规划模块计算密集,需合理分配CPU/GPU资源。
- 故障降级:当某个传感器或模块失效时,系统应能降级运行(如从L4降级到L2)。