Этот пример показывает, как моделировать и сгенерировать код для автомобильного следующего за маршрутом контроллера.
В этом примере вы будете:
Рассмотрите алгоритм управления, который комбинирует сплав датчика, обнаружение маршрута и маршрут после контроллера от Model Predictive Control Toolbox™.
Протестируйте систему управления в модели Simulink® с обратной связью использование синтетических данных, сгенерированных Automated Driving Toolbox™.
Сконфигурируйте настройки генерации кода для программного обеспечения в симуляции цикла и автоматически сгенерируйте код для алгоритма управления.
Маршрут после системы является системой управления, которая сохраняет автомобиль, перемещающийся в отмеченном маршруте магистрали при поддержании установленной пользователями скорости или безопасного расстояния от предыдущего автомобиля. Маршрут после системы включает объединенное продольное и боковое управление автомобиля, оборудованного датчиком:
Продольное управление - Поддерживает скорость набора драйверов и сохраняет безопасное расстояние от предыдущего автомобиля в маршруте путем корректировки ускорения автомобиля, оборудованного датчиком.
Боковое управление - Сохраняет автомобиль, оборудованный датчиком, перемещающийся вдоль средней линии его маршрута путем корректировки регулирования автомобиля, оборудованного датчиком
Объединенный маршрут после системы управления достигает отдельных целей по продольному и боковому управлению. Далее, маршрут после системы управления может настроить приоритет двух голов, когда им нельзя соответствовать одновременно.
Для примера продольного управления с помощью адаптивного круиз-контроля (ACC) со сплавом датчика смотрите Адаптивный Круиз-контроль с Fusion Датчика (Model Predictive Control Toolbox). Для примера бокового управления с помощью системы хранения маршрута помогает (LKA) с обнаружением маршрута смотрите, что Маршрут Сохранить Помогает с Обнаружением Маршрута (Model Predictive Control Toolbox). Пример ACC принимает идеальное обнаружение маршрута, и пример LKA не рассматривает окружающие автомобили.
В этом примере рассматриваются и обнаружение маршрута и окружающие автомобили. Маршрут после системы синтезирует данные из видения и радарных обнаружений, оценивает центр маршрута и ведущее автомобильное расстояние, и вычисляет продольное ускорение и держащийся угол автомобиля, оборудованного датчиком.
Добавьте папку в качестве примера в путь MATLAB®.
addpath(fullfile(matlabroot,'examples','mpc','main'));
Откройте тестовую модель Simulink.
open_system('LaneFollowingTestBenchExample')
Модель содержит четыре основных компонента:
Маршрут После Контроллера - Средства управления и продольное ускорение и передний руководящий угол автомобиля, оборудованного датчиком
Автомобиль и Среда - Моделируют движение автомобиля, оборудованного датчиком и моделируют среду
Обнаружение столкновений - Остановки симуляция, когда столкновение автомобиля, оборудованного датчиком и ведущего автомобиля обнаруживается
Дорожка MIO - Включает дорожку MIO для отображения в Осциллографе "Бердз Ай".
Открытие этой модели также запускает скрипт helperLFSetUp
, который инициализирует данные, используемые моделью путем загрузки констант, необходимых модели Simulink, таких как параметры модели автомобиля, параметры проектирования контроллера, дорожный сценарий и окружающие автомобили.
Постройте дорогу и путь, что автомобиль, оборудованный датчиком будет следовать за использованием:
plot(scenario)
Чтобы построить результаты симуляции и изобразить среду автомобиля, оборудованного датчиком и отслеживаемые объекты, используйте Видимый с большого расстояния Осциллограф. Видимый с большого расстояния Осциллограф является инструментом визуализации образцового уровня в Simulink, что вы можете с помощью меню, предоставленного на панели инструментов модели Simulink. После открытия осциллографа, настроенного сигналы путем нажатия на Find Signals.
Чтобы получить середину представления симуляции, моделируйте модель в течение секунд 10
.
sim('LaneFollowingTestBenchExample','StopTime','10')
После симуляции модели в течение 10 секунд откройте Видимый с большого расстояния Осциллограф.
Видимый с большого расстояния осциллограф показывает результаты сплава датчика. Это показывает, как радар и датчики видения обнаруживают автомобили в их зонах охвата. Это также показывает дорожки, сохраняемые блоком 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 секунд, затем переключается назад на скоростное управление.
Расстояние между двумя автомобильными графиками показывает, что фактическое расстояние между ведущим автомобилем и автомобилем, оборудованным датчиком всегда больше, чем безопасное расстояние.
Ускоряющий график показывает, что ускорение для автомобиля, оборудованного датчиком сглаженно.
График состояния Collision показывает, что никакое столкновение между ведущим автомобилем и автомобилем, оборудованным датчиком не обнаруживается, таким образом выполнения автомобиля, оборудованного датчиком в безопасном режиме.
Вторые данные показывают следующие боковые результаты производительности управления.
Боковой график отклонения показывает, что расстояние до средней линии маршрута в 0,2 м.
Относительный угловой график отклонения от курса показывает, что угловая погрешность отклонения от курса относительно средней линии маршрута в 0,03 радах (меньше чем 2 градуса).
Держащийся угловой график показывает, что держащийся угол для автомобиля, оборудованного датчиком сглажен.
Маршрут После Подсистемы контроллера содержит три основных части: 1) Оценочный Центр Маршрута, 2) Отслеживающий и датчик Fusion 3) Контроллер MPC
open_system('LaneFollowingTestBenchExample/Lane Following Controller')
Оценочная подсистема Центра Маршрута выводит данные о датчике маршрута контроллеру MPC. Предварительно просмотренное искривление обеспечивает среднюю линию искривления маршрута перед автомобилем, оборудованным датчиком. В этом примере автомобиль, оборудованный датчиком может смотреть вперед в течение 3 секунд, который является продуктом горизонта прогноза и шага расчета контроллера. Диспетчер использует предварительно просмотренную информацию для вычисления руководящего угла автомобиля, оборудованного датчиком, который улучшает контроллер MPC производительность. Боковое отклонение измеряет расстояние между автомобилем, оборудованным датчиком и средней линией маршрута. Относительный угол отклонения от курса измеряет угловое различие в отклонении от курса между автомобилем, оборудованным датчиком и дорогой. ISO 8855 к блоку SAE J670E в подсистеме преобразовывает координаты от Обнаружений Маршрута, которые используют ISO 8855 Контроллеру MPC, который использует SAE J670E.
Видение процессов подсистемы Fusion Отслеживания и Датчика и радарные обнаружения, прибывающие из подсистемы Автомобиля и Среды и, генерируют всестороннее изображение ситуации среды вокруг автомобиля, оборудованного датчиком. Кроме того, это обеспечивает маршрут после контроллера с оценкой самого близкого автомобиля в маршруте перед автомобилем, оборудованным датчиком.
Цели для блока MPC Controller к:
Поддержите скорость набора драйверов и помешайте безопасному расстоянию ведущий автомобиль. Эта цель достигается путем управления продольным ускорением.
Сохраните автомобиль, оборудованный датчиком посреди маршрута; это, уменьшают боковое отклонение и относительный угол отклонения от курса, путем управления держащимся углом.
Замедлите автомобиль, оборудованный датчиком, когда дорога будет соблазнительна. Чтобы достигнуть этой цели, у контроллера MPC есть большие веса штрафа на боковом отклонении, чем на продольной скорости.
Контроллер MPC разработан в блоке Path Following Control (PFC) System на основе вводимых параметров маски, и разработанным Контроллером MPC является адаптивный MPC, который обновляет модель автомобиля во время выполнения. Маршрут после контроллера вычисляет продольное ускорение и держащийся угол для автомобиля, оборудованного датчиком на основе следующих входных параметров:
Скорость набора драйверов
Автомобиль, оборудованный датчиком продольная скорость
Предварительно просмотренное искривление (выведенный от Обнаружений Маршрута)
Боковое отклонение (выведенный от Обнаружений Маршрута)
Относительный угол отклонения от курса (выведенный от Обнаружений Маршрута)
Относительное расстояние между ведущим автомобилем и автомобилем, оборудованным датчиком (от системы Fusion Отслеживания и Датчика)
Относительная скорость между ведущим автомобилем и автомобилем, оборудованным датчиком (от системы Fusion Отслеживания и Датчика)
Рассматривая физические ограничения автомобиля, оборудованного датчиком, держащийся угол ограничивается быть в [-0.26,0.26] рад, и продольное ускорение ограничивается быть в [-3,2] m/s^2.
Подсистема Автомобиля и Среды включает симуляцию с обратной связью маршрута после контроллера.
open_system('LaneFollowingTestBenchExample/Vehicle and Environment')
Системные блоки Задержки моделируют задержку в системе между входами и выходами модели. Задержка может быть вызвана задержкой датчика или коммуникационной задержкой. В этом примере задержка аппроксимирована на секунды шага расчета.
Подсистема Динамики аппарата моделирует динамику аппарата с помощью блока Bicycle Model - Force Input от Vehicle Dynamics Blockset™. Движущие силы низшего уровня моделируются линейной системой первого порядка с временной константой секунд.
SAE J670E к подсистеме ISO 8855 преобразовывает координаты от Динамики аппарата, который использует SAE J670E Читателю Сценария, который использует ISO 8855.
Блок Scenario Reader считывает данные о положениях агента из файла сценария. Блок преобразовывает положения агента от мировых координат сценария в координаты автомобиля, оборудованного датчиком. Положения агента передаются потоком на шине, сгенерированной блоком. Блок Scenario Reader также генерирует идеальные левые и правые контуры маршрута на основе положения автомобиля относительно сценария, используемого в helperLFSetUp
.
Блок Vision Detection Generator берет идеальные контуры маршрута из блока Scenario Reader. Генератор обнаружения моделирует поле зрения монокулярной камеры и определяет направляющийся угол, искривление, производную искривления и допустимую длину каждого дорожного контура, составляя любые другие препятствия. Блок Radar Detection генерирует обнаружения точки от данных наземной истины, существующих в области радара на основе радарного поперечного сечения, заданного в сценарии.
Этот пример использует несколько сценариев тестирования на основе стандартов ISO и реальных сценариев. Чтобы проверить производительность контроллера, можно протестировать контроллер на несколько сценариев и настроить параметры контроллера, если производительность не является удовлетворительной. Сделать так:
Выберите сценарий путем изменения scenarioId
в helperLFSetUp
.
Сконфигурируйте параметры симуляции путем выполнения helperLFSetUp
.
Моделируйте модель с выбранным сценарием.
Оцените производительность контроллера с помощью plotLFResults
Настройте параметры контроллера, если производительность не является удовлетворительной.
Можно автоматизировать верификацию и валидацию контроллера, использующего Simulink Test™.
Поддержки модели LFRefMdl
, генерирующие код С с помощью программного обеспечения Embedded Coder®. Чтобы проверять, есть ли у вас доступ к Embedded Coder, выполнению:
hasEmbeddedCoderLicense = license('checkout','RTW_Embedded_Coder')
Можно сгенерировать функцию C для модели и исследовать отчет генерации кода путем выполнения:
if hasEmbeddedCoderLicense rtwbuild('LFRefMdl') end
Можно проверить, что скомпилированный код С ведет себя, как ожидается использование программного обеспечения в цикле (SIL) симуляция. Чтобы моделировать LFRefMdl
модель, на которую ссылаются, в режиме SIL, используйте:
if hasEmbeddedCoderLicense set_param('LaneFollowingTestBenchExample/Lane Following Controller',... 'SimulationMode','Software-in-the-loop (SIL)') end
Когда вы запускаете модель LaneFollowingTestBenchExample
, код сгенерирован, скомпилирован и выполнен для модели LFRefMdl
, которая позволяет вам протестировать поведение скомпилированного кода посредством симуляции.
Этот пример показывает, как реализовать интегрированный маршрут после контроллера на кривой дороге со сплавом датчика и обнаружением маршрута, протестировать, это в Simulink с помощью синтетических данных сгенерировало использование Automated Driving Toolbox, разбейте на компоненты его, и автоматически сгенерируйте код для него.
Удалите папку в качестве примера из пути MATLAB.
rmpath(fullfile(matlabroot,'examples','mpc','main'));
Видимый с большого расстояния осциллограф | Хранение маршрута помогает системе