Магистральный маршрут после

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

Введение

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

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

  1. Исследуйте тестовую модель: модель содержит обработку видения, сплав датчика, средства управления, динамику аппарата, датчики и метрики, чтобы оценить функциональность.

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

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

  4. Симулируйте с алгоритмом обработки видения: тестовая модель сконфигурирована, чтобы протестировать интегрирование обработки видения, сплава датчика, и управляет компонентами.

  5. Исследуйте дополнительные сценарии: Эти сценарии тестируют систему под дополнительными условиями.

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

if ~ispc
    error("The 3D simulation environment requires a Windows 64-bit platform");
end

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

rng(0)

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

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

open_system("HighwayLaneFollowingTestBench")

Тестовая модель содержит эти подсистемы:

  1. Симуляция 3D Сценарий: Спекифис-Роуд, транспортные средства, камера и радарные датчики используются в симуляции

  2. Вариант Детектора видения: Задает точность двух различных алгоритмов обнаружения видения, чтобы выбрать из

  3. Прямой Fusion Датчика Транспортного средства: Плавит обнаружения транспортных средств перед автомобилем, оборудованным датчиком, которые были получены из радарных датчиков и видения

  4. Маршрут После Решения и ControllerS: Задает боковую и продольную логику решения и маршрут после контроллера

  5. Динамическое транспортное средство: Задает модель динамики для автомобиля, оборудованного датчиком

  6. Метрическая Оценка: Оценивает поведение уровня системы

Прямой Fusion Датчика Транспортного средства, Маршрут После Решения и Контроллера, Динамики аппарата и Метрических подсистем Оценки основаны на подсистемах, используемых в Маршруте После Управления с Fusion Датчика и Обнаружения Маршрута. Этот пример фокусирует на Симуляции 3D подсистемы Варианта Детектора Сценария и Видения.

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

open_system("HighwayLaneFollowingTestBench/Simulation 3D Scenario")

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

  • Симуляции 3D Блок Configuration Сцены установили параметр SceneName на Curved road.

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

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

  • Входной порт Эго управляет положением автомобиля, оборудованного датчиком, который задан Симуляцией 3D Транспортное средство с блоком Ground Following 1.

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

  • Выходные положения агента блока Scenario Reader, которые управляют положением целевых транспортных средств. Эти транспортные средства заданы другой Симуляцией 3D Транспортное средство с Землей После блоков.

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

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

  • Блок Simulation 3D Camera присоединен к автомобилю, оборудованному датчиком, чтобы получить его вид спереди. Выходное изображение от этого блока обрабатывается алгоритмом обработки видения, чтобы обнаружить маршруты и транспортные средства.

  • Симуляция 3D Вероятностный Радарный Блок Configuration присоединена к автомобилю, оборудованному датчиком, чтобы обнаружить транспортные средства в 3D Среде симуляции.

  • Блок Measurement Bias Center to Rear Axle преобразует систему координат Симуляции 3D Вероятностный Радарный Блок Configuration (относительно ниже центра транспортного средства) к координатам положения (относительно ниже центра задней оси транспортного средства).

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

open_system("HighwayLaneFollowingTestBench/Vision Detector Variant")

  • Вариант Probabilistic Detection Sensor позволяет вам протестировать интегрирование алгоритма управления в 3D среде симуляции, также не интегрируя алгоритм обработки видения. Этот вариант использует блок Vision Detection Generator, чтобы синтезировать транспортное средство и обнаружения маршрута на основе положений основной истины агента. Эта настройка помогает вам проверить взаимодействия с транспортными средствами и радарным датчиком в 3D среде симуляции без алгоритма обработки видения.

  • Вариант Vision Processing Algorithm позволяет вам протестировать интегрирование алгоритма управления и алгоритма обработки видения в 3D среде симуляции. Откройте вариант Vision Processing Algorithm.

open_system("HighwayLaneFollowingTestBench/Vision Detector Variant/Vision Processing Algorithm")

Этот вариант использует основанный на MATLAB контур маршрута и алгоритм обнаружения транспортного средства на основе Визуального Восприятия Используя Монокулярный пример Камеры. Главная разница от того примера - то, что в этом примере, обнаружение контура маршрута и алгоритмы обнаружения транспортного средства являются отдельными на отдельные компоненты. Детектор Маркера маршрута является образцом модели, который может сгенерировать код С. Этот образец модели использует Систему object™, HelperLaneMarkerDetector, обнаружить маркеры маршрута. Это также содержит средство отслеживания маршрута, чтобы улучшать производительность обнаружения маршрута в переполненных условиях. Детектор Транспортного средства видения использует HelperVisionVehicleDetector Системный объект, чтобы обнаружить транспортные средства. Эти Системные объекты упаковывают выходные данные к шинам, как требуется в последующей обработке. Поскольку алгоритм обработки видения работает с изображением, возвращенным датчиком камеры, Алгоритм Обработки Видения занимает больше времени, чтобы выполниться, чем вариант Probabilistic Detection Sensor.

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

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

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

hFigScenario = helperPlotLFScenario("scenario_LFACC_03_Curve_StopnGo");

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

Симулируйте с вероятностным датчиком обнаружения видения

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

helperSLHighwayLaneFollowingSetup(...
    "scenario_LFACC_03_Curve_StopnGo",...
    "ProbabilisticDetectionSensor");
mpcverbosity('off');
sim("HighwayLaneFollowingTestBench")

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

hFigLatResults = helperPlotLFLateralResults(logsout);

Исследуйте результаты симуляции.

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

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

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

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

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

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

Исследуйте результаты симуляции.

  • Относительный продольный график расстояния показывает расстояние между автомобилем, оборудованным датчиком и Самым важным объектом (MIO). MIO представляет самое близкое транспортное средство перед и в том же маршруте как автомобиль, оборудованный датчиком. В этом случае автомобиль, оборудованный датчиком приближается к MIO и приближается к нему или превышает безопасное расстояние в некоторых случаях.

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

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

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

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

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

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

Проигрывайте сгенерированное видео.

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

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

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

close(hFigScenario)
close(hFigLatResults)
close(hFigLongResults)
close(hVideoViewer)

Симулируйте с алгоритмом обработки видения

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

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

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

hFigLatResults = helperPlotLFLateralResults(logsout);

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

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

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

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

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

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

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

close(hFigLatResults)
close(hFigLongResults)
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(...
    "scenario_LF_04_Curve_RightLane",...
    "VisionProcessingAlgorithm");

Заключение

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

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

Блоки

Похожие темы