exponenta event banner

Дорожная полоса следования

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

Введение

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

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

  1. Разделение алгоритма и тестового стенда - модель разделяется на следующие за алгоритмом модели полосы движения и модель тестового стенда. Модели алгоритмов реализуют отдельные компоненты. Тестовый стенд включает в себя интеграцию алгоритмических моделей и виртуальную структуру тестирования.

  2. Исследуйте модель испытательного стенда - модель испытательного стенда содержит структуру тестирования, которая включает сценарий, модель динамики эго-транспортного средства и оценку метрик с использованием истинности земли. Кубовидный сценарий определяет траектории транспортного средства и определяет истинность грунта. Эквивалентная сцена Unreal Engine ® используется для моделирования обнаружений с датчика радара и изображений с датчика монокулярной камеры. Модель велосипеда используется для моделирования эго-транспортного средства.

  3. Изучите модели алгоритмов - модели алгоритмов являются эталонными моделями, которые реализуют обработку зрения, слияние датчиков, логику принятия решений и компоненты управления для построения полосы движения после применения.

  4. Визуализация тестового сценария - сценарий содержит криволинейную дорогу с несколькими транспортными средствами.

  5. Моделирование модели испытательного стенда - модель моделируется для тестирования интеграции компонентов обработки изображения, слияния датчиков и управления.

  6. Изучение дополнительных сценариев - эти сценарии тестируют систему в дополнительных условиях.

Тестирование интеграции контроллера и алгоритма восприятия требует фотореалистичной среды моделирования. В этом примере можно включить моделирование на уровне системы путем интеграции с Unreal Engine из Epic Games ®. Для среды моделирования 3D требуется 64-разрядная платформа Windows ®.

if ~ispc
    error(['3D Simulation is supported only on Microsoft', char(174), ' Windows', char(174), '.'])
end

Чтобы обеспечить воспроизводимость результатов моделирования, задайте случайное начальное число.

rng(0)

Алгоритм разделения и испытательный стенд

Модель разделена на отдельные алгоритмы и модели испытательного стенда.

  • Модели алгоритмов - модели алгоритмов являются эталонными моделями, реализующими функциональность отдельных компонентов.

  • Модель испытательного стенда - испытательный стенд Highway Lane Following определяет стимул и среду для тестирования моделей алгоритмов.

Изучение модели испытательного стенда

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

open_system("HighwayLaneFollowingTestBench")

Модель испытательного стенда содержит следующие модули:

  • 3D Сценарий моделирования - Подсистема, которая определяет дорогу, транспортные средства, датчик камеры и радарный датчик, используемый для моделирования.

  • Детектор маркера полосы движения - модель алгоритма для обнаружения границ полосы движения в кадре, захваченном датчиком камеры.

  • Детектор транспортного средства - модель алгоритма для обнаружения транспортных средств в кадре, захваченном датчиком камеры.

  • Figure Vehicle Sensor Fusion - модель алгоритма для предохранения детекторов транспортного средства от камеры и радиолокационных датчиков.

  • Lane Following Decision Logic - модель алгоритма для определения боковой и продольной логики принятия решения, которая предоставляет информацию, относящуюся к наиболее важному объекту (MIO) и центру полосы, контроллеру.

  • Lane Following Controller - модель алгоритма, определяющая угол поворота и управление ускорением.

  • Динамика транспортного средства - подсистема, определяющая динамическую модель эго-транспортного средства.

  • Оценка метрик - подсистема, которая оценивает поведение на уровне системы.

Подсистема моделирования 3D сценария конфигурирует дорожную сеть, позиционирует транспортные средства и синтезирует датчики. Откройте подсистему моделирования 3D сценария.

open_system("HighwayLaneFollowingTestBench/Simulation 3D Scenario")

Сцена и дорожная сеть определяются следующими частями подсистемы:

  • Для блока «Simulation 3D Scene Configuration» (Automated Driving Toolbox) параметр «Simulation» имеет значение Curved road.

  • Блок чтения сценариев (Automated Driving Toolbox) настроен на использование сценария вождения, который содержит дорожную сеть, тесно соответствующую участку дорожной сети из Curved road сцена.

Положения транспортного средства определяются следующими частями подсистемы:

  • Входной порт Ego управляет положением ego-транспортного средства, которое определяется блоком «Имитация транспортного средства 3D с землей после 1».

  • Блок «Транспортное средство в мир» (Automated Driving Toolbox) преобразует позы актера из координат эго-транспортного средства в мировые координаты.

  • Блок «Считыватель сценариев» (Automated Driving Toolbox) выводит позы акторов, которые управляют положением целевых транспортных средств. Эти транспортные средства определяются другими моделирующими 3D транспортными средствами с блоками «После земли» (Automated Driving Toolbox).

  • Блок Cuboid To 3D Simulation (Automated Driving Toolbox) преобразует систему координат ego pose (по отношению к центру задней оси транспортного средства) в систему координат 3D моделирования (по отношению к центру транспортного средства).

Датчики, прикрепленные к эго-транспортному средству, определяются следующими частями подсистемы:

  • Блок Simulation 3D Camera (Automated Driving Toolbox) крепится к эго-транспортному средству для съемки его вида спереди. Выходное изображение из этого блока обрабатывается блоком детектора маркера полосы движения для обнаружения полос движения и блоком детектора транспортного средства для обнаружения транспортных средств.

  • Блок моделирования 3D вероятностной конфигурации радара (Automated Driving Toolbox) прикреплен к эго-транспортному средству для обнаружения транспортных средств в среде моделирования 3D.

  • Центр смещения измерения в блок задней оси преобразует систему координат блока имитационной 3D вероятностной конфигурации радара (автоматизированная панель инструментов управления) (по отношению к центру транспортного средства) в координаты ego-позы (по отношению к центру задней оси транспортного средства).

Подсистема Vehicle Dynamics использует блок модели велосипеда для моделирования эго-транспортного средства. Откройте подсистему Vehicle Dynamics.

open_system("HighwayLaneFollowingTestBench/Vehicle Dynamics");

Блок модели велосипеда реализует жесткую двухосную одноколейную модель кузова транспортного средства для расчета продольного, бокового и рыскательного движения. Блок учитывает массу кузова, аэродинамическое сопротивление и распределение веса между осями за счёт ускорения и рулевого управления. Дополнительные сведения см. в разделе Модель велосипеда (Automated Driving Toolbox).

Подсистема оценки метрики позволяет выполнять оценку метрики на уровне системы с использованием информации о истинности основания из сценария. Откройте подсистему оценки метрик.

open_system("HighwayLaneFollowingTestBench/Metrics Assessment");

В этом примере для оценки системы следования по полосам используются четыре метрики.

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

  • Проверить в полосе (Verify In Lane) - этот блок проверяет, что эго-транспортное средство следует по одной из полос на дороге на протяжении всего моделирования.

  • Проверка промежутка времени - этот блок проверяет, что промежуток времени между эго-транспортным средством и ведущим транспортным средством превышает 0,8 секунды. Временной промежуток между двумя транспортными средствами определяется как отношение вычисленного расстояния на пути продвижения к скорости эго транспортного средства.

  • Проверить отсутствие столкновения (Verify No Collision) - этот блок проверяет, что эго-транспортное средство не сталкивается с ведущим транспортным средством ни в одной точке во время моделирования. Дополнительные сведения о том, как интегрировать эти метрики с Simulink Test™ для включения автоматического регрессионного тестирования, см. в разделе Автоматическое тестирование для отслеживания полосы движения (Automated Driving Toolbox).

Изучение моделей алгоритмов

Система следования по полосе разработана путем интегрирования детектора маркера полосы движения, детектора транспортного средства, слияния датчика переднего транспортного средства, логики следования по полосе движения и компонентов контроллера следования по полосе движения.

Модель алгоритма детектора маркера полосы движения реализует модуль восприятия для анализа изображений дорог. Откройте модель алгоритма детектора маркера полосы движения.

open_system("LaneMarkerDetector");

Детектор маркера полосы движения принимает кадр, захваченный датчиком монокулярной камеры, в качестве входного сигнала. Он также принимает внутренние параметры камеры через маску. Он определяет границы полосы движения и выводит информацию о полосе движения и типе маркировки каждой полосы движения через LaneSensor Дополнительные сведения о проектировании и оценке детектора маркера полосы движения см. в разделах «Проектирование детектора маркера полосы движения с использованием среды моделирования нереального двигателя» (Automated Driving Toolbox) и «Создание кода для детектора маркера полосы движения» (Automated Driving Toolbox).

Модель алгоритма детектора транспортного средства обнаруживает транспортные средства в сценарии вождения. Откройте модель алгоритма Vehicle Detector.

open_system("VisionVehicleDetector");

Детектор транспортного средства принимает кадр, захваченный датчиком камеры, в качестве входного сигнала. Он также принимает внутренние параметры камеры через маску. Он обнаруживает транспортные средства и выводит информацию о транспортном средстве в виде ограничивающих прямоугольников. Дополнительные сведения о проектировании и оценке детектора транспортного средства см. в разделе Создание кода для детектора транспортного средства системы технического зрения (Automated Driving Toolbox).

