Carla 无人车路径跟踪系统实现与深度分析报告


1. 项目背景与实验目标

1.1 实验背景与理论意义

路径跟踪作为自动驾驶技术的核心基础环节,是实现车辆自主导航的关键支撑,其核心目标是控制车辆沿预设参考路径稳定行驶,同时保证跟踪精度与行驶安全性。Carla 作为开源自动驾驶模拟器,提供了真实的城市交通场景与车辆动力学模型,为路径跟踪算法的验证提供了可靠平台。

纯追踪算法(Pure Pursuit)作为一种经典的几何路径跟踪算法,凭借其清晰的数学直觉、较低的计算复杂度,在低速场景下具备优异的稳定性与泛化能力,是无人车路径跟踪控制的重要算法范式。本次实验旨在通过底层实现纯追踪算法,深入探索车辆动力学约束、预瞄距离优化、转向控制限幅等关键环节,填补理论推导与工程落地之间的鸿沟,验证纯追踪算法在城市道路场景下的路径跟踪性能。

1.2 核心研究目标

基于以上背景,我设定了四个核心研究目标:

  1. 跟踪精度突破:针对直线路段与弯道场景下的跟踪误差差异,通过优化预瞄距离与转向控制参数,提升轨迹与参考路径的贴合度。

  2. 车辆动力学适配:基于Tesla Model 3车辆模型,优化油门与转向控制限幅,解决车辆原地不动、弯道脱离路径等动力学适配问题。

  3. 工程化实现优化:针对Windows环境下文件路径映射、Carla模拟器交互异常、数据文件生成失败等问题,提供可落地的工程化避坑方案。

  4. 数据闭环验证:构建完整的轨迹数据记录与可视化流程,生成轨迹对比图与CSV数据文件,实现算法效果的量化评估与可追溯分析。


2. 环境部署与工程化避坑深度解析

2.1 基础架构依赖

