Беспилотные автомобили
Веб-платформа визуализации Uber для беспилотных авто
перевод поста из блога Uber Engineering
Подразделение ATG (Advanced Technologies Group) в Uber занимается формированием будущего беспилотных перевозок. В этом году, Data Visualization Team использующая визуализацию для анализа данных объединилась с ATG для совместной работы над улучшением того, как беспилотные автомобили понимают окружающий мир (perception).
Используя самые современные средства визуализации, команда ATG Visualization создала платформу, позволяющую инженерам и диспетчерам (беспилотных автопарков) быстро анализировать, отлаживать и выявлять информацию, полученную из реальных и виртуальных поездок. Эти возможности являются критически важными для пользователей платформы, поэтому мы постарались сделать интерфейс максимально простым и интуитивным, без ущерба для детализации информации.
В этой статье мы расскажем как наша Data Visualization team построила эту платформу, а также про сопутствующие трудности визуалиции сложных датасетов с помощью переиспользуемых веб компонентов.
Делаем выбор в сторону web
У нас было множество интересных бесед и обсуждений того, почему Веб может быть подходящей технологией для нашей платформы визуализации. Наши основные аргументы были следующими:
- Быстрые итерации. В случае с вебом можно легко разрабатывать новый функционал и мгновенно доставлять его пользователю. Если пользователь хочет получить свежую версию программы ему нужно только обновить страницу браузера, вместо того чтобы скачивать и устанавливать приложение.
- Гибкость и масштабируемость. Веб-приложению все равно на каком железе она работает, а значит платформой сможет пользоваться любой человек на любом компьютере. Также за счет того, что веб широко распространенная технология мы сможем, в случае необходимости, быстро отмасштабировать команду разработки. В случае веб, информирование и диагностирование инцидентов доступно в один URL-клик.
- Взаимодействие и кастомизация. Будучи быстро эволюционирующей технологией, беспилотные автомобили постоянно генерируют новые датасеты, метрики и use-кейсы. Новые сервисы и endpoint’ы добавляются постоянно. Каждая команда в ATG обладает своими, уникальными требованиями по части визуализации и генерации данных. Таким образом, у команд должна быть возможность кастомизации визуальной части. HTML5 и JavaScript проверенные инструменты для создания кастомного UI на лету, а также легко интегрируются в инфраструктуру и системы управления задачами.
Объединяем разносторонние датасеты
Для анализа принятых AV (беспилотным автомобилем) решений требуется воссоздать мир вокруг автомобиля, то есть данные которые поступали во время целевой поездки. В эти данные также включены карты и логи самого AV.
Карты описывают ограничения и структуру дороги. Поэтому поверх собственных, закрытых веб-карт Uber сверху используются карты для беспилотников, содержащие гораздо больше деталей. Например, HD сканы дорожной поверхности, полосы движения, типы поворотов и скоростные ограничения, пешеходные переходы — вообщем вся необходимая информация.
Логи описывают что AV делало, что видело и какие решения принимало. Три критических подсистемы работающих на основе данных с сенсоров: perception (восприятие), prediction (предсказание/прогноз) и motion planning (планирование действий и движение). Чтобы корректно функционировать, AV должно уметь «чувствовать» мир вокруг через сенсоры. На основе этого восприятия, AV может предсказать куда будут двигаться объекты и сможет корректно спланировать свое движение.
Работая с нашими AV-инженерами мы экспериментируем и формируем систему визуальных метафор для отображения сложных данных. Наша система реалистично и интуитивно отображает элементы реального мира (машины, фотографии дорожного полотна, разметку, знаки и пр.) что облегчает анализ ситуации инженерами и диспетчерами. Также система использует цветовую градацию и различные геометрические формы для отображения множества подсистем вроде classification, predication и lookaheads.
Одной из самых сложных вещей в процессе объединения разносторонних источников данных было создание унифицированного представления (view) работающего с разными системами координат. Все сервисы и подсистемы работают в разных системах координат: кто-то использует широту/долготу, кто-то UTM, кто-то относительное и абсолютное позиционирование, а кто-то работает относительно позиции и ориентации самого автомобиля. Более того, всего позиции обновляются с большой частотой (несколько раз в секунду). Для того, чтобы эффективно и точно конвертировать все эти данные в единое представление мы активно используем GPU.
Отрисовка 3D сцен с помощью WebGL
Visualization Team занимается поддержкой нескольких фреймворков для визуализации больших объемов данных, включая react-map-gl и deck.gl. Эти инструменты активно используют GPU при отрисовки большого количества данных с хорошим FPS (кол-во кадров в секунду).
В нашем случае, производительность является решающим фактором при взаимодействии инженеров. Также ATG инженерам и водителям беспилотных автомобилей требуются AV логи для проигрывания поездок, управления камерой и выбора объектов в конкретных временных метках. Для этих задач идеально подходит наш deck.gl.
Последний релиз deck.gl несет в себе множество оптимизаций по производительности и новым возможностям. Каждый слой в deck.gl занимается отрисовкой своего набора данных в виде модели (дорожное полотно или машины), пути (полосы и траектории), вытянутых полигонов (посторонние объекты на дороге) или облака точек. Каждый слой использует свою систему координат, но камера у них общая. В среднем обычный лог отрисовывает 60-100 слоев с 30-50 FPS.
Xiaoji Chen программный инженер в Uber Data Visualization team.