Pure Persuit算法基础

纯跟踪(Pure Pursuit)算法是一种用于移动机器人或自动驾驶车辆的路径跟踪方法。其基本目标是让机器人沿着预定路径行驶,同时保持一定的参考速度。在给定线速度的前提下,它计算移动的角速度令机器人从其当前位置到达机器人前方的某个前瞻点(lookahead)。该算法根据机器人的当前位置不断地追着它前面的一个点,直到路径的最后一个点。
根据模型的不同,Pure Pursuit算法需要使用不同的控制公式,例如:

自行车模型:

在这里插入图片描述
如上图所示,点C为路径上的一个点(前视点/预瞄点),Pure Pursuit算法的目标则是控制B的角速度,使得A点可以经过C点。
假设我们以AC两点画一个圆弧,注意,由于要考虑到运动学约束,这段圆弧应当与直线AB相切,也就是角OAB=90度。同时我们知道对于圆弧,OA=OC,三角形AOC为等腰三角形。
∠ O A C = ∠ O C A \angle OAC = \angle OCA OAC=OCA
同时有:
∠ O A C + ∠ C A B = π 2 \angle OAC +\angle CAB = \frac{\pi}{2} OAC+CAB=2π
即:
2 ∗ ( ∠ O A C + ∠ C A B ) = π 2*(\angle OAC +\angle CAB )= \pi 2OAC+CAB=π
于是可以得到:
∠ O A C + ∠ O C A + 2 ∗ ∠ C A B = π \angle OAC + \angle OCA + 2*\angle CAB = \pi OAC+OCA+2CAB=π
通过三角形内角和可以知道:
∠ A O C = π − ∠ O A C − ∠ O C A = 2 ∗ ∠ C A B \angle AOC = \pi - \angle OAC - \angle OCA = 2*\angle CAB AOC=πOACOCA=2CAB
过O点做AOC的角平分线,根据等腰三角形原理,其垂直于AC且平分AC。于是有:
s i n α = l d 2 R sin\alpha = \frac{l_d}{2R} sinα=2Rld
然后,我们连接OB,需要求出B点在当前位置绕O点的旋转角度,则B点轮子的朝向应垂直于OB,于是根据几何图形原理我们可以知道:
∠ δ = ∠ A O B \angle \delta = \angle AOB δ=AOB
即:
t a n δ = L R tan\delta = \frac{L}{R} tanδ=RL
而根据前面我们知道:
R = l d 2 s i n α R = \frac{l_d}{2sin\alpha} R=2sinαld
联立上式得到:
t a n δ = 2 L s i n α l d tan\delta = \frac{2Lsin\alpha}{l_d} tanδ=ld2Lsinα
推出:
δ = arctan ⁡ ( 2 L sin ⁡ ( α ) l d ) \delta = \arctan(\frac{2L \sin(\alpha)}{l_d}) δ=arctan(ld2Lsin(α))
根据上式,在知道t时刻的车身和目标路径点的夹角\alpha以及距离目标路径点的前视距离l_d的情况下,轴距一定,可以利用上式估计出需要的前轮转角。

差速模型:

在这里插入图片描述
对于差速模型的机器人,其没有前后轮的距离L这个参数,其运动由以下方程控制:
v = R ∗ w v = R*w v=Rw
上式:
v v v是机器人的线速度
w w w是机器人的角速度
R R R是机器人的旋转半径
在自行车模型中我们知道:
R = l d 2 s i n α R = \frac{l_d}{2sin\alpha} R=2sinαld
联立方程可以得到:
w = v R = 2 v s i n α l d w= \frac{v}{R}=\frac{2vsin\alpha}{l_d} w=Rv=ld2vsinα

双舵轮模型:

在这里插入图片描述双舵轮模型与自行车模型类似,相当于两个自行车模型的拼接,同样可以按照自行车模型进行分析。

算法测评

在较低速度下给定一条三阶贝塞尔曲线,使用Pure Persuit算法进行跟踪,实测效果图如下:
起始:
在这里插入图片描述结束:
在这里插入图片描述
上图中红色线条为贝塞尔的输出轨迹,蓝色线条为机器人实际运动轨迹,基本能完成较平滑曲线的跟随效果。

个人总结

Pure Persuit算法本身的原理不难理解,它主要基于几何原理进行的设备控制,本身不考虑太多的运动学约束。同时机器人的路径跟踪效果应该会比较依赖于预瞄点。对于曲线部分而言,如果曲率很小而预瞄点很远的话,对于曲线的跟随性应该会很差。对于直线而言,如果设备在开始时与轨迹有横向偏差,则在运动过程中机器人会逐渐收敛到曲线,但是收敛速度取决于预瞄点距离。同时这个算法本身虽然跟随曲线,但是本身并不会很大程度上考虑轨迹曲线,而是以离散点的形式存在,所以它的横向到点精度受曲线本身影响,不能保证机器人到点时完全消除横向误差。
参考:
车辆控制纯跟踪算法(pure pursuit)
纯跟踪算法(Pure Pursuit)在差速机器人上的应用
双舵轮AGV轨迹跟踪Pure Pursuit算法模型分析、python代码实现
ROS实现无人驾驶控制算法(一)——pure pursuit

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MATLAB中的Pure Pursuit是一种路径规划算法,用于模拟自动驾驶车辆等应用场景中的目标跟踪。该算法通过计算车辆当前位置与目标位置之间的距离与方向差,实现车辆在给定路径上跟踪目标。 Pure Pursuit算法的实现步骤如下:首先,需要确定车辆与路径的几何关系。在路径上选择一个点作为目标点,然后根据车辆当前状态计算目标点与车辆的位置、朝向之间的距离和方向差。根据这些信息,可以计算出车辆与目标点之间的前轮转角。 其次,需要根据车辆的物理约束来选择目标点。通常情况下,车辆无法瞬间转向,因此需要选择一个合理的目标点,使得车辆能够平滑地跟踪路径。在选择目标点时,可以考虑车辆的转弯半径、最大转角等因素。 最后,需要根据车辆的控制系统来执行前轮转角。根据目标点与车辆之间的距离和方向差,可以计算出车辆与目标点之间的前轮转角。通过控制系统,可以将这个转角转化为车辆的控制指令,从而实现车辆在给定路径上的跟踪。 总结来说,MATLAB中的Pure Pursuit算法通过计算车辆与目标点之间的距离和方向差,实现车辆在给定路径上的跟踪。该算法需要确定车辆与路径的几何关系、选择合适的目标点,并根据车辆的控制系统执行前轮转角。通过这些步骤,可以实现自动驾驶车辆等应用场景中的路径规划。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶执念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值