В этом примере показано, как моделировать и генерировать код для автомобильного контроллера полосы движения.
В этом примере выполняется следующее:
Просмотрите алгоритм управления, который сочетает в себе слияние датчиков, обнаружение дорожек и следующий за дорожкой контроллер из программного обеспечения Model Predictive Control Toolbox™.
Протестируйте систему управления в модели Simulink ® с замкнутым контуром, используя синтетические данные, генерируемые программным обеспечением Automated Driving Toolbox™.
Настройте параметры генерации кода для моделирования ПО в цикле и автоматически создайте код для алгоритма управления.
Система отслеживания полосы движения представляет собой систему управления, которая удерживает транспортное средство, движущееся в пределах обозначенной полосы движения шоссе, при сохранении заданной пользователем скорости или безопасного расстояния от предшествующего транспортного средства. Следующая за дорожкой система включает комбинированное продольное и боковое управление эго-транспортным средством:
Продольный контроль - поддержание заданной водителем скорости и сохранение безопасного расстояния от предыдущего автомобиля в полосе движения путем регулировки ускорения эго-транспортного средства.
Боковой контроль - держите эго-транспортное средство в движении вдоль осевой линии его полосы движения путем регулировки рулевого управления эго-транспортным средством
Комбинированная система контроля за полосой движения обеспечивает достижение индивидуальных целей по продольному и боковому контролю. Кроме того, следующая за дорожкой система управления может регулировать приоритет двух целей, когда они не могут быть выполнены одновременно.
Пример продольного управления с использованием адаптивного круиз-контроля (ACC) с синтезом сенсоров см. в разделе Адаптивный круиз-контроль с синтезом сенсоров (Model Predictive Control Toolbox). Пример бокового управления с использованием системы поддержки полосы движения (LKA) с обнаружением полосы движения см. в разделе Помощь в поддержании полосы движения с обнаружением полосы движения (Model Predictive Control Toolbox). Пример ACC предполагает идеальное обнаружение полосы движения, а пример LKA не учитывает окружающие транспортные средства.
В этом примере рассматриваются как обнаружение полосы движения, так и окружающие автомобили. Система слежения за полосой движения синтезирует данные, полученные с помощью датчиков зрения и радаров, оценивает центр полосы движения и расстояние до ведущего автомобиля, а также вычисляет продольное ускорение и угол поворота эго-транспортного средства.
Откройте модель испытательного стенда Simulink.
open_system('LaneFollowingTestBenchExample')

Модель содержит четыре основных компонента:
Lane Following Controller - Управляет как продольным ускорением, так и углом переднего рулевого управления эго-транспортного средства
Транспортное средство и окружающая среда - моделирование движения эго-транспортного средства и моделирование окружающей среды
Обнаружение столкновений - останавливает моделирование при обнаружении столкновения эго-транспортного средства и ведущего транспортного средства
Дорожка MIO - позволяет отображать дорожку MIO в области птичьего глаза.
При открытии этой модели также запускается helperLFSetUp сценарий, который инициализирует данные, используемые моделью, путем загрузки констант, необходимых модели Simulink, таких как параметры модели транспортного средства, параметры конструкции контроллера, сценарий дороги и окружающие автомобили.
Постройте график дороги и пути движения эго-транспортного средства.
plot(scenario)

