Desenvolvimento

16 jul, 2018

Aprimorando a qualidade dos mapas da Uber com computação de métricas

Publicidade

Anteriormente, destacamos algumas das apresentações entregues durante o nosso segundo Dia Anual da Tecnologia Uber. Neste artigo, a engenheira de software sênior e apresentadora do Dia de Tecnologia da Uber, Ines Viskic, discute como garantimos a precisão de nossos mapas através de métricas de qualidade.

Na superfície, a tecnologia de compartilhamento de viagens da Uber pode parecer simples: um usuário solicita uma corrida a partir do aplicativo e um motorista chega para levá-lo ao seu destino. Nos bastidores, no entanto, uma gigantesca infraestrutura que consiste em milhares de serviços e terabytes de dados suporta cada viagem na plataforma.

No coração dessa infraestrutura, os dados e serviços de mapas permitem os recursos mais básicos que impulsionam nossos negócios. Esses recursos incluem a capacidade de encontrar locais e endereços, combinar os passageiros com os motoristas por proximidade geográfica, mostrar aos motoristas e passageiros sua hora estimada de chegada (ETA) e navegá-los para seus destinos. Embora os dados e serviços de mapas tenham inicialmente crescido para suportar o compartilhamento de viagens, continuamos a criar novos produtos nessa base, como o Uber Eats, o Uber Freight e o JUMP Bikes.

Em vez das representações simples e bidimensionais que as pessoas veem quando olham para o aplicativo Uber, um mapa é, na verdade, uma estrutura de dados complexa. Em termos computacionais, precisamos definir o tamanho de cada parte geográfica de um mapa, bem como decidir quais objetos são incluídos/exibidos em um mapa.

Para nossos propósitos, estradas e encruzilhadas, assim como seus atributos, são as inclusões mais óbvias. Por outro lado, recursos como linhas de contorno que conectam pontos de igual elevação são irrelevantes para nossos casos de uso atuais, por isso não as incluímos em nossos mapas.

À medida que o mundo à nossa volta muda, o mesmo acontece com os mapas. Por exemplo, uma nova restrição nas curvas à esquerda em uma interseção mudará as rotas que enviamos aos motoristas; a adição de um sinal de parada ou fechamento temporário de estradas devido à construção afetará os tempos de ETA que computamos; e um desafio exclusivo dos serviços de compartilhamento de viagens envolve a determinação de pontos de embarque e desembarque permitidos no mapa.

Na Uber, a qualidade dos nossos dados de mapa e serviços de mapas é inestimável para oferecer uma ótima experiência ao usuário. Para conseguir isso, os mapas devem refletir a realidade geográfica o mais próximo possível. Os dados geoespaciais gerados por cada uma das milhões de viagens realizadas diariamente tornam isso possível, ajudando-nos a refinar e atualizar nossos mapas para obter a mais alta qualidade. Neste artigo, definimos nossas regiões de mapa e mostramos como calculamos as métricas de qualidade de mapa.

Como a Uber define uma região do mapa

Antes de podermos calcular e reportar as métricas de qualidade do mapa, primeiro precisamos definir nossas regiões do mapa. Por exemplo, podemos estar interessados ​​na qualidade do mapa da América do Norte, ou do estado da Califórnia, ou do Condado de Santa Clara, ou até mesmo das áreas mais urbanas (e trafegadas) da cidade de São Francisco.

Antes da Uber iniciar as operações em uma nova área, definimos e incorporamos uma nova região à nossa pilha de tecnologia de mapas. Dentro desta região do mapa, definimos sub-regiões com as classificações A, B, AB e C, como:

  • Grau A: sub-região do território Uber abrangendo centros urbanos e áreas de deslocamento que representam aproximadamente 90% de todo o tráfego esperado da Uber. Com isso em mente, é de fundamental importância garantir a mais alta qualidade de mapa das regiões do mapa de grau A.
  • Grau B: sub-região do território Uber abrangendo áreas rurais e suburbanas que podem ser menos povoadas ou menos percorridas pelos clientes Uber.
  • Grau AB: união de sub-regiões de grau A e B.
  • Grau C: um conjunto de corredores rodoviários conectando vários territórios Uber.

O modelo de mapa do Uber

