基于MATLAB/Simulink与CarSim联合仿真MPC的智能汽车横向主动避障控制,三自由度转向避撞动力学模型
采用MATLAB/Simulink与CarSim联合仿真,建立基于MPC的智能汽车紧急避障控制模型。本文件模型具有以下特点:
1)采用五次多项式进行换道轨迹规划,计算出紧急转向避撞临界纵向安全距离;
2)建立了三自由度转向避撞动力学模型;
3)横向避障控制,考虑避撞轨迹跟踪控制精度、执行器平稳过渡特性、能量消耗以及幅值大小的目标函数,并以避撞输出边界和执行器执行能力为约束条件,转化为二次规划问题进行求解;
文章目录
基于 MATLAB/Simulink 与 CarSim 联合仿真实现智能汽车横向主动避障控制的代码和模型设计说明。我们将使用模型预测控制(MPC)算法,结合三自由度转向避撞动力学模型,完成车辆横向避障控制。
系统设计概述
-
联合仿真平台:
- MATLAB/Simulink:用于实现 MPC 控制器。
- CarSim:提供车辆动力学模型和环境仿真。
-
三自由度动力学模型:
- 包括车辆的纵向运动、侧向运动和横摆运动。
- 动力学方程如下:
[
m (\dot{v}y + v_x r) = F{yf} + F_{yr}
]
[
I_z \dot{r} = l_f F_{yf} - l_r F_{yr}
]
[
\dot{\psi} = r
]
其中:- (m):车辆质量;
- (I_z):车辆绕 z 轴的转动惯量;
- (v_x, v_y):纵向和侧向速度;
- (r):横摆角速度;
- (F_{yf}, F_{yr}):前轮和后轮的侧向力;
- (l_f, l_r):前后轴到质心的距离。
-
MPC 控制器设计:
- 使用 MPC 算法优化车辆的转向角输入,以实现避障和轨迹跟踪。
- 约束条件包括车辆动力学限制和避障要求。
MATLAB/Simulink 实现步骤
1. 设置 CarSim 模型
- 在 CarSim 中创建一个车辆动力学模型,选择合适的车辆参数(如质量、轴距等)。
- 配置道路环境,添加障碍物或动态目标。
- 设置 CarSim 输出接口,将车辆状态(如速度、位置、横摆角速度等)传递给 Simulink。
2. Simulink 模型搭建
- 在 Simulink 中搭建 MPC 控制器模块,并与 CarSim 联合仿真。
—
MATLAB 和 Simulink 代码
(1) MPC 控制器设计
% MPC控制器设计
function mpc_controller = createMPCController()
% 定义系统状态空间模型
Ts = 0.1; % 采样时间
m = 1500; % 车辆质量
Iz = 2500; % 绕z轴转动惯量
lf = 1.2; % 前轴到质心距离
lr = 1.5; % 后轴到质心距离
% 状态变量: [vy, r, psi]
A = [0, -1, 0;
0, 0, 0;
0, 1, 0];
B = [1/m, 0;
lf/Iz, 0;
0, 0];
C = eye(3);
D = zeros(3, 2);
% 创建状态空间模型
sys = ss(A, B, C, D);
% 离散化
sysd = c2d(sys, Ts);
% 创建MPC对象
p = 10; % 预测时域
m = 5; % 控制时域
mpc_controller = mpc(sysd, Ts, p, m);
% 设置约束条件
mpc_controller.MV(1).Min = -0.4; % 最小前轮转角
mpc_controller.MV(1).Max = 0.4; % 最大前轮转角
mpc_controller.MV(1).RateMin = -0.1; % 最小变化率
mpc_controller.MV(1).RateMax = 0.1; % 最大变化率
% 设置权重
mpc_controller.Weights.ManipulatedVariablesRate = 0.1;
mpc_controller.Weights.OutputVariables = [1, 1, 1]; % vy, r, psi
end
(2) Simulink 模型搭建
- 在 Simulink 中创建以下模块:
- CarSim S-Function:加载 CarSim 模型并接收车辆状态。
- MPC 控制器模块:调用上述
createMPCController
函数生成的 MPC 对象。 - 参考轨迹生成模块:生成目标轨迹(如直线或曲线)。
- 避障逻辑模块:检测障碍物并调整参考轨迹。
联合仿真设置
-
配置 CarSim 接口:
- 在 CarSim 中设置输出变量(如车辆位置、速度、横摆角速度等)。
- 将这些变量映射到 Simulink 的输入端口。
-
运行联合仿真:
- 在 Simulink 中运行仿真,观察车辆是否能够成功避开障碍物并跟踪目标轨迹。
示例结果
- 车辆轨迹:显示车辆在避障过程中的实际轨迹。
- 控制输入:显示前轮转角随时间的变化。
- 状态变量:显示侧向速度、横摆角速度等随时间的变化。
注意事项
-
CarSim 模型校准:
- 确保 CarSim 中的车辆参数与 MPC 控制器中的参数一致。
-
仿真步长:
- 设置合理的仿真步长(如 0.01 秒),以保证仿真精度。
-
调试与优化:
- 根据仿真结果调整 MPC 的权重和约束条件,优化控制性能。
希望这段代码和说明能帮助你实现基于 MATLAB/Simulink 与 CarSim 的智能汽车横向主动避障控制!