【自动驾驶】基于车辆几何模型的横向控制算法 | Pure Pursuit 纯跟踪算法详解与编程实现

时间:2024-10-12 09:46:57


写在前面:
???? 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。????


???? 人生如戏,我们并非能选择舞台和剧本,但我们可以选择如何演绎 ????
感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行~~~



文章目录

  • 引言
  • 一、纯跟踪算法简介
  • 二、自行车模型概述
  • 三、纯跟踪算法理论基础
  • 3.1 算法基本思想
  • 3.2 几何关系推导
  • 四、纯跟踪算法实现步骤
  • 五、纯跟踪算法优化
  • 5.1 前视距离对性能的影响及优化策略
  • 5.2 根据速度缩放前视距离
  • 5.3 比例系数的影响及调整
  • 5.4 限制值范围
  • 5.5 高度鲁棒性
  • 六、纯跟综算法的难点与局限性
  • 6.1 最佳前视距离的选择
  • 6.2 路径追踪与稳定性的平衡
  • 6.3 高速下前视距离的调整与稳态误差
  • 七、编程实现
  • 7.1 pure_pursuit.param.yaml
  • 7.2 pure_pursuit_lateral_controller.cpp
  • 7.3 pure_pursuit.cpp
  • 7.4 planning_utils.cpp
  • 八、总结
  • 参考资料



引言

  在自动驾驶领域,Pure Pursuit纯跟踪算法作为一种高效的车道保持技术,备受关注。本文将带您深入解析Autoware开源项目中Pure Pursuit算法的实现细节,揭秘自动驾驶车辆如何精确追踪参考轨迹。通过讲解算法原理、实现步骤及优化策略,探索这一关键技术的精髓。


一、纯跟踪算法简介

目前主流方法有两类:

  • 基于几何的方法
  • 基于模型的方法

  本篇博客介绍基于几何方法的 Pure Pursuit 纯跟踪算法

  Pure Pursuit 纯追踪算法是一种广泛使用的基于几何的追踪方法,建立在自行车模型和阿曼转向几何基础上,在低速状态下有比较好的效果。


二、自行车模型概述

  在讲纯追踪算法之前,先回顾一下自行车模型。

  自行车模型是将四轮简化成两轮的模型,假设车只在平面上行驶,最大好处是简化了前轮转向角和后轮轨迹曲率之间的关系,根据阿克曼转向几何关系,可以建立车辆前轮转向角和后轮轨迹曲率之间的关系。

【自动驾驶】基于车辆几何模型的横向控制算法 | Pure Pursuit 纯跟踪算法详解与编程实现_c++

,后轮滑过的半径为 ,有如下关系:
其中, 是前轮转向角, 是轴距,


三、纯跟踪算法理论基础

3.1 算法基本思想

  纯跟踪算法最基本的思想就是参考人类驾驶员的行为,以车的后轮轴心为基点,通过控制前轮转向,使得车沿着一条经过预瞄点的圆弧行驶。即 Pure Pursuit 算法以后轮轴心为切点,纵向车身为切线,通过控制前轮转角,使得车辆沿着一条通过目标点的圆弧行驶。

【自动驾驶】基于车辆几何模型的横向控制算法 | Pure Pursuit 纯跟踪算法详解与编程实现_横向控制_08

长度的路径点,

3.2 几何关系推导

,转向中心是 ,后轮的中心是 ,可以构建出三角形

【自动驾驶】基于车辆几何模型的横向控制算法 | Pure Pursuit 纯跟踪算法详解与编程实现_自动驾驶_15


  由于知道目标点和车身后轮方向,即目标点方向和当前航向角的夹角为 。而实际是切线,所以可得到 ,因为 是等腰三角形。所以两个底角相等,都等于 ,由于是三角形,所以顶点角度就是

,刚才讲过 ,所以根据三角形正弦定理,可得:
由三角函数就可以把这两项展开,得到:
<