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

news2024/11/28 1:48:59

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

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

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

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

目录

💥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代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/590546.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kyligence x 明道云|低代码平台助力中小企业实现存量背景下的创新增长

国内大部分制造企业在经历疫情后,终于迎来了市场端的消费需求的恢复和增长,但如何在激烈的竞争中以更少投入,获得更高回报,在市场上获得一席生存之地,成为了悬在众多企业头上的达摩克利斯之剑。在市场野蛮生长阶段时&a…

使用PYQT5和VTK实现一个六轴跟随的电路板转动动画效果

实现过程: 关于六轴: 线下有一个带有六轴姿态传感器的硬件设备,将采集到的三轴加速度和角速度的值每隔1秒通过串口发送给电脑,电脑上位机使用的是pyqt5,在python中调用serial模块进行串口数据的接收,接收…

专业是要选软工还是人工智能?

大家好,我是帅地。 在帅地的训练营里,也有不少 26 届的学员,不过大一即将过去,部分学校是到了大一后面或者大二才开始细分专业方向的,包括一些想要转专业的同学,也需要选择一个细分的方向,而且…

10:mysql----存储引擎--进阶篇

目录 1:MySQL体系结构 2:存储引擎简介 3:存储引擎特点 4:存储引擎选择 1:MySQL体系结构 连接层 : 最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。 服务层 :…

抽象轻松JavaScript

想象一样,现在有一个苹果,两个苹果,一箱苹果在你面前 看,上面的三种苹果,(我写的是苹果就是苹果) 语境1 例如你现在要搬运苹果! 那么现在上面有苹果,一个,两…

阿里云的数据库架构如何设计,以实现高可用性和容灾性?

阿里云的数据库架构如何设计,以实现高可用性和容灾性?   在当今的数字化时代,数据库作为应用程序的核心组件之一,对于企业的正常运行至关重要。这篇文章将为您解析阿里云如何设计其数据库架构,以实现高可用性和容灾性…

加法器种类介绍

二进制加法器 二进制加法器接收加数A和B,以及进位Ci,输出和S,以及进位输出Co.二进制加法器的真值表如下: 逻辑表达式: S A ⊕ B ⊕ C i SA⊕B⊕C_i SA⊕B⊕Ci​ C o A B B C i A C i C_oABBC_iAC_i Co​ABBCi​ACi​ 从实现的角度,可以…

好兄弟,一天面了4家公司,堪称Offer收割机...

好兄弟一天面了4家公司,堪称Offer收割机… 面试感受 先说一个字 是真的 “ 累 ” 安排的太满的后果可能就是一天只吃一顿饭,一直奔波在路上 不扯这个了,给大家说说面试吧,我工作大概两年多的时间,大家可以参考下 在…

开关电源DCDC并联均流输出8V(XL4015)-2011年全国电赛题

2011年全国电赛题-开关电源模块并联供电系统,两路XL4015芯片做DCDC模块输出8V,采用主从均流法,可实现多种比例精确分配电流,效率在80%以上。 题目 设计并制作一个由两个额定输出功率均为 16W 的 8V DC/DC 模块构成的并联供电系统…

【事务】@Transactional 注解参数详解

文章目录 前言一、参数详解1.1、isolation(事务隔离级别)1.2、propagation(事务传播机制)1.3、readOnly(事务读写性)1.4、noRollbackFor 和 noRollbackForClassName(遇到时不回滚)1.…

PHPMySQL基础(四):模拟登录Login功能案例

PHP&MySQL基础(一):创建数据库并通过PHP进行连接_长风沛雨的博客-CSDN博客 PHP&MySQL基础(二):通过PHP对MySQL进行增、删、改、查_长风沛雨的博客-CSDN博客 PHP&MySQL基础(三):处理查询SQL返…

敏捷指标: 评估计划的进展

作者 | Will Hayes, Patrick Place, and Keith Korzec ——卡耐基梅隆大学 度量标准有助于实现一个运作良好的系统,评判现有流程的绩效。在项目交付契约功能时能够对其性能进行监督。本文探讨了在一个复杂的信息物理系统的迭代、增量交付过程中,政府项目…

Django从Models 10分钟建立一套RestfulApi

简介 Django是一套完善而强大的web开发框架, 结合Django Restframework我们可以非常快的搭建一套后台的api, 该api主要特点: 标准的Restful接口, 支持增删改查 每个模型分列表和详情两种接口, 列表GET获取列表/POST新建,详情接口GET获取详情/PUT修改/DELETE删除所有接口自带权…

DJ4-5 基本分段存储管理方式

目录 4.5.1 分段式存储管理方式的引入 4.5.2 分段式存储管理的基本原理 一、分段 二、段表 三、地址变换机构 4.5.3 段的共享和保护 一、分页共享 二、分段共享 4.5.4 段页式存储管理 一、段页式存储管理的引入 二、段页式存储管理 三、地址变换机构 四、评价…

小明找前缀100000(假)

题目背景 小明最近上课天天睡觉,于是啥都不会。 一天,老师终于点兵点将点到他回答问题,你能帮他渡过难关吗? 现在老师给了小明 n 个由 0、1 构成的字符串,然后有 m 次询问, 每次询问给出一个由 0、1 构…

【医学图像】图像分割系列.3 (uncertainty)

介绍几篇使用不确定性引导的医学图像分割论文:UA-MT(MICCAI2019),SSL4MIS(MICCAI2021),UG-MCL(AIIM2022). Uncertainty-aware Self-ensembling Model for Semi-supervise…

3-网络初识-协议

1.概念 协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。通常由三…

Android系统中的Binder通信机制分析(6)- Binder通信机制详解

声明 其实对于Android系统Binder通信的机制早就有分析的想法,记得2019年6、7月份Mr.Deng离职期间约定一起对其进行研究的,但因为我个人问题没能实施这个计划,留下些许遗憾…文中参考了很多书籍及博客内容,可能涉及的比较多先不具…

SER5 5500U 黑苹果系统安装教程

注意事项: 安装黑苹果系统需要一定的技术和操作经验,而且存在一定的风险,安装前请注意备硬盘内的数据,以免数据丢失,不推荐普通用户进行尝试,本系统及引导由黑果小兵独家制作,更多黑苹果教程百度…

安装CHATGPT保姆级教程(windows版)

ai包链接: 链接:https://pan.baidu.com/s/1tKuG4OfkewlDRU292vx8mw?pwdtw8t 提取码:tw8t 一、安装篇 安装python,使用软件包中的python安装程序安装后检查是否安装成功,cmd窗口运行命令: python –vers…