В этом примере показано, как симулировать и сгенерировать код для автомобильного следующего за маршрутом контроллера.
В этом примере, вас:
Рассмотрите алгоритм управления, который комбинирует сплав датчика, обнаружение маршрута и маршрут после контроллера из программного обеспечения Model Predictive Control Toolbox™.
Протестируйте систему управления в модели Simulink® с обратной связью использование синтетических данных, сгенерированных программным обеспечением Automated Driving Toolbox™.
Сконфигурируйте настройки генерации кода для программного обеспечения в симуляции цикла и автоматически сгенерируйте код для алгоритма управления.
Маршрут после системы является системой управления, которая сохраняет транспортное средство, перемещающееся в отмеченном маршруте магистрали при поддержании установленной пользователями скорости или безопасного расстояния от предыдущего транспортного средства. Маршрут после системы включает объединенное продольное и боковое управление автомобиля, оборудованного датчиком:
Продольное управление - Обеспечивает скорость набора драйверов и сохраняет безопасное расстояние от предыдущего автомобиля в маршруте путем корректировки ускорения автомобиля, оборудованного датчиком.
Боковое управление - Сохраняет автомобиль, оборудованный датчиком, перемещающийся вдоль средней линии его маршрута путем корректировки регулирования автомобиля, оборудованного датчиком
Объединенный маршрут после системы управления достигает отдельных целей по продольному и боковому управлению. Далее, маршрут после системы управления может настроить приоритет двух голов, когда им нельзя соответствовать одновременно.
Для примера продольного управления с помощью адаптивного круиз-контроля (ACC) со сплавом датчика смотрите Адаптивный Круиз-контроль с Fusion Датчика (Model Predictive Control Toolbox). Для примера бокового управления с помощью системы хранения маршрута помогает (LKA) с обнаружением маршрута смотрите, что Маршрут Сохранить Помогает с Обнаружением Маршрута (Model Predictive Control Toolbox). Пример ACC принимает идеальное обнаружение маршрута, и пример LKA не рассматривает окружающие транспортные средства.
В этом примере рассматриваются и обнаружение маршрута и окружающие автомобили. Маршрут после системы синтезирует данные из видения и радарных обнаружений, оценивает центр маршрута и ведущее автомобильное расстояние, и вычисляет продольное ускорение и держащийся угол автомобиля, оборудованного датчиком.
Откройте тестовую модель Simulink.
open_system('LaneFollowingTestBenchExample')
Модель содержит четыре основных компонента:
Маршрут После Контроллера - Средства управления и продольное ускорение и передний руководящий угол автомобиля, оборудованного датчиком
Транспортное средство и Среда - Моделируют движение автомобиля, оборудованного датчиком и моделируют среду
Обнаружение столкновений - Остановки симуляция, когда столкновение автомобиля, оборудованного датчиком и ведущего транспортного средства обнаруживается
Дорожка MIO - Включает дорожку MIO для отображения в Bird ' s-Eye Scope.
Открытие этой модели также запускает helperLFSetUp
скрипт, который инициализирует данные, используемые моделью путем загрузки констант, необходимых модели Simulink, таких как параметры модели транспортного средства, параметры проектирования контроллера, дорожный сценарий и окружающие автомобили.
Постройте дорогу и путь что автомобиль, оборудованный датчиком.
plot(scenario)
Чтобы построить результаты симуляции и изобразить среду автомобиля, оборудованного датчиком и отслеживаемые объекты, используйте Bird ' s-Eye Scope. Bird ' s-Eye Scope является инструментом визуализации уровня модели, который можно открыть от панели инструментов Simulink. На вкладке Simulation, рассматриваемых Результатах, нажимают Bird's-Eye Scope. После открытия осциллографа, настроенного сигналы путем нажатия на Find Signals.
Чтобы получить середину представления симуляции, симулируйте модель для 10
секунды.
sim('LaneFollowingTestBenchExample','StopTime','10')
После симуляции модели в течение 10 секунд откройте Bird ' s-Eye Scope. В панели инструментов осциллографа, чтобы отобразить Представление Мировых координат сценария, нажимают World Coordinates. В этом представлении окружен автомобиль, оборудованный датчиком. Чтобы отобразить легенду для Представления Координат Транспортного средства, нажмите Legend.
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 секунд, затем переключается назад на скоростное управление.
Расстояние между двумя автомобильными графиками показывает, что фактическое расстояние между ведущим транспортным средством и автомобилем, оборудованным датчиком всегда больше безопасного расстояния.
Ускоряющий график показывает, что ускорение для автомобиля, оборудованного датчиком является гладким.
График состояния 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] м/с^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 slbuild('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, разбейте на компоненты его, и автоматически сгенерируйте код для него.
close all bdclose all