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

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

  1. Проектируйте нелинейный контроллер MPC (NLMPC) для следующего маршрута.

  2. Сравните эффективность NLMPC с адаптивным MPC.

Введение

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

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

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

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

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

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

Другой пример увеличивает систему, следующую за полосой, с интервалом, где также поддерживается безопасное расстояние от обнаруженного свинцового автомобиля. Для получения дополнительной информации см. Раздел «Полоса следования за управлением с помощью Sensor Fusion и Lane Detection».

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

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

mdl = 'LaneFollowingNMPC';
open_system(mdl)

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

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

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

  3. Следующий контроллер маршрута: Моделируйте нелинейный MPC и адаптивный MPC.

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

Динамика динамики аппарата и датчика обсуждается более подробно в Adaptive Cruise Control with Sensor 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 в зависимости от информации моделирования и вычислительной степени для вашего приложения.

bdclose(mdl)

См. также

|

Похожие темы