这个例子展示了如何使用极值寻求控制(ESC)方法实现自适应巡航控制。在这个例子中,我们的目标是通过控制纵向加速和刹车,让一辆自我车以设定的速度行驶,同时保持与领先车的安全距离。
自适应巡航控制(ACC)是一种旨在帮助车辆维持在距离之后并保持在速度限制之后的安全性的系统。配备ACC系统(EGO CAR)的车辆使用雷达来测量相对距离(
如果
如果
这个例子使用相同的自我和领导汽车模型<一个href="//www.tatmou.com/au/help/mpc/ug/adaptive-cruise-control-using-model-predictive-controller.html" class="a">基于模型预测控制的自适应巡航控制系统(模型预测控制工具箱).
实现纵向车辆动力学作为一个简单的二阶线性模型。
g = tf(1,[0.5,1,0]);
为示例配置ACC参数。
D_default = 10;%默认间隔(m)t_gap = 1.4; 时间间隔(s)v_set = 30; %驾驶员设定速度(M / s)Amin_ego = -3; 驾驶员舒适度最小加速度(m/s^2)Amax_ego = 2; 驱动器舒适的最大加速度最大加速度(M / S ^ 2)ts = 0.1; %采样时间(秒)tf = 150; %持续时间
指定铅汽车和自助式汽车的初始位置和速度。
x0_lead = 50;%初始领先车位置(m)v0_lead = 25; %初始导车速度(m/s)x0_ego = 10; %初始自我汽车位置(m)v0_ego = 20; %初始自助式汽车速度(M / s)
Extremum寻求控制器通过调整控制参数来实现令人满意的控制性能,以实时地最大化客观函数。对于此示例,使用以下目标函数,这取决于相对距离,安全距离,相对速度和设置速度。
这里,
QD = 0.5;qv = 1;
极值寻求控制器适应以下控制器增益。
- 位置错误增益
-速度误差增益
-相对速度增益
为增益值指定初始猜测。
Kverr = 1;% ACC速度误差增益kxerr = 1; % ACC间距误差增益Kvrel = 0.5; %ACC相对速度增益
金宝appSimulink Control Design软件使用该软件实现ESC算法<一个href="//www.tatmou.com/au/help/slcontrol/ug/extremumseekingcontrol.html" class="a">极值寻求控制堵塞。配置此块的参数。
指定要调优的参数数量(三个控制器增益)。控制器对每个参数使用单独的调优循环。
N = 3;
通过缩放相对于每个参数的学习速率的初始增益值,指定参数更新积分器的初始条件lr
.
LR = 0.02 * [2 3 1];IC = [Kverr,Kxerr,Kvrel];
通过指定其频率来配置解调和调制信号(ω
)、阶段(PHI_1
和PHI_2.
)和幅度(一个
和B.
)。每个参数必须使用不同的强制频率。对于此示例,使用相同的调制和解调阶段和所有参数的幅度。
ω= 0.8 *(5、7、8);%强制频率(RAD / S)一个= 0.01; %解调振幅b = 0.5 * lr; %调制幅度phi_1 = 0; %解调阶段(RAD)phi_2 = pi / 4; %调制阶段(RAD)
使用低通滤波器从解调信号中删除高频噪声和高通滤波器,以从扰动的物镜函数信号中移除偏置。为这些过滤器指定截止频率。
Omega_LPF = 0.04;Omega_hpf = 0.01;
要模拟ESC Adaptive Cruise控制器,请打开extremumseekingControlacc.
模型。
mdl ='extremumseekingcontrolacc';open_system (mdl)
工厂动态和客观子系统包含ACC模型并计算ESC算法的目标函数。
open_system ([mdl'/植物动力学和目标'])
模拟模型。在仿真过程中,铅轿厢速度变化正弦。因此,自助式汽车必须调整其速度以补偿。
SIM(MDL);
下面的图显示了铅和自我车之间的相对距离和安全距离。
安全距离随汽车速度的变化而变化。
自我与领跑车之间的相对距离偶尔会略低于安全距离。这是因为ACC系统使用软约束强制相对距离。
open_system ([mdl'/植物动力学和客观/仿真结果/距离'])
查看速度的自我和领导汽车随着自我汽车设置速度。为了保持安全距离,ACC系统会随着前车速度的变化而调整自我车的速度。当领先车的速度大于设定的速度时,自我车停止跟踪领先车的速度,并以设定的速度巡航。
open_system ([mdl/植物动力学和目标/模拟结果/速度])
下一个图表显示了ESC寻求在搜索最佳控制增益时优化的成本函数。
open_system ([mdl“/植物动力学和目标/模拟结果/成本”])
查看所产生的控制器增益,适应模拟过程。顶部图是
open_system ([mdl'/植物动力学和目标/收益'])
bdclose('extremumseekingcontrolacc'的)