В этом примере показано, как использовать среду моделирования 3D для записи данных синтетических датчиков, разработки системы обнаружения маркеров полос движения и тестирования этой системы в различных сценариях. Эта среда моделирования визуализируется с помощью Unreal Engine ® от Epic Games ®.
Разработка надежной системы восприятия может быть очень сложной задачей. Система визуального восприятия должна быть надежной при различных условиях, особенно когда она используется в полностью автоматизированной системе, которая управляет транспортным средством. В этом примере используется алгоритм обнаружения полосы движения для иллюстрации процесса использования среды моделирования 3D для усиления конструкции алгоритма. Основное внимание в примере уделяется эффективному использованию инструментов моделирования 3D, а не самого алгоритма. Поэтому в этом примере используются алгоритмы восприятия из примера «Визуальное восприятие с использованием монокулярной камеры».
Пример визуального восприятия с использованием монокулярной камеры использует записанные видеоданные для разработки системы визуального восприятия, которая содержит обнаружение и классификацию маркера полосы движения, обнаружение транспортного средства и оценку расстояния. Использование записанного видео является отличным началом, но оно неадекватно для изучения многих других случаев, которые можно легче синтезировать в виртуальной среде. Более сложные сценарии могут включать сложные маневры изменения полосы движения, окклюзию маркеров полосы движения из-за других транспортных средств и так далее. Самое главное, моделирование с замкнутым контуром включает в себя как восприятие, так и управление транспортным средством, оба из которых требуют либо виртуальной среды, либо реального транспортного средства. Кроме того, тестирование перед реальным транспортным средством может быть дорогостоящим, что делает использование 3D среды моделирования очень привлекательным.
В этом примере выполняются следующие действия для ознакомления с подходом к разработке алгоритма визуального восприятия:
Знакомство со средой моделирования 3D в Simulink ®
Руководство по настройке виртуального транспортного средства и датчика камеры
Показывает, как эффективно настроить среду отладки для алгоритма визуального восприятия
Показывает, как повысить сложность сцены при подготовке к моделированию с замкнутым контуром
Automated Driving Toolbox™ интегрирует среду моделирования 3D в Simulink. В среде моделирования 3D используется Unreal Engine by Epic Games. Блоки симулятора, относящиеся к среде моделирования 3D, обеспечивают возможность:
Выберите различные сцены в механизме визуализации 3D
Размещение и перемещение транспортных средств в месте происшествия
Крепление и конфигурирование датчиков на транспортных средствах
Моделирование данных датчиков на основе окружающей среды вокруг транспортного средства
Доступ к блокам Simulink для моделирования 3D можно получить, открыв drivingsim3d библиотека.
Для облегчения разработки алгоритмов визуального восприятия в этом примере используется блок, определяющий сцену, блок, управляющий виртуальным транспортным средством, и блок, определяющий виртуальную камеру. В этом примере основное внимание уделяется обнаружению маркеров полос движения с помощью системы монокулярной камеры.
Начните с определения простого сценария, включающего прямую автомобильную дорогу, на которой будет выполняться алгоритм обнаружения маркера полосы движения.
open_system('straightRoadSim3D');

Блок «Моделирование 3D конфигурация сцены» позволяет выбрать одну из предопределенных сцен, в данном случае «Прямая дорога». При вызове модели запускается модуль Unreal Engine ®. Блок Simulation 3D Vehicle with Ground Following создает виртуальное транспортное средство в игровом движке и позволяет Simulink управлять своим положением, подавая X и Y в метрах и Yaw в градусах. X, Y и Yaw задаются относительно мировой системы координат с началом координат в середине сцены. В этом случае, поскольку дорога прямая, смещение 0,75 метра в направлении Y и ряд возрастающих значений X перемещают транспортное средство вперед. В последующих разделах этого примера показано, как определить более сложные маневры без использования настроек X, Y и Yaw на основе проб и ошибок.
Модель также содержит блок Simulation 3D Camera, который извлекает видеокадры из виртуальной камеры, прикрепленной к зеркалу заднего вида внутри виртуального транспортного средства. Параметры камеры позволяют моделировать типичные параметры камеры, которые могут быть описаны моделью камеры с точечным отверстием, включая фокусное расстояние, оптический центр камеры, радиальное искажение и размер выходного изображения. При вызове модели результирующая сцена отображается с точки зрения камеры, которая автоматически следует за транспортным средством.
sim('straightRoadSim3D');

Зрительное восприятие обычно сложное, будь то классическое компьютерное зрение или глубокое обучение. Разработка такой системы часто требует быстрых итераций с инкрементными уточнениями. Хотя Simulink является мощной средой для проектирования на системном уровне и моделирования с замкнутым контуром, алгоритмы, основанные на восприятии, обычно разрабатываются на языках текстового программирования, таких как MATLAB или C++. Кроме того, время запуска модели, которая должна установить связь между Simulink и Unreal 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

Как только алгоритм начнет работать хорошо, его можно снова поместить в модель, как показано ниже. Можно попытаться изменить траекторию автомобиля, как показано в примере «Выбор ППМ для моделирования нереального двигателя». Таким образом, можно искать способы перемещения автомобиля таким образом, чтобы алгоритм не удался. Весь процесс должен быть итеративным.
open_system('straightRoadMonoCamera');

При разработке алгоритма можно повысить уровень сложности сцены, чтобы продолжить адаптацию системы к условиям, напоминающим реальность. В этом разделе переключите сцену на Virtual Mcity, которая обеспечивает отрезки дороги с криволинейными полосами, без маркеров полос или объединяющихся маркеров полос.
Прежде чем начать, вам нужно определить траекторию через подходящий отрезок виртуального Макити, который является представлением фактических полигонов тестирования, которые принадлежат Мичиганскому университету. Сведения о том, как получить ряд значений X, Y и Yaw, подходящих для перемещения автомобиля через сложную среду, см. в примере «Выбор ППМ для моделирования нереального двигателя». Основные шаги приведены ниже для вашего удобства.
% 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;