1. 项目概述
在自动驾驶和高级驾驶辅助系统(ADAS)领域,高速工况下的路径跟踪一直是个颇具挑战性的问题。传统控制方法在车速超过20m/s时往往难以兼顾响应速度和鲁棒性,特别是在变道、避障等需要快速横向机动的情况下。我们开发的这套LPV+RMPC+PTC组合控制系统,正是针对这一痛点提出的解决方案。
这套系统最显著的特点是实现了:
- 20-25m/s速度范围内的稳定单移线跟踪
- 10-15m/s速度范围内的双移线跟踪
- 对车速和轮胎侧偏刚度变化的自适应能力
- 在CarSim仿真环境下验证的实时控制性能
提示:系统开发环境要求MATLAB 2020a以上版本和CarSim 8.02,需要Optimization Toolbox和CVX优化包支持。
2. 系统架构设计
2.1 整体控制框架
系统采用分层控制架构:
code复制上层控制器(RMPC)
├─ 基于LPV的二自由度车辆模型
├─ 通过LMI在线求解控制律
├─ 输出:前轮转角和附加横摆力矩
└─ 处理状态约束和输入约束
下层控制器(扭矩分配)
├─ 基于QP的最优分配算法
├─ 考虑电机特性和路面条件
└─ 输出:四轮驱动/制动力矩
2.2 车辆动力学建模
核心是带有时变参数的二自由度自行车模型:
matlab复制% 车辆参数初始化
m = 1650; % 整车质量(kg)
lf = 1.04; % 前轴到质心距离(m)
lr = 1.56; % 后轴到质心距离(m)
Iz = 3200; % 横摆转动惯量(kg·m²)
Caf = 80000; % 前轮侧偏刚度(N/rad)
Car = 80000; % 后轮侧偏刚度(N/rad)
% 状态空间矩阵
A = [0, 1, 0, 0;
0, -(Caf+Car)/(m*vx), (Caf+Car)/m, (lr*Car-lf*Caf)/(m*vx);
0, 0, 0, 1;
0, (lr*Car-lf*Caf)/(Iz*vx), (lf*Caf-lr*Car)/Iz, -(lf²*Caf+lr²*Car)/(Iz*vx)];
关键点在于:
- 车速vx作为时变参数实时更新
- 侧偏刚度Caf/Car通过LPV框架调度
- 模型状态包含横向位置、横向速度、横摆角、横摆角速度
3. 控制器设计与实现
3.1 上层RMPC设计
鲁棒模型预测控制器的核心是LMI求解:
matlab复制function [delta_f, M_z] = solveRMPC(rho, x, ref)
% 参数化Lyapunov矩阵P和控制器增益K
[P, K] = solveLMI(rho);
% 构建QP问题
H = [K'*Q*K + R, zeros(2);
zeros(2), S];
f = -2*x'*Q*K;
% 约束条件
A_con = [K; eye(2)];
b_con = [u_max; delta_max];
% 求解
options = optimoptions('quadprog','Display','off');
u = quadprog(H,f,A_con,b_con,[],[],[],[],[],options);
delta_f = u(1);
M_z = u(2);
end
关键设计考量:
- 使用松弛因子处理约束冲突
- 横向加速度限制在±0.4g以内
- 方向盘转角速率不超过120°/s
- 采样周期20ms(50Hz)
3.2 下层扭矩分配
采用带权重的二次规划实现最优分配:
matlab复制cvx_begin
variable T(4)
minimize( norm(T(1)+T(2)+T(3)+T(4) - T_total, 2) + ...
gamma*norm([(T(2)-T(1))*0.5*tf; (T(4)-T(3))*0.5*tr] - M_z, 2) )
subject to
abs(T) <= T_max;
T >= (slip_ratio > 0.1)*T_min;
cvx_end
权重配置原则:
- 横摆力矩跟踪优先于总驱动力
- 前后轴扭矩分配比3:7(后驱特性)
- 单轮滑移率超过10%时激活制动干预
4. 联合仿真实现
4.1 CarSim接口配置
关键配置参数:
matlab复制% CarSim S-Function配置
cs_opts = struct;
cs_opts.sample_time = 0.02; % 20ms同步周期
cs_opts.output_vars = {'Vx','Vy','YawRate','Beta'};
cs_opts.input_vars = {'Steer','TqFL','TqFR','TqRL','TqRR'};
% 初始化接口
cs_initialize('veh_model.cpar', cs_opts);
4.2 仿真结果分析
典型双移线测试数据:
| 指标 | 15m/s | 20m/s | 25m/s |
|---|---|---|---|
| 最大横向误差(m) | 0.12 | 0.18 | 0.28 |
| 横摆角超调(°) | 2.1 | 3.8 | 5.6 |
| 方向盘转速(°/s) | 86 | 112 | 118 |
| 计算耗时(ms) | 8.2 | 9.7 | 12.4 |
注意:当车速超过27m/s时,需激活降速策略防止后轮侧滑
5. 工程实现要点
5.1 实时性优化
- LMI求解加速:预计算参数网格点处的Lyapunov矩阵
- QP热启动:使用上一周期解作为初始猜测
- 代码生成:将核心算法转为C代码通过MexFunction调用
5.2 异常处理机制
matlab复制try
[delta_f, M_z] = solveRMPC(rho, x, ref);
catch ME
if contains(ME.message,'infeasible')
% 激活降级模式
delta_f = limitSteerByVx(vx);
M_z = 0;
warning('RMPC infeasible, fallback to PID');
end
end
5.3 参数标定流程
- 低速(<10m/s)开环测试获取轮胎特性
- 中速(15-20m/s)扫频试验验证模型精度
- 高速(>20m/s)阶跃测试调整权重参数
6. 常见问题排查
6.1 仿真发散问题
可能原因:
- CarSim和Simulink步长不同步 → 检查Triggered Subsystem配置
- 轮胎进入强非线性区 → 降低车速或调整侧偏刚度
- QP求解失败 → 检查约束可行性
6.2 实时性不足
优化方案:
- 减少LPV网格点数量(不少于5个)
- 使用更高效的QP求解器(如OSQP)
- 限制横摆力矩指令带宽
6.3 路径跟踪偏差大
调整策略:
- 增加前视距离(建议0.3-0.5s时距)
- 调整路径预瞄点权重
- 检查转向执行器延迟补偿
这套系统在实际调试中发现,当LPV参数变化率超过15%/s时,需要将控制频率提升至100Hz才能保证稳定性。我们在i7-11800H处理器上测试,单次RMPC求解耗时可控制在5ms以内,满足实时性要求。对于更复杂的工况,下一步考虑引入深度强化学习来优化权重参数的自适应调整。
