预瞄控制中的相关信息
本篇主要是最后一次对如何调整预瞄控制的纯跟踪算法的参数的说明文档。
都知道在纯跟踪算法中其实可以调整的参数是有限的,而且由于它含有运动学关系,所以对于车轮转角和方向盘转角的映射有着比较严格的要求,一般情况下其实效果还没有pid好用,但是它比较简单,实现起来最快,所以在快速建立原型功能的时候是不二选择。
当定位点在后轴中心、轴距为 2.750m 时,纯跟踪算法的预瞄距离(Lookahead Distance)需要结合车辆速度、行驶场景和轨迹曲率动态调整。以下是具体的计算方法和推荐值:
一、基础预瞄距离公式(核心参考)
纯跟踪算法中,预瞄距离的经典公式为:
plaintext
L = k × v + L₀
其中:
L:预瞄距离(单位:m)
v:车辆速度(单位:m/s)
k:速度系数(经验值,通常 0.5~1.2)
L₀:最小预瞄距离(低速时的基础值,通常取轴距的 1~2 倍)
二、参数的推荐值
1. 最小预瞄距离(L₀)
由于轴距为 2.750m,最小预瞄距离建议取 L₀ = 2.750m × 1.2 ≈ 3.3m(理由:确保低速时(v≈0)仍能稳定跟踪,避免转向过度)
2. 速度系数(k)的场景适配
根据不同速度范围,推荐:
低速场景(v < 5m/s,约 18km/h):k = 0.5,预瞄距离 L = 0.5v + 3.3例:v=3m/s(10.8km/h)时,L ≈ 0.5×3 + 3.3 = 4.8m
中速场景(5m/s ≤ v < 10m/s,18~36km/h):k = 0.8,预瞄距离 L = 0.8v + 3.3例:v=7m/s(25.2km/h)时,L ≈ 0.8×7 + 3.3 = 8.9m
高速场景(v ≥ 10m/s,>36km/h):k = 1.0,预瞄距离 L = 1.0v + 3.3例:v=12m/s(43.2km/h)时,L ≈ 1.0×12 + 3.3 = 15.3m
三、结合轨迹曲率的动态调整
若轨迹存在弯道(曲率 κ 较大),需缩短预瞄距离以避免过度转向:
plaintext
L' = L × (1 - α×|κ|)
其中:
κ:轨迹曲率(κ = 1/R,R 为转弯半径)
α:曲率系数(推荐 0.3~0.5)
示例:当车辆以 v=7m/s 行驶在 R=50m 的弯道(κ=0.02):原预瞄距离 L=8.9m,调整后 L’ = 8.9 × (1 - 0.4×0.02) ≈ 8.8m(小幅缩短,确保转向响应更及时)
四、工程验证与调参建议
初始调试步骤:
在直线路径上测试:从最小预瞄距离(3.3m)开始,逐步增加至高速推荐值,观察是否存在 “蛇形震荡”(预瞄过短)或 “滞后跟踪”(预瞄过长)。
在 90° 直角弯测试:确保过弯时预瞄点不超出弯道范围(通常需将预瞄距离缩短至直道的 70%)。
轮距的间接影响:你的轮距为 1.430m(较宽),车辆横向稳定性较好,可适当放宽高速时的预瞄距离(如最大不超过 20m),避免频繁转向调整。
安全边界:预瞄距离上限建议不超过 L_max = 5×轴距 = 13.75m(高速场景),下限不低于 L_min = 1×轴距 = 2.75m(极端低速)。
综上所述,它的前瞻距离与速度,路径曲率,基础预瞄有关,合理的调整预瞄可以达到更好的效果。
后续我们会对lqr控制的方式进行一个深入的分析,并且会通过一个仿真来实际感受一下lqr+前馈在循迹控制中的效果。(python中的实现,如果可以,还可以考虑通过c++重新进行实现)