目录
1 概述
2 运行结果
3 参考文献
4 Matlab代码
模型预测控制(MPC)的核心思想就是以优化方法求解最优控制器,其中优化方法大多时候采用二次规划(Quadratic Programming)。
MPC控制器优化得到的控制输出也是系统在未来有限时间步的控制序列。 当然,由于理论构建的模型与系统真实模型都有误差,所以,实际上更远未来的控制输出对系统控制的价值很低,故MPC仅执行输出序列中的第一个控制输出。
本文根据自适应模型预测控制相关原理,设计一种无人驾驶车辆的轨迹跟踪控制策略.基于车辆动力学模型,建立轨迹跟踪控制器,并设计目标函数与相关约束,利用自适应MPC(model predictive control)控制算法对其进行求解.在每一个控制时刻工作点,不断更新卡尔曼状态估计器相关增益系数矩阵以及控制器的状态来适应无人驾驶车辆当前的工作环境,以此补偿车辆的非线性以及状态测量噪声带来的影响.在MATLAB中搭建仿真模型并进行仿真验证,得出自适应MPC对于无人驾驶车辆的轨迹跟踪拥有较好的控制精度与鲁棒性,验证了该算法应用在轨迹跟踪控制层的有效性,为轨迹跟踪控制的研究提供了参考.
主函数部分代码:
clc;
clear all;
%% 参考轨迹生成
N=100;
T=0.05;
% Xout=zeros(2*N,3);
% Tout=zeros(2*N,1);
Xout=zeros(N,3);
Tout=zeros(N,1);
for k=1:1:N
Xout(k,1)=k*T;
Xout(k,2)=2;
Xout(k,3)=0;
Tout(k,1)=(k-1)*T;
end
%% Tracking a constant reference trajectory
Nx=3; %状态量个数
Nu =2; %控制量个数
Tsim =20; %仿真时间
X0 = [0 0 pi/3]; % 初始位置
[Nr,Nc] = size(Xout); % Nr is the number of rows of Xout
% Mobile Robot Parameters
c = [1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1];
L = 1; %车辆轴距
Rr = 1; %轮胎直径
w = 1; %车轮转速
% Mobile Robot variable Model
vd1 = Rr*w; % 参考系统的纵向速度
vd2 = 0; %参考系统前轮偏角
%矩阵定义
x_real=zeros(Nr,Nc);
x_piao=zeros(Nr,Nc);
u_real=zeros(Nr,2);
u_piao=zeros(Nr,2);
x_real(1,:)=X0;
x_piao(1,:)=x_real(1,:)-Xout(1,:);
X_PIAO=zeros(Nr,Nx*Tsim);
XXX=zeros(Nr,Nx*Tsim);%用于保持每个时刻预测的所有状态值
q=[1 0 0;0 1 0;0 0 0.5];
Q_cell=cell(Tsim,Tsim);
for i=1:1:Tsim
for j=1:1:Tsim
if i==j
Q_cell{i,j}=q;
else
Q_cell{i,j}=zeros(Nx,Nx);
end
end
end
Q=cell2mat(Q_cell);
R=0.1*eye(Nu*Tsim,Nu*Tsim); %Nu是控制量个数
梁忠超, 张欢, 赵晶, 王永富. 基于自适应MPC的无人驾驶车辆轨迹跟踪控制. 东北大学学报:自然科学版, 2020, 41(6): 835-840.
部分理论引用网络文献,若有侵权联系博主删除。