基于MPC的自适应巡航控制(Matlab代码实现)

👨‍🎓个人主页:研学社的博客    

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

自适应巡航控制 (ACC) 系统又称主动巡航控制系统, 是在传统定速巡航控制基础上结合了车距保持功能, 利用车载雷达探测前方行驶环境, 通过控制节气门和制动系统自动调整车速, 提高驾驶舒适性和安全性.

ACC的历史可以追溯至20世纪70年代, 1971年, 美国EATON (伊顿) 公司便已从事这方面的开发, 其雏形是日本三菱公司提出的PDC (preview distance control) 系统.1995年三菱汽车在日本市场推出首款ACC系统, 此后丰田、本田、通用、福特、戴姆勒、博世等公司也投入研发行列.纵观ACC系统的发展历程, 可以分为三个阶段:第一阶段为20世纪90年代初针对高速公

路的ACC系统, 主要实现定速巡航和安全车距功能;第二阶段为20世纪90年代末针对城市工况的ACC系统, 即起-停巡航系统 (stop&go cruise control, SG-ACC) , 实现自​动起步、停车和低速跟车功能;第三阶段为21世纪初至今综合考虑燃油经济性、跟踪性能和驾驶员感受的多目标协调式ACC系统.此外, ACC的功能也在不断扩展,如将ACC与车道保持相结合、ACC与避撞相结合、ACC与车道变更相结合等, 突破传统ACC仅纵向跟车功能局限, 进一步实现汽车辅助安全驾驶.

本文基于预测控制模型的自适应巡航控制仿真与机器人实现:

  • 在两辆车之间已经达到了近乎精确的纵向模型
  • 试图使控制响应接近可行性和真实条件。
  • 满足防撞和保持安全距离,前车为主要目标,舒适性为次要目标。(控制应用于以下汽车)
  • 在 MATLAB 上应用实现和仿真。

📚2 运行结果

主函数部分代码:

clear ;
close all;
clc
​
% Define the sample time, |Ts|, and simulation duration, |t|, in seconds.
t0 = 0;
Ts = 0.1;
Tf = 100;
t = t0:Ts:Tf;               
Nt = numel(t);
% Specify the initial position and velocity for the two vehicles.
​
%x0_lead = 0;               %Initial position of lead car (m)
%v0_lead = 0;               %Initial velocity of lead car (m/s)
​
%x0_ego = 0;                %Initial position of ego car (m)
%v0_ego = 0;                %Initial velocity of ego car (m/s)
​
% The safe distance between the lead car and the ego car is a function
% of the ego car velocity, $V_{ego}$:
%
% $$ D_{safe} = D_{default} + T_{gap}\times V_{ego} $$
%
% where $D_{default}$ is the standstill default spacing and $T_{gap}$ is
% the time gap between the vehicles. Specify values for $D_{default}$, in
% meters, and $T_{gap}$, in seconds.
t_gap = 1.4;
D_default = 10;
​
% Specify the driver-set velocity in m/s.
v_set = 30;
​
% Considering the physical limitations of the vehicle dynamics, the
% acceleration is constrained to the range  |[-3,2]| (m/s^2).
a_max = 2; da_max = 0.15;
a_min = -3; da_min = -0.2;
​
​
​
% the relationship between the actual acceleration and the desired 
% acceleration of the host vehicle satisfies the following conditions 
% 
%  $$ a(k+1) = (1-\frac{Ts}{\tau}) \times a(k) + \frac{Ts}{\tau} \times u(k)$$
%  
% where $ \tau $ is the time lag of the ACC system
tau = 0.3;
​
​
%Np = 20 ;          % Prediction Horizon
%Nc = 20 ;          % Control Horizon
​
%% Examples
%  In this section we want to try to specify the various parameters 
%   of the machine for different simulation
​
​
%EX.1
% N = 5;
% Np = 20 ;          % Prediction Horizon
% Nc = 5 ;          % Control Horizon
% x0_ego  = 0;
% v0_ego  = 0;
% x0_lead = 50;
% v0_lead = 15;
% a_lead = 0.3*sin(2*pi*0.03*t);  % Acceleration of lead car is a disturbance for our plant;
% [lead_car_position , lead_car_velocity] = lead_car_simulation(x0_lead,v0_lead,a_lead,t,Ts ,tau);
​
% EX.2
N = 5;
Np = 20 ;          % Prediction Horizon
Nc = 15 ;          % Control Horizon
x0_ego  = 0;
v0_ego  = 0;
x0_lead = 20;
v0_lead = 5;
a_lead = [1*(1-exp(-0.5*t(1:floor(Nt/5)))) ,0.5+0.5*exp(-0.5*t(1:floor(Nt/5))) , -0.5+exp(-0.5*t(1:floor(Nt/5))) ,-0.5*exp(-0.5*t(1:floor(Nt/5))) , zeros(1,floor(Nt/5)+1)];  
[lead_car_position , lead_car_velocity] = lead_car_simulation(x0_lead,v0_lead,a_lead,t,Ts ,tau);
​
% % % EX.3
% Np = 20 ;          % Prediction Horizon
% Nc = 15 ;          % Control Horizon
% x0_ego  = 0;
% v0_ego  = 0;
% x0_lead = 1500;
% v0_lead = 0;
% a_lead = zeros(1,Nt) ;
% [lead_car_position , lead_car_velocity] = lead_car_simulation(x0_lead,v0_lead,a_lead,t,Ts ,tau);
​
%% Car State Space Model
​
Am=[1   Ts   0.5*Ts^2
    0   1      Ts
    0   0     1-Ts/tau ];
​
Bm=[0 ; 0 ; Ts/tau];
​
Cm=[1   0  0
    0   1  0];
​
​
n = size(Am , 1) ;  % number of eigenvalues
q = size(Cm , 1) ;  % number of outputs
m = size(Bm , 2) ;  % number of inputs
​
​
[A , B , C] = AugemenFun(Am , Bm , Cm) ;
​
a = 0.5 ;
[Al , L0] = LagFun(N,a);
L = zeros( N , Nc ); 
L( : , 1) = L0 ; 
for i = 2:Nc
    L(:,i) = Al*L(: , i-1) ; 
end

🎉3 参考文献

[1]吴光强,张亮修,刘兆勇,郭晓晓.汽车自适应巡航控制系统研究现状与发展趋势[J].同济大学学报(自然科学版),2017,45(04):544-553.

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

🌈4 Matlab代码实现

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值