纯跟踪算法(Pure Pursuit)是一种用于自动驾驶车辆路径跟踪的几何追踪方法,速度越小,performance越好。该算法建立于自行车模型和阿克曼小车模型的基础上。算法的指令流程是通过选择目标路径上的一个点,然后通过控制方向盘来控制车辆到达那个点,然后再使用同样的方式到达下一个点,当所有的点都跟踪上之后,也就完成了轨迹跟踪。类似于人类驾驶习惯,在参考轨迹上选取离车辆当前位置一定距离的点作为预瞄点,通过调整方向盘转角(前轮转角),控制车辆沿圆轨迹驶向预瞄点,如图所示
算法原理
Pure Pursuit将车辆模型简化为自行车模型(这里默认左轮和右轮的旋转是一致的),通过调整前轮转角,使车子进行画弧运动,从而逼近预瞄点,来消除横向偏差的横向控制算法,算法本质上是一个P控制器,输入为横向位置误差,输出为前轮转角,该算法的的参考点为后轴中心点。
其中OP和OA为以O为原点,与车身相切与点A(后轴中心-参考点)的圆
OA与AB垂直,L围为前后轴的距离,计算后的输出为前轮与车身的夹角算法解释>为了使车辆后轴中心点跟踪圆弧虚线路径到达C点,在三角形OAC中,需要满足的正弦定理关系,
结合图中几何关系,根据在阿克曼转向中可近似得出
又因为三角关系,可以求出下列的第一个等式,联合上面求出的等式
根据上面等式可以得到:纯跟踪控制的效果取决于预瞄距离的选取,预瞄距离越长,前轮转角变化会越小,控制效果会越平滑,预瞄距离越短,控制效果会更精确,但也会带来一定的震荡。由于车速越快单位时间内车辆移动距离会越长,我们选取的预瞄距离应该更远,因此对于预瞄距离的选取应该与车辆的速度成正比
算法的特点
- 短的预瞄距离提供更精确的跟踪,而较长预瞄距离提供更平滑的跟踪。
- 参数k值太小将导致不稳定,而k值太大将导致跟踪精度下降。
- 高水平的鲁棒性:例如,对路径中的不连续性的良好处理。
- 弯道跟踪中,随着速度的增加,稳态误差也增大。