Cruise Öffnet den Quellcode von Worldview

In Cruise Automation arbeiten Hunderte von Ingenieuren und Testern mit Daten, die auf der Straße und über den Simulator gesammelt wurden. Ein spezieller interner Befehl AV Tools erstellt außerdem Anwendungen zum Visualisieren, Suchen und Analysieren dieser Daten. Schließlich sollten Benutzer und Entwickler verstehen, was das Auto „sieht“ und was es tun wird, einschließlich einer Punktwolke aus dem Lidar, Hunderten von klassifizierten und verfolgten Objekten, detaillierten Karten und anderen Daten zur Visualisierung.

Wie viele andere Teams innerhalb von Cruise erstellt das AV Tools-Team Visualisierungstools im Browser, und hier ist React der Standard innerhalb des Unternehmens. Um die Komplexität der Unternehmensanwendungen zu verringern und die Erstellung komplexer Visualisierungssysteme zu vereinfachen, erstellte das Team eine Reaktionsbibliothek namens Worldview (Uber veröffentlichte zuvor ein ähnliches Tool namens AVS ), das das Rendern von 2D- und 3D-Szenen vereinfacht.

Bild

Webgl ist grausam


Die GPU-Programmierung bietet großartige Möglichkeiten, kann jedoch mühsam zu erlernen sein. Ein moderner Browser bietet eine leistungsstarke API zum Kompilieren und Verknüpfen von Shadern, Laden von Vertex- und Texturpuffern sowie von Objekten - all dies ist jedoch sehr schwer zu beherrschen, zu entwickeln und zu debuggen. Während der gesamten Arbeit experimentierte das AV Tools-Team mit verschiedenen Frameworks zusätzlich zu WebGL.

Bild Es wurde beschlossen, sich mit regl zu befassen , einer Bibliothek, die die Komplexität der Arbeit mit WebGL hinter einer einfachen und leichtgewichtigen API verbirgt, die „Requisiten“ in Grundelemente auf niedriger Ebene verwandelt und das Rendern vereinfacht - fast so, als würde React Requisiten und Status verwenden, um vom DOM zu abstrahieren.

regl bietet eine Schnittstelle, die React sehr ähnlich ist, gleichzeitig aber vollen Zugriff auf WebGL-Funktionen wie Texturen, Framebuffer und Instanziierung bietet. Mit diesem Tool konnten wir uns auf die Entwicklung von Funktionen konzentrieren, anstatt in WebGL zu graben.

Kreuzfahrtliebhaber reagieren


Viele Front-End-Cruise-Entwicklungsteams, die in ihren Projekten anfingen, regl-Rendering zu verwenden, stellten schnell fest, dass einige Reaktionsmuster in der regl-API schwer zu unterstützen waren. Trotz des ähnlichen Requisitenparadigmas erforderten einige Aspekte des GL die Erstellung einer benutzerdefinierten Visualisierung und deren effektive Integration in unser Rendering-System.

Bild

Um den Entwicklungsprozess weiter zu vereinfachen, haben Entwickler den Vorlagencode abstrahiert, der das Zeichnen von Standardformen und Datentypen in regl ermöglichte, indem sie eine Bibliothek mit Reaktionskomponenten erstellt haben. Dies ermöglichte anderen Teams, ihre Motorräder nicht neu zu erfinden, sondern fertige Steine ​​zu verwenden.

Die Bibliothek heißt Worldview . Es bietet 2D- und 3D-Kameras, Maus- und Tastatursteuerungen sowie Werkzeuge zum Zeichnen von Objekten und Szenen. Dank dieser Funktion können Kreuzfahrtingenieure problemlos ihre eigenen Visualisierungssysteme erstellen, ohne sich mit dem Studium von WebGL-APIs auf niedriger Ebene befassen und ihre eigenen Wrapper für sie schreiben zu müssen.

Worldview-Quelle öffnen


Zunächst wurde Worldview eng mit dem proprietären Visualisierungssystem von Cruise kombiniert. Als das System jedoch älter wurde, wurde beschlossen, es unter der Apache 2.0-Lizenz in eine separate Bibliothek zu unterteilen. Cruise hofft, dass Worldview für viele die WebGL-Eintrittsschwelle senken wird, indem Webentwicklern einfache Tools zum Rendern komplexer Szenen zur Verfügung gestellt werden.

Bild

Was weiter?


Cruise wird den Code für Worldview und andere Visualisierungsbibliotheken weiterentwickeln und aktualisieren. Die Entwickler freuen sich über jede Hilfe von außen - Pull-Anfragen sind willkommen.

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


All Articles