Saltar para: Post [1], Comentários [2], Pesquisa e Arquivos [3]

Correr na Cidade

O meu GPS anda maluco?

hiker-1984421_1920.jpg 

Por Bruno Tibério:

 

Um dos seguidores do blog perguntou "porque razão ao correr com amigos as aplicações mostram valores diferentes mesmo tendo ido os dois lado a lado" e eu fui chateado pela malta do CnC para responder a esta questão.

 

É o que vou tentar explicar na óptica de utilizador e baseado na minha experiência com sensores do mesmo género. Sendo que a conversa pode tornar-se demasiado chata para alguns, deixo aqui a versão TL,DR ou se calhar de forma mais adequada "Demasiado nerd, não vou ler".

Na primeira parte irei falar sobre mesmo ficheiro de dados enviado para várias aplicações e na segunda irei mostrar a comparação entre os ficheiro sem tratamento, o Strava, e um gps de gama profissional.

 

 

Parte 1: TL,DR version

 

Os sensores de gps de baixo custo têm um desvio padrão associados que facilmente rondarão 3 a 5 metros sem obstrução da linha de visão dos satelites e boas condições climatéricas para posições horizontais. Para posições verticais este erro pode aumentar entre 2 a 3 vezes em muitos casos. Para isso as aplicações recorrerem a modelos externos de mapeamento de altitudes (Digital Elevation Models) e ,caso estejam disponíveis, fusão de outros sensores (barómetros) de forma a incrementar a precisão.
O algoritmo utilizado para a detecção de movimento pode ser também diferente e por tanto, os tempos de movimento e estimativas de média de min/km será obviamente afectada pela escolha destes algoritmos em cada aplicação.

Vejamos os exemplos na tabela seguinte, onde o mesmo ficheiro (.gpx) foi enviado para três aplicações diferentes e o tratamento é todo feito apenas sobre a informação de gps. É importante referir este ponto porque desta forma garante-se que não existe fusão de informação de outros sensores.

 

 StravaTomTom MySportsRunkeeper
Distância0.5km 10.59km0.59km
Duração3m:20s3m:20s3m:20s
Tempo Movimento3m:10----
Ritmo médio5m:19s5m:37s5m:36s
D+10m13m15m

 


Portanto facilmente vemos que, para uma distância curta existem pequenas variações que provavelmente se irão demarcar mais com a duração da actividade. Logo, é perfeitamente normal aplicações diferentes resultarem em valores diferentes pela escolha dos algoritmos usados. 

 

Parte 2: Let's go nerd all the way!

 

Para contexto, vamos apenas dar uma ou duas notas sobre o funcionamento do GPS.

Basicamente, o sistema de GNSS (GPS é o sistema GNSS pertencente aos EUA) está continuamente a transmitir mensagens (algumas são codificadas e estão apenas disponíveis para militares). Todas as mensagens são moduladas e transmitidas sobre uma frequência base (que varia dependente da constelação GNSS usada) em que um dos campos é o horário em que foram enviados do satélite. Então, um receptor de GPS pode usar esta informação para determinar a posição. Se eu sei que a mensagem "A" chegou ao meu receptor no instante t1 mas foi enviada no instante t0 posso estimar a distância ao satélite A como sendo a velocidade da luz vezes a diferença de tempo (d = C[t1-t0]).
Utilizando o mesmo método para outros satélites permite realizar a triangulação como mostra nesta imagem:

 

sat (1).png

 

 

Na realidade precisamos de pelo menos 4 satélites porque, à partida, não sabemos se o relógio do nosso receptor está correcto ou não e resolvendo um sistema de quatro equações a quatro incógnitas, o receptor irá calcular também o desfazamento entre os relógios.

Sabendo qual a frequência a que o sinal é transmitido, também existe forma de determinar a velocidade a que nos movimentamos devido ao efeito de Doppler. De forma simples, pensem num carro que está a apitar a passar por vocês. Já repararam como o som muda à medida que este se movimenta? O princípio é o mesmo. A variação da frequência depende da velocidade de deslocamento.

 

Então, os receptores de satélite podem ser melhores do que outros de acordo com a capacidade e precisão dos seus relógios internos e na realização de cálculos e detecção das frequências utilizadas pelas constelações.
Obviamente existem muitos mais erros mas não quero parecer demasiado nerd.

Shut up and show me the data!

 

comparar_todos.png

 

Coisas que saltam logo à vista: na projecção horizontal (parte inferior direita) as coisas aparentam comportar-se até bastante bem, apesar traçado do Strava não ser coincidente com o traçado de raw (o que seria de esperar). Significa que o Strava aplica algum processamento adicional sobre as coordenadas (talvez uns filtros de média móvel para remover possíveis outliers).
Outro aspecto que é facil perceber é que no ficheiro sem tratamento (parte superior, lado direito), o ponto inicial e final não coincidem. O do strava está perfeitamente suave, o que indica claramente que segue um qualquer modelo DEM para fazer as correções.

Os dados da Novatel servem aqui um pouco como a referência de comparação e, mesmo assim, podemos ver o quanto instável ele é:

Mas será que essas estimativas são assim tão importantes?


Vejamos a distância calculada pelo dois casos (Strava vs Raw):

 

 StravaRawNovatel
Total591.9967 m601.4523 m--2
Variação de altitude máxima14.4012 m19.0031 m8.8478 m 3

 

 Numa volta tão pequena produziu uma diferença de ~ 10 m.

Como algumas marcas melhoram a precisão na altura?

Usando a fusão de barómetros. Como sabem, algum relógios com GNSS indicados para desportos têm barómetros. Isto porque a pressão atmosférica vai reduzindo à medida que a altura vai aumentando. O barómetro não está sujeito ao mesmo tipo de erros (que ronda os 0.5m, por exemplo, no Bosch BMP180) do GNSS mas é influenciado pela variação das condições climatéricas e é por este caso que algumas marcas aconselham a deixar o relógio ligado e relativamente parado durante cerca 15 a 30 min na zona onde vamos correr para que os sensores possam ser calibrados automáticamente.

 

Se quiserem pesquisar mais sobre gnss, a novatel disponibiliza uma introdução que considero muito boa em http://www.novatel.com/an-introduction-to-gnss/chapter-1-gnss-overview/.


Para quem é demasiado nerd, deixo aqui um artigo interessante onde se realizaram experiências com dois telemóveis um com barómetro e outro sem para mostrar melhoramento na posição do GNSS.

 

Footnotes:


1: Apesar de apresentar com distância total 0.5 km, graficamente pode verificar-se que é aproximadamente 0.6 km.
2: Não contenho dados de apenas uma volta. Os dados mostrados correspondem a várias voltas.
3: Valores não filtrados. Usando o filtro para remover outliers resulta em cerca de 5.9093m .

 

1 comentário

Comentar post