Mapas são intuitivamente definidos pelo seu propósito. Um mapa nos orienta no espaço, nos permitindo ver onde estamos no mundo. Com um mapa, podemos também navegar de onde estamos para onde queremos ir.

IMAGEM Figura 1: O modelo de mapa da Uber é uma estrutura de dados composta de recursos e atributos.

Do ponto de vista da determinação da qualidade do mapa, definimos um mapa como uma coleção de características do mapa, desde locais construídos pelo homem, como segmentos de estradas, entroncamentos e edifícios, até características naturais como montanhas, lagos e oceanos.

Além disso, para casos de uso específicos da Uber, incluímos pontos de acesso, que especificam locais de embarque e desembarque permitidos ou preferidos para um determinado ponto de endereço, como recursos de mapa. Por exemplo, os pontos de acesso no Aeroporto Internacional de São Francisco incluem um conjunto de terminais, portões e pontos de coleta determinados pelo aeroporto.

Finalmente, cada recurso de mapa tem um conjunto de atributos que o descrevem completamente. Por exemplo, os atributos de um segmento de estrada incluem geometria, comprimento, nome, classe de estrada (estrada local? estrada rodoviária?) e uso (estrada? ciclovia?).

Os recursos e atributos do mapa formam uma estrutura de dados que chamamos de Modelo de Mapa da Uber (UMM). Podemos visualizar o UMM como camadas de recursos de mapa que coletivamente criam um mapa, como visto na Figura 1, acima.

Determinando a qualidade do mapa

A qualidade do mapa significa coisas diferentes para diferentes usuários do mapa. Por exemplo, ferramentas de criação de imagens como o Google Earth e o ArcGIS Earth da Esri, podem se concentrar na precisão dos rótulos de mapas ou na estética da cartografia de mapas, ou seja, como cada mapa se apresenta. Para o caso de uso mais básico da Uber, compartilhamento de viagens, as métricas de qualidade do mapa precisam responder à perguntas como:

  • Temos estradas suficientes? Estamos classificando-as corretamente?
  • Estamos embarcando e desembarcando nossos passageiros nos locais corretos?
  • Estamos navegando os motoristas em rotas otimizadas?
  • Temos os endereços e locais para onde as pessoas estão indo?
  • Os nomes das nossas estradas são precisos e refletem o uso local?

O conjunto completo de métricas que usamos em nossos mapas é muito numeroso para ser listado, mas podemos dividi-las em métricas de cobertura simples e comparativas. As métricas simples incluem estradas, contagens de rotas exclusivas, contagens de indicadores, restrições de direção e número de faixas por estrada.

Calculamos essas métricas simplesmente analisando os dados do mapa como uma única entrada. Um conjunto mais complexo de métricas que levamos em conta, a cobertura comparativa, usa duas entradas: dados do mapa sendo processados ​​para dados de mapas de qualidade e de referência.

As métricas simples e comparativas são calculadas automaticamente usando frameworks de processamento de dados poderosas. No entanto, algumas métricas são mais difíceis ou mesmo impossíveis de serem automatizadas: o tom e o tempo dos comandos de voz para navegação são corretos e fáceis de usar? Os blocos de mapa são exibidos de maneira esteticamente agradável? Os rótulos das ruas são claros e legíveis?

Para obter essas respostas/métricas, realizamos campanhas de avaliação da qualidade do mapa, para as quais criamos pesquisas de avaliação na forma de perguntas de múltipla escolha. Os resultados dessas pesquisas são então processados ​​e agregados em métricas.

Independentemente de sua categorização, todo cálculo de métricas deve ser preciso, deve executar razoavelmente rápido, gerar saída com segurança e escalar sem problemas. O dimensionamento é especialmente importante, pois um erro fatal do cálculo de métricas de determinada região não pode afetar o cálculo de métricas em outras regiões.

Requisitos do sistema de computação de qualidade do mapa da Uber:

  • Precisão: os resultados devem ser precisos
  • Confiabilidade: os resultados devem ser repetíveis e acessíveis
  • Dimensionabilidade: suporte ao cálculo de métricas de uma única região e do mundo
  • Robustez: a falha do cálculo de métricas para uma região do mapa não pode afetar o cálculo de outras regiões

Garantindo a qualidade do mapa

