资源简介
无人驾驶车辆的路径跟踪算法,本代码主要采用模型预测控制算法,跟踪路径,并进行simulink与 carsim的联合仿真
代码片段和文件信息
function [sysx0strts] = chapter5_2_2(txuflag)
% 该程序功能:用LTV MPC 和车辆简化动力学模型(小角度假设)设计控制器,作为Simulink的控制器
% 程序版本 V1.0,MATLAB版本:R2011a采用S函数的标准形式,
% 程序编写日期 2013.12.11
% 最近一次改写 2013.12.16
% 状态量=[y_dotx_dotphiphi_dotYX],控制量为前轮偏角delta_f
switch flag
case 0
[sysx0strts] = mdlInitializeSizes; % Initialization
case 2
sys = mdlUpdates(txu); % Update discrete states
case 3
sys = mdlOutputs(txu); % Calculate outputs
% case 4
% sys = mdlGetTimeOfNextVarHit(txu); % Get next sample time
case {149} % Unused flags
sys = [];
otherwise
error([‘unhandled flag = ‘num2str(flag)]); % Error handling
end
% End of dsfunc.
%==============================================================
% Initialization
%==============================================================
function [sysx0strts] = mdlInitializeSizes
% Call simsizes for a sizes structure fill it in and convert it
% to a sizes array.
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 6;
sizes.NumOutputs = 1;
sizes.NumInputs = 8;
sizes.DirFeedthrough = 1; % Matrix D is non-empty.
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 =[0.001;0.0001;0.0001;0.00001;0.00001;0.00001];
global U;
U=[0];%控制量初始化这里面加了一个期望轨迹的输出,如果去掉,U为一维的
% global x;
% x = zeros(md.ne + md.pye + md.me + md.Hu*md.me1);
% Initialize the discrete states.
str = []; % Set str to an empty matrix.
ts = [0.02 0]; % sample time: [period offset]
%End of mdlInitializeSizes
%==============================================================
% Update the discrete states
%==============================================================
function sys = mdlUpdates(txu)
sys = x;
%End of mdlUpdate.
%==============================================================
% Calculate outputs
%==============================================================
function sys = mdlOutputs(txu)
global a b;
%global u_piao;
global U;
%global kesi;
tic
Nx=6;%状态量的个数
Nu=1;%控制量的个数
Ny=2;%输出量的个数
Np =20;%预测步长
Nc=5;%控制步长
Row=1000;%松弛因子权重
fprintf(‘Update start t=%6.3f\n‘t)
%输入接口转换x_dot后面加一个非常小的数,是防止出现分母为零的情况
% y_dot=u(1)/3.6-0.000000001*0.4786;%CarSim输出的是km/h,转换为m/s
y_dot=u(1)/3.6;
x_dot=u(2)/3.6+0.0001;%CarSim输出的是km/h,转换为m/s
phi=u(3)*3.141592654/180; %CarSim输出的为角度,角度转换为弧度
phi_dot=u(4)*3.141592654/180;
Y=u(5);%单位为m
X=u(6);%单位为米
Y_dot=u(7);
X_dot=u(8);
%% 车辆参数输入
%syms sf sr;%分别为前后车轮的滑移率需要提供
Sf=0.2; Sr=0.2;
%syms lf lr;%前后车轮距离车辆质心的距离,车辆固有参数
lf=1.232;lr=1.468;
%syms C_cf C_cr C_lf C_lr;%分别为前后车轮的纵横向侧偏刚度,车辆固有参数
Ccf=66900;Ccr=62700;Clf=66900;Clr=62700;
%syms m g I;%m为车辆质量,g为重力加速度,I为车辆绕Z轴的转动惯量,车辆固有参数
m=1723;g=9.8;I=4175;
%% 参考轨迹生成
shape=2.4;%参数名称,用于参考轨迹生成
dx1=25;dx2=21.95;%没有任何实际意义,只是参数名称
dy1=4.05;dy2=5.7;%没有任何实际意义,只是参数名称
Xs1=27.19;Xs2=56.46;%
相关资源
-
Matlab+Simuli
nk-cmi、miller、双相码 -
MATLAB/simuli
nk短路电流仿真 -
PLLsimuli
nk仿真模型 - 高压直流输电系统的滤波器设计及仿
- 24脉波整流仿真
-
simuli
nk的使用手册全 -
Simuli
nk快速入门教程 -
《Matlab Simuli
nk与控制系统仿真》. -
混合动力simuli
nk模型 -
基于simuli
nk的带有MPPT功的光伏电池 -
基于Simuli
nk的DSB调制解调系统仿真 -
基于Simuli
nk的MFSK系统的仿真 -
基于Simuli
nk的模拟通信仿真 -
基于Simuli
nk的匹配滤波器设计 -
APF资料-APF、SVG simuli
nk源程使用说明 -
simuli
nk之基于模型开发的嵌入式设计 -
Matlab分享系列 - 3 - Matlab_Simuli
nk代码 -
matlab simuli
nk simevent 建模入门 -
用MATLAB-Simuli
nk做锂电池建模 .pdf -
matlab/simuli
nk mu 分析与综合工具箱使 -
基于simuli
nk的组合导航的仿真 -
基于Simuli
nk模型的嵌入式代码生成 - 基于systolic的上三角矩阵求逆电路的实
-
倒立摆的模糊控制基于simuli
nk仿真, -
simuli
nk仿真及代码生成的模型程序文 -
200个SIMUli
nk电力电子仿真模型打包 -
智能汽车 matlabsimuli
nk 模拟仿真技术 -
50种电力电子基础拓扑Simuli
nk仿真 - 三种不同路径规划的仿真
-
SIMUli
nk模块介绍——转载.ppt
评论
共有 条评论