一、课程导论与预备知识

大家好,我是你们这门课的老朋友。在自动驾驶这个圈子里摸爬滚打了快十年,说实话,纯追踪算法是我个人觉得最「接地气」的一个路径跟踪方法。为什么这么说?因为它数学上不复杂,工程上又特别管用。今天咱们就来聊聊这门课的开篇——课程导论与预备知识。

1.1 纯追踪算法概述

纯追踪算法,英文叫 Pure Pursuit。说白了,就是让车去追一个前方远处的点。你想想看,我们开车的时候,眼睛盯着前方某个目标点,然后打方向盘让车头对准它——纯追踪干的就是这事儿。

它的核心思想很简单:在当前车辆位置前方,选一个目标点,然后计算一个圆弧半径,让车辆沿着这个圆弧平滑地到达目标点。这个目标点通常是在参考路径上,距离车辆一个固定的「前视距离」。

核心公式:

δ = arctan(2 * L * sin(α) / ld)

其中:δ 是前轮转角,L 是轴距,α 是航向偏差角,ld 是前视距离。

嗯,这里要注意:前视距离 ld 是个关键参数。调大了,车拐弯平滑但容易「抄近道」;调小了,跟踪精度高但方向盘会抖得厉害。我在项目中遇到过,有一次在仓库 AGV 上调试,ld 设小了,车在直道上走 S 形,跟喝醉了似的。

1.2 应用场景:AGV 与自动驾驶

纯追踪算法的应用场景其实比你想的广。我把它分成两大类:

  • AGV(自动导引车):工厂里的搬运机器人、仓储物流小车。这类场景速度慢(一般不超过 2m/s),路径简单,纯追踪算法绰绰有余。我记得有个项目,客户要求 AGV 在 5cm 精度内停到工位,纯追踪配合 PID 控制,轻松搞定。
  • 自动驾驶汽车:高速场景下,纯追踪算法通常作为底层跟踪器,上层还有规划模块。为什么?因为高速时前视距离要动态调整,否则弯道容易失控。我曾经在高速测试中,ld 没调好,80km/h 过弯时差点冲出车道——从那以后我再也不敢用固定 ld 了。

我的建议:如果你是初学者,先从 AGV 场景入手。速度慢、安全风险低,调参也容易。等把纯追踪的「脾气」摸透了,再上自动驾驶。

1.3 前置数学基础

这部分是硬骨头,但别怕,我尽量用大白话讲清楚。

1.3.1 几何基础

纯追踪算法本质上是个几何问题。你需要理解:

  • 圆弧与弦的关系:车辆从当前位置到目标点,走的是圆弧。圆弧半径由弦长和偏转角决定。
  • 三角形正弦定理:上面那个核心公式,就是靠正弦定理推导出来的。说白了,就是在一个三角形里,边和角的正弦值成比例。

举个例子:你站在原点,前方 10 米处有个点,偏左 30 度。你要画一个圆弧过去,圆弧半径是多少?这就是纯追踪要算的东西。

1.3.2 坐标系

搞自动驾驶,坐标系绕不开。我习惯用这三个:

坐标系 说明 用途
全局坐标系 固定在地面上的笛卡尔坐标系 (X, Y) 存储参考路径、地图信息
车辆坐标系 以车辆后轴中心为原点,前进方向为 X 轴 计算相对位置、控制量
路径坐标系 沿参考路径的 Frenet 坐标系 (s, d) 分析横向偏差、纵向进度

为什么要有这么多坐标系?说白了,每个坐标系都有它擅长的活。全局坐标系适合规划路径,车辆坐标系适合算控制量,路径坐标系适合分析跟踪误差。我在做项目时,经常要在三个坐标系之间来回转换,稍不注意就搞混了——嗯,这里建议你写个坐标转换的工具函数,省得每次手算。

1.3.3 车辆运动学模型

纯追踪算法用的是最简单的运动学模型——自行车模型。为什么叫自行车?因为它把四轮车简化成两轮车,前轮转向、后轮驱动。

自行车模型的状态方程:

x_dot = v * cos(θ)
y_dot = v * sin(θ)
θ_dot = v * tan(δ) / L

其中 (x, y) 是后轴中心位置,θ 是航向角,v 是速度,δ 是前轮转角,L 是轴距。

这个模型假设车辆在低速下运动,没有侧滑。实际项目中,只要速度不超过 10m/s,这个模型就够用。我曾经在雪地上试过,轮胎打滑时模型就不准了——那是动力学该管的事。

1.4 知识体系总览

下面这张图是我自己画的,把本章的知识点串起来了。你看一眼,心里就有谱了。

纯追踪算法 数学基础 几何 坐标系 运动学模型 核心算法 前视距离 转角计算 目标点选取 应用场景 AGV 自动驾驶 图:纯追踪算法知识体系总览 核心逻辑:几何推导 → 前视选点 → 转角计算 → 车辆控制

1.5 课程大纲与学习路径

这门课一共 30 章,我把它分成四个阶段:

  1. 基础篇(第1-8章):数学基础、纯追踪原理、仿真环境搭建。说白了,就是让你先跑起来。
  2. 进阶篇(第9-16章):前视距离自适应、曲率补偿、多目标点策略。这部分是我踩坑最多的,会重点讲。
  3. 工程篇(第17-24章):代码架构、参数标定、实车调试。嗯,这里我会分享一些「血泪教训」。
  4. 实战篇(第25-30章):AGV 项目实战、自动驾驶项目实战、性能优化。

避坑指南:我曾经见过不少同学,一上来就调实车,结果车撞了墙还不知道问题出在哪。我的建议是:先在仿真里跑通,再上实车。仿真环境我推荐用 Gazebo 或者 CARLA,后面会教你怎么搭。

学习路径上,我建议你按顺序来。每一章都有代码示例和练习题,别跳着看——尤其是数学基础那几章,跳过去后面会看不懂。我当年自学的时候,就是吃了这个亏,后来老老实实回头补课。

好了,第一章就到这里。记住:纯追踪算法不难,难的是把它用好。后面我们会一步步深入,把每个细节都掰开揉碎了讲清楚。


专注资料整理