1 pontos por GN⁺ 2024-07-16 | 1 comentários | Compartilhar no WhatsApp
  • O cálculo de posição por GPS é um problema que exige resolver em conjunto a pseudodistância (pseudorange) até os satélites, a efeméride e o erro de relógio do receptor; os dados brutos foram processados em Matlab até a implementação da estimativa de posição real
  • Para os cálculos, o sistema de coordenadas WGS 84 ECEF é mais adequado do que latitude e longitude, e o sistema local ENU também é usado na análise de azimute, elevação e erros com referência ao usuário
  • A posição dos satélites é obtida pelos procedimentos da GPS Interface Specification e pelos parâmetros orbitais; como a Terra gira durante o trânsito do sinal, é preciso corrigir as coordenadas do instante de transmissão para o referencial ECEF do instante de recepção
  • A posição do usuário e o viés do relógio do receptor são estimados com mínimos quadrados iterativos a partir das pseudodistâncias corrigidas de pelo menos 4 satélites, e a análise de exemplo desconsidera atrasos ionosféricos e troposféricos
  • Em um experimento com receptor estático usando u-blox NEO-M8T/6T, RTKLib STRSVR, RTCM 1002/1019 e goGPS, o desvio padrão da posição foi East 14.00m, North 39.88m, Up 47.35m, e o viés do relógio apresentou deriva linear de 4.27e-7sec/sec

O problema básico do cálculo de posição por GPS

  • A tarefa central do GPS é calcular a posição do usuário
  • Latitude, longitude e altitude são familiares para representar posições na superfície, mas são inconvenientes para cálculos matemáticos porque uma diferença de 1 grau em latitude ou longitude nem sempre representa a mesma distância física
    • A distância correspondente a 1 grau de longitude é máxima no equador e se aproxima de 0 nas regiões polares
  • Para os cálculos, é necessário um sistema de coordenadas ortogonais em que diferenças unitárias de coordenada representem distâncias físicas constantes
  • O GPS determina a posição do usuário usando a distância até vários satélites e a posição desses satélites
    • Primeiro, é preciso calcular a distância até os satélites e a posição de cada um deles

Sistemas de coordenadas: ECEF, WGS 84, ENU

  • O sistema de coordenadas ortogonais fixo à Terra e que gira junto com ela é chamado de ECEF (Earth Centered, Earth Fixed)
    • Como as coordenadas de um usuário parado na superfície permanecem constantes ao longo do tempo, ele é adequado para representar a posição do usuário
  • O sistema ECEF mais usado é o WGS 84, desenvolvido pelo Departamento de Defesa dos EUA
    • A origem é o centro de massa da Terra
    • O eixo z passa pelo CTP (Conventional Terrestrial Pole)
    • O CTP é a média da posição do polo terrestre entre 1900 e 1905, e a posição real do polo se move dentro de um círculo de raio aproximado de 15m
    • O eixo x passa pela interseção do plano equatorial do CTP com o meridiano de referência Mean Greenwich Meridian
  • O movimento dos satélites é naturalmente tratado em um sistema inercial de acordo com a mecânica newtoniana, mas a GPS Interface Specification fornece um procedimento para calcular a posição do satélite em um referencial ECEF em um instante específico
  • Em aplicações locais, o sistema de coordenadas ENU (East-North-Up) com origem na posição do usuário é conveniente
    • As coordenadas ECEF podem ser convertidas para ENU com uma multiplicação matricial usando a latitude e longitude do usuário
    • A conversão para ENU é usada para calcular o azimute e o ângulo de elevação dos satélites

Definição de altitude: elipsoide de referência e geoide

  • Para definir altitude, primeiro é preciso decidir “em relação a quê”
  • O elipsoide de referência (reference ellipsoid) é um modelo que abstrai a Terra como um elipsoide achatado
    • Ele está centrado na Terra, e seu eixo de rotação coincide com o eixo z do ECEF
    • O raio de 6371km, frequentemente usado ao tratar a Terra como esfera, fica entre o semi-eixo maior e o semi-eixo menor
    • Um ponto real na superfície pode estar acima ou abaixo do elipsoide de referência
  • O geoide (geoid) é o conjunto de pontos com o mesmo potencial gravitacional, sendo uma superfície com significado físico
    • A altitude em relação ao geoide é chamada de altitude ortométrica ou altura acima do nível médio do mar (MSL)
    • O geoide normalmente é especificado como um conjunto de alturas sobre o elipsoide de referência
  • Latitude, longitude e altitude são definidas como coordenadas elipsoidais
    • A latitude geodésica é o ângulo entre o plano equatorial e a linha perpendicular à superfície do elipsoide no ponto P
    • O ângulo da linha que liga o centro da Terra ao ponto P é a latitude geocêntrica; se a Terra fosse uma esfera perfeita, ela coincidiria com a latitude geodésica
  • A conversão de coordenadas elipsoidais para coordenadas cartesianas pode ser feita em uma única etapa, mas a conversão de ECEF para coordenadas elipsoidais requer um procedimento iterativo de convergência rápida

