Cruzeiro abre código fonte da cosmovisão

Na Cruise Automation, centenas de engenheiros e testadores trabalham com dados coletados na estrada e através do simulador. Além disso, um comando interno especial do AV Tools cria aplicativos para visualizar, pesquisar e analisar esses dados. Afinal, usuários e desenvolvedores devem entender o que o carro “vê” e o que fará, incluindo uma nuvem de pontos do lidar, centenas de objetos classificados e rastreados, mapas detalhados e outros dados para visualização.

Como muitas outras equipes do Cruise , a equipe do AV Tools cria ferramentas de visualização no navegador, e aqui o React é o padrão da empresa. Para reduzir a complexidade dos aplicativos da empresa e facilitar o processo de criação de sistemas complexos de visualização, a equipe criou uma biblioteca de reações que simplifica a renderização de cenas 2D e 3D, chamada Worldview (a Uber já havia lançado uma ferramenta semelhante chamada AVS ).

imagem

Webgl é cruel


A programação da GPU oferece grandes oportunidades, mas pode ser entediante para aprender. Um navegador moderno fornece uma API poderosa para compilar e vincular shaders, carregar vértices e buffers de textura, além de objetos - mas tudo isso é muito difícil de dominar, desenvolver e depurar. Durante todo o trabalho, a equipe do AV Tools experimentou estruturas diferentes sobre o WebGL.

imagem Foi decidido recorrer ao regl , uma biblioteca que oculta a complexidade de trabalhar com o WebGL por trás de uma API simples e leve que transforma “props” em primitivas de baixo nível e simplifica a renderização - quase como o React usa adereços e estado para abstrair do DOM.

O regl fornece uma interface muito semelhante ao React, mas ao mesmo tempo fornece acesso total aos recursos do WebGL, como texturas, buffers de quadros e instanciação. Essa ferramenta nos permitiu focar no desenvolvimento da funcionalidade, em vez de cavar dentro do WebGL.

Cruise ama reagir


Muitas equipes de desenvolvimento de cruzeiros front-end que começaram a usar a renderização regl em seus projetos perceberam rapidamente que alguns padrões de reação eram difíceis de suportar na API regl. Apesar do paradigma de adereços semelhante, alguns aspectos do GL exigiram a criação de visualização personalizada e sua integração efetiva em nosso sistema de renderização.

imagem

Para simplificar ainda mais o processo de desenvolvimento, os desenvolvedores abstraíram do código do modelo que fornecia o desenho de formas e tipos de dados padrão em regl, criando uma biblioteca de componentes de reação. Isso permitiu que outras equipes não reinventassem suas motos, mas usassem tijolos prontos.

A biblioteca é chamada Worldview . Ele fornece câmeras 2D e 3D, controles de mouse e teclado e ferramentas para desenhar objetos e cenas. Graças a isso, os engenheiros da Cruise podem criar facilmente seus próprios sistemas de visualização, sem a necessidade de mergulhar no estudo de APIs WebGL de baixo nível e escrever seus próprios invólucros para eles.

Abrindo a fonte da cosmovisão


Inicialmente, a Worldview foi fortemente combinada com o sistema de visualização proprietário de Cruise. No entanto, à medida que o sistema envelhecia, foi decidido separá-lo em uma biblioteca separada sob a licença Apache 2.0. Cruise espera que a Worldview reduza o limite de entrada do WebGL para muitos, fornecendo aos desenvolvedores da Web ferramentas simples para renderizar cenas complexas.

imagem

O que vem a seguir?


Cruise continuará a desenvolver e atualizar o código para a Worldview e outras bibliotecas de visualização. Os desenvolvedores estão felizes com qualquer ajuda externa - solicitações pull são bem-vindas.

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


All Articles