Маршрут после Использования нелинейного прогнозирующего управления модели

В этом примере показано, как спроектировать следующий за маршрутом контроллер, использующий блок Nonlinear Model Predictive Controller. В этом примере, вас:

  1. Спроектируйте нелинейный контроллер MPC (NLMPC) для маршрута после.

  2. Сравните производительность NLMPC с адаптивным MPC.

Введение

Следующая за маршрутом система является системой управления, которая сохраняет транспортное средство, перемещающееся вдоль средней линии магистрального маршрута при поддержании установленной пользователями скорости. Следующий за маршрутом сценарий изображен в следующем рисунке.

Следующая за маршрутом система управляет и продольным ускорением и передним руководящим углом транспортного средства к:

  • Сохраните боковое отклонение$e_1$ и относительный угол отклонения от курса$e_2$ маленькими.

  • Сохраните продольную скорость$V_x$ близко к скорости набора драйверов.

  • Сбалансируйте вышеупомянутые два гола, когда им нельзя будет соответствовать одновременно.

В отдельном примере хранения маршрута помогают, оно принято, что продольная скорость постоянная. Для получения дополнительной информации смотрите, что Маршрут Сохранить Помогает Системе Используя Прогнозирующее Управление Модели. Это ограничение ослаблено в этом примере, потому что продольное ускорение варьируется по этой системе управления MIMO.

Другой пример увеличивает следующую за маршрутом систему с разрядкой управления, где безопасное расстояние от обнаруженного ведущего автомобиля также обеспечено. Для получения дополнительной информации смотрите, что Маршрут Следует за Управлением с Fusion Датчика и Обнаружением Маршрута.

Добавьте папку в качестве примера в путь MATLAB®.

addpath(fullfile(matlabroot,'examples','mpc','main'));

Обзор модели Simulink

Откройте модель Simulink.

mdl = 'LaneFollowingNMPC';
open_system(mdl)

Эта модель содержит четыре основных компонента:

  1. Динамика аппарата: Примените велосипедный режим боковой динамики аппарата и аппроксимируйте продольную динамику с помощью постоянной времени$\tau$.

  2. Динамика датчика: Аппроксимируйте датчик, такой как камера, чтобы вычислить боковое отклонение и относительный угол отклонения от курса.

  3. Маршрут После Контроллера: Симулируйте нелинейный MPC и адаптивный MPC.

  4. Предварительное средство просмотра искривления: Обнаружьте искривление на шаге текущего времени и последовательности искривления по горизонту предсказания контроллера MPC.

Динамика аппарата и динамика датчика обсуждены более подробно в Адаптивном Круиз-контроле с Fusion Датчика. Этот пример применяет ту же модель для динамики датчика и транспортного средства.

Параметры динамики аппарата и дорожного искривления

Необходимая Динамика аппарата и Дорожные параметры Искривления заданы с помощью LaneFollowingUsingNMPCData скрипт, который является PreLoadFcn коллбэк модели.

Спроектируйте нелинейный прогнозирующий контроллер модели

Модель предсказания непрерывного времени для NLMPC имеет следующее состояние и выходные уравнения. Уравнения состояния определены в LaneFollowingStateFcn.

Модель предсказания включает модель неизмеренного воздействия (UD). Модель UD описывает, с каким неизмеренным воздействием NLMPC ожидает сталкиваться и отклонять на объекте. В этом примере модель UD является интегратором со своим входом, принятым, чтобы быть белым шумом. Его выход добавляется к относительному углу отклонения от курса. Поэтому диспетчер ожидает случайное подобное шагу неизмеренное воздействие, происходящее под относительным углом отклонения от курса выход, и готов отклонить его, когда это произойдет.

Создайте нелинейный контроллер MPC с моделью предсказания, которая имеет семь состояний, три выходных параметров и два входных параметров. Модель имеет сигналы на два мВ: ускорение и регулирование. Продукт дорожного искривления и продольной скорости моделируется как измеренное воздействие, и неизмеренное воздействие моделируется белым шумом.

nlobj = nlmpc(7,3,'MV',[1 2],'MD',3,'UD',4);
In standard cost function, zero weights are applied by default to one or more OVs because there are fewer MVs than OVs.

Задайте шаг расчета контроллера, горизонт предсказания, и управляйте горизонтом.

nlobj.Ts = Ts;
nlobj.PredictionHorizon = 10;
nlobj.ControlHorizon = 2;