Компонент слияния датчиков переднего транспортного средства плавит детекторы транспортного средства от камер и радиолокационных датчиков и отслеживает обнаруженные транспортные средства с использованием метода отслеживания центрального уровня. Откройте модель алгоритма Fusion датчика транспортного средства.

open_system("ForwardVehicleSensorFusion");

Модель слияния датчиков переднего транспортного средства принимает в качестве входных сигналов сигналы обнаружения транспортного средства от датчиков зрения и радаров. Радиолокационные детекторы группируются и затем объединяются с детекторами зрения. Конкатенированные обнаруженные транспортные средства затем отслеживаются с использованием совместного вероятностного трекера ассоциации данных. Этот компонент выводит подтвержденные дорожки. Дополнительные сведения о слиянии датчиков транспортного средства в прямом направлении см. в разделе Слияние датчиков транспортного средства в прямом направлении (Automated Driving Toolbox).

Модель алгоритма логики принятия решений по полосе определяет боковые и продольные решения на основе обнаруженных полос и путей. Откройте модель алгоритма Lane Following Decision Logic.

open_system("LaneFollowingDecisionLogic");

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

Регулятор, следующий за полосой движения, определяет продольное и боковое управление. Откройте модель алгоритма Lane Following Controller.

open_system("LaneFollowingController");

Контроллер принимает заданную скорость, центр полосы движения и информацию MIO в качестве входных данных. Для управления углом поворота и ускорением эго-транспортного средства используется контроллер траектории. Он также использует контрольный контроллер торможения для применения тормозов в качестве отказоустойчивого режима. Контроллер выдает команду угла поворота и ускорения, которая определяет, следует ли ускорять, замедлять или применять тормоза. Блок Vehicle Dynamics использует эти выходы для бокового и продольного управления эго-транспортным средством.

Визуализация сценария тестирования

Вспомогательная функция scenario_LFACC_03_Curve_StopnGo создает сценарий cuboid, совместимый с HighwayLaneFollowingTestBench модель. Это сценарий с открытым контуром, содержащий несколько целевых транспортных средств на криволинейной дороге. Центры дорог, разметка полос движения и транспортные средства в этом кубовидном сценарии тесно совпадают с участком криволинейной дорожной сцены, обеспечиваемым средой моделирования 3D. В этом сценарии ведущее транспортное средство замедляется перед эго-транспортным средством, в то время как другие транспортные средства перемещаются по соседним полосам.

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

hFigScenario = helperPlotLFScenario("scenario_LFACC_03_Curve_StopnGo");

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

Закройте фигуру.

close(hFigScenario)

Моделирование модели испытательного стенда

Сконфигурируйте и протестируйте интеграцию алгоритмов в среде моделирования 3D. Для уменьшения количества выходных данных в командном окне отключите сообщения обновления MPC.

mpcverbosity('off');

Сконфигурируйте модель стенда для использования того же сценария.

helperSLHighwayLaneFollowingSetup("scenarioFcnName",...
    "scenario_LFACC_03_Curve_StopnGo");
sim("HighwayLaneFollowingTestBench")

Постройте график результатов работы бокового контроллера.

hFigLatResults = helperPlotLFLateralResults(logsout);

Закройте фигуру.

close(hFigLatResults)

Проверьте результаты моделирования.

  • График «Обнаруженные боковые смещения границ полосы движения» показывает поперечные смещения обнаруженных границ левой и правой полосы движения от осевой линии полосы движения. Обнаруженные значения близки к наземной истинности полосы движения, но отклоняются на небольшие величины.

  • График бокового отклонения показывает боковое отклонение эго-транспортного средства от осевой линии полосы движения. В идеале боковое отклонение равно нулю метров, что означает, что эго-транспортное средство точно следует осевой линии. Небольшие отклонения возникают, когда транспортное средство изменяет скорость, чтобы избежать столкновения с другим транспортным средством.

  • График относительного угла рыскания показывает относительный угол рыскания между эго-транспортным средством и осевой линией полосы движения. Относительный угол рыскания очень близок к нулевому радиану, что подразумевает, что курсовой угол эго-транспортного средства близко совпадает с углом рыскания осевой линии.

  • График угла рулевого управления показывает угол рулевого управления эго-транспортного средства. Траектория угла поворота плавная.

Постройте график результатов работы продольного контроллера.

hFigLongResults = helperPlotLFLongitudinalResults(logsout,time_gap,...
    default_spacing);

Закройте фигуру.

close(hFigLongResults)

