阿克曼转向Pure Pursuit 纯跟踪控制算法阿克曼结构前轮来控制转向

假设车沿着R的半径在旋转,车身前轮到后轮轴距L,因为车在旋转
重点理解这句话
所以前轮的方向始终是该圆周的切线,遵循曲率

所以得到前轮的转角应该为

tan(δ)=LR tan(\delta)=\frac{L}{R}

路径跟踪算法

Pure Pursuit 纯跟踪控制算法以车轮后中心为点,需要该机器经过该目标点gx gy,
ld:当前点到要跟随目标点的距离
α\alpha:当前的方向和到目标点的方向差

三角公式可得一下函数
ldsin(2α)=Rsin(90α) \frac{ld}{sin(2\alpha)}=\frac{R}{sin(90-\alpha)}
简化一下如下
R=ld2sin(α) R=\frac{ld}{2sin(\alpha)}

两轮差速路径跟随组合公式

假如是两轮机器人,没有轴距 即可得到机器人路径跟随的算法

R=ld2sin(α) R=\frac{ld}{2sin(\alpha)}
R=vwR=\frac{v}{w}
两者结合,消除R
==>
vw=ld2sin(α) \frac{v}{w}=\frac{ld}{2sin(\alpha)}
再结合DWA算法 就可以仿真出来一组基于当前ld ,的vw 集合,最后选择比较好的路径算法

阿克曼路径角度输出

结合这两个公式 组合推算当前控制角度
tan(δ)=LR tan(\delta)=\frac{L}{R}

R=ld2sin(α) R=\frac{ld}{2sin(\alpha)}
两个公式 结合消除R ==>
ld:当前点到要跟随目标点的距离,该值是根据当前点和目标点的位置,计算得出
α\alpha:当前的方向和到目标点的方向差
该值是根据当前航向角和目标点的位置,计算得出
L:阿克曼车型轴间距,前轮中心到后轮中心的距离
tan(δ)=2Lsin(α)ld tan(\delta)=\frac{2Lsin(\alpha)}{ld}

在具体的实际情况中,ld 即目标跟随点的位置是根据弧度在发生变化的
可以用
l=kv(t)l=kv(t)

具体代码测试

https://github.com/AGV-IIT-KGP/PythonRobotics/tree/master/PathTracking/pure_pursuit

参考
https://zhuanlan.zhihu.com/p/48117381

相关文章:

  • 2021-06-30
  • 2021-06-29
  • 2021-06-27
  • 2021-12-04
  • 2021-05-02
  • 2021-08-15
  • 2022-01-29
猜你喜欢
  • 2022-12-23
  • 2021-09-10
  • 2022-12-23
  • 2021-05-13
  • 2021-11-29
  • 2021-05-28
  • 2022-12-23
相关资源
相似解决方案