Задайте функцию состояния для нелинейной модели объекта управления и ее якобиана.

nlobj.Model.StateFcn = @(x,u) LaneFollowingStateFcn(x,u);
nlobj.Jacobian.StateFcn = @(x,u) LaneFollowingStateJacFcn(x,u);

Задайте выходную функцию для нелинейной модели объекта управления и ее якобиана. Выходные переменные:

  • Продольная скорость

  • Боковое отклонение

  • Сумма угла отклонения от курса и угла отклонения от курса вывела воздействие

nlobj.Model.OutputFcn = @(x,u) [x(3);x(5);x(6)+x(7)];
nlobj.Jacobian.OutputFcn = @(x,u) [0 0 1 0 0 0 0;0 0 0 0 1 0 0;0 0 0 0 0 1 1];

Установите ограничения для переменных, которыми управляют.

nlobj.MV(1).Min = -3;      % Maximum acceleration 3 m/s^2
nlobj.MV(1).Max = 3;       % Minimum acceleration -3 m/s^2
nlobj.MV(2).Min = -1.13;   % Minimum steering angle -65
nlobj.MV(2).Max = 1.13;    % Maximum steering angle 65

Установите масштабные коэффициенты.

nlobj.OV(1).ScaleFactor = 15;   % Typical value of longitudinal velocity
nlobj.OV(2).ScaleFactor = 0.5;  % Range for lateral deviation
nlobj.OV(3).ScaleFactor = 0.5;  % Range for relative yaw angle
nlobj.MV(1).ScaleFactor = 6;    % Range of steering angle
nlobj.MV(2).ScaleFactor = 2.26; % Range of acceleration
nlobj.MD(1).ScaleFactor = 0.2;  % Range of Curvature

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

nlobj.Weights.OutputVariables = [1 1 0];

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

nlobj.Weights.ManipulatedVariablesRate = [0.3 0.1];

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

  • x0 содержит значения состояния.

  • u0 содержит входные значения.

  • ref0 содержит выходные значения ссылки.

  • md0 содержит измеренное значение воздействия.

x0 = [0.1 0.5 25 0.1 0.1 0.001 0.5];
u0 = [0.125 0.4];
ref0 = [22 0 0];
md0 = 0.1;
validateFcns(nlobj,x0,u0,md0,{},ref0);
Model.StateFcn is OK.
Jacobian.StateFcn is OK.
Model.OutputFcn is OK.
Jacobian.OutputFcn is OK.
Analysis of user-provided model, cost, and constraint functions complete.

В этом примере расширенный фильтр Калмана (EKF) обеспечивает оценку состояния для семи состояний. Функция изменения состояния для EKF задана в LaneFollowingEKFStateFcn, и функция измерения задана в LaneFollowingEKFMeasFcn.

Спроектируйте адаптивную модель прогнозирующий контроллер

Адаптивный MPC (AMPC) контроллер также создан с использованием блок Path Following Control System в этом примере. Этот диспетчер использует линейную модель в динамике аппарата и обновляет модель онлайн, когда продольная скорость варьируется.

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

Сравните производительность контроллера

Чтобы сравнить результаты NLMPC и AMPC, симулируйте модель и сохраните записанные данные.

Во-первых, симулируйте модель с помощью нелинейного MPC. Для этого установите controller_type к 1.

controller_type = 1;
sim(mdl)
logsout1 = logsout;

Во-вторых, симулируйте модель с помощью адаптивного MPC. Для этого установите controller_type к 2.

controller_type = 2;
sim(mdl)
logsout2 = logsout;
   Assuming no disturbance added to measured output channel #1.
   Assuming no disturbance added to measured output channel #2.
-->Assuming output disturbance added to measured output channel #3 is integrated white noise.
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

Постройте и сравните результаты симуляции.

LaneFollowingCompareResults(logsout1,logsout2)

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

Продольная команда управления и производительность для нелинейного и адаптивного MPC немного отличаются. У нелинейного контроллера MPC есть более сглаженная ускоряющая команда и лучшее отслеживание скорости набора, несмотря на то, что результат адаптивного MPC также приемлем.

Можно также просмотреть результаты через Осциллографы Выходных параметров и Входных параметров в модели.

Установите вариант контроллера на нелинейный MPC.

controller_type = 1;

Заключение

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

Удалите папку в качестве примера из пути MATLAB.

rmpath(fullfile(matlabroot,'examples','mpc','main'));
bdclose(mdl)

Смотрите также

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте