В этом примере показано, как использовать 3D среду симуляции, чтобы записать синтетические данные о датчике, разработать систему обнаружения маркера маршрута и протестировать ту систему согласно различным сценариям. Эта среда симуляции представляется с помощью Нереального Engine® от Epic Games®.
Разработка надежной системы восприятия может быть очень сложной. Визуальная система восприятия должна быть надежной под множеством условий, особенно когда она используется в полностью автоматизированной системе, которая управляет транспортным средством. Этот пример использует алгоритм обнаружения маршрута, чтобы проиллюстрировать процесс использования 3D среды симуляции, чтобы усилить проект алгоритма. Основным особым вниманием примера является эффективное использование 3D инструментов симуляции, а не самого алгоритма. Поэтому этот пример снова использует алгоритмы восприятия от Визуального Восприятия Используя Монокулярный пример Камеры.
Визуальное Восприятие Используя Монокулярный пример Камеры использует зарегистрированные видеоданные, чтобы разработать визуальную систему восприятия, которая содержит обнаружение маркера маршрута и классификацию, обнаружение транспортного средства и оценку расстояния. Использование записанного видео является большим запуском, но это является несоответствующим для исследования многих других случаев, которые могут быть более легко синтезированы в виртуальной среде. Более комплексные сценарии могут включать комплексные маневры изменения маршрута, поглощение газов маркеров маршрута из-за других транспортных средств, и так далее. Самое главное симуляция с обратной связью включает и восприятие и управление транспортного средства, оба из которых требуют или виртуальной среды или действительного транспортного средства. Кроме того, тестирование впереди с действительным транспортным средством может быть дорогим, таким образом делая использование 3D среды симуляции очень привлекательным.
Этот пример берет следующие шаги, чтобы ознакомить вас с подходом к разработке визуального алгоритма восприятия:
Вводит вас 3D среде симуляции в Simulink®
Руководства вы посредством настройки виртуального транспортного средства и датчика камеры
Показывает вам, как эффективно настроить среду отладки для вашего визуального алгоритма восприятия
Подарки, как увеличить сложность сцены при подготовке к симуляции с обратной связью
Automated Driving Toolbox™ интегрирует 3D среду симуляции в Simulink. 3D среда симуляции использует Нереальный Engine Эпическими Играми. Блоки Simulink, связанные с 3D средой симуляции, обеспечивают способность к:
Выберите различные сцены в 3D механизме визуализации
Поместите и переместите транспортные средства в сцену
Присоедините и сконфигурируйте датчики на транспортных средствах
Симулируйте данные о датчике на основе среды вокруг транспортного средства
К блокам Simulink для 3D симуляции можно получить доступ путем открытия drivingsim3d
библиотека.
Чтобы помочь в проекте визуальных алгоритмов восприятия в этом примере, вы используете блок, который задает сцену, блок, который управляет виртуальным транспортным средством и блоком, который задает виртуальную камеру. Пример фокусируется на обнаружении маркеров маршрута с помощью монокулярной системы камеры.
Запустите путем определения простого сценария, включающего прямую магистральную дорогу, на которой можно осуществить алгоритм обнаружения маркера маршрута.
open_system('straightRoadSim3D');
Симуляция 3D Блок Configuration Сцены позволяет вам выбрать одну из предопределенных сцен, в этом случае Стрэайт-Роуд. Когда модель вызывается, она запускает Нереальный Engine®. Симуляция 3D Транспортное средство с блоком Ground Following создает виртуальное транспортное средство в играющем механизме и позволяет Simulink взять под свой контроль свое положение путем предоставления X и Y в метрах и Рыскания в градусах. X, Y, и Рыскание заданы относительно системы мировой координаты с источником посреди сцены. В этом случае, поскольку дорога является прямой, смещение 0,75 метров в направлении Y и ряду увеличения X значений перемещает транспортное средство вперед. Более поздние разделы этого примера показывают, как задать более комплексные маневры, не обращаясь к X, Y, и настройки Yaw на основе метода проб и ошибок.
Модель также содержит блок Simulation 3D Camera, который извлекает видеокадры из виртуальной камеры, присоединенной в зеркале заднего обзора в виртуальном транспортном средстве. Параметры камеры позволяют вам симулировать типичные параметры камеры, которая может быть описана моделью камеры с точечной диафрагмой, включая фокусное расстояние, камера оптический центр, радиальное искажение и размер выходного изображения. Когда модель вызывается, получившуюся сцену показывают с точки зрения камеры, которая автоматически следует за транспортным средством.
sim('straightRoadSim3D');
Визуальное восприятие является обычно комплексным, включает ли оно классическое компьютерное зрение или глубокое обучение. Разработка такой системы часто требует быстрых итераций с пошаговыми увеличениями точности. Несмотря на то, что Simulink является мощной средой для уровня системы технические и симуляции с обратной связью, основанные на восприятии алгоритмы обычно разрабатываются на текстовых языках программирования как MATLAB или C++. Кроме того, время запуска для модели, которая должна установить связь между Simulink и Нереальным Engine®, является значительным. По этим причинам удобно записать данные изображения, сгенерированные виртуальной камерой в видео и разработать алгоритм восприятия в MATLAB. Следующая модель записывает камеру в файл MP4 на диске.
open_system('straightRoadVideoRecording');
Видео зарегистрировано с помощью блока To Multimedia File. Получившийся straightRoad.mp4
файл может теперь использоваться, чтобы разработать модуль восприятия, не подвергаясь разовому запуском штрафу 3D среды симуляции.
Чтобы спроектировать детектор маркера маршрута, вы используете модуль от Визуального Восприятия Используя Монокулярный пример Камеры. Однако, если вы просто пересаживаете существующий helperMonoSensor.m
стандартная программа из того примера, даже самая простая прямая дорожная сцена не приводит к хорошим результатам. Сразу, вы видите, насколько мощный виртуальная среда может быть. Можно выбрать любую траекторию или среду для транспортного средства, таким образом позволив вам исследовать многих что - если сценарии до размещения модуля восприятия на фактическом транспортном средстве.
Чтобы помочь в проекте алгоритма, используйте обеспеченный helperMonoSensorWrapper.m
функция. Эта функция работает в MATLAB и, когда помещено в блоке MATLAB Function (Simulink) в Simulink. Следующий скрипт, helperStraightRoadMLTest
, вызывает обертку из командной строки MATLAB. Этот подход разрешает быстрые итерации проекта без непрерывного вызова 3D среды симуляции.
helperStraightRoadMLTest
Если алгоритм начинает работать хорошо, можно поместить его назад в модель как показано ниже. Можно попытаться изменить траекторию автомобиля, как продемонстрировано в Выбрать примере Waypoints for Unreal Engine Simulation. Тем путем можно искать способы переместить автомобиль, таким образом, что алгоритм перестал работать. Целый процесс предназначается, чтобы быть итеративным.
open_system('straightRoadMonoCamera');
При разработке алгоритма можно увеличить уровень сложности сцены, чтобы продолжить адаптировать систему к условиям, напоминающим действительность. В этом разделе переключите сцену на Виртуального Макити, который предоставляет фрагментам дороги с кривыми маршрутами, никакими маркерами маршрута или маркерами маршрута слияния.
Прежде чем вы начнете, необходимо задать траекторию через подходящий фрагмент виртуального Макити, который является представлением фактических испытательных площадок, которые принадлежат Мичиганскому университету. Чтобы видеть детали того, как получить серию X, Y, и значения Рыскания, подходящие для перемещения автомобиля через сложную среду, относятся к Выбрать примеру Waypoints for Unreal Engine Simulation. Ключевые шаги получены в итоге ниже для вашего удобства.
% Extract scene image location based on scene's name sceneName = 'VirtualMCity'; [sceneImage, sceneRef] = helperGetSceneImage(sceneName);
% Interactively select waypoints through Mcity
helperSelectSceneWaypoints(sceneImage, sceneRef)
% Convert the sparse waypoints into a denser trajectory that a car can % follow numPoses = size(refPoses, 1); refDirections = ones(numPoses,1); % Forward-only motion numSmoothPoses = 20 * numPoses; % Increase this to increase the number of returned poses [newRefPoses,~,cumLengths] = smoothPathSpline(refPoses, refDirections, numSmoothPoses);
% Create a constant velocity profile by generating a time vector % proportional to the cumulative path length simStopTime = 10; timeVector = normalize(cumLengths, 'range', [0, simStopTime]);
refPosesX = [timeVector, newRefPoses(:,1)]; refPosesY = [timeVector, newRefPoses(:,2)]; refPosesYaw = [timeVector, newRefPoses(:,3)];
Загрузите созданное использование положений предварительно сконфигурированного транспортного средства метода, показанного выше.
poses = load('mcityPoses');
С предопределенной траекторией можно теперь фактически управлять транспортным средством через более длинный фрагмент комплексной виртуальной среды.
open_system('mcityMonoCamera'); sim('mcityMonoCamera'); clear poses;
Много раз результаты меньше желательны. Например, заметьте, где барьеры перепутаны с маркерами маршрута и когда необходимая область, выбранная для анализа, является слишком узкой, чтобы взять левый маршрут.
Однако детектор выполняет хорошо в других областях сцены.
Основной момент - то, что виртуальная среда позволяет вам стресс-тест ваш проект и помогает вам понять, с какими условиями можно столкнуться на действительных дорогах. Выполнение вашего алгоритма в виртуальной среде также экономит вам время. Если ваш проект не запускается успешно в виртуальной среде, то нет никакого смысла из выполнения его в действительном транспортном средстве на дороге, которая является намного более длительной и дорогой.
Одна из наиболее мощных функций 3D среды симуляции - то, что она может упростить тестирование с обратной связью сложной системы. Маршрут сохраняет, помогают, например, включает и восприятие и управление транспортного средства. Если система восприятия совершенствуется на очень комплексных сценах и выполняет хорошо, она может затем использоваться, чтобы управлять системой управления, которая на самом деле ведет автомобиль. В этом случае, вместо того, чтобы вручную настроить траекторию, транспортное средство использует систему восприятия, чтобы управлять собой. Это выходит за рамки этого примера, чтобы показать целый процесс. Однако шаги, описанные здесь, должны предоставить вам идеи о том, как спроектировать и отладить вашу систему восприятия, таким образом, она может позже использоваться в более комплексной симуляции с обратной связью.
bdclose all;