Этот пример показывает, как реализовать адаптивный круиз-контроль с помощью подхода контроля экстремума (ESC). В этом примере цель состоит в том, чтобы заставить эго-автомобиль перемещаться с заданной скоростью при сохранении безопасного расстояния от головного автомобиля путем управления продольным ускорением и торможением.
Адаптивный круиз-контроль (ACC) - это система, призванная помочь транспортным средствам поддерживать безопасное следование расстоянию и оставаться в пределах ограничения скорости. Транспортное средство, оснащенное системой ACC (ego car), использует радар для измерения относительного расстояния () и относительная скорость () относительно ведущего транспортного средства. Система ACC предназначена для поддержания желаемой крейсерской скорости () или соблюдать относительное безопасное расстояние () от ведущего автомобиля. Переключатель в цели управления определяется на основе следующих условий.
если Система ACC следует желаемой опорной скорости круиза, заданной драйвером.
если Система 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)
Контроллер поиска экстремума достигает удовлетворительной эффективности управления путем регулировки параметров управления, чтобы максимизировать целевую функцию в реальном времени. В данном примере используйте следующую целевую функцию, которая зависит от относительного расстояния, безопасного расстояния, относительной скорости и заданной скорости.
Вот, и являются весами целевой функции для членов ошибки расстояния и ошибки скорости, соответственно.
Qd = 0.5; Qv = 1;
Контроллер поиска extremum адаптирует следующие усиления контроллера.
- Коэффициент усиления ошибки положения
- Коэффициент усиления ошибки скорости
- Относительный коэффициент усиления скорости
Задайте начальные предположения для значений усиления.
Kverr = 1; % ACC velocity error gain Kxerr = 1; % ACC spacing error gain Kvrel = 0.5; % ACC relative velocity gain
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'])
Просмотрите результаты усиления контроллера, которые адаптируются в течение симуляции. Верхний график , средний график , и нижний график . Колебания значений усиления связаны с сигналами модуляции от блока Extremum Seeking Control.
open_system([mdl '/Plant Dynamics and Objective/Gains'])
bdclose('ExtremumSeekingControlACC')