工具/环境 版本/说明
Carla 模拟器 0.9.13(支持Python API交互与车辆动力学模拟)
Python 3.8.10(推荐Anac
核心依赖库 carla、numpy、matplotlib、csv(用于数据处理与可视化)
开发平台 Windows 10/11(需配置好Python环境变量与Carla路径)

2.2 关键依赖库说明

  • Carla Python API:实现与模拟器的交互,支持车辆生成、路点获取、控制指令发送等核心功能。
  • NumPy:利用向量化运算特性,将复杂的三角函数、矩阵运算转化为高效的数值计算,提升算法执行效率。
  • Matplotlib:实现轨迹对比图绘制,支持中文标签显示与高清图像导出,为结果可视化提供支撑。

2.3 工程化避坑指南

  1. 车辆无响应问题:需通过vehicle.set_simulate_physics(True)激活车辆物理引擎,同时将油门控制值设置为0.3-0.35,避免车辆因动力不足原地不动。
  2. 数据文件生成失败:需提前创建文件目录,使用绝对路径指定文件输出位置,避免相对路径映射异常;同时确保程序正常执行完finally模块,不中途中断。
  3. 弯道脱离路径:将预瞄距离设置为8.0m,同时对转向角进行限幅处理(-0.5~0.5),避免因转向幅度过大导致车辆失控。

3. 核心算法流程与数学直觉实现

3.1 纯追踪算法核心思想

纯追踪算法的核心是“几何预瞄控制”:在参考路径上选取一个位于车辆前方的预瞄点,通过计算车辆当前位置与预瞄点的几何关系,求解所需的转向角,使车辆沿圆弧轨迹驶向预瞄点,从而实现路径跟踪。该算法通过调整预瞄距离,平衡跟踪精度与行驶稳定性。

3.2 几何模型与公式推导

1. 局部坐标系转换

将预瞄点坐标转换到车辆局部坐标系下,消除车辆航向角的影响,得到预瞄点的纵向偏移量 与横向偏移量

其中:

  • 为车辆当前位置坐标

  • 为预瞄点在全局坐标系下的坐标

  • 为车辆当前的航向角(车头朝向与全局x轴的夹角)

2. 航向偏差角计算

基于局部坐标系下的偏移量,计算预瞄点与车辆当前航向的夹角

3. 转向角求解

基于阿克曼转向几何原理,推导车辆为驶向预瞄点所需的前轮转向角

其中:

  • 为车辆轴距(前后轴中心的距离,本项目中Tesla Model 3取

  • 为预瞄距离(车辆到预瞄点的距离,本项目取

4. 转向角限幅处理

为保证车辆行驶稳定性,避免转向幅度过大导致失控,将计算得到的转向角限幅在车辆可控范围内:

说明:clip为限幅函数,确保输出转向角始终在 之间,适配Carla模拟器的车辆控制接口。

3.3 算法工程实现细节

class PurePursuit:
    def __init__(self, path, lookahead=8.0):
        self.path = path  # 参考路径点集
        self.Ld = lookahead  # 预瞄距离
        self.wheelbase = 2.5  # 车辆轴距

    def get_goal(self, veh_loc):
        # 寻找离车辆最近的路径点,向前取预瞄点
        min_dist = float('inf')
        idx = 0
        for i, (px, py) in enumerate(self.path):
            dist = np.hypot(px - veh_loc.x, py - veh_loc.y)
            if dist < min_dist:
                min_dist = dist
                idx = i
        return self.path[min(idx + 3, len(self.path)-1)]

    def calc_steer(self, trans, goal):
        # 局部坐标系转换与转向角计算
        vx, vy = trans.location.x, trans.location.y
        yaw = np.radians(trans.rotation.yaw)
        gx, gy = goal

        dx, dy = gx - vx, gy - vy
        lx = dx * np.cos(yaw) + dy * np.sin(yaw)
        ly = -dx * np.sin(yaw) + dy * np.cos(yaw)

        alpha = np.arctan2(ly, lx)
        steer = np.arctan2(2 * self.wheelbase * np.sin(alpha), self.Ld)
        return np.clip(steer / 0.8, -0.5, 0.5)

4. 实验结果深度剖析与数据洞察

4.1 实验参数设置

  • 车辆行驶时间:46s(适配参考路径长度,确保车辆完整跑完全程)
  • 油门控制值:0.3(匀速行驶,兼顾动力与稳定性)
  • 参考路径长度:80个路点,路径总长度约240m
  • 预瞄距离:8.0m(平衡跟踪精度与行驶稳定性)

4.2 系统实现效果

系统实现效果图如下

起始图

结尾图

4.3 轨迹跟踪结果可视化分析

轨迹对比图如下: 轨迹对比图

  • 直线路段:实际轨迹与参考路径高度重合,跟踪误差小于0.5m,无明显偏移。
  • 弯道路段:受车辆动力学约束,实际轨迹与参考路径存在轻微偏差,但整体未脱离车道,偏差控制在1.5m以内。
  • 全程跟踪:车辆完整跑完全程参考路径,无中途停止、原地打转或严重脱离路径的情况,跟踪稳定性良好。

4.4 跟踪误差量化评估

基于trajectory_data.csv数据,对跟踪误差进行量化分析:

  • 平均跟踪误差:0.78m

  • 最大跟踪误差:1.45m(出现在弯道处)

  • 误差分布:直线路段误差占比70%(<0.5m),弯道路段误差占比30%(0.5-1.5m),符合纯追踪算法的误差特性。


5. 项目总结与未来进阶

5.1 项目完成情况

本项目成功实现了基于纯追踪算法的Carla无人车路径跟踪系统,完成了以下核心目标:

  1. 实现了Carla模拟器与Python环境的稳定交互,完成车辆生成、路径生成、控制指令发送全流程。

  2. 基于地图路点生成连续参考路径,车辆可完整跑完全程参考路径。

  3. 纯追踪算法有效控制车辆跟踪参考路径,轨迹贴合度良好,平均跟踪误差小于1m。

  4. 构建了完整的数据闭环流程,成功生成轨迹对比图与CSV数据文件,实现结果的可视化与量化评估。

5.2 关键问题与解决方法复盘

  1. 车辆无响应问题:通过激活车辆物理引擎、优化油门控制值,解决了车辆原地不动的问题。
  2. 弯道脱离路径问题:调整预瞄距离至8.0m,对转向角进行限幅处理,提升了弯道跟踪的稳定性。
  3. 数据文件生成失败问题:使用绝对路径指定文件输出位置,提前创建文件目录,确保数据文件正常生成。

5.3 未来改进方向

  1. 自适应预瞄距离优化:根据车辆行驶速度与路径曲率动态调整预瞄距离,进一步提升弯道跟踪精度。
  2. 速度控制闭环:引入PID速度控制器,实现车辆速度的自适应调节,提升行驶稳定性。
  3. 多场景扩展:对比模型预测控制(MPC)等其他路径跟踪算法,分析不同算法在复杂场景下的性能差异。
  4. 工程化部署:将算法部署到真实ROS平台,实现仿真到实车的迁移验证。

参考文献

[1] Carla Simulator Documentation. https://carla.readthedocs.io/

[2] 龚建伟, 姜岩. 无人驾驶车辆模型预测控制[M]. 北京理工大学出版社, 2014.

[3] 基于纯追踪算法的无人车路径跟踪控制研究. 汽车工程, 2020.