一、纯追踪算法的几何直觉

纯追踪算法,说白了就是让车像狗追飞盘一样跑。

你想想看,狗追飞盘的时候,它不会去计算什么复杂的轨迹。它就看飞盘在哪儿,然后调整自己的方向,一直朝着飞盘跑。纯追踪算法也是这个道理——我们给车设定一个“目标点”,然后让车一直朝着这个点跑。

我刚开始做路径跟踪时,总觉得这方法太简单,肯定不靠谱。直到有一次在测试场,我用纯追踪算法让一辆车以60km/h的速度跑了个8字弯,结果稳得一批。嗯,从那以后我再也不敢小看这个“简单”的算法了。

1.1 核心思想:追着目标点跑

纯追踪算法的核心就一句话:在路径上选一个前视点,然后控制车辆转向,让车辆沿着一条圆弧到达这个点

这里面有三个关键要素:

  • 当前车辆位置:车现在在哪儿
  • 前视点:路径上离车一定距离的目标点
  • 圆弧轨迹:连接当前位置和前视点的圆弧

说白了,我们就是在做一件事:用圆弧去拟合路径。每次只拟合一小段,然后不断更新。

关键理解:纯追踪不是让车沿着路径走,而是让车始终朝着路径上的某个点走。这个区别很重要。

二、前视距离:算法的灵魂参数

前视距离(Look-ahead Distance)是纯追踪算法里最重要的参数,没有之一。

什么叫前视距离?就是从车辆当前位置到目标点之间的距离。这个距离决定了车是“看得远”还是“看得近”。

2.1 前视距离的影响

前视距离 效果 问题
太小 跟踪精度高,转弯灵活 容易震荡,高速不稳定
太大 轨迹平滑,高速稳定 切弯严重,精度差

我记得有一次做园区物流车项目,一开始把前视距离设成了固定值2米。结果车在直道上跑得挺好,一到弯道就开始画龙。后来改成速度相关的动态前视距离,问题就解决了。

经验之谈:前视距离一般取车速的0.5-2倍。比如车速10m/s,前视距离可以设在5-20米之间。具体值需要根据车辆特性和路径曲率来调。

2.2 动态前视距离

实际工程中,我们很少用固定前视距离。为什么?因为车速在变,弯道曲率也在变。

我常用的公式是这样的:

L_d = L_0 + k_v * v

其中:

  • L_d:前视距离
  • L_0:基础前视距离(一般取1-3米)
  • k_v:速度系数(一般取0.5-1.5)
  • v:当前车速

你想想看,车速越快,前视距离就得越大。不然车还没反应过来就到弯道了,肯定要出事。

避坑指南:我曾经在雨天的测试中吃过亏。当时前视距离设得偏大,结果路面湿滑,车在弯道直接推头了。后来我加了个路面附着系数修正项,才把这个问题解决。

三、圆弧拟合与曲率计算

有了前视点,接下来就是怎么让车过去。纯追踪的做法是:用一条圆弧连接当前位置和前视点

3.1 几何关系

来看这个几何关系:

  • 车辆当前位置:点P
  • 前视点:点G
  • 车辆航向角:θ
  • 前视点相对于车辆的方向角:α
  • 前视距离:L_d
  • 圆弧半径:R

根据几何关系,我们可以得到:

R = L_d / (2 * sin(α))

这个公式很关键。它告诉我们:圆弧半径由前视距离和角度偏差共同决定

3.2 曲率计算

曲率是半径的倒数:

κ = 1 / R = 2 * sin(α) / L_d

嗯,这里要注意:曲率有正负之分。左转为正,右转为负。这个符号在控制里很重要,搞反了车就往反方向跑了。

核心公式:κ = 2 * sin(α) / L_d

这个公式就是纯追踪算法的数学本质。所有工程实现都是围绕它展开的。

四、转向角推导

有了曲率,接下来就是怎么转方向盘。这里要用到车辆的运动学模型。

4.1 阿克曼转向几何

对于前轮转向的车辆,转向角δ和曲率κ的关系是:

δ = arctan(L * κ)

其中L是车辆轴距。

把曲率公式代入:

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

这就是纯追踪算法的最终控制律。

4.2 工程实现要点

实际编码时,有几个坑要注意:

  1. 角度归一化:sin(α)计算前,确保α在[-π, π]范围内
  2. 防止除零:L_d不能太小,一般设个下限
  3. 转向限幅:计算出的δ不能超过车辆最大转向角

代码小技巧:我习惯在计算前先判断L_d是否小于某个阈值(比如0.1米),如果小于就直接输出0转向角,避免数值问题。

五、知识体系总览

下面这张图展示了纯追踪算法的完整知识结构:

纯追踪算法知识体系 纯追踪算法 几何直觉 前视距离 圆弧拟合 转向角推导 核心思想 追着目标点跑 圆弧拟合路径 不断更新目标 关键参数 固定 vs 动态 速度相关 曲率自适应 数学基础 R = L_d/(2sinα) κ = 2sinα/L_d 曲率正负判断 控制输出 阿克曼模型 δ = arctan(Lκ) 转向限幅 工程实践:参数调优 + 边界处理 + 实车验证 图:纯追踪算法知识体系结构图

六、总结

纯追踪算法的核心就三件事:

  1. 选点:在路径上选一个前视点
  2. 算弧:用圆弧连接当前位置和前视点
  3. 转舵:根据圆弧曲率计算转向角

说白了,这个算法就是用几何关系代替了复杂的动力学模型。它简单、直观、容易实现,在低速场景下表现非常好。

当然,它也有局限性。比如高速时精度会下降,对路径曲率变化敏感。但这些我们后面会讲到怎么优化。

一句话记住纯追踪:前视选点,圆弧拟合,几何转向。


公众号:蓝海资料掘金营,微信deep3321