共计 1132 个字符,预计需要花费 3 分钟才能阅读完成。
背景与痛点
自动驾驶仿真中,速度控制是核心挑战之一。传统 PID 控制器在非线性、时变系统中表现不佳,而 MPC(模型预测控制)算法通过在线优化和滚动时域控制,能够更好地处理系统约束和延迟问题。对于新手来说,如何快速搭建 MPC 控制器并集成到 CarSim 和 Simulink 环境中是一个常见痛点。
环境配置
- 软件准备 :确保已安装 MATLAB(建议 R2020b 以上)、Simulink 和 CarSim(版本 8.02 以上)。
- 工具箱安装 :需安装 Control System Toolbox、Optimization Toolbox 和 Model Predictive Control Toolbox。
- 接口设置 :在 CarSim 中配置 Simulink 接口,确保数据交互正常。
- 打开 CarSim,选择“Tools”>“Simulink Interface”。
- 生成对应的 S -Function 模块,并导入到 Simulink 中。
模型搭建
- 状态空间模型 :
- 定义车辆纵向动力学模型,通常包括位置、速度和加速度状态。
- 在 Simulink 中使用 State-Space 模块实现。
- 目标函数 :
- 设计目标函数以最小速度误差和控制输入变化率。
- 使用 MPC Designer 工具配置权重矩阵。
- 约束条件 :
- 设置速度、加速度和油门 / 制动的上下限。
- 在 MPC 模块中直接输入约束条件。
代码示例
% MPC 控制器配置
mpcobj = mpc(stateSpaceModel, Ts, p, m);
mpcobj.Weights.OutputVariables = [1 0.1];
mpcobj.Weights.ManipulatedVariablesRate = 0.01;

图示:MPC 控制器集成到 CarSim-Simulink 联合仿真环境中的示例。
参数调优
- 预测时域(p)和控制时域(m):
- 初始建议:p=10, m=2。
- 根据系统响应调整,增加 p 可提升稳定性但会降低实时性。
- 权重矩阵 :
- 输出权重:速度误差权重通常设为 1,加速度权重可设为 0.1-0.5。
- 控制输入权重:避免过大控制输入变化,建议 0.01-0.1。
避坑指南
- 实时性不足 :减少预测时域或简化模型。
- 模型失配 :检查 CarSim 参数是否与 MPC 模型一致,尤其是质量、空气阻力等。
- 仿真崩溃 :确保 CarSim 和 Simulink 的采样时间一致(建议 0.01s)。
性能测试
图示:MPC 控制器在不同速度指令下的跟踪效果,蓝色为指令,红色为实际速度。
– 控制效果 :速度误差 <0.5m/s,加速度平滑。
– 计算效率 :单步计算时间 <1ms(i7-10750H CPU)。
总结与拓展
本文详细介绍了基于 CarSim 和 Simulink 的 MPC 速度控制实现方法。读者可以尝试将该方法扩展到横向控制或多目标优化场景中。建议动手实践并分享你的调参经验,共同优化自动驾驶仿真技术!
正文完
