3. 基础概念
在进入 Autoware 规划控制模块的代码与算法之前,必须先建立一套统一的“语言体系”。自动驾驶系统是一个典型的复杂软硬件耦合系统,规划控制模块作为决策与执行之间的桥梁,其输入输出、坐标变换、数学表达方式直接决定了系统的可靠性与可调试性。本章将围绕三个核心问题展开:第一,规划控制领域的高频术语到底在描述什么;第二,车辆在三维世界中如何用数学语言精确定位;第三,路径(Path)与轨迹(Trajectory)这两个极易混淆的概念,在 Autoware 中究竟有何本质差异。理解这些基础概念,是后续学习行为规划、运动规划、控制跟踪算法的前提。
3.1 规划控制基本术语解析
规划控制模块的术语体系横跨几何学、运动学、动力学与通信协议。在 Autoware 的代码与文档中,这些术语以 ROS 消息类型、参数名和算法变量的形式频繁出现。掌握这些术语,相当于拿到了阅读代码的“字典”。
3.1.1 核心原理:从几何到动力学的术语分层
规划控制涉及的基本术语可以按照“几何层 → 运动学层 → 动力学层 → 任务层”四个层次来理解。几何层描述车辆在空间中的位置与姿态,包括坐标、航向角、曲率;运动学层描述车辆运动状态的变化规律,包括速度、加速度、横摆角速度;动力学层描述力与运动的关系,包括轮胎侧偏角、纵向滑移率、横摆力矩;任务层则描述自动驾驶的行为意图,例如跟车、变道、交叉口通行。
在 Autoware 中,几何层与运动学层的数据通常通过 nav_msgs/msg/Odometry 和 geometry_msgs/msg/PoseStamped 发布;动力学层的数据往往由车辆底盘 CAN 总线反馈,经过 autoware_vehicle_msgs 封装后供规划模块使用。理解这些术语的层级关系,有助于在调试时快速定位问题属于“几何计算错误”还是“动力学约束不足”。
3.1.2 关键术语速查表
| 术语 | 英文 | 定义 | 在 Autoware 中的典型应用 |
|---|---|---|---|
| 航向角 | Yaw | 车辆纵轴与全局 X 轴的夹角,绕 Z 轴旋转 | 路径点姿态、控制目标航向 |
| 曲率 | Curvature | 路径弯曲程度的度量,单位 1/m | 速度规划约束、前轮转角计算 |
| 横摆角速度 | Yaw Rate | 航向角随时间的变化率,单位 rad/s | 车辆状态估计、稳定性控制 |
| 加加速度 | Jerk | 加速度的变化率,单位 m/s³ | 乘坐舒适性约束、轨迹平滑 |
| 横向偏差 | Lateral Error | 车辆当前位置到参考路径的垂直距离 | 纯跟踪控制、MPC 目标函数 |
| 纵向偏差 | Longitudinal Error | 车辆沿路径方向的距离误差 | 速度 PID 控制、ACC 自适应巡航 |
3.1.3 案例拆解:曲率对速度规划的影响
假设车辆以 72 km/h(20 m/s)行驶,前方出现一个半径为 50 m 的弯道。根据向心加速度公式 a = v² / R,此时所需的向心加速度为 20² / 50 = 8 m/s²,已经超过一般乘用车舒适性阈值(约 2~3 m/s²)。因此,运动规划模块必须在进入弯道前将速度降低至 sqrt(2.5 × 50) ≈ 11.2 m/s(约 40 km/h)。这个计算过程在 Autoware 中由 autoware_planning_tuning 模块的“曲率-速度查找表”完成。如果曲率计算错误(例如坐标系变换导致曲率符号反转),车辆就会以过高速度入弯,引发侧滑风险。
3.2 坐标系体系:从世界到传感器的空间变换
自动驾驶车辆同时存在于多个坐标系中。规划控制模块主要使用世界坐标系(Map Frame)和车辆坐标系(Base Frame),而感知模块则依赖传感器坐标系(Lidar Frame、Camera Frame)。坐标系之间的变换关系由 ROS 的 TF(Transform)树统一管理。
3.2.1 核心原理:三种坐标系的定义与作用
世界坐标系(Map Frame)是全局地图的参考系,通常以 UTM 投影或局部平面坐标建立。路径规划、全局定位、高精地图标注均在此坐标系下进行。Autoware 中,Map Frame 的 Z 轴通常指向天空,X 轴指向东或北(取决于地图投影方式)。
车辆坐标系(Base Frame)固连于车辆本体,原点通常位于后轴中心或车辆质心。X 轴指向车辆前进方向,Y 轴指向左侧,Z 轴向上。控制模块输出的转向角、速度指令均基于此坐标系。车辆坐标系随车辆运动而移动,因此它是一种“动态坐标系”。
传感器坐标系以各传感器自身为原点,例如激光雷达坐标系的原点位于激光雷达的旋转中心。感知模块输出的障碍物位置、车道线点云均在此坐标系下表达,必须通过 TF 变换到 Map 坐标系后才能供规划模块使用。
3.2.2 操作流程:TF 树的构建与验证
- 静态变换:传感器相对于车辆的位置是固定的,通过
static_transform_publisher发布。例如,激光雷达安装在车顶前方 0.5 m、高度 1.8 m 处,则发布base_link → velodyne_top的静态变换。 - 动态变换:车辆在世界中的位置由定位模块(如 NDT 匹配、GNSS/INS 组合)实时发布,即
map → base_link的变换,频率通常为 10~50 Hz。 - 验证方法:使用
tf2_echo map base_link命令查看实时变换,或使用 RViz 的 TF 显示插件检查坐标轴方向是否正确。
tf_buffer_size=50 以容忍一定的延迟。
3.2.3 实战场景:坐标系错误导致的路径偏移
某测试车辆在封闭园区内运行,规划模块输出的路径在 RViz 中显示正常,但车辆实际行驶轨迹整体向左偏移约 0.3 m。排查过程如下:
- 初始现象:车辆在直道上行驶时,横向偏差稳定在 0.3 m 左右,弯道中偏差更大。
- 分析判断:首先怀疑是标定参数错误。检查激光雷达的外参标定文件,发现
velodyne_top → base_link的 Y 轴平移量被错误地设置为 -0.3 m(实际应为 +0.3 m)。 - 实际操作:修正标定文件中的 Y 值,重启
pointcloud_preprocessor节点,重新运行定位模块。 - 结果对比:修正后横向偏差降至 0.05 m 以内,车辆在弯道中的跟踪精度显著提升。
- 复盘经验:坐标系标定错误具有“全局一致性”特征——所有感知目标都会出现相同方向的偏移。如果只有部分目标偏移,则可能是传感器本身故障或时间同步问题。
3.3 路径与轨迹的本质区别
路径(Path)与轨迹(Trajectory)是规划控制中最容易混淆的概念。简单来说,路径是纯几何描述,轨迹是带时间戳的运动描述。在 Autoware 中,路径用 nav_msgs/msg/Path 表示,轨迹用 autoware_planning_msgs/msg/Trajectory 表示。
3.3.1 核心原理:几何与时间的分离
路径只包含一系列空间点(x, y, z)和航向角(yaw),它回答了“车辆应该走哪条线”的问题。路径不包含任何时间信息,因此无法回答“车辆何时到达某个点”或“车辆在该点的速度是多少”。
轨迹在路径的基础上增加了时间戳、速度、加速度、加加速度等运动状态量。轨迹中的每个点都对应一个明确的时间,因此可以精确描述车辆在任意时刻的位置、速度与加速度。轨迹是控制模块的直接输入,控制算法根据轨迹点与当前车辆状态的偏差计算控制指令。
3.3.2 对比分析表
| 对比维度 | 路径 Path | 轨迹 Trajectory |
|---|---|---|
| 数据内容 | 位置 (x, y, z) + 航向角 (yaw) | 位置 + 航向角 + 时间戳 + 速度 + 加速度 |
| 时间维度 | 无 | 有,每个点对应明确时间 |
| 用途 | 全局规划、行为决策参考 | 运动规划输出、控制模块输入 |
| 生成模块 | 全局规划器(如 Lanelet2 全局路径) | 运动规划器(如 MPC、优化求解器) |
| 动态障碍物处理 | 通常不考虑动态障碍物 | 必须考虑动态障碍物的时空占用 |
| 典型 ROS 消息 | nav_msgs/msg/Path | autoware_planning_msgs/msg/Trajectory |
3.3.3 案例拆解:从路径到轨迹的生成流程
在 Autoware 的 planning 模块中,从路径到轨迹的转换是一个典型的“几何 → 运动”流水线。以高速公路场景为例:
- 全局规划:Lanelet2 地图加载后,全局规划器输出一条从起点到终点的参考路径,包含数百个路径点,每个点只有位置和航向角。
- 行为规划:行为规划模块根据当前车道、前方障碍物、交通规则,决定“继续直行”或“变道超车”。该决策不改变路径的几何形状,但会影响后续的速度规划。
- 运动规划:运动规划模块(如
autoware_motion_planning)接收参考路径和行为决策,结合车辆动力学模型、障碍物预测轨迹,生成一条满足时间约束的轨迹。轨迹中的每个点都包含期望速度、加速度,甚至转向角。 - 控制执行:控制模块(如
autoware_control)以 50 Hz 的频率采样轨迹,计算横向偏差和纵向速度误差,输出转向、油门、刹车指令。
3.3.4 常见误区与总结复盘
误区一:认为路径可以替代轨迹用于控制。实际上,控制模块需要轨迹中的速度信息来计算前馈控制量。如果只提供路径,控制器只能依赖反馈,动态响应性能会大幅下降。
误区二:混淆轨迹的时间戳与 ROS 消息的接收时间。轨迹中的时间戳是“期望到达时间”,而 ROS 消息的接收时间是“当前实际时间”。两者之间的差值反映了规划的预测时域。
误区三:忽略轨迹的离散化精度。Autoware 中轨迹点的间距通常为 0.1~0.5 m,如果间距过大,控制模块在高速行驶时可能无法及时响应曲率变化。建议根据车速动态调整轨迹点密度。