Этот пример позволяет вам симулировать совместное воздействие следующего за маршрутом алгоритма регулятора с монокулярным основанным на камере алгоритмом восприятия в 3D среде симуляции.
В этом примере, вас:
Исследуйте архитектуру тестовой модели симуляции
Визуализируйте сценарий тестирования разомкнутого цикла
Симулируйте алгоритм управления с вероятностным датчиком обнаружения
Симулируйте алгоритм управления с алгоритмом обработки видения
Исследуйте дополнительные сценарии
Алгоритмы управления, используемые в автоматизированных ведущих приложениях, часто проектируются и тестируются с моделями 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")
Тестовая модель разделена, чтобы включать ниже компонентов
Вариант Детектора видения задает точность алгоритма обнаружения видения
Алгоритм управления задает сплав датчика, боковое управление и продольное управление
Динамика аппарата задает модель динамики для автомобиля, оборудованного датчиком
Симуляция 3D Сценарий задает дорогу, транспортные средства и датчики
Метрическая Оценка оценивает поведение уровня системы
Алгоритм управления, Динамика аппарата и Метрическая Оценка основаны на Маршруте в качестве примера После Управления с 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