A Uber usa dados de mapas de uma variedade de provedores de mapa de terceiros, com o objetivo de permitir uma ótima experiência da Uber para nossos usuários. Para garantir alta qualidade ou esses mapas, utilizamos um processo iterativo de análise de dados do mapa, identificando defeitos no mapa e corrigindo-os. Isso cria um ciclo de feedback positivo para melhorar os mapas. Aqui estão alguns exemplos disso:

1 – Cobertura de rastreamento: uma métrica de cobertura comparativa, cobertura de rastreamento identifica segmentos de estrada ausentes ou geometria de estrada incorreta. O cálculo usa duas entradas: dados do mapa em testes e traçados históricos de GPS de todas as corridas da Uber realizadas em um determinado período de tempo.

Sobreponhamos esses traçados de GPS ao mapa, comparando-os e combinando-os com segmentos de estrada. Se encontrarmos traçados de GPS nos quais nenhuma estrada é mostrada, podemos inferir que nosso mapa está sem um segmento de estrada e tomar medidas para corrigir a deficiência.

Figura 2: Neste mapa, os traçados de GPS que correspondem às estradas são mostrados em azul, enquanto traçados de GPS que não correspondem a uma estrada são exibidos em vermelho.

2 – Avaliação de roteamento: Outra métrica crítica da qualidade do mapa, a avaliação de rotas, nos permite identificar restrições de direção e direcionalidade incorretas da estrada em nossos mapas. Aqui, comparamos as rotas sugeridas pelo nosso algoritmo de navegação para os motoristas com as rotas reais escolhidas. Se houver uma discrepância sustentada entre as rotas sugeridas e as reais, investigamos possíveis defeitos no mapa.

A Figura 3, abaixo, mostra um exemplo de uma grande discrepância entre as rotas sugeridas e as reais. Nossa consequente comparação revelou restrições de direção modeladas incorretamente em segmentos de estrada que impossibilitavam o uso da rota sugerida.

Figura 3: Neste exemplo, nosso mapa sugere uma rota, mas os motoristas, respondendo a restrições de direção, devem seguir uma rota diferente.

3 – Precisão do ponto de acesso (embarque) preferencial: Os pontos de embarque são uma métrica extremamente importante para a experiência do passageiro, especialmente em grandes locais, como aeroportos e estádios. Para essa métrica, calculamos a distância de um endereço ou local, conforme mostrado pelo pino do mapa na Figura 4, abaixo, de todos os pontos de embarque e desembarque reais usados pelos motoristas.

Em seguida, definimos o local real mais próximo para ser o ponto de acesso preferido para o referido pino de localização. Quando um passageiro solicita a localização indicada pelo pino do mapa, o mapa guia o motorista até o ponto de acesso preferido. Calculamos continuamente essa métrica com os locais de embarque e desembarque reais mais recentes para garantir a atualização e a precisão dos pontos de acesso preferidos sugeridos.

Figura 4: A refinação dos pontos de acesso é composta por três etapas principais: identificar locais reais de embarque e desembarque usados ​​pelos motoristas para um local ou endereço (à esquerda), calcular as distâncias desses locais para o local ou endereço (meio) e, então, definir o ponto de acesso preferido com base na distância mais curta (direita).

Computação de métricas do mapa de qualidade

O sistema de cálculo de métricas da Uber gera métricas (como as descritas acima) a partir dos dados do mapa, ou seja, um conjunto de recursos de mapa descritos no formato UMM. Cada conjunto de dados do mapa e as métricas deles derivadas são associados a uma região específica do mapa.

A primeira etapa na computação de métricas envolve particionar os dados do mapa nas células S2 atribuindo cada recurso de mapa nesse conjunto de um ID de célula S2. Células S2 são áreas geográficas, cada uma representada por um identificador numérico exclusivo. Assim, por exemplo, os recursos do mapa, como segmentos de estradas, edifícios e montanhas, receberiam, cada um, o ID da célula S2 representando a área geográfica em que foram encontrados.

Em seguida, inserimos dados de mapa particionados em células S2 em nosso sistema de computação de métricas, que processa cada partição de célula S2 independentemente (em paralelo) para gerar nossas métricas. Em outras palavras, uma célula S2 com seus recursos de mapa associados torna-se uma unidade básica de computação de métricas.

