exponenta event banner

Адаптивный круиз-контроль с помощью Extremum Seeking Control

В этом примере показано, как реализовать адаптивный круиз-контроль с использованием подхода extremum seeking control (ESC). В этом примере целью является обеспечение движения эго-автомобиля с заданной скоростью при сохранении безопасного расстояния от ведущего автомобиля путем управления продольным ускорением и торможением.

Адаптивная система круиз-контроля

Адаптивный круиз-контроль (ACC) - система, предназначенная для того, чтобы помочь транспортным средствам сохранять безопасное расстояние и оставаться в пределах скоростного режима. Транспортное средство, оснащенное системой ACC (эго-автомобиль), использует радар для измерения относительного расстояния (Drel) и относительной скорости (Vrel) по отношению к ведущему транспортному средству. Система ACC предназначена для поддержания желаемой крейсерской скорости (Vset) или поддержания относительного безопасного расстояния (Dsafe) от ведущего автомобиля. Переключатель в объекте управления определяется на основании следующих условий.

  • если Drel > Dsafe, то система ACC следует желаемой исходной крейсерской скорости, управляемой водителем.

  • если Drel < Dsafe, система ACC управляет относительным положением эго-автомобиля по отношению к ведущему автомобилю.

В этом примере используется та же модель ego и lead автомобиля, что и система адаптивного круиз-контроля с использованием модельного предиктивного контроля (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 position for lead car (m)
v0_lead = 25;   % initial velocity for lead car (m/s)
x0_ego = 10;    % initial position for ego car (m)
v0_ego = 20;    % initial velocity for ego car (m/s)

ACC с использованием контроля поиска экстремума

Контроллер, ищущий экстремум, достигает удовлетворительной эффективности управления, регулируя параметры управления для максимизации целевой функции в реальном времени. В этом примере используется следующая целевая функция, которая зависит от относительного расстояния, безопасного расстояния, относительной скорости и заданной скорости.

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

Здесь Qd и Qv являются весами целевой функции для членов ошибки расстояния и ошибки скорости соответственно.

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 реализует алгоритм ESC с помощью блока Extremum Seeking Control. Настройте параметры для этого блока.

Укажите количество настраиваемых параметров (три коэффициента усиления контроллера). Контроллер использует отдельный цикл настройки для каждого параметра.

N = 3;

Укажите начальные условия для интеграторов обновления параметров путем масштабирования начальных значений коэффициента усиления относительно скорости обучения для каждого параметра lr.

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

Сконфигурируйте сигналы демодуляции и модуляции, задав их частоты (omega), фазы (phi_1 и phi_2) и амплитуды (a и b). Каждый параметр должен использовать различную частоту форсирования. В этом примере используются одни и те же фазы и амплитуды модуляции и демодуляции для всех параметров.

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;

Моделирование адаптивной системы круиз-контроля

Для моделирования адаптивного круиз-контроллера ESC откройте ExtremumSeekingControlACC модель.

mdl = 'ExtremumSeekingControlACC';
open_system(mdl)

Подсистема динамики и цели завода содержит модели ACC и вычисляет целевую функцию для алгоритма ESC.

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

Моделирование модели. Во время моделирования скорость ведущего вагона изменяется синусоидально. Поэтому эго-автомобиль должен регулировать свою скорость для компенсации.

sim(mdl);

На следующем графике показано относительное расстояние между ведущим транспортным средством и эго и безопасное расстояние.

  • Безопасное расстояние изменяется при изменении скорости эго-вагона.

  • Относительное расстояние между эго и свинцовыми автомобилями иногда опускается немного ниже безопасного расстояния. Это происходит потому, что система ACC принудительно устанавливает относительное расстояние, используя мягкое ограничение.

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

Просмотрите скорости эго-автомобилей и ведущих автомобилей вместе с заданной скоростью эго-автомобилей. Для поддержания безопасного расстояния система ACC регулирует скорость эго-вагона при изменении скорости ведущего вагона. Когда скорость ведущего вагона больше заданной скорости, эго-вагон перестает отслеживать скорость ведущего вагона и совершает круиз в качестве заданной скорости.

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

На следующем графике показана функция затрат, которую ESC стремится оптимизировать при поиске оптимального усиления управления.

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

Просмотрите полученные выигрыши контроллера, которые адаптируются в процессе моделирования. Верхний сюжет - Kverr, средний - Kxerr, а нижний - Kvrel. Флуктуации в значениях усиления обусловлены модулирующими сигналами от блока Extremum Seeking Control.

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

bdclose('ExtremumSeekingControlACC')

См. также

Блоки

Связанные темы