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

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

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

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

Введение

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

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

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

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

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

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

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

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

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

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

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

mdl = 'LaneFollowingNMPC';
open_system(mdl)

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

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

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

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

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

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

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

Необходимая Динамика аппарата и Дорожные параметры Искривления заданы в скрипте LaneFollowingUsingNMPCData.m, который является коллбэком 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)

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

|

Похожие темы