目录
1.算法仿真效果
MATLAB2017B仿真结果如下:
2.MATLAB源码
其中车辆模型采用的是Carsim,我这里使用的CarSim_8.1a,使用前下安装这个工具箱,或者联系博主获取。
控制器采用的是simulink的S函数实现:
.............................................................................
%% 以下为约束生成区域
%控制量约束
A_t=zeros(Nc,Nc);%见falcone论文 P181
for p=1:1:Nc
for q=1:1:Nc
if q<=p
A_t(p,q)=1;
else
A_t(p,q)=0;
end
end
end
A_I=kron(A_t,eye(Nu));%对应于falcone论文约束处理的矩阵A,求克罗内克积
Ut=kron(ones(Nc,1),U(1));%此处感觉论文里的克罗内科积有问题,暂时交换顺序
umin=-0.1844;%维数与控制变量的个数相同
umax=0.1844;
delta_umin=-0.0148*0.4*50;
delta_umax=0.0148*0.4*50;
Umin=kron(ones(Nc,1),umin);
Umax=kron(ones(Nc,1),umax);
%输出量约束(硬约束设置)暂时先让所有输出为硬约束
% ycmax=[0.21;5];
% ycmin=[-0.3;-3];
ycmax=[2.75;500];
ycmin=[-2.75;-500];
Ycmax=kron(ones(Np,1),ycmax);
Ycmin=kron(ones(Np,1),ycmin);
%结合控制量约束和输出量约束
A_cons_cell={A_I zeros(Nu*Nc,1);-A_I zeros(Nu*Nc,1);THETA zeros(Ny*Np,1);-THETA zeros(Ny*Np,1)};
b_cons_cell={Umax-Ut;-Umin+Ut;Ycmax-PSI*kesi-GAMMA*PHI;-Ycmin+PSI*kesi+GAMMA*PHI};
A_cons=cell2mat(A_cons_cell);%(求解方程)状态量不等式约束增益矩阵,转换为绝对值的取值范围
b_cons=cell2mat(b_cons_cell);%(求解方程)状态量不等式约束的取值
%状态量约束
M=10;
delta_Umin=kron(ones(Nc,1),delta_umin);
delta_Umax=kron(ones(Nc,1),delta_umax);
lb=[delta_Umin;0];%(求解方程)状态量下界,包含控制时域内控制增量和松弛因子
ub=[delta_Umax;M];%(求解方程)状态量上界,包含控制时域内控制增量和松弛因子
%% 开始求解过程
% [X,fval,exitflag]=quadprog(H,f,A_cons,b_cons,[],[],lb,ub);
options = optimset('Algorithm','active-set');
x_start=zeros(Nc+1,1);%加入一个起始点
[X,fval,exitflag]=quadprog(H,f,A_cons,b_cons,[],[],lb,ub,x_start,options);
fprintf('exitflag=%d\n',exitflag);
fprintf('H=%4.2f\n',H(1,1));
fprintf('f=%4.2f\n',f(1,1));
%% 计算输出
u_piao=X(1);%得到控制增量
U(1)=kesi(7,1)+u_piao;%当前时刻的控制量为上一刻时刻控制+控制增量
%U(2)=Yita_ref(2);%输出dphi_ref
sys= U;
toc
% End of mdlOutputs
0007
3.算法概述
随着自动驾驶技术的发展,智能车辆的运动规划与控制成为了研究的热点之一。MPC作为一种基于模型的控制方法,能够考虑系统的动态特性和约束条件,通过在线优化解决多目标控制问题。在智能车辆的应用中,MPC能够实时预测车辆未来的状态,并据此生成最优控制输入,从而实现安全、高效的行驶。
3.1 MPC原理
MPC是一种基于模型的控制方法,其核心思想是在每个采样时刻通过求解一个优化问题来确定当前的最佳控制输入。MPC的特点在于它能够考虑系统的动态特性、约束条件以及未来预测,因此非常适合于复杂的控制场景。
MPC的一个重要特点是滚动优化,即在每个采样时刻k,只执行第一个控制输入u(k∣k),并将状态预测向前推进一步,然后再次求解优化问题。这样可以确保控制策略始终是最优的,并且能够实时地适应系统的变化。
3.2 车辆动力学模型
在MPC中,需要一个准确的车辆动力学模型来预测车辆的未来行为。本例中,我们使用CarSim模块来模拟车辆的动力学特性。CarSim是一个详细的汽车动力学仿真平台,它可以提供包括轮胎、悬挂系统在内的完整的车辆动力学模型。
假设车辆在平面内的运动模型可以简化为:
在路径跟踪中,MPC的目标是让车辆沿着预定的路径行驶。路径可以表示为一系列的坐标点 pd=[xd,yd]。MPC的优化目标可以表示为:
使用CarSim模块进行仿真验证,可以模拟不同的道路条件、交通场景等。通过比较MPC控制与传统PID控制的结果,可以评估MPC在智能车辆运动规划与控制方面的性能。
4.部分参考文献
[1]王锦坤.基于模型预测控制的智能车局部运动规划方法研究[D].吉林大学,2023.
[2]朱晓媛.基于模型预测控制的智能车辆运动规划算法[D].浙江大学[2024-08-11].
5.程序内容,运行方法和源码获取
5.1 程序包括
SIMULINK仿真模型,MPC的S函数,参考文献
5.2 运行方法
先下载和安装CarSim_8.1a,安装完之后,simulink中会被加入车辆仿真模型
然后在MATLAB中进行操作:
1.在matlab的左侧的当前文件夹窗口;
2.分别打开程序的路径1文件夹,路径2文件夹,路径3文件夹,路径4文件夹,路径5文件夹
3.每个文件夹里面,先运行对应的仿真模型文件*.mdl,运行完之后运行compared.m获得路径对比图。
5.3 源码获取
step1.打开博客主页的左侧推广栏查看,或扫博客文章底部信息
step2.然后用电脑打开网页链接,输入文章标题搜索
V