Cálculo da posição dos satélites

  • A órbita ideal de um satélite é uma órbita elíptica descrita por 6 elementos orbitais keplerianos
    • Cinco elementos definem o tamanho e a forma da elipse, além da orientação do plano orbital
    • O sexto elemento define a posição do satélite em uma epoch específica
  • As órbitas reais dos satélites não são elipses perfeitas devido à não uniformidade da composição da Terra e à influência gravitacional do Sol e da Lua
  • O GPS transmite 16 parâmetros orbitais para corrigir essas perturbações
    • A table 20-IV da GPS Interface Specification contém o procedimento para calcular a posição do satélite, incluindo as correções orbitais
  • A posição do usuário é calculada no instante de recepção t, mas o sinal GPS parte do satélite no instante t-τ
    • A posição do satélite é calculada no instante de transmissão do sinal t-τ
    • Como a Terra gira durante o intervalo τ de propagação do sinal, o vetor posição do satélite deve ser rotacionado pela quantidade correspondente à rotação terrestre para se ajustar ao referencial ECEF do usuário no instante de recepção t
    • Isso não é equivalente a simplesmente calcular a posição do satélite no instante t

Pseudodistância e viés de relógio

  • O receptor GPS compara o timestamp de transmissão incluído no sinal do satélite com o horário do receptor e multiplica a diferença pela velocidade da luz para obter uma estimativa aproximada da distância até o satélite
  • Essa medida é a pseudodistância (pseudorange)
    • Se o relógio do satélite e o relógio do receptor estivessem perfeitamente sincronizados, e o sinal viajasse em linha reta no vácuo à velocidade da luz, ela seria igual à distância real
    • Na prática, ela difere da distância real por causa do offset dos relógios e dos atrasos atmosféricos
  • O viés do relógio do satélite precisa ser corrigido obrigatoriamente, pois pode causar erros de posição de milhares de metros
    • Ele é calculado por um polinômio com coeficientes da mensagem de efeméride GPS e por um termo relativístico
    • O polinômio responde pela maior parte da correção, e o efeito relativístico contribui com cerca de 1 a 10m, dependendo da posição do satélite
  • O viés do relógio do receptor é uma incógnita que deve ser estimada junto com a posição do usuário
    • No algoritmo, o viés do relógio é tratado em unidade de distância, multiplicado pela velocidade da luz
  • Os atrasos atmosféricos se dividem em componentes ionosférica e troposférica
    • O atraso ionosférico normalmente provoca cerca de 25m de erro de posição
    • O atraso troposférico normalmente provoca cerca de 2m de erro de posição
    • Na análise experimental do texto, esses atrasos são ignorados

Algoritmo para estimar a posição do usuário e o viés de relógio

  • As medições de pseudodistância corrigidas podem ser expressas como a soma da distância real usuário-satélite, do viés do relógio do receptor e de erros não modelados
  • A posição do usuário e o viés de relógio são obtidos como os valores que minimizam a diferença entre a pseudodistância medida e a pseudodistância prevista
  • A solução é um procedimento de mínimos quadrados iterativos
    • O valor inicial da posição do usuário é [0 0 0]
    • O valor inicial do viés do relógio do usuário é 0
    • Em cada iteração, monta-se a matriz G empilhando os vetores unitários na direção dos satélites com base na estimativa atual da posição
    • Resolve-se a correção da posição e a correção do viés do relógio, repetindo até que a variação fique abaixo de um limiar
  • Se houver exatamente 4 satélites e a geometria não for degenerada, é possível obter uma solução direta
    • Quando o céu não está obstruído, mais satélites ficam visíveis, e normalmente se usa a solução por mínimos quadrados
  • A implementação segue o fluxo abaixo
    • Recebe como entrada a pseudodistância bruta e a efeméride dos satélites
    • Calcula o viés do relógio de cada satélite e corrige a pseudodistância
    • Aplica correções ionosféricas e troposféricas, quando possível
    • Corrige a pseudodistância com o viés atual do relógio do receptor
    • Divide a pseudodistância pela velocidade da luz para obter o tempo de propagação do sinal τ
    • Calcula a posição do satélite no instante t-τ
    • Ajusta a posição do satélite ao referencial ECEF do usuário refletindo a rotação da Terra durante τ
    • Monta a matriz G e a diferença de pseudodistâncias, e calcula as correções de posição e viés de relógio

