3、基础概念:自动驾驶规划控制的基本术语、坐标系、路径与轨迹的区别

在进入 Autoware 规划控制模块的代码与算法之前,必须先建立一套统一的“语言体系”。自动驾驶系统是一个典型的复杂软硬件耦合系统,规划控制模块作为决策与执行之间的桥梁,其输入输出、坐标变换、数学表达方式直接决定了系统的可靠性与可调试性。本章将围绕三个核心问题展开:第一,规划控制领域的高频术语到底在描述什么;第二,车辆在三维世界中如何用数学语言精确定位;第三,路径(Path)与轨迹(Trajectory)这两个极易混淆的概念,在 Autoware 中究竟有何本质差异。理解这些基础概念,是后续学习行为规划、运动规划、控制跟踪算法的前提。

规划控制基础概念关系图 坐标系体系 世界坐标系 (Map) 车辆坐标系 (Base) 传感器坐标系 (Lidar/Cam) 核心术语 航向角 Yaw 曲率 Curvature 横摆角速度 Yaw Rate 加速度/加加速度 路径 vs 轨迹 路径 Path 几何信息 (x, y, θ) 无时间维度 轨迹 Trajectory 路径 + 时间戳 + 速度 含加速度/加加速度 规划模块 全局规划 行为规划 运动规划 关键关系说明: 1. 坐标系是描述一切空间信息的基准,Map→Base→Sensor 之间通过 TF 树进行变换。 2. 路径只描述“在哪里走”,轨迹描述“何时到达、以多快速度、以多大加速度走”。 3. 全局规划输出路径,行为规划输出语义决策(如变道、停车),运动规划输出轨迹。 4. 控制模块接收轨迹后,通过横向/纵向控制器转化为油门、刹车、转向指令。 5. 曲率是路径的重要几何特征,直接影响最大可行速度与乘坐舒适性。 6. 横摆角速度与加速度是轨迹动态约束的核心指标,用于车辆动力学可行性校验。

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 模块的“曲率-速度查找表”完成。如果曲率计算错误(例如坐标系变换导致曲率符号反转),车辆就会以过高速度入弯,引发侧滑风险。

经验提醒:在调试曲率相关问题时,务必先确认路径点的坐标系一致性。Autoware 中路径点通常使用 Map 坐标系,但控制模块内部可能转换到 Base 坐标系。建议在 RViz 中同时显示原始路径与转换后的路径,检查曲率方向是否与弯道方向一致。

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 树的构建与验证

  1. 静态变换:传感器相对于车辆的位置是固定的,通过 static_transform_publisher 发布。例如,激光雷达安装在车顶前方 0.5 m、高度 1.8 m 处,则发布 base_link → velodyne_top 的静态变换。
  2. 动态变换:车辆在世界中的位置由定位模块(如 NDT 匹配、GNSS/INS 组合)实时发布,即 map → base_link 的变换,频率通常为 10~50 Hz。
  3. 验证方法:使用 tf2_echo map base_link 命令查看实时变换,或使用 RViz 的 TF 显示插件检查坐标轴方向是否正确。
风险提示:TF 树断裂是 Autoware 最常见的故障之一。如果规划模块报错“Could not transform from map to base_link”,请依次检查:定位模块是否正常输出、静态变换是否重复发布、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 模块中,从路径到轨迹的转换是一个典型的“几何 → 运动”流水线。以高速公路场景为例:

  1. 全局规划:Lanelet2 地图加载后,全局规划器输出一条从起点到终点的参考路径,包含数百个路径点,每个点只有位置和航向角。
  2. 行为规划:行为规划模块根据当前车道、前方障碍物、交通规则,决定“继续直行”或“变道超车”。该决策不改变路径的几何形状,但会影响后续的速度规划。
  3. 运动规划:运动规划模块(如 autoware_motion_planning)接收参考路径和行为决策,结合车辆动力学模型、障碍物预测轨迹,生成一条满足时间约束的轨迹。轨迹中的每个点都包含期望速度、加速度,甚至转向角。
  4. 控制执行:控制模块(如 autoware_control)以 50 Hz 的频率采样轨迹,计算横向偏差和纵向速度误差,输出转向、油门、刹车指令。
关键理解:路径是“静态的线”,轨迹是“动态的波”。在 Autoware 的 RViz 可视化中,路径通常显示为一条细线,而轨迹显示为带有速度颜色编码的粗线或箭头。如果轨迹中的速度信息丢失(例如时间戳全部为 0),控制模块将无法计算加速度,导致车辆急加速或急减速。

3.3.4 常见误区与总结复盘

误区一:认为路径可以替代轨迹用于控制。实际上,控制模块需要轨迹中的速度信息来计算前馈控制量。如果只提供路径,控制器只能依赖反馈,动态响应性能会大幅下降。

误区二:混淆轨迹的时间戳与 ROS 消息的接收时间。轨迹中的时间戳是“期望到达时间”,而 ROS 消息的接收时间是“当前实际时间”。两者之间的差值反映了规划的预测时域。

误区三:忽略轨迹的离散化精度。Autoware 中轨迹点的间距通常为 0.1~0.5 m,如果间距过大,控制模块在高速行驶时可能无法及时响应曲率变化。建议根据车速动态调整轨迹点密度。

复盘建议:在调试规划控制模块时,建议同时打开 RViz 的 Path 和 Trajectory 显示,并开启速度颜色映射。如果发现轨迹的几何形状与路径一致但速度分布不合理(例如弯道前速度未降低),问题通常出在速度规划器的约束设置上,而非路径生成环节。