В этом примере показано, как использовать блок «Система помощи при сохранении полосы движения» в Simulink ®, а также показаны цели управления и ограничения этого блока.
Транспортное средство (эго-автомобиль), оснащенное системой помощи по поддержанию полосы движения (LKA), имеет датчик, такой как камера, который измеряет боковое отклонение и относительный угол рыскания между осевой линией полосы движения и эго-автомобилем. Датчик также измеряет текущую кривизну полосы движения и производную кривизны. В зависимости от длины кривой, которую может просмотреть датчик, кривизну перед эго-автомобилем можно вычислить по текущей кривизне и производной кривизны.
Система LKA поддерживает движение эго-автомобиля по осевой линии полос движения на дороге, регулируя угол переднего рулевого управления эго-автомобиля. Целью управления поддержанием полосы движения является управление боковым отклонением и относительным углом рыскания, близким к нулю.

Динамика для эго-автомобиля смоделирована в Simulink. Откройте модель Simulink.
mdl = 'mpcLKAsystem';
open_system(mdl)

Определите время выборки, Tsи продолжительность моделирования, T, в секундах.
Ts = 0.1; T = 15;
Для описания боковой динамики транспортного средства в этом примере используется модель велосипеда со следующими параметрами.
m - общая масса транспортного средства (кг).
Iz - момент инерции рыскания транспортного средства (Кгм ^ 2).
lf - продольное расстояние от центра тяжести до передних шин (м).
lr - продольное расстояние от центра тяжести до задних шин (м).
Cf - жесткость передних шин на повороте (N/rad).
Cr - жесткость задних шин на повороте (N/rad).
m = 1575; Iz = 2875; lf = 1.2; lr = 1.6; Cf = 19000; Cr = 33000;
Боковую динамику транспортного средства можно представить с помощью линейной инвариантной по времени (LTI) системы со следующими переменными состояния, ввода и вывода. Начальные условия для переменных состояния принимаются равными нулю.
Переменные состояния: Поперечная скорость
и скорость угла рыскания 
Входная переменная: Передний угол поворота рулевого управления 
Выходные переменные: те же, что и переменные состояния
В этом примере продольная динамика транспортного средства отделена от поперечной динамики транспортного средства. Поэтому предполагается, что продольная скорость постоянна. На практике продольная скорость может изменяться. Блок «Вспомогательная система поддержания полосы движения» использует адаптивный MPC для соответствующей корректировки модели поперечной динамики.
% Specify the longitudinal velocity in m/s.
Vx = 15;
Укажите модель пространства состояния, G(s), поперечной динамики транспортного средства.
A = [-(2*Cf+2*Cr)/m/Vx, -Vx-(2*Cf*lf-2*Cr*lr)/m/Vx;...
-(2*Cf*lf-2*Cr*lr)/Iz/Vx, -(2*Cf*lf^2+2*Cr*lr^2)/Iz/Vx];
B = [2*Cf/m, 2*Cf*lf/Iz]';
C = eye(2);
G = ss(A,B,C,0);
В этом примере блок Sensor Dynamics выводит боковое отклонение и относительный угол рыскания. Динамика относительного угла рыскания равна,
где
обозначает кривизну. Динамика бокового отклонения равна.
Блок «Предварительный просмотр кривизны» выводит предварительно просматриваемую кривизну со временем предварительного просмотра, равным одной секунде. Поэтому, учитывая время выборки,
горизонт прогнозирования 10 шаги. Кривизна, используемая в этом примере, рассчитывается на основе траекторий для маневра изменения двойной полосы движения.
Укажите горизонт прогнозирования и получите предварительно просматриваемую кривизну.
PredictionHorizon = 10; time = 0:0.1:15; md = getCurvature(Vx,time);
Система LKA моделируется в Simulink с использованием блока Lane Keeping Assist System. Входами в системный блок LKA являются:
Предварительно просматриваемая кривизна (по обнаружениям полос движения)
Продольная скорость эго
Боковое отклонение (от обнаружений полосы движения)
Относительный угол рыскания (по обнаружениям полосы движения)
Выходной сигнал системы LKA - угол переднего рулевого управления эго-автомобиля. Учитывая физические ограничения эго-автомобиля, угол поворота ограничен диапазоном [-0,5,0,5] рад/с.
u_min = -0.5; u_max = 0.5;
В этом примере параметры по умолчанию блока «Система поддержки полосы движения» соответствуют параметрам моделирования. Если параметры моделирования отличаются от значений по умолчанию, соответствующим образом обновите параметры блока.
Запустите модель.
sim(mdl)
Assuming no disturbance added to measured output channel #1. -->Assuming output disturbance added to measured output channel #2 is integrated white noise. -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
Постройте график результатов моделирования.
mpcLKAplot(logsout)

Боковое отклонение и относительный угол рыскания сходятся к нулю. То есть эго-автомобиль следует по дороге близко, основываясь на предварительно просматриваемой кривизне.
bdclose(mdl)