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

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

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

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

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

  • если Drel<DsafeСистема ACC управляет относительным положением эго-вагона относительно головного вагона.

Этот пример использует ту же модель ego и свинцового автомобиля, что и Адаптивная система круиз-контроля с использованием прогнозирующего контроля модели (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 с использованием Extremum Searning Control

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

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

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

Qd = 0.5;
Qv = 1;

Контроллер поиска extremum адаптирует следующие усиления контроллера.

  • Kxerr - Коэффициент усиления ошибки положения

  • Kverr - Коэффициент усиления ошибки скорости

  • Kvrel - Относительный коэффициент усиления скорости

Задайте начальные предположения для значений усиления.

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

Задайте параметры управления Extremum Searning

Simulink Control Design реализует алгоритм ESC с помощью блока Extremum Searning 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)

Используйте lowpass, чтобы удалить высокочастотный шум из демодулированного сигнала, и фильтр высоких частот, чтобы удалить смещение из возмущенного сигнала целевой функции. Задайте частоты отключения для этих фильтров.

omega_lpf = 0.04;
omega_hpf = 0.01;

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

Чтобы симулировать адаптивный круиз- контроллер ESC, откройте ExtremumSeekingControlACC модель.

mdl = 'ExtremumSeekingControlACC';
open_system(mdl)

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

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

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

sim(mdl);

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

  • Безопасное расстояние изменяется, когда изменяется скорость ego car.

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

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

Смотрите скорости ego и свинцовых автомобилей вместе с установленной скоростью ego-автомобиля. Чтобы сохранить безопасное расстояние, система ACC регулирует скорость ego car при изменении скорости свинцового автомобиля. Когда скорость свинцового вагона больше заданной скорости, эго-вагон прекращает отслеживать скорость свинцового вагона и совершает круиз как заданную скорость.

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')

См. также

Блоки

Похожие темы