主要内容

基于极值搜索控制的自适应巡航控制

此示例说明如何采用极值搜索控制 (ESC) 方法实现自适应巡航控制。此示例中,目标是通过控制纵向加速度和制动,使自车以设定速度行驶,同时与前车保持安全距离。

自适应巡航控制系统

自适应巡航控制 (ACC) 是一种旨在帮助车辆维持安全跟车距离并遵守限速要求的系统。搭载 ACC 系统的车辆(自车)通过雷达测量与前车的相对距离 (Drel) 和相对速度 (Vrel)。ACC 系统设计用于维持期望巡航速度 (Vset) 或与前车保持相对安全距离 (Dsafe)。控制目标的切换基于以下条件确定。

  • 如果 Drel>Dsafe,ACC 系统会遵循驾驶员设定的期望巡航速度。

  • 如果 Drel<Dsafe,ACC 系统会控制自车与前车的相对位置。

此示例采用与Adaptive Cruise Control System Using Model Predictive Control (Model Predictive Control Toolbox)相同的自车和前车模型。

将纵向车辆动力学实现为简化二阶线性模型。

G = tf(1,[0.5,1,0]);

配置此示例的 ACC 参数。

D_default = 10; % Default spacing (m)
t_gap = 1.4;    % Time gap (s)
v_set = 30;     % Driver-set velocity (m/s)
amin_ego = -3;  % Minimum acceleration for driver comfort (m/s^2)
amax_ego = 2;   % Maximum acceleration for driver comfort (m/s^2)
Ts = 0.1;       % Sample time (s)     
Tf = 150;       % Duration (s)  

指定前车和自车的初始位置与速度。

x0_lead = 50; % Initial lead car position (m)
v0_lead = 25; % Initial lead car velocity (m/s)
x0_ego = 10;  % Initial ego car position (m)
v0_ego = 20;  % Initial ego car velocity (m/s)

基于极值搜索控制的 ACC

极值搜索控制器通过实时调整控制参数以最大化目标函数,从而实现理想控制性能。对于此示例,请使用以下目标函数,该函数依赖于相对距离、安全距离、相对速度和设定速度。

J=-Qd(Drel-Dsafe)2+Qv(vrel-vset)2

其中,QdQv 分别为距离误差项和速度误差项的目标函数权重。

Qd = 0.5;
Qv = 1;

极值搜索控制器对以下控制器增益进行自适应调整。

  • Kxerr - 位置误差增益

  • Kverr - 速度误差增益

  • Kvrel - 相对速度增益

指定增益值的初始猜测值。

Kverr = 1;   % ACC velocity error gain
Kxerr = 1;   % ACC spacing error gain
Kvrel = 0.5; % ACC relative velocity gain

指定极值搜索控制参数

Simulink® Control Design™ 软件通过 Extremum Seeking Control 模块实现 ESC 算法。配置该模块的参数。

指定待调节参数数量(3 个控制器增益)。控制器为每个参数使用单独的调节环路。

N = 3;

根据每个参数的学习率 lr,对初始增益值进行缩放,以此设定参数更新积分器的初始条件。

lr = 0.02*[2 3 1];
IC = [Kverr,Kxerr,Kvrel];

通过指定频率 (omega)、相位(phi_1phi_2和幅值(ab),配置解调与调制信号。每个参数必须使用不同的强制频率。对于此示例,所有参数采用相同的调制与解调相位及幅值。

omega = 0.8*[5,7,8]; % Forcing frequency (rad/s)
a = 0.01;            % Demodulation amplitude
b = 0.5*lr;          % Modulation amplitude
phi_1 = 0;           % Demodulation phase (rad)
phi_2 = pi/4;        % Modulation phase (rad)

采用低通滤波器去除解调信号中的高频噪声,采用高通滤波器去除受扰目标函数信号中的偏置。指定这些滤波器的截止频率。

omega_lpf = 0.04;
omega_hpf = 0.01;

自适应巡航控制系统仿真

打开 ExtremumSeekingControlACC 模型,即可对基于 ESC 的自适应巡航控制器进行仿真。

mdl = 'ExtremumSeekingControlACC';
open_system(mdl)

Plant Dynamics and Objective 子系统包含 ACC 模型,并计算 ESC 算法所需的目标函数。

open_system([mdl '/Plant Dynamics and Objective'])

仿真模型。仿真过程中,前车速度按正弦规律变化。因此,自车必须调节速度以补偿该变化。

sim(mdl);

下图展示前车与自车的相对距离及安全距离。

  • 安全距离随自车速度变化。

  • 前者与自车的相对距离偶尔略低于安全距离。原因在于,ACC 系统采用软约束实现距离控制。

open_system([mdl '/Plant Dynamics and Objective/Simulation results/Distance'])

查看自车速度、前车速度及自车设定速度。为维持安全距离,ACC 系统可根据前车速度变化调节自车速度。当前车速度高于设定速度时,自车停止跟踪前车速度,转而以设定速度巡航。

open_system([mdl '/Plant Dynamics and Objective/Simulation results/Velocity'])

下一幅图显示了 ESC 在寻找最优控制增益过程中待优化的代价函数。

open_system([mdl '/Plant Dynamics and Objective/Simulation results/Cost'])

查看仿真过程中自适应调整的控制器增益。顶部图为 Kverr,中部为 Kxerr,底部为 Kvrel。增益值的波动由极值搜索控制模块的调制信号导致。

open_system([mdl '/Plant Dynamics and Objective/Gains'])

bdclose('ExtremumSeekingControlACC')

另请参阅

模块

主题