В этом примере показано, как реализовать адаптивный круиз-контроль с использованием подхода extremum seeking control (ESC). В этом примере целью является обеспечение движения эго-автомобиля с заданной скоростью при сохранении безопасного расстояния от ведущего автомобиля путем управления продольным ускорением и торможением.
Адаптивный круиз-контроль (ACC) - система, предназначенная для того, чтобы помочь транспортным средствам сохранять безопасное расстояние и оставаться в пределах скоростного режима. Транспортное средство, оснащенное системой ACC (эго-автомобиль), использует радар для измерения относительного расстояния () и относительной скорости () по отношению к ведущему транспортному средству. Система ACC предназначена для поддержания желаемой крейсерской скорости () или поддержания относительного безопасного расстояния () от ведущего автомобиля. Переключатель в объекте управления определяется на основании следующих условий.
если Dsafe, то система ACC следует желаемой исходной крейсерской скорости, управляемой водителем.
если 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)
Контроллер, ищущий экстремум, достигает удовлетворительной эффективности управления, регулируя параметры управления для максимизации целевой функции в реальном времени. В этом примере используется следующая целевая функция, которая зависит от относительного расстояния, безопасного расстояния, относительной скорости и заданной скорости.
vrel-vset) 2
Здесь и являются весами целевой функции для членов ошибки расстояния и ошибки скорости соответственно.
Qd = 0.5; Qv = 1;
Контроллер поиска экстремума адаптирует следующие коэффициенты усиления контроллера.
- усиление ошибки положения
- Увеличение ошибок скорости
- коэффициент усиления относительной скорости
Укажите начальные предположения для значений коэффициента усиления.
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'])
Просмотрите полученные выигрыши контроллера, которые адаптируются в процессе моделирования. Верхний сюжет - , средний - , а нижний - . Флуктуации в значениях усиления обусловлены модулирующими сигналами от блока Extremum Seeking Control.
open_system([mdl '/Plant Dynamics and Objective/Gains'])
bdclose('ExtremumSeekingControlACC')