Дорожный переулок, следующий за

Этот пример показывает, как симулировать дорожную полосу после применения с компонентами обработки зрения, слияния датчиков и контроллера. Эти компоненты тестируются в 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

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

rng(0)

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

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

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

  • Тестовая модель - The Highway Lane Следующий испытательный стенд определяет стимул и окружение для тестирования моделей алгоритма.

Исследуйте тестовую модель

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

open_system("HighwayLaneFollowingTestBench")

Тестовая модель содержит следующие модули:

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

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

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

  • Прямое Транспортное средство Sensor Fusion - модель алгоритма для сплавления транспортного средства обнаружений с камеры и радарных датчиков.

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

  • Контроллер следования маршрута - модель алгоритма, которая задает угол поворота и элементы управления ускорением.

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

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

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

open_system("HighwayLaneFollowingTestBench/Simulation 3D Scenario")

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

  • Для блока Simulation 3D Scene Configuration задан параметр SceneName Curved road.

  • Блок Scenario Reader сконфигурирован так, чтобы использовать сценарий вождения, который содержит дорожную сеть, которая тесно совпадает с участком дорожной сети от Curved road сцена.

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

  • Входной порт Ego управляет положением ego vehicle, которое задается блоком Simulation 3D Vehicle with Ground Following 1.

  • Блок Транспортное средство To World преобразует положения актёра из координат автомобиля , оборудованного датчиком в мировые координаты.

  • Блок Scenario Reader выводит положения актёра, которые управляют положением целевых транспортных средств. Эти транспортные средства заданы другими блоками Simulation 3D Vehicle with Ground Following.

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

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

  • Блок Симуляцией 3D Camera присоединен к автомобилю , оборудованному датчиком, чтобы захватить его вид спереди. Выходное изображение из этого блока обрабатывается блоком Lane Marker Detector, чтобы обнаружить полосы движения и блок Vehicle Detector, чтобы обнаружить транспортные средства.

  • Блок Simulation 3D Probabilistic Radar Configuration присоединен к транспортному средству ego, чтобы обнаружить автомобили в 3D симуляции.

  • Блок Центр Смещения Измерения в Заднюю Ось преобразует систему координат блока Simulation 3D Radar Configuration (относительно ниже центра транспортного средства) в координаты положения эго (относительно ниже центра задней оси транспортного средства).

Подсистема Динамики аппарата использует блок Bicycle Model, чтобы смоделировать автомобиль , оборудованный датчиком. Откройте Подсистему Динамики аппарата.

open_system("HighwayLaneFollowingTestBench/Vehicle Dynamics");

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

Подсистема Metric Assessment позволяет проводить метрические оценки на уровне системы с помощью основной истины из сценария. Откройте подсистему Metrics Assessment.

open_system("HighwayLaneFollowingTestBench/Metrics Assessment");

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

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

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

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

  • Проверьте отсутствие столкновения - Этот блок проверяет, что автомобиль , оборудованный датчиком не сталкивается с ведущим транспортным средством в любой точке во время симуляции. Для получения дополнительной информации о том, как интегрировать эти метрики с Simulink Test™ для активации автоматической регрессионной проверки, смотрите Автоматическую проверку для Highway Lane Following.

Исследуйте модели алгоритмов

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

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

open_system("LaneMarkerDetector");

Детектор маркера маршрута принимает за вход системы координат, захваченную датчиком монокулярной камеры. Он также принимает в камере внутренние параметры через маску. Он обнаруживает контуры маршрута и выводит информацию о маршруте и типе разметки каждого маршрута через LaneSensor Для получения дополнительной информации о том, как спроектировать и оценить детектор маркера маршрута, смотрите Design Lane Marker Detector Using Unreal Engine Simulation Environment и Сгенерируйте код для детектора маркера маршрута.

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

open_system("VisionVehicleDetector");

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

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

open_system("ForwardVehicleSensorFusion");

Модель слияния датчика транспортного средства принимает в качестве входов обнаружения транспортного средства с датчиков зрения и радара. Радиолокационные обнаружения кластеризуются и затем конкатенируются с детекторами зрения. Обнаружение конкатенированного транспортного средства затем отслеживается с помощью совместного вероятностного трекера ассоциации данных. Этот компонент выводит подтвержденные дорожки. Для получения дополнительной информации о слиянии датчика транспортного средства см. Раздел «Слияние датчика прямого транспортного средства».

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

open_system("LaneFollowingDecisionLogic");

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

Следующий контроллер маршрута задает продольные и боковые элементы управления. Откройте модель алгоритма Lane Following Controller.

open_system("LaneFollowingController");

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

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

Функция помощника scenario_LFACC_03_Curve_StopnGo генерирует кубоидный сценарий, который совместим со 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.

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

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

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

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

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

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

  • Фронтальная камера показывает изображение, возвращенное датчиком камеры. Левый контур маршрута нанесён красным цветом, а правый контур маршрута нанесён зеленым цветом. Эти полосы возвращаются моделью Маркер Detector. Отслеживаемые обнаружения также накладываются на видео.

  • 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.

См. также

Блоки

Похожие темы