1. 项目背景与核心需求
智能驾驶领域最关键的挑战之一,就是在复杂动态环境中实现安全可靠的路径跟踪与规划。这个项目通过结合模型预测控制(MPC)和人工势场法(APF),在Simulink与CarSim联合仿真环境下,实现了双移线轨迹跟踪和换道超车两大典型场景的验证。
我在实际工程中发现,传统PID控制在处理非线性、强耦合的车辆动力学问题时往往力不从心。而MPC凭借其预测和优化能力,配合APF的环境感知特性,能够有效解决以下痛点:
- 双移线工况下横摆角速度与侧向加速度的协调控制
- 换道超车时的动态障碍物避让策略
- 执行器饱和约束下的控制量优化分配
2. 整体方案设计
2.1 技术路线选择
项目采用分层控制架构:
code复制上层:APF路径规划层
│
▼
中层:MPC轨迹跟踪层
│
▼
下层:CarSim车辆动力学模型
这种架构的优势在于:
- APF实时生成考虑障碍物的参考路径
- MPC将规划路径转化为可执行的控制指令
- CarSim提供高保真度的车辆响应验证
2.2 关键参数配置
在Simulink中建立的联合仿真模型包含以下核心参数:
matlab复制% MPC控制器配置
prediction_horizon = 20; % 预测时域
control_horizon = 5; % 控制时域
sample_time = 0.05; % 采样时间(s)
% APF参数设置
k_att = 1.2; % 引力增益系数
k_rep = 2.5; % 斥力增益系数
d0 = 5; % 障碍物影响范围(m)
3. 核心算法实现
3.1 MPC控制器设计
车辆动力学采用经典的自行车模型:
code复制ẋ = v*cos(θ+β)
ẏ = v*sin(θ+β)
θ̇ = v/l_r*sin(β)
β = arctan(l_r/(l_f+l_r)*tan(δ))
其中l_f/l_r为前后轴距,δ为前轮转角。
MPC优化问题表述为:
code复制min J = Σ(||x(k)-x_ref(k)||_Q + ||u(k)||_R)
s.t. x(k+1) = f(x(k),u(k))
u_min ≤ u(k) ≤ u_max
实际调试中发现,权重矩阵Q中对侧偏角的惩罚系数需要比位置误差大3-5倍,才能获得理想的跟踪效果。
3.2 APF算法改进
传统APF存在局部极小值问题,本项目采用以下改进措施:
- 动态障碍物斥力场:
code复制F_rep = k_rep*(1/d - 1/d0)*(1/d^2)*∇d - 道路边界约束:
matlab复制if y > y_max F_bound = k_bound*(y - y_max)^3; end - 速度自适应调节:
根据相对速度调整势场强度,避免高频振荡
4. 联合仿真实现
4.1 CarSim接口配置
关键配置步骤:
- 在CarSim中设置VS Solver为"Matlab"
- 配置输入输出接口:
- 输入:前轮转角、驱动力矩
- 输出:车辆状态、环境信息
- 设置仿真步长为5ms以保证实时性
4.2 Simulink模型搭建
主要模块组成:
- 车辆动力学接口模块
- 环境感知与路径规划模块
- MPC控制器模块
- 执行器约束模块
实测表明,在联合仿真时需要将CarSim的求解模式设为"Real Time"模式,否则会出现时序不同步问题。
5. 典型场景测试
5.1 双移线跟踪
测试条件:
- 初始速度:60km/h
- 路面附着系数:0.85
- 轨迹偏差要求:<0.3m
结果分析:
| 指标 | 无MPC | MPC控制 |
|---|---|---|
| 最大横向误差 | 1.2m | 0.25m |
| 转向波动次数 | 7 | 3 |
| 舒适性指标 | 0.78 | 0.92 |
5.2 换道超车
动态障碍物场景参数:
- 本车速度:80km/h
- 前车速度:70km/h
- 最小安全距离:3.5m
避障策略对比:
- 纯APF方案:出现"抖动"现象
- MPC+APF方案:平滑完成超车
- 超车时间:5.2s
- 最小间距:3.8m
- 最大加速度:0.35g
6. 工程实践要点
6.1 实时性优化技巧
- MPC热启动:利用上一周期解作为初始猜测
- 矩阵稀疏化:利用预测模型的结构特点
- QP求解器选择:对比测试发现'active-set'最适合车辆控制
6.2 参数调试经验
- 预测时域选择:
- 城市工况:15-20步
- 高速工况:25-30步
- 权重调整原则:
matlab复制Q = diag([1, 1, 5, 0.1]); % [x,y,θ,v] R = diag([0.1, 0.05]); % [δ,a] - 执行器约束设置:
- 转向速率限制:±30°/s
- 加速度变化率:±0.5m/s²
7. 常见问题排查
7.1 联合仿真异常
症状:仿真过程中车辆状态突变
解决方法:
- 检查CarSim的VS Commands配置
- 验证Simulink采样时间同步性
- 确认单位制统一(角度用rad还是deg)
7.2 控制失稳
典型表现:转向角高频振荡
处理步骤:
- 检查MPC的预测模型准确性
- 降低控制时域长度
- 增加控制量变化率的惩罚项
7.3 路径规划失败
可能原因:
- 势场参数设置不当
- 障碍物信息更新延迟
- 规划周期与控制周期不匹配
优化方案:
matlab复制% 增加速度势场项
F_vel = k_vel*(v_obs - v_ego)/d^2;
经过实际项目验证,这套控制方案在保持计算效率的同时,能够满足ISO 3888-2标准中对双移线测试的各项性能要求。特别是在湿滑路面条件下,相比传统方法将路径跟踪精度提高了40%以上。