Detalhes da implementação em Matlab

  • A maior parte do código Matlab avalia de uma vez as incógnitas do lado esquerdo a partir dos valores conhecidos do lado direito
  • Alguns cálculos não têm solução analítica em forma fechada e exigem um solver
    • Um exemplo é a etapa de cálculo da posição do satélite em que se obtém a anomalia excêntrica E a partir da anomalia média M
    • A relação E - e*sin(E) == M não pode ser resolvida em forma fechada, então usa-se vpasolve
  • O código do apêndice inclui as seguintes funções
    • cálculo da posição do usuário e do viés do relógio
    • cálculo da posição do satélite
    • cálculo da solução por mínimos quadrados da posição do usuário e do viés do relógio
    • cálculo do viés do relógio do satélite
    • conversão de coordenadas ECEF WGS84 para coordenadas elipsoidais
    • conversão do formato dos dados de efeméride

Configuração para coleta de dados brutos de GPS

  • Para obter dados brutos de GPS, é necessário um receptor que produza informações de timing como pseudodistância bruta e efeméride dos satélites, e não um dispositivo GPS comum que apenas calcula a posição internamente e a envia pronta
  • Os chips u-blox NEO-M8T e 6T atendem a esse requisito
    • É possível comprar na Amazon, por cerca de 40 dólares, um conjunto de hardware com unidade GPS, antena e porta de saída serial
  • Para receber e gravar o sinal GPS bruto, usa-se o utilitário STRSVR do RTKLib
    • O RTKLib é um pacote de software open source para posicionamento GNSS padrão e de alta precisão com GPS, Glonass, Galileo, Baidu e outros
    • O STRSVR converte a saída em formato customizado do receptor u-blox para o formato padrão RTCM
  • As informações necessárias estão nas mensagens RTCM 1002 e 1019
    • A 1002 contém informações brutas de pseudodistância
    • A 1019 contém informações de efeméride dos satélites
  • O STRSVR foi configurado para receber dados pela porta serial a 9600 Baud e salvá-los em um arquivo no formato RTCM 3
  • A coleta de dados foi feita no telhado de um prédio de apartamentos
    • O receptor GPS foi colocado em um local com visão desobstruída do céu
    • O software u-blox u-center foi usado para verificar se havia satélites suficientes visíveis e se era possível obter um bom position fix
    • Foram coletados cerca de 1 hora de dados brutos de GPS

Processamento de RTCM e uso do goGPS

  • O STRSVR salva os dados brutos de GPS em formato binário RTCM3
  • Para processá-los no Matlab, é preciso decodificar os dados RTCM3 e transformá-los em estruturas de dados do Matlab
  • Em vez de escrever um decodificador RTCM do zero, usa-se a função load_stream da biblioteca Matlab goGPS
    • Ela lê o arquivo em formato RTCM e extrai as mensagens RTCM
    • Os dados extraídos são salvos em um arquivo .mat para servir de entrada ao algoritmo de cálculo de posição
  • O arquivo rtcm_data também é fornecido
    • Por restrições de segurança do WordPress, ele é disponibilizado com extensão .txt em vez de .mat
    • Após o download, é preciso renomeá-lo novamente para .mat

Resultados do experimento: variação de posição e deriva do relógio

  • Como o receptor permaneceu parado durante a coleta, a variação temporal da posição calculada mostra o desempenho real do algoritmo de cálculo de posição
  • No referencial ENU centrado no usuário, os desvios padrão dos componentes de posição foram os seguintes
    • East: 14.00m
    • North: 39.88m
    • Up: 47.35m
  • A variação de posição ficou em torno de 30m nas direções East e North, e foi maior na direção Up
  • O viés do relógio do receptor não é constante, mas deriva linearmente ao longo do tempo
    • No algoritmo, o viés do relógio é tratado em unidade de distância
    • No gráfico de resultados, ele é convertido para unidade de tempo ao ser dividido pela velocidade da luz
    • A taxa de deriva é 4.27e-7sec/sec