Для построения графика результатов моделирования и изображения окружения эго-транспортного средства и отслеживаемых объектов используйте область действия «Птичий глаз». Область «Птичий глаз» - это инструмент визуализации на уровне модели, который можно открыть с помощью панели инструментов Simulink. На вкладке Моделирование (Simulation) в разделе Результаты проверки (Review Results) щелкните Область действия птичьего глаза (Bird 's-Eye Scope). После открытия области настройки настройте сигналы, нажав кнопку Найти сигналы.
Чтобы получить вид среднего моделирования, смоделируйте модель для 10 секунд.
sim('LaneFollowingTestBenchExample','StopTime','10')
После моделирования модели в течение 10 секунд откройте Bird 's-Eye Scope. На панели инструментов области действия для отображения вида «Мировые координаты» сценария нажмите кнопку «Мировые координаты». В этом виде эго-транспортное средство обведено кругом. Для отображения легенды для вида «Координаты транспортного средства» нажмите «Легенда».

Bird 's-Eye Scope показывает результаты слияния датчиков. Он показывает, как радар и датчики обзора обнаруживают транспортные средства в пределах их зон покрытия. На ней также показаны дорожки, поддерживаемые блоком Multi-Object Tracker. Жёлтая дорожка показывает важнейший объект (MIO), который является ближайшей дорожкой перед эго-транспортным средством в своей полосе. Идеальная разметка полосы также показана вместе с синтетически обнаруженной левой и правой границами полосы (показана красным цветом).
Смоделировать модель до конца сценария.
sim('LaneFollowingTestBenchExample')
Assuming no disturbance added to measured output channel #3. -->Assuming output disturbance added to measured output channel #2 is integrated white noise. Assuming no disturbance added to measured output channel #1. -->Assuming output disturbance added to measured output channel #4 is integrated white noise. -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
Постройте график производительности контроллера.
plotLFResults(logsout,time_gap,default_spacing)


На первом рисунке показаны следующие результаты управления интервалами.
График скорости показывает, что эго-транспортное средство поддерживает управление скоростью от 0 до 11 секунд, переключается на управление интервалом от 11 до 16 секунд, затем переключается обратно на управление скоростью.
График Расстояние между двумя автомобилями показывает, что фактическое расстояние между ведущим транспортным средством и эго транспортным средством всегда больше безопасного расстояния.
График ускорения показывает, что ускорение для эго-транспортного средства является плавным.
График состояния столкновения показывает, что столкновение между ведущим транспортным средством и эго-транспортным средством не обнаружено, таким образом эго-транспортное средство работает в безопасном режиме.
На втором рисунке показаны следующие результаты бокового контроля.
График бокового отклонения показывает, что расстояние до осевой линии полосы находится в пределах 0,2 м.
График относительного угла рыскания показывает, что погрешность угла рыскания относительно осевой линии полосы находится в пределах 0,03 рад (менее 2 градусов).
График угла рулевого управления показывает, что угол рулевого управления для эго-транспортного средства является гладким.
Подсистема контроллера следящего за дорожкой содержит три основные части: 1) Оценка центра полосы 2) Отслеживание и слияние датчиков 3) Контроллер MPC
open_system('LaneFollowingTestBenchExample/Lane Following Controller')

Подсистема Estimate Lane Center выводит данные датчика полосы на контроллер MPC. Предварительно просматриваемая кривизна обеспечивает осевую линию кривизны полосы движения перед эго-транспортным средством. В этом примере эго-транспортное средство может смотреть вперед в течение 3 секунд, что является результатом горизонта прогнозирования и времени выборки контроллера. Контроллер использует предварительно просматриваемую информацию для вычисления угла поворота транспортного средства ego, что повышает производительность контроллера MPC. Боковое отклонение измеряет расстояние между эго-транспортным средством и осевой линией полосы движения. Относительный угол рыскания измеряет разность углов рыскания между эго-транспортным средством и дорогой. Блок ISO 8855 - SAE J670E внутри подсистемы преобразует координаты от обнаружения полосы движения, которые используют ISO 8855, в контроллер MPC, который использует SAE J670E.
Подсистема слежения и слияния датчиков обрабатывает сигналы наблюдения и радиолокационного обнаружения, поступающие из подсистемы «Транспортное средство и окружающая среда», и создает всеобъемлющую картину ситуации вокруг эго-транспортного средства. Кроме того, он предоставляет контроллеру полосы движения оценку ближайшего транспортного средства в полосе движения перед эго-транспортным средством.
Целью блока контроллера MPC является:
Поддерживать заданную водителем скорость и сохранять безопасное расстояние от ведущего транспортного средства. Эта цель достигается путем управления продольным ускорением.
Держите эго-автомобиль посередине полосы движения; то есть уменьшить боковое отклонение
и относительный угол рыскания
путем управления углом поворота.
Затормозите эго-автомобиль, когда дорога изгиб. Для достижения этой цели контроллер MPC имеет большие штрафные веса при боковом отклонении, чем при продольной скорости.

