Следующее за маршрутом управление с монокулярным восприятием камеры

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

В этом примере, вас:

  1. Исследуйте архитектуру тестовой модели симуляции

  2. Визуализируйте сценарий тестирования разомкнутого цикла

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

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

  5. Исследуйте дополнительные сценарии

Введение

Алгоритмы управления, используемые в автоматизированных ведущих приложениях, часто проектируются и тестируются с моделями Simulink на симуляцию с обратной связью. Симуляция с обратной связью включает динамику аппарата моделирования и вероятностные модели датчика в упрощенной виртуальной среде. Для получения дополнительной информации об этом рабочем процессе смотрите, что Маршрут Следует за Управлением с Fusion Датчика и Обнаружением Маршрута. В том примере контроллер разделен как модель - ссылка, которая поддерживает симуляцию и генерацию кода.

Алгоритмы восприятия в автоматизированных ведущих приложениях часто проектируются и тестируются с кодом MATLAB с помощью зарегистрированных данных. Например, основанные на видении алгоритмы восприятия часто проектируются и тестируются против записанного видео. Для получения дополнительной информации об этом рабочем процессе смотрите, что Визуальное Восприятие Использует Монокулярную Камеру (Automated Driving Toolbox). В том примере зарегистрированное видео используется, чтобы протестировать алгоритм обработки видения, разделенный как класс MATLAB.

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

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

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

rng(0)

Исследуйте архитектуру тестовой модели симуляции

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

open_system("LaneFollowingWithMonoCameraTestBench")

Тестовая модель разделена, чтобы включать ниже компонентов

  1. Вариант Детектора видения задает точность алгоритма обнаружения видения

  2. Алгоритм управления задает сплав датчика, боковое управление и продольное управление

  3. Динамика аппарата задает модель динамики для автомобиля, оборудованного датчиком

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

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

Алгоритм управления, Динамика аппарата и Метрическая Оценка основаны на Маршруте в качестве примера После Управления с Fusion Датчика и Обнаружения Маршрута

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

open_system("LaneFollowingWithMonoCameraTestBench/Vision Detector Variant")

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

  • Вариант Vision Processing Algorithm позволяет тестировать интегрирование Алгоритма управления с алгоритмом Обработки Видения в 3D среде симуляции. Этот вариант использует основанный на MATLAB контур маршрута и алгоритм обнаружения транспортного средства на основе Визуального Восприятия Используя Монокулярную Камеру (Automated Driving Toolbox) пример. Главной разницей от примера является сложение системного объекта обертки, helperMonoSensorWrapper.m, это упаковывает выходные данные в шины, требуемые LfMonoCameraRefMdl. Этот системный объект также содержит средство отслеживания маршрута, чтобы улучшать производительность обнаружения маршрута в переполненных условиях. Поскольку алгоритм Обработки Видения работает с изображением, возвращаются датчиком камеры, вариант Vision Processing займет больше времени, чтобы выполниться, чем модель Probabilistic.

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

open_system("LaneFollowingWithMonoCameraTestBench/Simulation 3D Scenario")

Заметьте, как сцена и дорожная сеть заданы:

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

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

Заметьте, как положения транспортных средств заданы:

  • Импорт эго управляет положением Симуляции эго 3D Транспортное средство с блоком Ground Following 1. Этот блок имеет свой Name параметр устанавливается на SimulinkVehicle1.

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

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

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

Заметьте, как заданы датчики, соединенные с автомобилем, оборудованным датчиком:

  • Блок Simulation 3D Camera Forward Facing присоединен к автомобилю, оборудованному датчиком.

  • Блок Simulation 3D Probabilistic Radar присоединен к автомобилю, оборудованному датчиком.

  • Центр Смещения измерения с блоком Rear Axle преобразует систему координат Симуляции 3D Вероятностный Радар (относительно центра транспортного средства) к координатам положения (относительно задней оси транспортного средства)

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

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

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

hFigScenario = plotLFScenario("scenario_LFACC_03_Curve_StopnGo");

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

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

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

laneFollowingWithMonoCameraSetup(...
    "scenario_LFACC_03_Curve_StopnGo",...
    "ProbabilisticDetectionSensor");
sim("LaneFollowingWithMonoCameraTestBench");
   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.

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

hFigLatResults = plotLFLateralResults(logsout);

Для этой симуляции:

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

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

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

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

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

hFigLongResults = plotLFLongitudinalResults(logsout,time_gap,default_spacing);

Для этой симуляции:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

laneFollowingWithMonoCameraSetup(...
    "scenario_LFACC_03_Curve_StopnGo",...
    "VisionProcessingAlgorithm");
sim("LaneFollowingWithMonoCameraTestBench");
   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.

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

hFigLatResults = plotLFLateralResults(logsout);

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

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

hFigLongResults = plotLFLongitudinalResults(logsout,time_gap,default_spacing);

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

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

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

Исследуйте дополнительные сценарии

В предыдущих разделах вы исследовали scenario_LFACC_03_Curve_StopnGo сценарий с помощью обоих ProbabilisticDetectionSensor и VisionProcessingAlgorithm варианты. Этот пример предоставляет дополнительные сценарии, которые совместимы с LaneFollowingWithMonoCameraTestBench модель. Ниже список совместимых сценариев, которым предоставляют этот пример.

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

  • Сценарии с префиксом scenario_LFACC_ позволяют вам протестировать обнаружение маршрута и маршрут в соответствии с алгоритмами с другими транспортными средствами на дороге.

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

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

laneFollowingWithMonoCameraSetup(...
    "scenario_LF_04_Curve_RightLane",...
    "VisionProcessingAlgorithm");

Заключение

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

close(hFigLatResults)
close(hFigLongResults)
close(hVideoViewer)
bdclose("LaneFollowingWithMonoCameraTestBench")
clear hFigLatResults hFigLongResults hFigScenario hVideoViewer
clear logsout

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

Блоки

Похожие темы