Беспилотные автомобили
Uber выпустила открытый стандарт визуализации автономного транспорта AVS
Понимание того, что видит беспилотный автомобиль своими алгоритмами и сенсорами является ключевым фактором в разработке безопасного беспилотного решения. Мы уже имеем стандарты для дорожных знаков, светофоров и прочей инфраструктуры для помощи водителям в навигации, логичным было бы создать стандарт для разработчиков беспилотников описывающий правила визуализации данных с сенсоров, классификации объектов и прочих действий по интерпретации окружающей среды.
Сегодня мы рады сообщить что открываем исходный код переработанной и расширенной Системы Визуализации Беспилотников или Autonomous Visualization System (AVS) в качестве нового способа понимать и делиться данными своих беспилотных решений.
AVS это новый стандарт описывающий и визуализирующий данные perception (восприятия), motion (движения) и planning (планирования), позволяющий разработчикам беспилотных автомобилей создавать веб-решения для отладки, изучения и принятия важных решений по разработке автомобиля.
Будучи стандартизированным слоем визуализации AVS избавляет разработчиков от наобходимости создания custom-решений по визуализации внутреннего ПО автомобиля и позволяет сфокусироваться на ключевых подсистемах беспилотного решения.
Необходимость унифицированной визуализации
Большое количество организаций, включая технологические компании, сообщества, исследовательские организации, OEM-поставщиков и стартапы борются за лидерство на поприще беспилотного транспорта. Инструменты визуализации, отображающие восприятие окружающей среды автомобилем, являются одним из ключевых аспектов разработки безопасного беспилотного автомобиля. С ходом разработки появляются новые сценарии сортировки, симуляции, мапинга, безопасности, разметки и сбора данных. А путь к финальному автомобилю потребует совершенно новых инструментов и инфраструктуры для мониторинга, удаленного управления и поддержки.
В дополнении к стремительно изменяющимся техническим требованиям, инженерам-автономникам часто приходиться изучать сложные алгоритмы компьютерной графики и техники визуализации данных попросту для того, чтобы проверить свои решения. Отсутствие стандарта визуализации привело к тому, что инженеры начали создавать множество систем визуализации вокруг готовых фреймворков/библиотек для быстрой реализации. Однако, наш опыт говорит что такой подход приводит к крайне не гибкой системе визуализации которую очень сложно поддерживать
Мы делимся AVS с сообществом разработчиков беспилотников в надежде что этот инструмент позволит определить новый стандарт, а также ускорит появление безопасного автономного транспорта.
Визуализация мира в движении
Разработка беспилотного транспорта является активно развивающейся областью с постоянными изменениями. Новые сервисы, датасеты (особенно с лидара) требуют новых инструментов. В Uber есть несколько инженерных команд способных создать эти инструменты. Визуализация в вебе была для нас очевидной, так как она создавала возможности гибкой разработки между командами, упрощенный обмен информацией, кастомизацию и интеграцию с существующими сервисами.
Плюсы подобного подхода были очевидны, однако были и трудности с обеспечением производительности сравнимой с десктопной. Решение этих трудностей требовало новой абстракции для управления и описания сгенерированных данных используемых веб-приложением.
Учитывая эти требования, мы построили нашу систему вокруг двух ключевых элементов: XVIZ обеспечивающий данные (включая управление и спецификацию) и streetscape.gl обеспечивающий элементы визуализации.
XVIZ
Нам была необходима строгая и гибкая спецификация для данных генерируемых беспилотным автомобилем, чтобы данный формат мог быть легко интегрирован в меняющуюся инфраструктуру, работал на множестве клиентов и был достаточно близок по содержанию к исходным данным.
XVIZ обеспечивает поточно-ориентированный вид на меняющуюся сцену и декларативный интерфейс отображения. Как и с видеозаписью, мы можете перемещаться по временному отрезку и видеть состояние в конкретной точке времени. Как и HTML-документ представление сфокусировано и структурировано согласно схеме данных удобной для интроспекции. Однако, XVIZ также позволяет легко изучать массивы данных склеивая различные потоки данных в один объект.
Поток в XVIZ является набором дискретных обновлений происходящих в определенном времени и определенным типом примитива. Примитивы это объекты которые содержат описание информации такой как облако точек с лидара, изображения с камеры, границы объектов, траектории, скорость движения автомобиля на промежутке времени и прогнозирование движения. Для упрощения представления для пользователей эти объекты могут быть стилизованы индивидуально.
XVIZ организует потоки через иерархию имен с раздельным листингом потоков, их типов, декларативных UI панелей и классов стилей. Затем UI связывает графические панели с данными, предоставляя пользователю контроль над конфигурацией и отображением через YAML.
streetscape.gl
streetscape.gl набор инструментов для создания веб приложений потребляющих данные в XVIZ протоколе. Продукт предлагает готовые компоненты визуализации XVIZ потоков в 3D виде, таблицах, графиках, видео и других видах. Также данный инструмент берет на себя основную головную боль по синхронизации потоков с различных датчиков.
Производительность рендеринга главная цель streetscape.gl. Созданный поверх React и WebGL-платформы визуализации Uber данный инструмент поддерживает проигрывание данные в realtime и плавный рендеринг всех данных.
Компонуемость также лежит в центре streetscape.gl. Опираясь на наш опыт разработки платформы визуализации Uber мы создали компоненты максимально стилизуемыми и расширяемыми, чтобы любая команда могла подстроить их под свои данные.
Чем же отличается AVS
AVS создан быть открытым и модульным, чтобы контрибьюторы со всего мира могли помочь нам в доработке. Архитектурно он обеспечивает многослойный подход где связанность между компонентами автономного стэка минимизирована и предлагает четкие критерии обмена данными. Каждый слой может изменяться по необходимости без серьезных изменений в системе, а слои могут быть привязаны к нужному контексту или заадче.
Также AVS отличается следующим:
- Он был спроектирован с намеренным разделение данных и низлежащей платформы
- Его ограниченность и небольшие спецификации обеспечивают легкую разработку
- Его требования к формату данных обеспечивают быструю передачу данных
Дополнительно, мы создавали AVS чтобы удовлетворить все требования автономной экосистеме, включая инженеров, страхующих водителей, аналитиков и разработчиков. Автономные инженеры могут легко описать свои системы с помощью XVIZ и затем протестировать и легко визуализировать их.
Что дальше
Публичный выпуск AVS лишь только начало. Совместно с партнерами вроде Voyage, Applied Intuition и open-source разработчиками мы планируем улучшить этот продукт большим количеством поддерживаемых источников данных и спецификаций (особенно поддержка ROS), оптимизации производительности, а также дополнительный функционал вроде side-by-side сравнения.
Перевод поста из блога Uber ATG