一、纯跟踪算法概述:算法起源、基本原理、在自动驾驶路径跟踪中的角色定位
大家好,我是这次课程的主讲工程师。咱们今天聊的纯跟踪算法,说白了就是让车沿着一条预定路径走,走得稳、走得准。我最早接触这个算法是在2018年做园区物流小车的时候,那时候还没现在这么多 fancy 的端到端方案,纯跟踪算是入门必备。
1.1 算法起源:从哪儿来的?
纯跟踪算法最早可以追溯到机器人领域。我记得当时看一篇1992年的论文,讲的是如何让轮式机器人沿着路径走。核心思想很简单——模拟人类驾驶员的视线跟踪行为。
你想想看,人开车的时候怎么走?眼睛盯着前方某个点,然后打方向盘让车头对准那个点。纯跟踪算法就是把这个过程数学化了。它不关心整条路径长什么样,只关心当前车的位置和前方一个叫“预瞄点”的东西。
核心思想: 车辆通过控制转向角,使得车辆沿着一条圆弧行驶,最终到达前方预瞄点。说白了就是“看多远,拐多大弯”。
我在项目中遇到过一个问题:预瞄点选得太近,车会左右摇摆;选得太远,车会切弯。这个后面我们会详细讲。
1.2 基本原理:数学上怎么做的?
纯跟踪算法的数学基础其实不复杂。我们来看一下核心公式:
δ(t) = arctan( 2 * L * sin(α(t)) / ld )
其中:
- δ(t) — 前轮转角(我们要控制的量)
- L — 车辆轴距(固定参数)
- α(t) — 车辆航向与预瞄点方向的夹角
- ld — 预瞄距离(关键参数)
嗯,这里要注意:ld 是整个算法的灵魂。它决定了车辆“看多远”。
我的经验: 预瞄距离 ld 不能是固定值。低速时 ld 要小,高速时 ld 要大。我曾经在一条弯道上吃过亏,固定 ld 导致车辆在高速过弯时直接冲出车道——从那以后我再也不敢用固定预瞄距离了。
算法的执行流程其实就三步:
- 在路径上找到距离车辆前方 ld 处的预瞄点
- 计算车辆当前位置到预瞄点的圆弧曲率
- 根据曲率计算前轮转角,输出给执行器
说白了,每一步都很直观。但为什么实际用起来会有各种问题?因为真实世界的车辆有惯性、有延迟、有轮胎非线性。这些我们后面会一一拆解。
1.3 角色定位:在自动驾驶里干啥的?
在自动驾驶的完整链路中,纯跟踪算法属于控制层。它的上游是路径规划,下游是执行器(转向、油门、刹车)。
我习惯把整个链路画成下面这张图:
从这张图可以看出来,纯跟踪算法处在中间承上启下的位置。规划层给了你一条路径,但路径只是一堆坐标点。怎么让车真正沿着这些点走?这就是纯跟踪要干的事。
注意: 纯跟踪算法假设车辆运动符合阿克曼转向几何,且不考虑轮胎侧偏。这意味着在高速或低附着系数路面(比如雨天、雪地)上,纯跟踪的精度会下降。我曾经在测试场做过对比,干燥路面跟踪误差在10cm以内,湿滑路面直接飙到30cm以上。
1.4 与其他算法的对比
说到控制算法,大家可能还听过MPC(模型预测控制)和LQR(线性二次型调节器)。我简单对比一下:
| 算法 | 计算复杂度 | 跟踪精度 | 适用场景 | 调参难度 |
|---|---|---|---|---|
| 纯跟踪 | 低(毫秒级) | 中等 | 低速、结构化道路 | 低(1-2个参数) |
| LQR | 低(毫秒级) | 中高 | 中高速、线性区域 | 中(权重矩阵) |
| MPC | 高(10-100ms) | 高 | 全速域、复杂工况 | 高(预测时域等) |
我个人习惯在项目初期先用纯跟踪快速验证路径规划的效果。等基本功能跑通了,再考虑上MPC做精细化控制。你想想看,如果纯跟踪都调不好,上MPC只会让问题更复杂。
1.5 本章小结
纯跟踪算法虽然简单,但它是理解自动驾驶控制逻辑的绝佳入口。它的核心就三个要素:预瞄距离、车辆轴距、航向偏差。把这三个东西搞明白,后面调参就有方向了。
嗯,这里我想强调一点:不要小看简单算法。我在实际项目中见过太多人一上来就搞MPC,结果连最基本的路径跟踪都做不好。纯跟踪算法在低速场景(比如园区物流、自动泊车)中表现非常稳定,而且调试成本极低。
一句话总结: 纯跟踪算法 = 几何关系 + 预瞄机制。它不完美,但足够实用。学会它,你就掌握了自动驾驶控制的“基本功”。