В этом примере показано, как симулировать магистральный маршрут после приложения с обработкой видения, cочетанием датчиков и компонентами контроллера. Эти компоненты тестируются в 3D среде симуляции, которая включает модели датчика камеры и радара.
Магистральный маршрут после системы ведет транспортное средство, чтобы переместиться в отмеченном маршруте. Это также обеспечивает скорость набора или безопасное расстояние до предыдущего транспортного средства в том же маршруте. Система обычно использует алгоритмы обработки видения, чтобы обнаружить маршруты и транспортные средства от камеры. Обнаружения транспортного средства от камеры затем сплавлены с обнаружениями от радара, чтобы улучшить робастность восприятия. Диспетчер использует обнаружения маршрута, обнаружения транспортного средства и скорость набора, чтобы управлять регулированием и ускорением.
Этот пример демонстрирует, как создать тестовую модель, чтобы протестировать обработку видения, cочетание датчиков и средства управления в 3D среде симуляции. Тестовая модель может быть сконфигурирована для различных сценариев, чтобы протестировать способность следовать за маршрутами и избежать столкновений с другими транспортными средствами. В этом примере, вас:
Разделите алгоритм и испытательный стенд — модель разделена в маршрут после моделей алгоритма и тестовой модели. Модели алгоритма реализуют отдельные компоненты. Испытательный стенд включает интегрирование моделей алгоритма и виртуальную среду тестирования.
Исследуйте тестовую модель — тестовая модель содержит среду тестирования, которая включает сценарий, модель динамики автомобиля, оборудованного датчиком и метрическую оценку с помощью основной истины. Сценарий кубоида задает траектории транспортного средства и задает основную истину. Эквивалентная Нереальная сцена Engine® используется к обнаружениям модели от радарного датчика и изображениям от монокулярного датчика камеры. Модель велосипеда используется, чтобы смоделировать автомобиль, оборудованный датчиком.
Исследуйте модели алгоритма — модели Algorithm являются образцами модели, которые реализуют обработку видения, cочетание датчиков, логику решения, и управляет компонентами, чтобы создать маршрут после приложения.
Визуализируйте сценарий тестирования — сценарий содержит кривую дорогу с несколькими транспортными средствами.
Симулируйте тестовую модель — модель симулирована, чтобы протестировать интегрирование обработки видения, cочетания датчиков, и управляет компонентами.
Исследуйте дополнительные сценарии — Эти сценарии тестируют систему под дополнительными условиями.
Тестирование интегрирования контроллера и алгоритма восприятия требует фотореалистической среды симуляции. В этом примере вы включаете симуляцию уровня системы посредством интеграции с Нереальным Engine от Epic Games®. 3D среда симуляции требует Windows® 64-битная платформа.
if ~ispc error(['3D Simulation is supported only on Microsoft', char(174), ' Windows', char(174), '.']) end
Чтобы гарантировать воспроизводимость результатов симуляции, установите случайный seed.
rng(0)
Модель разделена в отдельный алгоритм и тестовые модели.
Модели алгоритма — модели Algorithm являются образцами модели, которые реализуют функциональность отдельных компонентов.
Тестовая модель — Магистральный Маршрут После испытательного стенда задает стимул и среду, чтобы протестировать модели алгоритма.
В этом примере вы используете тестовую модель симуляции уровня системы, чтобы исследовать поведение управления и алгоритмов обработки видения для маршрута после системы.
Чтобы исследовать тестовую модель, откройте рабочую копию файлов проекта в качестве примера. MATLAB® копирует файлы в папку в качестве примера так, чтобы можно было отредактировать их.
addpath(fullfile(matlabroot, 'toolbox', 'driving', 'drivingdemos')); helperDrivingProjectSetup('HighwayLaneFollowing.zip', 'workDir', pwd);
Откройте тестовую модель симуляции уровня системы.
open_system("HighwayLaneFollowingTestBench")
Тестовая модель содержит эти модули:
3D Сценарий симуляции — Подсистема, которая задает дорогу, транспортные средства, датчик камеры и радарный датчик, используемый для симуляции.
Модель Lane Marker Detector — Algorithm, чтобы обнаружить контуры маршрута в системе координат, полученной датчиком камеры.
Модель Vehicle Detector — Algorithm, чтобы обнаружить транспортные средства в системе координат, полученной датчиком камеры.
Передайте модель Vehicle Sensor Fusion — Algorithm, чтобы плавить обнаружения транспортного средства от датчиков камеры и радара.
Модель Lane Following Decision Logic — Algorithm, чтобы задать боковую и продольную логику решения, которая предоставляет информацию, связанную с самым важным объектом (MIO) и центром маршрута контроллеру.
Модель Lane Following Controller — Algorithm, которая задает держащийся угол и ускоряющие средства управления.
Динамика аппарата — Подсистема, которая задает динамическую модель автомобиля, оборудованного датчиком.
Метрическая Оценка — Подсистема, которая оценивает поведение уровня системы.
Симуляция 3D подсистема Сценария конфигурирует дорожную сеть, транспортные средства положений, и синтезирует датчики. Откройте Симуляцию 3D подсистема Сценария.
open_system("HighwayLaneFollowingTestBench/Simulation 3D Scenario")
Сцена и дорожная сеть заданы этими частями подсистемы:
Симуляция 3D Блок Configuration Сцены имеет набор параметров SceneName к Curved road
.
Блок Scenario Reader сконфигурирован, чтобы использовать ведущий сценарий, который содержит дорожную сеть, которая тесно совпадает с разделом дорожной сети от Curved road
сцена.
Положения транспортного средства заданы этими частями подсистемы:
Входной порт Эго управляет положением автомобиля, оборудованного датчиком, который задан Симуляцией 3D Транспортное средство с блоком Ground Following 1.
Блок Vehicle To World преобразует положения агента от координат автомобиля, оборудованного датчиком к мировым координатам.
Выходные положения агента блока Scenario Reader, которые управляют положением целевых транспортных средств. Эти транспортные средства заданы другой Симуляцией 3D Транспортное средство с Землей После блоков.
Блок Cuboid To 3D Simulation преобразует систему координат положения эго (относительно ниже центра задней оси транспортного средства) к 3D системе координат симуляции (относительно ниже центра транспортного средства).
Датчики, присоединенные к автомобилю, оборудованному датчиком, заданы этими частями подсистемы:
Блок Simulation 3D Camera присоединен к автомобилю, оборудованному датчиком, чтобы получить его вид спереди. Выходное изображение от этого блока обрабатывается блоком Lane Marker Detector, чтобы обнаружить маршруты и блок Vehicle Detector, чтобы обнаружить транспортные средства.
Симуляция 3D Вероятностный Радарный Блок Configuration присоединена к автомобилю, оборудованному датчиком, чтобы обнаружить транспортные средства в 3D среде симуляции.
Блок Measurement Bias Center to Rear Axle преобразует систему координат Симуляции 3D Вероятностный Радарный Блок Configuration (относительно ниже центра транспортного средства) к координатам положения эго (относительно ниже центра задней оси транспортного средства).
Подсистема Динамики аппарата использует Велосипедный блок Model, чтобы смоделировать автомобиль, оборудованный датчиком. Откройте подсистему Динамики аппарата.
open_system("HighwayLaneFollowingTestBench/Vehicle Dynamics");
Велосипедный блок Model реализует твердую модель кузова одноколейного пути 2D оси, чтобы вычислить продольный, боковой, и движение рыскания. Блок составляет массу тела, аэродинамическое перетаскивание и распределение веса между осями из-за ускорения и регулирования. Для получения дополнительной информации см. Модель Велосипеда.
Метрическая подсистема Оценки включает метрические оценки уровня системы с помощью информации об основной истине из сценария. Откройте Метрическую подсистему Оценки.
open_system("HighwayLaneFollowingTestBench/Metrics Assessment");
В этом примере четыре метрики используются, чтобы оценить следующую за маршрутом систему.
Проверьте Боковое Отклонение — Этот блок проверяет, что боковое отклонение от центральной линии маршрута в предписанных порогах для соответствующего сценария. Задайте пороги, когда вы создадите сценарий тестирования.
Проверьте В Маршруте — Этот блок проверяет, что автомобиль, оборудованный датчиком следует за одним из маршрутов на дороге в течение симуляции.
Проверьте разрыв Времени — Этот блок проверяет, что разрыв времени между автомобилем, оборудованным датчиком и ведущим транспортным средством составляет больше чем 0,8 секунды. Разрыв времени между этими двумя транспортными средствами задан как отношение расчетного расстояния прогресса до скорости автомобиля, оборудованного датчиком.
Не проверьте Столкновение — Этот блок проверяет, что автомобиль, оборудованный датчиком не сталкивается с ведущим транспортным средством ни в какой точке во время симуляции. Для получения дополнительной информации о том, как интегрировать эти метрики с Simulink Test™ для включения автоматического регрессионного тестирования, смотрите, Автоматизируют Тестирование на Хайвея Лейна После.
Маршрут после системы разрабатывается путем интеграции детектора маркера маршрута, детектора транспортного средства, передайте cочетание датчиков транспортного средства, маршрут после логики решения и маршрут после компонентов контроллера.
Модель алгоритма детектора маркера маршрута реализует модуль восприятия, чтобы анализировать изображения дорог. Откройте модель алгоритма Детектора Маркера Маршрута.
open_system("LaneMarkerDetector");
Детектор маркера маршрута берет систему координат, полученную монокулярным датчиком камеры, как введено. Это также берет в параметрах внутреннего параметра камеры через маску. Это обнаруживает контуры маршрута и выводит информацию о маршруте и тип маркировки каждого маршрута через LaneSensor
шина. Для получения дополнительной информации о том, как спроектировать и оценить детектор маркера маршрута, видит, что Детектор Маркера Маршрута Проекта Использует Нереальную Среду симуляции Engine, и Генерирует Код для Детектора Маркера Маршрута.
Модель алгоритма детектора транспортного средства обнаруживает транспортные средства в ведущем сценарии. Откройте модель алгоритма Детектора Транспортного средства.
open_system("VisionVehicleDetector");
Детектор транспортного средства берет систему координат, полученную датчиком камеры, как введено. Это также берет в параметрах внутреннего параметра камеры через маску. Это обнаруживает транспортные средства и выводит информацию о транспортном средстве как ограничительные рамки. Для получения дополнительной информации о том, как спроектировать и оценить детектор транспортного средства, видит, Генерируют Код для Детектора Транспортного средства Видения.
Прямой компонент cочетания датчиков транспортного средства плавит обнаружения транспортного средства от датчиков камеры и радара и отслеживает обнаруженные транспортные средства с помощью центрального метода отслеживания уровня. Откройте Прямую модель алгоритма Cочетания датчиков Транспортного средства.
open_system("ForwardVehicleSensorFusion");
Прямая модель cочетания датчиков транспортного средства берет в обнаружениях транспортного средства от видения и радарных датчиков как входные параметры. Радарные обнаружения кластеризируются и затем конкатенируются с обнаружениями видения. Конкатенированные обнаружения транспортного средства затем прослежены с помощью объединенного вероятностного средства отслеживания ассоциации данных. Этот выходные параметры компонента подтвержденные дорожки. Для получения дополнительной информации о прямом cочетании датчиков транспортного средства смотрите Прямое Cочетание датчиков Транспортного средства.
Маршрут после модели алгоритма логики решения задает боковые и продольные решения на основе обнаруженных маршрутов и дорожек. Откройте Маршрут После модели алгоритма Логики Решения.
open_system("LaneFollowingDecisionLogic");
Маршрут после модели логики решения берет обнаруженные маршруты из детектора маркера маршрута и подтвержденные дорожки от прямого модуля cочетания датчиков транспортного средства как входные параметры. Это оценивает, что маршрут сосредотачивается, и также определяет ведущий автомобиль MIO, перемещающийся в том же маршруте как автомобиль, оборудованный датчиком. Это выводит относительное расстояние и относительную скорость между MIO и автомобилем, оборудованным датчиком.
Маршрут после контроллера задает продольные и боковые средства управления. Откройте Маршрут После модели Алгоритма регулятора.
open_system("LaneFollowingController");
Контроллер берет скорость набора, центр маршрута и информацию о MIO как входные параметры. Это использует контроллер следования траектории, чтобы управлять держащимся углом и ускорением для автомобиля, оборудованного датчиком. Это также использует сторожевой тормозной контроллер, чтобы применить тормоза как отказоустойчивый режим. Контроллеры выход держащийся угол и ускоряющая команда, которая определяет, ускорить ли, замедлить, или применить тормоза. Блок Vehicle Dynamics использует эти выходные параметры для бокового и продольного управления автомобиля, оборудованного датчиком.
Функция помощника 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
. Можно использовать helperPlotLFDetectionResults
функция, чтобы визуализировать симулированные обнаружения, похожие на то, как записанные данные исследуются в Прямом Столкновении, Предупреждающем Используя пример Cочетания датчиков. Можно также записать визуализируемые обнаружения к видеофайлу, чтобы включить анализ другими, у которых нет доступа к MATLAB.
График обнаружение следует из записанных данных, сгенерируйте видео и откройте приложение Video Viewer.
hVideoViewer = helperPlotLFDetectionResults(... logsout, "forwardFacingCamera.mp4" , scenario, camera, radar,... scenarioFcnName,... "RecordVideo", true,... "RecordVideoFileName", scenarioFcnName + "_VPA",... "OpenRecordedVideoInVideoViewer", true,... "VideoViewerJumpToTime", 10.6);
Проигрывайте сгенерированное видео.
Фронтальная камера показывает изображение, возвращенное датчиком камеры. Левый контур маршрута построен в красном, и правильный контур маршрута построен в зеленом. Эти маршруты возвращены моделью Lane Marker Detector. Отслеженные обнаружения также наложены на видео.
Видимый с большого расстояния График показывает истинным положениям транспортного средства, зонам охвата датчика, вероятностным обнаружениям и дорожке выходные параметры. Заголовок графика включает время симуляции так, чтобы можно было коррелировать события между видео и предыдущими статическими графиками.
Закройте фигуру.
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');
Этот пример показал, как интегрировать обработку видения, cочетание датчиков и компоненты контроллера, чтобы симулировать магистральный маршрут после системы в 3D среде симуляции с обратной связью. Пример также продемонстрировал различные метрики оценки, чтобы подтвердить эффективность спроектированной системы. Если у вас есть лицензия на Simulink Coder™ и Embedded Coder™, можно сгенерировать готовый развернуть код моделей алгоритма для встроенной цели в реальном времени (ERT).
Copyright 2019-2020 The MathWorks, Inc.