Cálculo de posição usando dados brutos de GPS
Importância do sistema GPS
- GPS é o Sistema de Posicionamento Global e é usado em diversas aplicações, desde navegação no Google Maps até aplicativos de transporte
- O GPS é muito preciso e também é usado para medir tectônica de placas e deriva continental
- O GPS pertence ao governo dos EUA, e o acesso para outros países pode ser restringido por razões geopolíticas
- Por isso, outros sistemas semelhantes ao GPS foram desenvolvidos, como o GLONASS da Rússia, o Galileo da União Europeia e o BeiDou da China
Sistemas de coordenadas
- Vários sistemas de coordenadas são usados para representar a posição
- Latitude/longitude, de uso comum, não é adequada para cálculos matemáticos
- O sistema de coordenadas ECEF (Earth Centered, Earth Fixed) representa posições usando o centro da Terra como origem
- O sistema WGS 1984 é o sistema ECEF mais usado
Definição de altitude
- Ao definir altitude, é necessário definir a superfície de referência
- São usados o elipsoide de referência e o modelo de geoide
- O elipsoide de referência não tem significado físico, enquanto o geoide é definido como o conjunto de pontos com o mesmo potencial gravitacional
Latitude e longitude
- A latitude geodésica é o ângulo entre a normal à superfície do elipsoide e o plano do equador
- A longitude geodésica é o ângulo entre o meridiano de referência e um meridiano específico
- A altura geodésica é a altitude medida em relação ao elipsoide
Conversão entre coordenadas geodésicas e cartesianas
- Converter coordenadas geodésicas em coordenadas cartesianas é simples
- Converter coordenadas cartesianas em coordenadas geodésicas exige um procedimento iterativo
Sistema de coordenadas local
- O sistema de coordenadas local é o sistema ENU (East-North-Up), centrado na posição do usuário
- Há uma forma de converter coordenadas ECEF em coordenadas ENU
Cálculo da posição do usuário usando GPS
Determinação da posição dos satélites
- A órbita de um satélite é elíptica e é completamente definida por 6 parâmetros de Kepler
- A posição do satélite é calculada de acordo com o documento de especificação da interface GPS
Cálculo da distância entre o usuário e o satélite
- O receptor GPS usa os timestamps do sinal do satélite para calcular a distância até o satélite
- Essa distância é chamada de pseudodistância (
pseudorange)
- Para calcular a posição com precisão, é necessário modelar o offset do relógio do usuário e do satélite, além do atraso atmosférico
Estimativa do offset do relógio do usuário
- O offset do relógio do usuário é estimado junto com a posição do usuário
Algoritmo de estimativa da posição do usuário e do offset do relógio
- Define-se uma posição inicial do usuário e um offset inicial do relógio, que são corrigidos iterativamente
- Para cada satélite, corrige-se a pseudodistância, calcula-se o tempo de transmissão do sinal e calcula-se a posição do satélite
- Técnicas de álgebra linear são usadas para encontrar uma solução de mínimos quadrados
Observações sobre o código Matlab
- Algumas equações exigem chamar um solver
- Por exemplo, calcular a anomalia excêntrica (E) a partir da anomalia média (M) requer um solver
Configuração experimental
- É necessária uma unidade GPS especial para coletar dados brutos de GPS
- Os chips NEO-M8T e 6T da u-blox são adequados
- O utilitário STRSVR do RTKLib é usado para receber e armazenar sinais brutos de GPS
Processamento de dados brutos de GPS
- O STRSVR armazena dados brutos de GPS no formato RTCM3
- A biblioteca Matlab goGPS é usada para decodificar os dados RTCM e convertê-los em estruturas de dados do Matlab
Análise dos resultados
- Analisa-se a variação da posição e do offset do relógio
- Analisa-se a variação dos componentes leste/norte/cima (E/N/U) da posição
- Analisa-se ao longo do tempo a variação do offset do relógio
Cálculo de azimute/elevação dos satélites
- Calcula-se o azimute e a elevação dos satélites no referencial ENU centrado no usuário
Resumo do GN⁺
- Este texto explica o princípio de funcionamento do sistema GPS e como a posição é calculada
- Vários métodos de correção são usados para aumentar a precisão dos dados de GPS
- O texto mostra como processar e analisar dados reais por meio de código Matlab
- É útil para entender a infraestrutura técnica do sistema GPS
- Projetos com funcionalidades semelhantes incluem RTKLib e goGPS
1 comentários
Comentários do Hacker News
O Android já oferece acesso à fase da portadora, e isso permite medir com muita precisão a posição relativa entre dispositivos na mesma área
Há um projeto open source para quem quer construir o próprio receptor GPS
É um link que aparece com frequência em comentários sobre GPS, mas por um bom motivo
Também há um link alternativo que oferece uma explicação mais interativa
Já conheci um pesquisador que coletava dados de GPS de organismos aquáticos que só emergem brevemente e raramente à superfície
O próximo passo é PPP ou RTK
Há outra boa implementação open source
Há uma imagem que mostra o impacto da geometria entre usuário e fonte na incerteza da posição do usuário
Ouvi dizer que o GPS é uma das poucas aplicações do dia a dia em que é preciso levar em conta efeitos da relatividade
Exercício para terraplanistas: expliquem como o mapeamento por GPS do celular funciona se os satélites não orbitam uma Terra esférica