Маршрут после управления с Fusion датчика и обнаружения маршрута

В этом примере показано, как симулировать и сгенерировать код для автомобильного следующего за маршрутом контроллера.

В этом примере вы будете:

  1. Рассмотрите алгоритм управления, который комбинирует сплав датчика, обнаружение маршрута и маршрут после контроллера от Model Predictive Control Toolbox™.

  2. Протестируйте систему управления в модели Simulink® с обратной связью использование синтетических данных, сгенерированных Automated Driving Toolbox™.

  3. Сконфигурируйте настройки генерации кода для программного обеспечения в симуляции цикла и автоматически сгенерируйте код для алгоритма управления.

Введение

Маршрут после системы является системой управления, которая сохраняет транспортное средство, перемещающееся в отмеченном маршруте магистрали при поддержании установленной пользователями скорости или безопасного расстояния от предыдущего транспортного средства. Маршрут после системы включает объединенное продольное и боковое управление автомобиля, оборудованного датчиком:

  • Продольное управление - Обеспечивает скорость набора драйверов и сохраняет безопасное расстояние от предыдущего автомобиля в маршруте путем корректировки ускорения автомобиля, оборудованного датчиком.

  • Боковое управление - Сохраняет автомобиль, оборудованный датчиком, перемещающийся вдоль средней линии его маршрута путем корректировки регулирования автомобиля, оборудованного датчиком

Объединенный маршрут после системы управления достигает отдельных целей по продольному и боковому управлению. Далее, маршрут после системы управления может настроить приоритет двух голов, когда им нельзя соответствовать одновременно.

Для примера продольного управления с помощью адаптивного круиз-контроля (ACC) со сплавом датчика смотрите Адаптивный Круиз-контроль с Fusion Датчика. Для примера бокового управления с помощью системы хранения маршрута помогает (LKA) с обнаружением маршрута смотрите, что Маршрут Сохранить Помогает с Обнаружением Маршрута. Пример ACC принимает идеальное обнаружение маршрута, и пример LKA не рассматривает окружающие транспортные средства.

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

Добавьте папку в качестве примера в путь MATLAB®.

addpath(fullfile(matlabroot,'examples','mpc','main'));

Открытая тестовая модель

Откройте тестовую модель Simulink.

open_system('LaneFollowingTestBenchExample')

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

  1. Маршрут После Контроллера - Средства управления и продольное ускорение и передний руководящий угол автомобиля, оборудованного датчиком

  2. Транспортное средство и Среда - Моделируют движение автомобиля, оборудованного датчиком и моделируют среду

  3. Обнаружение столкновений - Остановки симуляция, когда столкновение автомобиля, оборудованного датчиком и ведущего транспортного средства обнаруживается

  4. Дорожка 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 и реальных сценариев. Чтобы проверить производительность контроллера, можно протестировать контроллер на несколько сценариев и настроить параметры контроллера, если производительность не является удовлетворительной. Сделать так:

  1. Выберите сценарий путем изменения scenarioId в helperLFSetUp.

  2. Сконфигурируйте параметры симуляции путем выполнения helperLFSetUp.

  3. Симулируйте модель с выбранным сценарием.

  4. Оцените производительность контроллера с помощью plotLFResults

  5. Настройте параметры контроллера, если производительность не является удовлетворительной.

Можно автоматизировать верификацию и валидацию контроллера, использующего 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'));

Смотрите также

Блоки

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте