Pure Pursuit
特点
是有look ahead distance: ld, (前视距离)这个距离与前进速度成比例kdd,速度越快需要往前看的更远。
纯追踪控制器的调整就变成了调整系数k,通常来说,会使用最大,最小前视距离来约束前视距离,越大的前视距离意味着轨迹的追踪越平滑,小的前视距离会使得追踪更加精确(当然也会带来控制的震荡)
优点
因为看的远,汽车行驶时非常robust,即使参考曲线时不连续的,而是way points形式的,也不会造成很大影响,
而且不会对速度,弯道弧度的瞬间变化过度敏感。
缺点
cutting corner: 在转弯处,因为转向角度一直是根据前面的位置状态决定的,所以它通常超前拐弯,不能很好的贴合设计的弯道线路,
而且可以从公式上看到,这种方式并没有考虑cross track error: e,因此在转弯时偏离预设道路的问题没法很好解决。
曲率或曲率半径对pure pursuit工作效果影响很大,某个曲率下,给定的pure模型可能工作的很好,在另一个曲率下,工作效果会突然变差,这是因为pure仅仅考虑了curvature,因为对curvature的依赖性就很强。并且这种效果会随着车速的增加越发增强。
适合
直线多、弯道少、精度不太高的场合。
pure pursuit预瞄距离系数K越大,跟随效果会越差,随着K减少,效果变好,继续减少,跟随效果会突然变差,最终跟随发散,无法工作。
Stanley
特点
综合考虑了heading error 和 cross track error两个问题
考虑到了车辆后轴中心与预定轨迹的横向偏差e_fa, 车辆头指向与预定轨迹heading angle 方向的夹角
对于stanley, 比pure好的地方是考虑到了预定点heading angle 和真是的车辆heading angle只差, 作为一个前馈控制,提前补足了在转弯过程中的车辆转角,设计者可以根据需求,对前馈值进一步增加增益系数。同时还推荐使用与速度相关的可变增益系数,可以更好的弥补此类仅考虑车辆运动学,而忽略车辆动力学的模型的不足。增益系数的设定方法可以参考PID系数整定法。
优点
相对比Purepursuit而言,这种方式不会出现cutting corner的现象,因为它并没有视野提前量,而且对cross track error很敏感,所以能够很好的贴合预定线路。
缺点
因为它不会向前看,只关注现在的状态,所以对外界的刺激很敏感,不像PurePursuit那样robust,这种现象在waypoints这种不连续的预定线路下很明显。车在行驶的时候晃来晃去的,反映在数据上就是steering angle的变化非常的reckless,像是酒驾的司机。
适合
适合用在normal operation下,给定的曲线信息也要是连续的。
MPC
特点
。首先这种方式会往前看,确保自己不短视,能够有一定的抗干扰能力。之后根据自己现阶段的状态,预测采用不同的策略(不同的steering angle)时,t秒后自己状态是怎么样的。然后指定一种(表现指标)performance index判定不同策略的好坏,选择在这种指标下最好的结果。在trace track的场景下就可以把表现指标设为t秒后,到达我现在视野内前方的某个位置。根据这个选择最好的steering angle。这样的话看起来和PurePursuit有点像。但关键在于MPC在一步步根据自己目前的状态的做预测然后控制汽车一步步往前走, 而PurePursuit只往前看,不管自己怎么移动过去的,也不会预测。
还有一点就是MPC有一个horizon time, 做预测的整体时间Ttotal,假设为20s。那MPC就会根据现在的状态预测之后每一秒的状态直到20s后,然后再根据自己每一秒移动后的状态更新之后20s每一步的预测。像是在下棋,每一步都挑最优解,同时根据每一步之后的变化谋划未来。
优点
这种方法当然非常好,能够非常精确的规划运动,但是每步都用到了最优化求解所以很考验计算能力。在模拟中效果也很好,没有cutting corner,steering angle的变化也很稳定。
缺点
计算量大
适合
LQR
特点
优点
缺点
适合