Этот пример показывает, как использовать среду симуляции 3D для записи синтетических данных датчика, разработки системы обнаружения маркеров маршрута и тестирования этой системы в различных сценариях. Эта среда симуляции визуализируется с помощью Unreal Engine ® из Epic Games ®.
Разработка надежной системы восприятия может быть очень сложной задачей. Система визуального восприятия должна быть надежной при различных условиях, особенно когда она используется в полностью автоматизированной системе, которая управляет транспортным средством. Этот пример использует алгоритм обнаружения маршрута, чтобы проиллюстрировать процесс использования среды симуляции 3D для усиления проекта алгоритма. Основным особым вниманием примера является эффективное использование 3D инструментов симуляции, а не самого алгоритма. Поэтому этот пример повторно использует алгоритмы восприятия из примера Visual Perception Using Monocular Camera.
Пример Visual Perception Using Monocular Camera использует записанные данными видео для разработки системы визуального восприятия, которая содержит обнаружение и классификацию маркера маршрута, обнаружение транспортное средство и оценку расстояния. Использование записанного видео - отличное начало, но его недостаточно для исследования многих других случаев, которые легче синтезировать в виртуальном окружении. Более сложные сценарии могут включать комплексные маневры изменения маршрута, окклюзию маркеров маршрута из-за других транспортных средств и так далее. Самое главное, что моделирование с обратной связью включает как восприятие, так и управление транспортным средством, оба из которых требуют либо виртуального окружения, либо реального транспортного средства. Кроме того, тестирование спереди с реальным транспортным средством может быть дорогим, что делает использование 3D среды симуляции очень привлекательным.
В этом примере предпринимаются следующие шаги, чтобы ознакомиться с подходом к разработке алгоритма визуального восприятия:
Представляет вам среду симуляции 3D в Simulink ®
Проводит вас через настройку виртуального транспортного средства и датчика камеры
Показывает, как эффективно настроить окружение отладки для алгоритма визуального восприятия
Представляет, как увеличить сложность сцены при подготовке к симуляции с обратной связью
Automated Driving Toolbox™ интегрирует среду 3D симуляции в Simulink. Среда симуляции 3D использует Unreal Engine by Epic Games. Блоки Simulink, относящиеся к среде 3D симуляции, обеспечивают возможность:
Выберите различные сцены в 3D механизме визуализации
Разместите и перемещайте транспортные средства в сцене
Прикрепите и сконфигурируйте датчики на транспортных средствах
Симулируйте данные о датчике на основе окружения вокруг транспортного средства
К блокам Simulink для симуляции 3D можно получить доступ, открывая drivingsim3d
библиотека.
Чтобы помочь в проекте алгоритмов визуального восприятия в этом примере, вы используете блок, который задает сцену, блок, который управляет виртуальным транспортным средством и блок, который задает виртуальную камеру. Пример фокусируется на обнаружении маркеров маршрута с помощью монокулярной системы камеры.
Начните с определения простого сценария с прямой дорогой, на которой можно реализовать алгоритм обнаружения маркера маршрута.
open_system('straightRoadSim3D');
Блок Simulation 3D Scene Configuration позволяет вам выбрать одну из предопределенных сцен, в этом случае - Прямую Дорогу. Когда модель вызывается, она запускает Unreal Engine ®. Блок Simulation 3D Vehicle with Ground Following создает виртуальное транспортное средство в игровом движке и позволяет Simulink взять под контроль его положение путем подачи X и Y в метрах и рыскание в степенях. X, Y и рыскание заданы относительно мировой системы координат с источником в середине сцены. В этом случае, поскольку дорога прямая, смещение на 0,75 метра в направлении Y и ряд увеличивающихся значений X перемещают транспортное средство вперед. Более поздние разделы этого примера показывают, как задать более сложные маневры, не прибегая к настройкам X, Y и Yaw на основе проб и ошибок.
Модель также содержит блок Simulation 3D Camera, который извлекает видеокадры из виртуальной камеры, прикрепленной к зеркалу заднего вида внутри виртуального транспортного средства. Параметры камеры позволяют моделировать типичные параметры камеры, которые могут быть описаны моделью pinhole камеры, включая фокусное расстояние, оптический центр камеры, радиальное искажение и размер выходного изображения. Когда модель вызывается, полученная сцена показывается с точки зрения камеры, которая автоматически следует за транспортным средством.
sim('straightRoadSim3D');
Визуальное восприятие в целом сложное, будь то классическое компьютерное зрение или глубокое обучение. Разработка такой системы часто требует быстрых итераций с инкрементальными уточнениями. Несмотря на то, что Simulink является мощным окружением для инженерных и замкнутых симуляций уровня системы, основанные на восприятии алгоритмы обычно разрабатываются в языках текстового программирования, таких как MATLAB или C++. Кроме того, время запуска модели, которая должна установить связь между Simulink и Unreal Engine ®, является значительным. По этим причинам удобно записывать данные изображения, сгенерированные виртуальной камерой, в видео и разрабатывать алгоритм восприятия в MATLAB. Следующая модель записывает камеру в файл MP4 на диске.
open_system('straightRoadVideoRecording');
Видео записывается с помощью блока To Multimedia File. Результат straightRoad.mp4
файл может теперь использоваться, чтобы разработать модуль восприятия, не влекя за собой штраф среды симуляции 3D во время запуска.
Чтобы спроектировать детектор маркера маршрута, вы используете модуль из примера Visual Perception Using Monocular Camera. Однако, если просто пересадить существующие helperMonoSensor.m
стандартная программа из этого примера, даже простейшая прямолинейная дорожная сцена не дает хороших результатов. Сразу же можно увидеть, насколько мощной может быть виртуальное окружение. Вы можете выбрать любую траекторию или окружение для вашего транспортного средства, таким образом, позволяя вам исследовать много сценариев что-если до размещения модуля восприятия на фактическом транспортном средстве.
Чтобы помочь в проекте алгоритма, используйте предоставленные helperMonoSensorWrapper.m
функция. Эта функция работает в MATLAB и при размещении внутри блока Функция MATLAB (Simulink) в Simulink. Следующий скрипт, helperStraightRoadMLTest
вызывает оболочку из командной строки MATLAB. Этот подход позволяет проводить быстрые итерации проекта без непрерывного вызова среды симуляции 3D.
helperStraightRoadMLTest
Как только алгоритм начинает работать хорошо, можно поместить его обратно в модель, как показано ниже. Можно попытаться изменить траекторию автомобиля, как показано в примере Select Waypoints for Unreal Engine Simulation. Таким образом, можно искать способы переместить автомобиль таким образом, чтобы алгоритм вышел из строя. Весь процесс призван быть итеративным.
open_system('straightRoadMonoCamera');
При разработке своего алгоритма можно увеличить уровень сложности сцены, чтобы продолжить адаптацию своей системы к условиям, напоминающим реальность. В этом разделе переключите сцену на Virtual Mcity, которая обеспечивает участки дороги с изогнутыми полосами, без маркеров маршрута или объединяющихся маркеров маршрута.
Прежде чем вы начнете, вам нужно определить траекторию через подходящий участок виртуальной Mcity, который является представлением фактических площадок для проверки, которые принадлежат Мичиганскому университету. Чтобы увидеть детали того, как получить ряд значений X, Y и Yaw, подходящих для перемещения автомобиля через сложное окружение, смотрите пример выбора точек пути для 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;