Cálculo de azimute e elevação dos satélites

  • O azimute e o ângulo de elevação dos satélites são definidos do ponto de vista do usuário, então são calculados no referencial ENU centrado no usuário
  • O procedimento de cálculo é o seguinte
    • Calcula-se, no referencial ECEF, o vetor posição do usuário ao satélite
    • Converte-se a posição do usuário para coordenadas elipsoidais de latitude e longitude
    • Rotaciona-se esse vetor posição para o referencial ENU centrado no usuário
    • Calculam-se o azimute e o ângulo de elevação a partir das coordenadas ENU
  • Na epoch de exemplo, os ângulos de elevação calculados para 8 satélites são todos positivos
    • O azimute pode assumir valores positivos e negativos
    • Como o usuário não consegue ver satélites abaixo do horizonte, é natural que a elevação seja positiva
  • Se a posição dos satélites for calculada em várias epochs com o mesmo procedimento, é possível montar o satellite track chart exibido por softwares de processamento GPS

DOP: o fator geométrico da qualidade da estimativa de posição

  • DOP (Dilution of Precision) é uma métrica para avaliar quão boa é a estimativa de posição
  • O erro de posição é afetado não só pelo ruído de medição, mas também pela geometria entre usuário e satélites
    • Quanto mais ruidosas forem as medições de pseudodistância e de posição dos satélites, maior será o erro de posição
    • Quanto mais espalhados estiverem os satélites em termos de azimute e elevação, mais favorável será a geometria e menor será o DOP
  • A covariância dos erros de posição e viés de relógio pode ser decomposta como função do erro de distância do usuário e da matriz G
    • A matriz G é formada pelos vetores unitários do usuário em direção aos satélites
    • Para facilitar o cálculo do DOP, a matriz G no referencial ECEF é rotacionada para o referencial ENU
  • Os componentes do DOP são definidos nas direções East, North e Up
    • HDOP combina os componentes East e North, sendo o DOP horizontal
    • VDOP é o DOP vertical, correspondente ao componente Up
  • Nos dados reais, HDOP e VDOP ficaram em geral abaixo de 2.5
    • Esse valor é considerado satisfatório
    • O VDOP é maior que o HDOP
    • Como um usuário na superfície não pode observar satélites abaixo do horizonte, e sinais de satélites abaixo de 10 graus de elevação normalmente são ruidosos demais para uso, o VDOP acaba sendo mais alto

A escala da infraestrutura do GPS

  • A construção da constelação GPS custou cerca de 30 bilhões de dólares, e o governo dos EUA gasta cerca de 1 bilhão de dólares por ano com sua manutenção
  • É mencionado que a Uber, que não poderia existir sem GPS, vale mais de 70 bilhões de dólares
  • Considerando também as várias aplicações viabilizadas pelo GPS, o investimento público em GPS pode ser visto como um caso de enorme impacto econômico e tecnológico

