Cruise ouvre le code source de Worldview

Dans Cruise Automation, des centaines d'ingénieurs et de testeurs travaillent avec les données collectées sur la route et via le simulateur. De plus, une commande interne spéciale AV Tools crée des applications pour visualiser, rechercher et analyser ces données. Après tout, les utilisateurs et les développeurs doivent comprendre ce que la voiture «voit» et ce qu'elle va faire, y compris un nuage de points du lidar, des centaines d'objets classés et suivis, des cartes détaillées et d'autres données à visualiser.

Comme de nombreuses autres équipes au sein de Cruise , l'équipe AV Tools crée des outils de visualisation dans le navigateur, et ici React est la norme au sein de l'entreprise. Pour réduire la complexité des applications de l'entreprise et faciliter le processus de création de systèmes de visualisation complexes, l'équipe a créé une bibliothèque React simplifiant le rendu des scènes 2D et 3D, appelée Worldview (Uber a précédemment publié un outil similaire appelé AVS ).

image

Webgl est cruel


La programmation GPU offre de grandes opportunités, mais peut être fastidieuse à apprendre. Un navigateur moderne fournit une API puissante pour compiler et lier des shaders, charger des tampons de vertex et de texture, ainsi que des objets - mais tout cela est très difficile à maîtriser, à développer et à déboguer. Tout au long du travail, l'équipe AV Tools a expérimenté différents cadres au-dessus de WebGL.

image Il a été décidé de s'attarder sur regl , une bibliothèque qui cache la complexité de travailler avec WebGL derrière une API simple et légère qui transforme les «accessoires» en primitives de bas niveau et simplifie le rendu - presque comme React utilise des accessoires et des états pour faire abstraction du DOM.

regl fournit une interface très similaire à React, mais en même temps offrant un accès complet aux fonctionnalités WebGL telles que les textures, les tampons d'image et l'instanciation. Cet outil nous a permis de nous concentrer sur le développement de fonctionnalités, au lieu de creuser à l'intérieur de WebGL.

Cruise aime réagir


De nombreuses équipes de développement de croisière frontales qui ont commencé à utiliser le rendu regl dans leurs projets ont rapidement réalisé que certains modèles de réaction étaient difficiles à prendre en charge dans l'API regl. Malgré le paradigme des accessoires similaires, certains aspects de GL nécessitaient la création d'une visualisation personnalisée et son intégration efficace dans notre système de rendu.

image

Pour simplifier davantage le processus de développement, les développeurs se sont abstenus du code du modèle qui fournissait le dessin de formes et de types de données standard en créant une bibliothèque de composants React. Cela a permis à d'autres équipes de ne pas réinventer leurs vélos, mais d'utiliser des briques prêtes à l'emploi.

La bibliothèque s'appelle Worldview . Il fournit des caméras 2D et 3D, des commandes de souris et de clavier et des outils pour dessiner des objets et des scènes. Grâce à lui, les ingénieurs Cruise peuvent facilement créer leurs propres systèmes de visualisation, sans avoir à se plonger dans l'étude des API WebGL de bas niveau et à écrire leurs propres wrappers pour eux.

Ouverture de la source Worldview


Initialement, Worldview était étroitement associé au système de visualisation propriétaire de Cruise. Cependant, à mesure que le système vieillissait, il a été décidé de le séparer dans une bibliothèque distincte sous la licence Apache 2.0. Cruise espère que Worldview abaissera le seuil d'entrée WebGL pour beaucoup en fournissant aux développeurs Web des outils simples pour rendre des scènes complexes.

image

Et ensuite?


Cruise continuera de développer et de mettre à jour le code de Worldview et d'autres bibliothèques de visualisation. Les développeurs sont satisfaits de toute aide extérieure - les demandes de tirage sont les bienvenues.

Source: https://habr.com/ru/post/fr441398/


All Articles