Por fim, agregamos as métricas de cada célula S2 em uma região específica. Como mencionado acima, essas regiões são classificadas como A, B, AB e C, dependendo de seu conteúdo e uso. Essa abordagem é descrita na Figura 5, abaixo:

Figura 5: Definimos áreas geográficas como células S2 e usamos essas células para construir conjuntos de dados que podemos processar para a qualidade do mapa.

Implementamos nosso sistema de computação de métricas no Apache Spark, um framework de computação geral para processamento de dados em larga escala, com um único node de driver e vários nodes executores que leem entradas e armazenam saídas em um sistema de armazenamento distribuído.

Figura 6: Usando dados de mapa e regiões geográficas como entradas, nosso sistema de computação de métricas particiona os dados nas células S2 e, em seguida, usa essas células para calcular suas métricas.

Nosso sistema de computação de métricas, mostrado na Figura 6, usa duas entradas: dados do mapa e regiões. O node do driver direciona o fluxo de controle e distribui os dados do mapa para os nodes do executor, primeiro para particionar os dados nas células S2 e, em seguida, para calcular as métricas de cada unidade de célula S2.

As métricas brutas baseadas na célula S2 serão enviadas de volta ao node do driver, que as agrega nas métricas da região e as armazenará no HDFS, no nosso sistema de arquivos distribuídos e, posteriormente, no Cassandra, nosso banco de dados distribuído.

As métricas são, então, pós-processadas para exibição e análise no MapsDash, um painel central desenvolvido internamente para visualizar métricas que fornecem informações valiosas e intuitivas sobre a qualidade do mapa.

Colocando tudo junto

A Figura 7, abaixo, mostra todo o sistema de qualidade do mapa, consistindo de: (1) o sistema de cálculo de métricas, (2) exibição de métricas e (3) ferramentas de análise de causa raiz.

Esse sistema cria um ciclo de feedback positivo com o objetivo de melhorar a qualidade do mapa, garantindo a precisão de nossas métricas.

Figura 7: À medida que as estradas e outros recursos de mapa mudam, nosso sistema de computação de métricas trabalha para manter continuamente nossas métricas atualizadas, proporcionando uma melhor experiência ao usuário nos aplicativos de motorista e de passageiro.

Nós continuamente iteramos nossas medições de qualidade do mapa, exibindo-as para detectar métricas de baixa qualidade e identificar os defeitos no mapa que as causam. Com o tempo, esse sistema resultou em melhores métricas de qualidade do mapa, levando a melhores mapas em nossos mercados em São Francisco, Nova York e outras cidades ao redor do mundo.

Próximos passos

A Uber está crescendo continuamente seus negócios, tanto em escala quanto no número e na qualidade dos recursos que oferecemos aos nossos usuários. Da mesma forma, nossa equipe de qualidade de mapas desenvolve continuamente novas métricas e ferramentas de qualidade de mapas para diagnosticar e corrigir defeitos no mapa.

No futuro, pretendemos continuar trabalhando em estreita colaboração com nossas equipes de ciência de dados para identificar novas métricas que sejam indicadores relevantes de qualidade de dados em roteamento e navegação. Além disso, planejamos desenvolver novas ferramentas de diagnóstico para determinar a causa raiz dos defeitos do mapa por trás dessas métricas.

Identificar estradas não exibidas e restrições de direção incorretas são especialmente relevantes para alcançar a qualidade ideal do mapa. Juntamente com esses esforços, estamos continuamente aprimorando nossas ferramentas de edição de mapas para corrigir esses defeitos. Com o tempo, essas atualizações levarão a melhores mapas, otimizando assim as experiências de viagem para usuários em todo o mundo.

Saiba mais sobre nossos provedores de dados de mapeamento.

Se você estiver interessado em contribuir para métricas de qualidade de mapa e criar aplicativos inovadores baseados em mapas, considere se candidatar a um cargo em nossa equipe.

Assine nossa newsletter para acompanhar as mais recentes inovações da Engenharia da Uber.

***

Este artigo é do Uber Engineering. Ele foi escrito por Ines Viskic. A tradução foi feita pela Redação iMasters com autorização. Você pode conferir o original em: https://eng.uber.com/maps-metrics-computation/