横向控制:模型、算法与调参
横向控制目标是让车辆稳定跟踪参考路径并维持姿态稳定,直接影响行车安全与乘坐舒适性。
1. 车辆运动学与动力学模型
1.1 运动学自行车模型
简化假设:忽略轮胎侧偏角,前轴为转向轴,后轴固定。状态方程:
其中 \(L\) 为轴距,\(\delta\) 为前轮转角,\(\psi\) 为航向角。
路径跟踪误差模型(Frenet 坐标系):
其中 \(e_y\) 为横向位置误差,\(e_\psi\) 为航向误差,\(\kappa\) 为参考路径曲率。
1.2 动力学自行车模型
考虑轮胎侧偏力,适用于中高速场景:
轮胎侧偏力线性化:\(F_{yf} = C_{\alpha f} \alpha_f\),\(F_{yr} = C_{\alpha r} \alpha_r\)
其中 \(C_{\alpha f/r}\) 为前/后轮侧偏刚度,\(\alpha\) 为轮胎侧偏角。
模型选择原则
低速(< 30 km/h)泊车场景:运动学模型足够;高速(> 80 km/h)或需精细控制:使用动力学模型。
2. 误差定义
常用误差状态:
| 误差量 | 符号 | 说明 |
|---|---|---|
| 横向位置误差 | \(e_y\) | 车辆重心到参考线的垂直距离 |
| 航向误差 | \(e_\psi\) | 车辆航向与参考路径切线方向之差 |
| 位置误差变化率 | \(\dot{e}_y\) | 横向误差的时间导数 |
| 航向误差变化率 | \(\dot{e}_\psi\) | 航向误差的时间导数 |
工程注意
误差定义应与规划轨迹坐标系保持一致,避免坐标转换引入抖动。在曲率较大的路段,需用弧长参数化而非欧氏距离计算投影点。
3. 经典横向控制算法
3.1 Pure Pursuit(纯追踪)
算法思路:找到参考路径上距前视距离 \(l_d\) 的预瞄点,计算转角:
其中 \(\alpha\) 为预瞄点相对车辆的方位角,\(L\) 为轴距,\(l_d\) 为前视距离。
前视距离自适应:
- 车速越高,前视距离越大,避免高速抖动
- \(l_{d,\min}\) 保证低速时仍有最小前视
优缺点:
| 优点 | 缺点 |
|---|---|
| 实现简单、鲁棒性强 | 高速场景欠稳,曲率大时超调 |
| 对噪声不敏感 | 仅消除横向偏差,不直接控制航向 |
3.2 Stanley 控制器
Stanley 控制律同时考虑横向误差和航向误差:
其中 \(k\) 为增益参数,\(\epsilon\) 为防止低速除零的小正数。
特点:
- 前轴参考点,低速效果好
- 参数对噪声敏感,高速需要附加滤波
- \(k\) 值过大会导致转向振荡
3.3 LQR(线性二次调节器)
设计流程:
- 线性化车辆模型(运动学或动力学)
- 定义状态向量:\(\mathbf{x} = [e_y, \dot{e}_y, e_\psi, \dot{e}_\psi]^T\)
- 定义代价函数:
- 求解代数 Riccati 方程(ARE)得到最优增益矩阵 \(K\):
增益矩阵(示例):
Q/R 矩阵调参含义:
| 参数 | 增大效果 | 减小效果 |
|---|---|---|
| \(Q_{e_y}\)(横向误差权重) | 更快收敛,可能抖动 | 响应慢 |
| \(Q_{e_\psi}\)(航向误差权重) | 更快修正航向 | 航向误差容忍度高 |
| \(R_\delta\)(转角惩罚权重) | 转向更平缓 | 响应更快但可能激进 |
Gain Scheduling(增益调度):
不同车速下需使用不同增益,避免高速增益不足或低速增益过大:
# 伪代码:按车速插值增益
def get_lqr_gain(v):
if v < 20:
return K_low # 低速增益
elif v < 60:
return interpolate(K_low, K_mid, v, 20, 60)
else:
return K_high # 高速增益
3.4 MPC(模型预测控制)
MPC 在有限时域内在线求解最优控制序列,每步仅执行第一个控制量。
预测模型(离散化,步长 \(\Delta t\)):
代价函数:
约束:
MPC vs LQR:
| 维度 | LQR | MPC |
|---|---|---|
| 约束处理 | 难(需后处理限幅) | 直接建模 |
| 算力需求 | 低(离线求解 \(K\)) | 高(在线 QP/NLP) |
| 性能上限 | 较低(线性假设) | 高(可非线性) |
| 工程难度 | 低 | 高(调参/求解器选型) |
4. 执行器延迟补偿
控制指令下发后,转向执行器存在 50–200 ms 的延迟。不补偿会导致高速场景稳定性下降。
方法一:状态预测
将延迟期间的状态向前预测后再进行控制计算:
方法二:Smith 预估器
在控制回路中引入延迟模型,提前补偿延迟影响。
方法三:MPC 中建模延迟
在 MPC 预测模型中将延迟步数作为额外状态处理:
5. 常见问题诊断
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 直道持续抖动 | 增益过高或定位噪声过大 | 降低 \(Q_{e_y}\),增加定位输出滤波 |
| 弯道切角(内侧偏离) | 预瞄距离过大或曲率前馈不足 | 减小 \(l_d\),增加前馈曲率补偿 |
| 高速横摆发散 | 动力学参数偏差或 gain scheduling 不当 | 检查轮胎侧偏刚度估计,重新设计高速增益 |
| 低速跟踪迟缓 | 增益过低或执行器死区未补偿 | 提高低速增益,添加死区前馈 |
| 路口横向误差大 | 轨迹曲率变化快,前馈项不足 | 增加曲率前馈,减小预瞄距离 |
6. 调参流程建议
- 先跑直道验证定位质量:分析 \(e_y\) 和 \(e_\psi\) 的噪声水平
- 低速弯道验证基础跟踪:从 Pure Pursuit 开始,确认基本跟踪可行
- 引入 LQR/MPC,先保稳定:从保守增益开始,逐步提高
- 分速度段回归:低速/城区/高速分别测试,建立 Gain Schedule
- 压力测试:急切入、大曲率弯道、颠簸路面验证鲁棒性
7. 评估指标
| 指标 | 说明 | 参考目标 |
|---|---|---|
| RMS 横向误差 | 整段轨迹误差均方根 | < 10 cm(城区) |
| 95 分位横向误差 | 长尾误差控制 | < 20 cm |
| RMS 航向误差 | 航向跟踪精度 | < 1°(城区) |
| 峰值横向加速度 | 乘坐舒适性 | < 3 m/s² |
| 峰值横向 jerk | 舒适性细指标 | < 5 m/s³ |
| 转向动作频率 | 方向盘抖动程度 | 与主观评价结合 |