用于自动驾驶汽车轨迹跟踪控制的模型预测控制(Matlab代码实现)

       目录

1 概述

2 运行结果

3 参考文献

‍4 Matlab代码


1 概述

模型预测控制(MPC)的核心思想就是以优化方法求解最优控制器,其中优化方法大多时候采用二次规划(Quadratic Programming)。

MPC控制器优化得到的控制输出也是系统在未来有限时间步的控制序列。 当然,由于理论构建的模型与系统真实模型都有误差,所以,实际上更远未来的控制输出对系统控制的价值很低,故MPC仅执行输出序列中的第一个控制输出。

本文根据自适应模型预测控制相关原理,设计一种无人驾驶车辆的轨迹跟踪控制策略.基于车辆动力学模型,建立轨迹跟踪控制器,并设计目标函数与相关约束,利用自适应MPC(model predictive control)控制算法对其进行求解.在每一个控制时刻工作点,不断更新卡尔曼状态估计器相关增益系数矩阵以及控制器的状态来适应无人驾驶车辆当前的工作环境,以此补偿车辆的非线性以及状态测量噪声带来的影响.在MATLAB中搭建仿真模型并进行仿真验证,得出自适应MPC对于无人驾驶车辆的轨迹跟踪拥有较好的控制精度与鲁棒性,验证了该算法应用在轨迹跟踪控制层的有效性,为轨迹跟踪控制的研究提供了参考.

2 运行结果

用于自动驾驶汽车轨迹跟踪控制的模型预测控制(Matlab代码实现)_第1张图片

用于自动驾驶汽车轨迹跟踪控制的模型预测控制(Matlab代码实现)_第2张图片

用于自动驾驶汽车轨迹跟踪控制的模型预测控制(Matlab代码实现)_第3张图片

用于自动驾驶汽车轨迹跟踪控制的模型预测控制(Matlab代码实现)_第4张图片

用于自动驾驶汽车轨迹跟踪控制的模型预测控制(Matlab代码实现)_第5张图片

用于自动驾驶汽车轨迹跟踪控制的模型预测控制(Matlab代码实现)_第6张图片

用于自动驾驶汽车轨迹跟踪控制的模型预测控制(Matlab代码实现)_第7张图片

用于自动驾驶汽车轨迹跟踪控制的模型预测控制(Matlab代码实现)_第8张图片

主函数部分代码:

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 trajectoryNx=3; %状态量个数Nu =2; %控制量个数Tsim =20; %仿真时间X0 = [0 0 pi/3]; % 初始位置[Nr,Nc] = size(Xout); % Nr is the number of rows of Xout% Mobile Robot Parametersc = [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 Modelvd1 = 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     endendQ=cell2mat(Q_cell);R=0.1*eye(Nu*Tsim,Nu*Tsim); %Nu是控制量个数

3 参考文献

​梁忠超, 张欢, 赵晶, 王永富. 基于自适应MPC的无人驾驶车辆轨迹跟踪控制. 东北大学学报:自然科学版, 2020, 41(6): 835-840.

部分理论引用网络文献,若有侵权联系博主删除。

你可能感兴趣的:(matlab,算法,机器学习)