O app Transit rastreia a localização no metrô sem GPS
(blog.transitapp.com)- Mesmo quando GPS, rede celular e Wi‑Fi falham dentro de túneis, o GO trip do Transit agora consegue continuar mostrando a posição prevista, o número de estações restantes e o ETA
- O ponto central é classificar se a pessoa está dentro de um trem em movimento usando o sinal de vibração do acelerômetro do celular e combinar isso com a última posição confirmada e os horários do trem
- A equipe do Transit reuniu centenas de trajetos e dados rotulados manualmente de várias cidades e, no metrô de New York City, percorreu todas as linhas registrando vibrações de trens, escadas rolantes e elevadores
- O modelo final de previsão de localização, The Mixer, acerta a posição atual com 90% de probabilidade e, nos testes iniciais, deu suporte à detecção de 1,5 milhão de estações subterrâneas em cerca de 400.000 trajetos
- Os dois modelos são compactados em arquivos pequenos e executados no celular, permitindo contagem de estações offline, e os dados de vibração não são enviados aos servidores do Transit
Por que é difícil localizar a posição no subsolo
- Em túneis de metrô, metro ou U-Bahn, serviço celular, Wi‑Fi e GPS muitas vezes não funcionam de forma estável
- Antes, para conferir a próxima parada ou o ETA no subsolo, era preciso depender de placas na plataforma, anúncios da estação ou telas digitais dentro do vagão
- Em vez de criar satélites GPS que atravessem o solo, o Transit prevê a posição do trem no túnel com base nos padrões de vibração do celular
Informações exibidas no GO trip
- O usuário só precisa iniciar um GO trip no Transit
- Dá para começar direto na tela de detalhes da linha
- Também é possível iniciar a partir de um trajeto planejado
- Mesmo sem saber as coordenadas de GPS, o app mostra as seguintes informações
- Posição prevista no mapa
- Contagem regressiva do número de estações restantes
- ETA atualizado
Etapa 1: classificação de movimento dentro do trem
- Ao entrar em um túnel onde o GPS funciona mal, primeiro é preciso determinar se o usuário está em um trem em movimento
- Stephen, funcionário do Transit, registrava dados do acelerômetro no celular enquanto ia ao escritório em Montreal e rotulava cada etapa do trajeto
- Momento em que começou a caminhar
- Momento em que desceu as escadas
- Momento em que esperou na plataforma
- Momento em que o trem partiu e parou
- Os dados de aceleração foram organizados com um método inspirado na Fourier transform e convertidos em dados de frequência
- Em um trem em movimento, o celular vibrava a cerca de 5Hz, enquanto ao caminhar aparecia em torno de 2Hz
- Como ruído aleatório e frequências harmônicas tornavam insuficiente usar apenas padrões simples, foi necessário um modelo de machine learning para classificar o tipo de movimento e uma grande quantidade de dados de treinamento
Etapa 2: coleta de dados de referência
- A equipe do Transit rotulou dados de centenas de trajetos em dezenas de cidades para criar um modelo generalizado capaz de identificar um “trem em movimento” independentemente do tipo de trem ou de trilho
- Étienne e Elijah coletaram dados de vibração no metrô de New York City, o sistema subterrâneo mais popular no app
- Os dois passaram uma semana usando iPhone, Android e MetroCard em ônibus e trens da MTA, rotulando cada etapa do trajeto
- O objetivo era encontrar pistas para distinguir a vibração dentro do trem de outras vibrações presentes na estação
- Eles subiram e desceram escadas rolantes e elevadores, anotando até os momentos de parada
- Percorreram todas as linhas do metrô de New York, do Bronx até Brighton Beach, incluindo a Manhattan Bridge, a Williamsburg Bridge e o Canarsie Tunnel
Etapa 3: treinamento do classificador de movimento
- Com base nos dados de sensores organizados e processados, o motion classifier foi treinado para distinguir entre “trem em movimento” e “não é um trem em movimento”
- O modelo recebe como entrada dados de sensores sem rótulo e estima se o celular está em um trem em movimento, um trem parado, em caminhada ou em uma escada rolante em movimento
- O Transit compara essa estimativa com o ground truth criado por anotações manuais e ajusta a lógica para obter previsões mais precisas
- Depois dos ajustes, o modelo passou a distinguir se o usuário está realmente em um trem em movimento ou se apenas o celular está vibrando
Etapa 4: o modelo de previsão de localização The Mixer
- Depois de saber se há movimento, é preciso prever exatamente onde o trem do usuário está
- O último modelo, The Mixer, calcula a posição atual ponderando os seguintes elementos
- A previsão do tipo de movimento, isto é, se o usuário está em um trem em movimento
- A última posição confirmada do usuário
- Se essa última posição confirmada é recente ou antiga
- Os horários do trem
- O The Mixer acerta a previsão da posição atual com 90% de probabilidade
- No exemplo de um trajeto do RER de Paris, chegam atualizações intermitentes de posição no trecho subterrâneo por meio de GPS e de varreduras de Bluetooth/Wi‑Fi, e essas atualizações corrigem a previsão de localização no subsolo em trechos sem comunicação
- Quando o usuário volta à superfície e entra em uma área com serviço celular, o app passa a usar novamente a localização GPS padrão
Funcionamento offline e privacidade
- Com a previsão de localização, o app consegue atualizar o ETA mesmo no subsolo
- A contagem de estações é possível sem depender de GPS instável ou da checagem das telas dentro do vagão
- A contagem de estações funciona de forma totalmente offline
- O motion classifier e o The Mixer são compactados em arquivos pequenos e executados no celular
- Os dados de vibração não são enviados aos servidores do Transit
- Sem rastreamento
- Sem cookies
- Os dados de vibração permanecem no dispositivo do usuário
Como usar e escala dos testes iniciais
- Basta procurar o metrô, abrir o Transit e iniciar o trajeto com GO para ver as estações sendo contadas uma a uma
- Durante os testes iniciais, o Transit deu suporte à detecção de 1,5 milhão de estações subterrâneas em cerca de 400.000 trajetos
- A navegação passo a passo do GO já era usada por milhões de pessoas em deslocamentos de superfície em mais de 600 cidades
- Desde o lançamento do GO Bike no mês passado, ciclistas também passaram a usar o GO
- Com esse recurso, usuários de trens subterrâneos podem confiar mais no GO mesmo em trechos com sinal ruim
- O app está disponível na página de download do Transit
1 comentários
Comentários do Hacker News
Li um post de blog da empresa francesa snips há uns 10 anos, e o app detectava o momento em que o trem entrava ou saía da estação usando o sensor barométrico
Diziam que, quando o trem entrava ou saía do túnel entre estações, havia um aumento/quedra súbito de pressão, gerando um sinal bem nítido
Achei: https://medium.com/snips-ai/underground-location-tracking-3e...
Esses tubos detectam picos de pressão para saber se a porta está prestes a prender a mão de alguém, e também são usados para reduzir o efeito de “baque” causado pela diferença de pressão ao entrar no túnel
Nem todo celular tem sensor barométrico, e a qualidade da medição varia muito entre modelos. Por exemplo, em alguns aparelhos o valor disparava só de segurar o telefone com mais força
O Transit também não tinha permissão para ler o sensor barométrico, e era difícil justificar pedir essa permissão para o nosso caso de uso
Mas parece que a precisão variava conforme a corrente da rede elétrica era contínua ou alternada, e até de acordo com a idade do vagão
O prédio estava concluído, mas não operava, então por quase 10 anos a empresa ferroviária local teve de circular trens para dentro e para fora do edifício
Muito legal
Neste momento há de fato um projeto de gravação de som do London Underground passando embaixo de mim
Dá para ouvir bem claramente a Northern Line passando sob nós, e a profundidade é de menos de 30 m
Fiquei obcecado em captar o som dos trens passando com gravações de baixa frequência em alta qualidade. Não sei por quê, mas não sai da minha cabeça
Por exemplo, há dois túneis, sentido norte e sentido sul; fico pensando se daria para distinguir a assinatura sonora de cada um correlacionando com os dados reais da TfL
Mais interessante ainda é saber se dá para “capturar” os veículos de manutenção que circulam sob nós depois do fim da operação
Não sei o que mais poderia fazer com esse projeto, mas fiquei fascinado pela ideia de registrar o som de uma espécie de criatura meio etérea se movendo sob mim
Tenho interesse em vibrações ultrafracas de alta frequência vindas de objetos cotidianos parados, então acho que meu objetivo é quase o oposto. Ainda não avancei muito em conseguir sensores
Eu adoraria ter um vibrômetro a laser Doppler, mas é caro
Vou ver se encontro quem era
[0] https://lamont.columbia.edu/
Não sei se era som residual saindo por uma saída de emergência na calçada ou se era o solo ressoando como um sino
Também queria reconhecer rapidamente como o tom coloquial do texto era realmente bom
Mesmo entrando em explicações bem detalhadas, como gráficos de frequência, continuava prazeroso de ler. Li a versão em inglês
Quem escreveu mandou muito bem
O Transit App é uma joia de aplicativo
“Classificador” é um termo simpático. Impressiona que o texto inteiro não mencione IA nenhuma vez
Algumas cidades instalam beacons BLE nos túneis para transmitir a localização, e aí a posição atual é determinada pelo sinal de beacon mais forte
Gosto que este método descobre isso sem instalar hardware
Claro, sendo justo, essas telas erram com uma frequência ridícula e ficam alternando mensagens inúteis como “não esqueça sua bagagem”, então você precisa esperar uns 20 segundos para ver a informação que quer. Dentro do trem isso é terrivelmente ruim
O progresso entre estações provavelmente poderia ser rastreado melhor detectando a assinatura de aceleração de cada trecho da via
Especialmente se a via não for totalmente reta e plana; parece a navegação automotiva do início da era pré-GPS. Na época usava-se navegação inercial, e a forma do trajeto medido era comparada com dados de mapa para corrigir a deriva
Um método mais confiável talvez seja usar o acelerômetro para identificar características da via, como inclinação, curvas, irregularidades ou combinações disso
Também dá para usar o som em curvas, mudanças no ambiente em trechos onde túneis se juntam etc. A aceleração integrada fornece a velocidade do trem, então isso é útil junto com outras entradas
Coletar assinaturas seria legal, mas é um trabalho enorme se você quiser cobrir muitas cidades e celulares. Empresas como Google ou Apple talvez tenham os dados e a capacidade, mas uma empresa pequena dificilmente teria isso
Há um zumbido muito característico que acompanha a rotação das rodas. Já fiz um velocímetro tosco no passado com SFT, detecção de picos e filtragem de Kalman
Como usuário do Transit, agradeço por terem criado um app tão incrível; esse sempre foi um dos maiores incômodos
E não só no Transit, mas em qualquer app com navegação de transporte público; nem o Apple Maps é exceção
Eu imaginava que alguém estivesse trabalhando nisso, mas ler sobre o nível de reflexão no design e de atenção aos detalhes foi realmente revigorante. Foi um esforço enorme
A equipe do Transit pode se orgulhar de ter resolvido uma das pequenas grandes frustrações dos apps de transporte público
Muito legal. Como pego o BART com frequência, sempre pensei que seria divertido criar um classificador de localização com base nos rangidos diferentes em cada trecho do túnel
Mas usar dados do acelerômetro parece bem mais prático
Até daria para gravar o barulho do trem andando e detectar o movimento, mas os usuários suspeitariam que o app está espionando eles
Será que não ficaria muito melhor fazer navegação inercial com acelerômetro e giroscópio, além de aprendizado de máquina?
Algo como restringir o movimento para seguir o trajeto conhecido do túnel enquanto se está em um trem em movimento e, quando a partida do trem for detectada, restringir o usuário a estar dentro do retângulo de parada do trem
Ou, mesmo com informação extra, o hardware do smartphone é impreciso demais?
Só com o giroscópio funciona muito bem em deslocamentos curtos, mas em curvas longas e suaves fica quase inútil. Giroscópios MEMS derivam bastante ao longo de dezenas de segundos
Se der para fazer fusão de sensores com magnetômetro e acelerômetro, o problema diminui, mas em trens rápidos é difícil encontrar o “baixo” por causa da aceleração/desaceleração e das forças nas curvas. Também não sei quão bem uma bússola funcionaria dentro de túneis de metrô
Minha única experiência foi com apps de “horizonte artificial” em aviões, e lá o acelerômetro era completamente inútil para encontrar o “baixo”. Uma única manobra com alguns Gs já fazia o horizonte perder totalmente a noção do ângulo de arfagem. Se o ambiente magnético for ruidoso e o GPS estiver desligado, ele também não sabe para onde está indo
Só que a navegação inercial em geral é muito imprecisa, então, quando se reconhece que você está em um trem, dá para saber com precisão onde o trem está e aumentar bastante a exatidão
Talvez desse para corrigir o viés da IMU se o usuário ficasse parado o suficiente, em pé ou sentado, toda vez que o trem parasse, mas ainda assim a navegação inercial provavelmente derivaria bastante
Aí seria só estimar a velocidade atual em relação ao histórico e prever o horário de chegada. Então faz mais sentido focar na velocidade do que na aceleração
Testei esse recurso no metrô de Nova York na semana passada. Não sabia que era uma função nova
A ideia é legal, mas não funcionou para mim, e o app mostrava o trem várias estações atrás da posição real