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ância 0.5km 1 0.59km 0.59km
Duração 3m:20s 3m:20s 3m:20s
Tempo Movimento 3m:10 -- --
Ritmo médio 5m:19s 5m:37s 5m:36s
D+ 10m 13m 15m

 


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
Total 591.9967 m 601.4523 m --2
Variação de altitude máxima 14.4012 m 19.0031 m 8.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

Subscrever por e-mail

A subscrição é anónima e gera, no máximo, um e-mail por dia.

Actividade no Strava

Somos Parceiros

Girassol_banner


Os nossos treinos têm o apoio:



Logo_Vimeiro

Arquivo

  1. 2017
  2. J
  3. F
  4. M
  5. A
  6. M
  7. J
  8. J
  9. A
  10. S
  11. O
  12. N
  13. D
  14. 2016
  15. J
  16. F
  17. M
  18. A
  19. M
  20. J
  21. J
  22. A
  23. S
  24. O
  25. N
  26. D
  27. 2015
  28. J
  29. F
  30. M
  31. A
  32. M
  33. J
  34. J
  35. A
  36. S
  37. O
  38. N
  39. D
  40. 2014
  41. J
  42. F
  43. M
  44. A
  45. M
  46. J
  47. J
  48. A
  49. S
  50. O
  51. N
  52. D
  53. 2013
  54. J
  55. F
  56. M
  57. A
  58. M
  59. J
  60. J
  61. A
  62. S
  63. O
  64. N
  65. D
  66. 2012
  67. J
  68. F
  69. M
  70. A
  71. M
  72. J
  73. J
  74. A
  75. S
  76. O
  77. N
  78. D