Проверьте результаты моделирования.

  • График относительного продольного расстояния показывает расстояние между эго-транспортным средством и MIO. В этом случае эго-транспортное средство приближается к MIO и приближается к нему или в некоторых случаях превышает безопасное расстояние.

  • График относительной продольной скорости показывает относительную скорость между эго-транспортным средством и MIO. В этом примере детектор транспортного средства обнаруживает только позиции, поэтому трекер в алгоритме управления оценивает скорость. Расчетная скорость отстает от фактической (истинной) относительной скорости MIO.

  • График Абсолютного ускорения (Absolute acceleration) показывает, что контроллер дает команду транспортному средству замедляться, когда оно слишком близко к MIO.

  • График абсолютной скорости показывает, что эго-транспортное средство первоначально следует установленной скорости, но когда MIO замедляется, чтобы избежать столкновения, эго-транспортное средство также замедляется.

Во время моделирования модель регистрирует сигналы в базовом рабочем пространстве как logsout и записывает выходной сигнал датчика камеры в forwardFacingCamera.mp4. Вы можете использовать plotLFDetectionResults функция для визуализации моделируемых обнаружений, подобных тому, как регистрируемые данные исследуются в примере «Предупреждение о столкновении в прямом направлении с использованием датчика Fusion» (Automated Driving Toolbox). Можно также записать визуализированные обнаружения в видеофайл, чтобы разрешить просмотр другим пользователям, не имеющим доступа к MATLAB.

Постройте график результатов обнаружения на основе зарегистрированных данных, создайте видео и откройте приложение Video Viewer (панель инструментов обработки изображений).

hVideoViewer = helperPlotLFDetectionResults(...
    logsout, "forwardFacingCamera.mp4" , scenario, camera, radar,...
    scenarioFcnName,...
    "RecordVideo", true,...
    "RecordVideoFileName", scenarioFcnName + "_VPA",...
    "OpenRecordedVideoInVideoViewer", true,...
    "VideoViewerJumpToTime", 10.6);

Воспроизведение созданного видео.

  • Фронтальная камера показывает изображение, возвращенное датчиком камеры. Граница левой полосы отображается красным цветом, а граница правой полосы - зеленым. Эти полосы возвращаются с помощью модели «Детектор маркеров полос». Отслеживаемые обнаружения также накладываются на видео.

  • Bird 's-Eye Plot показывает истинное положение транспортного средства, зоны покрытия датчиков, вероятностные обнаружения и выходные сигналы отслеживания. Заголовок графика включает время моделирования, чтобы можно было соотнести события между видео и предыдущими статическими графиками.

Закройте фигуру.

close(hVideoViewer)

Дополнительные сценарии

Предыдущее моделирование протестировало scenario_LFACC_03_Curve_StopnGo сценарий. В этом примере представлены дополнительные сценарии, совместимые с HighwayLaneFollowingTestBench модель:

  scenario_LF_01_Straight_RightLane
  scenario_LF_02_Straight_LeftLane
  scenario_LF_03_Curve_LeftLane
  scenario_LF_04_Curve_RightLane
  scenario_LFACC_01_Curve_DecelTarget
  scenario_LFACC_02_Curve_AutoRetarget
  scenario_LFACC_03_Curve_StopnGo
  scenario_LFACC_04_Curve_CutInOut
  scenario_LFACC_05_Curve_CutInOut_TooClose
  scenario_LFACC_06_Straight_StopandGoLeadCar

Эти сценарии представляют два типа тестирования.

  • Использовать сценарии с scenario_LF_ префикс для проверки алгоритмов обнаружения полосы движения и следования полосы движения без препятствий со стороны других транспортных средств. Транспортные средства в сценарии расположены так, что они не видны эго-транспортным средством.

  • Использовать сценарии с scenario_LFACC_ префикс для тестирования алгоритмов обнаружения полосы движения и следования полосы движения с другими транспортными средствами, которые находятся в зоне действия датчика эго-транспортного средства.

Изучите комментарии в каждом файле для получения более подробной информации о геометрии дороги и транспортных средств в каждом сценарии. Вы можете настроить HighwayLaneFollowingTestBench модель и рабочая область для моделирования этих сценариев с использованием helperSLHighwayLaneFollowingSetup функция.

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

helperSLHighwayLaneFollowingSetup("scenarioFcnName",...
    "scenario_LF_04_Curve_RightLane");

Снова включите сообщения обновления MPC.

mpcverbosity('on');

Заключение

В этом примере показано, как интегрировать компоненты обработки изображения, слияния датчиков и контроллера для моделирования полосы движения после системы в среде моделирования 3D с замкнутым контуром. Этот пример также продемонстрировал различные метрики оценки для проверки эффективности проектируемой системы. Если у вас есть лицензия на Simulink Coder™ и Embedded Coder™, можно создать готовый к развертыванию код моделей алгоритмов для встроенной цели в реальном времени (ERT).

Авторское право 2019-2020 The MathWorks, Inc.

См. также

Блоки

Связанные темы