基于控制屏障函数的安全关键系统二次规划(适用于ACC)(Matlab代码实现)

简介: 基于控制屏障函数的安全关键系统二次规划(适用于ACC)(Matlab代码实现)

💥1 概述

基于控制屏障函数的安全关键系统二次规划(适用于ACC)是一种用于自适应巡航控制(ACC)系统中的安全性优化方法。ACC是一种汽车自动驾驶技术,它通过感知前方车辆的距离和速度来调整车辆的速度,以维持与前车的安全距离。


控制屏障函数(Control Barrier Function,CBF)是一种数学工具,用于描述系统状态的约束和安全边界。在ACC系统中,CBF可以用来定义车辆的安全区域,即车辆与前车之间的安全距离范围。


基于CBF的二次规划方法可以通过最小化代价函数来优化ACC系统的性能和安全性。这个代价函数可以包括车辆速度、加速度、与前车的距离等参数,同时考虑到安全约束和性能要求。


通过解决二次规划问题,ACC系统可以在满足安全约束的前提下,实现车辆的自适应巡航控制。这种方法可以提供更高的安全性和可靠性,减少与前车的碰撞风险,并提高驾驶员的驾驶舒适度和体验。


需要注意的是,基于控制屏障函数的安全关键系统二次规划方法是一种技术,具体的实现和应用需要根据具体的ACC系统和实际需求进行定制和开发。同时,系统的安全性还需要考虑其他因素,如传感器精度、系统故障处理等,以确保ACC系统的可靠性和安全性。


📚2 运行结果


主函数部分代码:

clear all
clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Objective: Adaptive Cruise Control (ACC) Simulation (A repeat of the result
%of the paper "Control Barrier Function Based Quadratic Programs for Safety
%Critical Systems (Page 3870)"
)%Author: Ming Li
%Date: March 2nd. 2022
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
global u_save
%% Initial Setup
%
 Note that [x(
1
) x(
2
) x(
3
)]==[v_f v_l D]%Initial distance between two vehicles is 150
%Intial velocity of the leading vehicle is 18;
%Intial velocity of the leading vehicle is 10;
Initial_position=[18 10 150];
t_span=[0:0.1:100];                                                        % Running time and interval
[Init_Par]=Initial_Parameter();
% [x] = ode4(@odefcn,t_span,Initial_position);
[x] = ode4(@odefcn,t_span,Initial_position);
% %% Ode45 plot
%
 figure(
1
)% plot(x.y(1,:),'b--','linewidth',2)
% hold on
% plot(x.y(2,:),'r--','linewidth',2)
% set(gca,'FontSize',23)
% set(gcf,'Position',[200,200,1000,800], 'color','w')
% xlabel('x1')
% ylabel('x2')
% legend('$v_{f}$','$v_{l}$','Interpreter','latex')
% grid on
%% Ode4 plot
figure(1)
plot(t_span,x(:,1),'b--','linewidth',2)
hold on
plot(t_span,x(:,2),'r--','linewidth',2)
set(gca,'FontSize',23)
set(gcf,'Position',[200,200,1000,800], 'color','w')
xlabel('x1')
ylabel('x2')
legend('$v_{f}$','$v_{l}$','Interpreter','latex')
grid on
figure(2)
plot(x(:,3),'b--','linewidth',2)
set(gca,'FontSize',23)
set(gcf,'Position',[200,200,1000,800], 'color','w')
xlabel('x')
ylabel('D')
legend('$D$','Interpreter','latex')
grid on
%
% Compute the CBFh_safe=x(:,3)-Init_Par.tau_d*x(:,1);
figure(3)
plot(t_span,h_safe,'b--','linewidth',2)
set(gca,'FontSize',23)
set(gcf,'Position',[200,200,1000,800], 'color','w')
xlabel('x')
ylabel('$h_{S}$','Interpreter','latex')
legend('$h_{S}$','Interpreter','latex')
grid on
%% Compute the control input
%
 d_x=diff(x(
:
,
1
));d_x=(x(2:end,1)-x(1:end-1,1))*10;
for i_u=1:size(x,1)-1
F_r(i_u)=Init_Par.f_0+Init_Par.f_1*x(1)+Init_Par.f_2*(x(1))^2;% Rolling resistance (force)
u_nodevi(i_u)=(d_x(i_u)*Init_Par.M+F_r(i_u));
u(i_u)=(d_x(i_u)*Init_Par.M+F_r(i_u))/Init_Par.M/Init_Par.a_g;
end
figure(4)
plot(t_span(2:end),u,'b-','linewidth',2)
set(gca,'FontSize',23)
set(gcf,'Position',[200,200,1000,800], 'color','w')
xlabel('t')
ylabel('$u$','Interpreter','latex')
legend('$u$','Interpreter','latex')
grid on
figure(5)
for i_u=1:size(x,1)-1
F_r(i_u)=Init_Par.f_0+Init_Par.f_1*x(1)+Init_Par.f_2*(x(1))^2;% Rolling resistance (force)
u_origin(i_u)=(u_save(1+(i_u-1)*4))/Init_Par.M/Init_Par.a_g;
end
plot(t_span(2:end),u_origin,'b-','linewidth',2)
set(gca,'FontSize',23)
set(gcf,'Position',[200,200,1000,800], 'color','w')
xlabel('t')
ylabel('$u$','Interpreter','latex')
legend('$u$','Interpreter','latex')
grid on


🎉3 参考文献

[1]赵向涛,阎妍,于双和等.基于屏障函数的船舶自适应控制[J].江苏大学学报(自然科学版),2021,42(06):715-720.

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

相关文章
|
11天前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
30 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
12天前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
37 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
5天前
|
数据建模 Python
MATLAB - mpcobj = mpc(model,ts,P,M,W,MV,OV,DV) 函数(上)
MATLAB - mpcobj = mpc(model,ts,P,M,W,MV,OV,DV) 函数
16 7
|
5天前
|
算法 数据建模 Python
MATLAB - mpcobj = mpc(model,ts,P,M,W,MV,OV,DV) 函数(下)
MATLAB - mpcobj = mpc(model,ts,P,M,W,MV,OV,DV) 函数
8 3
|
12天前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
25 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
3月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
3月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
3月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)
|
3月前
|
供应链 算法
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)

热门文章

最新文章