Контроллер MPC спроектирован в системном блоке управления путем следования (PFC) на основе введенных параметров маски, а разработанный контроллер MPC является адаптивным MPC, который обновляет модель транспортного средства во время выполнения. Контроллер полосы движения рассчитывает продольное ускорение и угол поворота для эго-транспортного средства на основе следующих входных данных:
Заданная драйвером скорость
Продольная скорость эго-транспортного средства
Предварительно просматриваемая кривизна (производная от обнаружения полосы движения)
Боковое отклонение (определяется по обнаружению полосы движения)
Относительный угол рыскания (определяется по обнаружениям полосы движения)
Относительное расстояние между ведущим транспортным средством и эго-транспортным средством (от системы отслеживания и слияния датчиков)
Относительная скорость между ведущим транспортным средством и эго-транспортным средством (из системы отслеживания и слияния датчиков)
Учитывая физические ограничения эго-транспортного средства, угол поворота рулевого управления ограничен в пределах [-26,0,26] рад, а продольное ускорение ограничено в пределах [-3,2] м/с ^ 2.
Подсистема «Транспортное средство и окружающая среда» позволяет выполнять моделирование полосы движения по замкнутому контуру после контроллера.
open_system('LaneFollowingTestBenchExample/Vehicle and Environment')

Системная задержка (System Latency) блокирует моделирование задержки в системе между входами и выходами модели. Задержка может быть вызвана задержкой датчика или задержкой связи. В этом примере задержка аппроксимируется одной
временной секундой выборки.
Подсистема Vehicle Dynamics моделирует динамику транспортного средства с помощью блока Bicycle Model - Force Input из Blockset™ Vehicle Dynamics. Динамика нижнего уровня моделируется линейной системой первого порядка с постоянной времени в
секундах.
Подсистема SAE J670E ISO 8855 преобразует координаты из Vehicle Dynamics, которая использует SAE J670E, в Scription Reader, которая использует ISO 8855.
Блок чтения сценариев считывает данные актера из файла сценария. Блок преобразует позы актера из мировых координат сценария в координаты эго-транспортного средства. Позы актера передаются в потоковом режиме по шине, генерируемой блоком. Блок считывания сценариев также генерирует идеальные границы левой и правой полос на основе положения транспортного средства по отношению к сценарию, используемому в helperLFSetUp.
Блок генератора обнаружения изображений принимает идеальные границы полосы движения из блока считывателя сценариев. Генератор обнаружения моделирует поле зрения монокулярной камеры и определяет угол курса, кривизну, производную кривизны и допустимую длину каждой границы дороги, учитывая любые другие препятствия. Блок радиолокационного обнаружения генерирует точечные обнаружения на основе данных наземной истинности, присутствующих в поле зрения РЛС, на основе сечения РЛС, определенного в сценарии.
В этом примере используется несколько сценариев тестирования на основе стандартов ISO и реальных сценариев. Для проверки производительности контроллера можно протестировать контроллер на наличие нескольких сценариев и настроить параметры контроллера, если производительность неудовлетворительна. Для этого:
Выберите сценарий путем изменения scenarioId в helperLFSetUp.
Конфигурирование параметров моделирования путем выполнения helperLFSetUp.
Моделирование модели с выбранным сценарием.
Оценка производительности контроллера с помощью plotLFResults
Настройте параметры контроллера, если производительность неудовлетворительна.
Вы можете автоматизировать верификацию и валидацию контроллера с помощью Simulink Test™.
LFRefMdl модель поддерживает генерацию кода C с помощью программного обеспечения Embedded Coder ®. Чтобы проверить наличие доступа к встроенному кодеру, запустите:
hasEmbeddedCoderLicense = license('checkout','RTW_Embedded_Coder')
Можно создать функцию C для модели и изучить отчет о создании кода, выполнив следующие действия:
if hasEmbeddedCoderLicense slbuild('LFRefMdl') end
Можно проверить, что скомпилированный код C ведет себя так, как ожидалось, с помощью моделирования ПО в цикле (SIL). Для моделирования LFRefMdl ссылочная модель в режиме SIL, используйте:
if hasEmbeddedCoderLicense set_param('LaneFollowingTestBenchExample/Lane Following Controller',... 'SimulationMode','Software-in-the-loop (SIL)') end
При запуске LaneFollowingTestBenchExample модель, код генерируется, компилируется и выполняется для LFRefMdl модель, которая позволяет проверить поведение скомпилированного кода с помощью моделирования.
В этом примере показано, как реализовать интегрированный контроллер полосы на кривой дороге с синтезом датчиков и обнаружением полосы, протестировать его в Simulink, используя синтетические данные, сгенерированные с помощью программного обеспечения Automated Driving Toolbox, компоновать его и автоматически генерировать для него код.
close all bdclose all