1 comentários

 
GN⁺ 2024-07-16
Comentários no Hacker News
  • O Android já oferece há bastante tempo acesso à abordagem de fase da portadora (carrier phase), e com ela é possível obter a posição relativa entre dispositivos mais ou menos no mesmo bairro com uma precisão tamanha que você precisa se preocupar com onde a antena GNSS está escondida no aparelho.
    Isso por si só não é nada extraordinário, mas melhora quando se combina também o acelerômetro e o giroscópio de cada dispositivo.
    Como a variação das medições de pseudodistância GNSS é previsível mesmo quando não se está parado, dá para operar em tempo real com pouca perda de desempenho.
    Por exemplo, seria possível fazer um aeromodelo sem rodas pousar automaticamente na caçamba de um caminhão, evitando arranhões ou a dependência de uma pista de grama.
    Se consumo de energia não for tão crítico, também não é preciso tornar um receptor GNSS bastante bom algo caro; não entendo por que não dá simplesmente para comprar um par por 100 dólares.

  • Para quem quer construir o próprio receptor GPS, há um projeto totalmente open source que também explica bastante da teoria: http://www.aholme.co.uk/GPS/Main.htm

  • Um texto que aparece com frequência em comentários sobre GPS, mas por bons motivos: https://ciechanow.ski/gps/

  • Outra explicação, e provavelmente mais interativa:
    https://ciechanow.ski/gps/

  • Há também outra boa implementação open source:
    https://m.youtube.com/watch?v=dVD1Yws__v0

  • Já vi pesquisadores coletando dados de GPS de animais aquáticos que sobem à superfície apenas ocasionalmente, e por períodos muito curtos.
    Ao registrar os dados brutos e processá-los depois, tanto o consumo de energia quanto o tempo mínimo necessário de exposição ao sinal dos satélites caem bastante; esse tempo de exposição chega a ficar abaixo de 1 segundo.

  • Ao ler a parte “a figura abaixo mostra como a geometria usuário-fonte afeta a incerteza da posição do usuário”, fiquei pensando que seria bom se os apps de mapas do celular tivessem uma configuração para trocar o formato da incerteza de posição, de um círculo para esse tipo de interseção de arcos.

  • Ouvi dizer que o GPS é uma das poucas aplicações em que é preciso levar em conta efeitos relativísticos no dia a dia. Então os dados gerados já vêm com esses efeitos relativísticos removidos, certo?

    • O que exatamente você quer dizer com “dados gerados”, e gerados por quem?
      Se for a saída de um dispositivo GPS comercial, sim. No processamento pós-aquisição para gerar a saída, todo tipo de efeito que causa erro é corrigido.
      Este texto trata dos dados GPS brutos transmitidos por vários satélites; para gerar valores de saída a partir deles, é necessário processamento, e muitas vezes entram também dados adicionais, como correções de estações terrestres ou marítimas, para aumentar a precisão.
      Vários fornecedores de equipamentos GPS fazem, em linhas gerais, coisas parecidas, mas os detalhes são o que importam.
      O texto https://ciechanow.ski/gps/ linkado por outros comentários também é uma boa leitura.
    • O tempo passa de modo diferente conforme a intensidade da “força” gravitacional, ou, mais precisamente, conforme a taxa com que um objeto cai na distorção do espaço-tempo criada pela massa da Terra.
      Em objetos que se movem mais rápido que o observador, o tempo também passa mais devagar, e satélites se movem bem rápido.
      Como o GPS precisa que o tempo entre o observador e os satélites esteja sincronizado, o fluxo do tempo é corrigido para refletir os efeitos da relatividade especial e da relatividade geral.
    • No orçamento de erro da pseudodistância até o satélite há vários fatores causados pela relatividade, mas, dentro do problema de mínimos quadrados resolvido para obter a estimativa de posição, eles simplesmente entram junto no termo de erro.
      Portanto, a relatividade é importante, mas não é preciso saber muita relatividade para resolver sua própria posição.
      Ainda assim, várias formas de RTK de linha de base longa/rede podem exigir modelagem mais sofisticada.
    • Os “efeitos relativísticos” em si fazem parte de como o GPS funciona.
  • O próximo passo é PPP ou RTK. GNSS é uma toca de coelho de possibilidades muito divertida.

  • Exercício para terraplanistas: explique como o mapa GPS do celular funciona sem satélites orbitando uma Terra esférica. Mostre seu raciocínio.

    • Se você acredita com força suficiente que o governo está tentando enganá-lo, pode acabar achando que a física de satélites que aprendemos é uma construção paralela (https://en.m.wikipedia.org/wiki/Parallel_construction) e que, na verdade, tudo bate com a Terra plana usando um monte de mains adicionados.
    • É possível dizer que o celular usa alguma “mágica” arbitrária, isto é, tecnologia, para obter uma localização precisa.
      Primeiro seria preciso apresentar um argumento bastante complexo de que, sem satélites, o celular não conseguiria fazer isso.
      Um exemplo um pouco mais fácil e difícil para um terraplanista contornar é que a ISS é quase visível a olho nu e claramente visível com um telescópio de quintal. Os satélites Starlink são parecidos.
    • Pela minha experiência, terraplanistas não fazem uma investigação rigorosa suficiente para sequer tentar responder a essa pergunta.
      A ideia da Terra plana não é uma posição alcançada pela razão; quase sempre surge da confusão ou como consequência inevitável de uma crença central inabalável. Normalmente vem de uma leitura extremamente literal da Bíblia, ou de um delírio paranoico de que “tudo que é oficial é falso”.