Show HN: Projeto de construção de um receptor GPS
(axleos.com)- gypsum é um projeto de construção de receptor que decodifica sinais de GPS do zero para obter a posição, e a parte 1 de uma série em 4 partes foca em encontrar sinais de satélite escondidos abaixo do ruído
- O GPS é um sinal de transmissão enviado por cerca de 30 satélites para toda a Terra, então o satélite não sabe quem está ouvindo e um datacenter também não pode substituir a recepção de rádio do usuário
- O sinal de GPS que chega a uma antena em solo pode ter 100.000 vezes menos potência do que o ruído ao redor e ser 100 milhões de vezes mais fraco do que um sinal celular comum, ficando praticamente invisível do jeito que chega
- O receptor compara repetidamente o código C/A que tanto o satélite quanto o receptor conhecem para tirar a média do ruído aleatório e encontrar um sinal de dados de 50 bps sobre um código PRN de 1 Mbps
- A aquisição (acquisition) é uma etapa intensiva em computação que busca, para cada satélite, o PRN, o deslocamento Doppler de ±5 kHz e a fase do código ao mesmo tempo para descobrir quais satélites estão visíveis e estimar atraso de tempo e velocidade relativa
Projeto para ouvir diretamente os sinais de GPS
- gypsum é um projeto de receptor GPS construído do zero
- A série em 4 partes cobre o processo de decodificar sinais de GPS para obter a posição, e a parte 1 corresponde à etapa de encontrar o sinal e adquirir os satélites
- O GPS envia sinais a partir de cerca de 30 satélites para toda a Terra, e esses sinais estão sempre presentes ao redor, independentemente de altitude ou clima
- O GPS começou em 1978 e, no momento da escrita, já haviam se passado 45 anos
Um farol silencioso e um cálculo de posição que não pode ser substituído por servidores
- O sinal dos satélites GPS tem intensidade parecida com a de uma lâmpada residencial quando é transmitido, mas se torna extremamente fraco ao chegar ao solo
- O GPS funciona de forma próxima a send-and-forget, então o satélite não sabe quem está ouvindo
- Rádio FM e TV aberta também têm características parecidas
- Por causa dessa estrutura, é difícil para qualquer um cobrar simplesmente pelo acesso ao GPS
- O cálculo de posição não se encaixa em um modelo em que um serviço web faz tudo e devolve o resultado
- O GPS exige ouvir diretamente as ondas de rádio que chegam ao local onde o usuário está
- Um datacenter não pode ouvir no lugar do usuário as ondas de rádio que chegam à localização dele
Explorando frequências de GPS com SDR
- Para receber sinais de GPS por software e fazer pós-processamento, é preciso um receptor de RF ajustável, e esse equipamento é um rádio definido por software (SDR)
- Usa-se o SDR++ para explorar o espectro
- Alguns conceitos são necessários ao usar SDR
- bias tee: circuito interno do SDR que fornece alimentação DC à antena conectada via SMA. No SDR usado, isso vinha desativado por padrão e precisou ser ligado manualmente
- automatic gain control (AGC): circuito de hardware ou recurso de software que tenta amplificar sinais fracos para melhorar a relação sinal-ruído (SNR) dos dados recebidos
- IQ samples: I é o componente in-phase, e Q é o componente quadrature ou imaginário, permitindo tratamento do sinal do ponto de vista de tempo, amplitude e polaridade
- O SDR gera um pico forte na frequência central ajustada
- Para iniciantes, isso pode fazer parecer que há um sinal forte em qualquer lugar observado
- É possível reduzir esse pico ajustando um pouco fora da frequência central ou usando a correção de IQ no software
Como encontrar um sinal enterrado sob o ruído
- Na antena em solo, o sinal de GPS chega com 100.000 vezes menos potência do que a energia e os sinais ao redor
- O sinal de GPS pode ficar até 50 dB abaixo do piso de ruído térmico
- Satélites GPS modernos são projetados para enviar sinais que chegam ao receptor em torno de -130 dBm
- Em ambientes residenciais comuns, o piso de ruído térmico na largura de banda C/A é de cerca de -110 dBm
- Como comparação, um sinal celular fica em torno de -50 dBm, sendo 100 milhões de vezes mais forte que o sinal de GPS
- Para identificar e decodificar sinais tão enterrados no ruído, o GPS usa a técnica de spread-spectrum
Ouvindo sinais inaudíveis com código C/A e PRN
- Os satélites GPS enviam, junto com os dados que o receptor ainda não conhece, um sinal que tanto o satélite quanto o receptor conhecem
- Esse sinal é chamado de código C/A, código PRN ou chipping code, e o satélite o repete 1.000 vezes por segundo
- C/A significa coarse acquisition
- No GPS originalmente pensado para uso militar, o código C/A era uma etapa de baixa resolução para travar no código P, mais preciso
- Hoje, o código C/A é a base da maior parte do GPS civil, enquanto o código P continua disponível apenas para uso militar
- Receptores civis não podem usar o código P porque não conhecem os valores da chipping sequence
- Se a fórmula de geração do código P fosse pública, ele poderia ser travado com técnicas parecidas às usadas no código C/A
- O código P é mais preciso porque opera com uma taxa de chips mais alta
- O receptor soma e compara repetidamente o PRN esperado com o sinal realmente recebido
- O ruído aleatório tende a se anular e convergir para 0 ao longo do tempo
- O sinal PRN continua se acumulando e ficando mais forte
- O GPS usa code-division multiple access (CDMA) para lidar com vários satélites ao mesmo tempo
- O sinal de dados real é transmitido misturado ao código PRN
- O código PRN opera a 1 Mbps
- O sinal de dados é transmitido a apenas 50 bps
- Graças à baixa taxa de dados, o código PRN permanece como um sinal de referência estável por um tempo relativamente longo
Geração do código C/A de cada satélite
- Como existem vários satélites, o receptor precisa descobrir quais deles estão visíveis
- Cada satélite GPS tem um código PRN próprio e estável
- Esse código está definido em
Table 3-I (Code Phase Assignments)da especificação GPS civil IS-GPS-200L - Há muito material online explicando como gerar códigos PRN, mas não havia tantas referências reproduzíveis para conferir o código PRN completo
Etapa de aquisição: encontrar os satélites visíveis
- Para encontrar os satélites visíveis no céu, o receptor GPS gera uma cópia do PRN transmitido por cada satélite e procura esse PRN nos dados coletados pela antena
- Essa etapa é a aquisição (acquisition), e o objetivo é travar nos satélites que estão acima do usuário
- O receptor captura um pequeno snapshot de cerca de 1 segundo dos dados da antena e calcula a correlação (correlation) com cada PRN replicado
- Se houver forte correlação entre o PRN replicado e os dados reais, isso indica que o satélite daquele PRN está transmitindo acima
- O sinal real recebido é diferente do PRN ideal
- O sinal de GPS enfraquece ao atravessar a atmosfera da Terra
- Como os satélites se movem rapidamente, o sinal recebido sofre deslocamento Doppler
- Como a velocidade orbital dos satélites GPS é bem conhecida, a faixa esperada de Doppler shift também é conhecida
- Um satélite se aproximando pode aumentar a frequência em até +5 kHz
- Um satélite se afastando pode reduzir a frequência em -5 kHz
- Como o instante em que a recepção começa é arbitrário, é possível começar a ouvir no meio da transmissão do PRN
- A etapa de aquisição explora simultaneamente três eixos
- O código PRN de cada satélite
- A faixa esperada de Doppler shift
- A fase usada para deslocar o PRN replicado e alinhá-lo ao PRN recebido
- O volume de cálculo é grande, mas, quando os parâmetros corretos são encontrados, aparece um pico de correlação bem nítido
Implementação e resultado da parte 1
- A implementação converte cada PRN do domínio do tempo para o domínio da frequência e correlaciona a frequência dos dados recebidos do satélite com o espectro de cada código PRN
- Essa abordagem corresponde a uma cross correlation no domínio da frequência
- Como o deslocamento de fase no domínio do tempo vira deslocamento dos componentes de frequência, a busca por Doppler shift e por fase pode ser tratada no mesmo cálculo
- O Doppler shift converge para o valor com o pico de correlação mais forte em cada satélite visível por meio de um método parecido com binary search
- Como resultado da parte 1, é possível determinar quais satélites GPS estão acima do usuário no momento e obter, para cada um, o phase/time delay e o Doppler shift/relative velocity aproximados
- A próxima etapa continua em Part 2: Tracking Pinpricks
1 comentários
Opiniões no Hacker News
Hoje é possível obter receptores de amostragem direta de RF ou de conversão direta de RF rápidos o bastante para GPS. Exemplos: Xilinx RFSoc https://www.mouser.com/datasheet/2/903/ds889_zynq_usp_rfsoc_..., artigo da National Instruments https://www.ni.com/en/solutions/aerospace-defense/radar-elec..., hardware pronto relacionado https://www.ni.com/en-us/shop/category/flexrio-custom-instru...
É um pouco curioso que a NI considere a conversão direta de RF eficiente em custo e, ao mesmo tempo, venda o equipamento por US$ 30 mil, mas, se você está prototipando recepção de banda larga com coerência de fase na faixa de 3 GHz e tem um laboratório adequado e orçamento, vale a pena comprar algumas unidades. Para produção em massa, eu esperaria o custo de uma placa própria cair mais ou verificaria se dá para usar um receptor heteródino tradicional
Para uso militar, se houver preocupação com armas avançadas de rastreamento por RF, um receptor de conversão direta pode ser bom, porque não há vazamento do oscilador local que equipamentos inimigos possam detectar
Quando vejo a expressão “from scratch”, fico curioso para saber o quão do zero aquilo realmente foi feito; ao ver que o hardware era um RTL-SDR, fiquei um pouco decepcionado. Ainda assim, a decodificação do protocolo é muito interessante e o resultado é excelente
O GPS começou em 1978, mas até 2000 o sinal era degradado intencionalmente por meio de algo chamado “disponibilidade seletiva”. Por causa disso, para muitos usos o GPS era praticamente inútil, certamente inadequado para navegação rodoviária, e apenas limitadamente útil para exploração em áreas remotas ou navegação marítima
É muito impressionante que o gypsum consiga obter posição e hora precisa a partir de uma partida a frio ouvindo o sinal da antena por menos de 1 minuto, e isso parece até melhor do que receptores comerciais atuais. Em viagens de carro no início dos anos 2000, era preciso parar no acostamento antes de sair e esperar 15 a 20 minutos até o receptor GPS fixar a posição; se não conseguisse, simplesmente partíamos usando um mapa de papel
Mesmo 46 anos depois, a camada de rádio mantém compatibilidade completa com versões anteriores e posteriores, e métricas importantes como tempo até o primeiro fix e erro de distância equivalente do usuário melhoraram de 10 a 1000 vezes sem mudanças incompatíveis no protocolo
A potência total de transmissão de RF que presta serviço ao planeta inteiro é menor que o consumo elétrico de uma residência típica nos EUA, muito abaixo de 5G, TV e rádio AM/FM, e fica abaixo do piso de ruído. Isso é possível graças ao uso de códigos Gold empilhados
O sistema também foi projetado para permitir compartilhamento de frequência com concorrentes como o Galileo, algo difícil de ver em redes móveis. A fase dos dados modulados e da portadora é fixa, o que viabiliza coisas como decodificação da fase da portadora e, com isso, melhores pseudodistâncias e precisão
No geral, parece que os projetistas tinham uma visão de futuro enorme, foram incrivelmente sortudos, ou ambas as coisas
O que eu quis dizer aqui é que parti de um hardware que não sabe nada sobre GPS, isto é, um dispositivo que só consegue amostrar campos eletromagnéticos, e construí o receptor a partir disso
O motivo de o tempo até o primeiro fix dos hardwares antigos ser lento tem relação, em essência, com a evolução da capacidade de processamento. Receptores GPS tradicionais precisavam baixar o “almanaque” de todos os satélites e, devido ao formato e à taxa de transmissão dos dados do GPS, isso levava no mínimo 12,5 minutos mesmo em boas condições
Com a capacidade de processamento moderna, receptores, incluindo o gypsum, podem procurar os satélites visíveis por força bruta no espaço de busca, em vez de esperar dicas vindas pelo ar. Essa técnica é a descrita no fim da parte 1
Em 1999, conectei a versão RS-232 de um receptor Delorme Earthmate Hyperformance GPS a um Toughbook e usei algo como o Delorme Street Atlas USA 6.0 em viagens de carro
Ele fornecia orientação boa o suficiente para atravessar o país. Não havia orientação de faixa, mas antes de cada conversão ele avisava a manobra, incluindo o nome da rua
Essa versão também tinha reconhecimento de voz; se você dissesse algo como “ainda falta muito?”, ela informava a hora estimada de chegada ao próximo ponto de passagem e ao destino final, além da posição atual, e era bem divertido
Se, sob disponibilidade seletiva, o erro circular provável típico no pior caso era de cerca de 30 m, isso é preciso o bastante para navegação rodoviária, exceto em áreas muito densas. Mesmo nesses lugares bastava olhar o mapa uma vez; em estradas abertas, funcionava muito bem
Receptores GPS antigos usavam o número de canais de rastreamento como argumento de marketing; receptores baratos tinham hardware apenas para rastrear 6 a 8 satélites, enquanto os caros podiam rastrear 12
Portanto, este receptor definido por software implementa uma parte considerável do que antes caberia ao hardware, e consegue rastrear todos os satélites visíveis
A abordagem definida por software tem vantagens fortes. Por exemplo, a aquisição inicial de satélites calcula a correlação cruzada entre o sinal recebido e vários códigos Gold; ao processar isso no domínio de Fourier, é possível adquirir o sinal com bastante rapidez
Se você quiser um receptor GPS DIY hardcore, descendo até o nível dos transistores, acho que vai se divertir lendo https://lea.hamradio.si/~s53mv/navsats/theory.html. É um receptor GPS DIY ao estilo dos anos 1990, com esquemas desenhados à mão, PCB desenhada à mão e até antena artesanal
Além disso, no fim dos anos 1990, embora não fosse ideal em ambientes urbanos densos, essa é uma área em que receptores modernos também costumam sofrer, e também era possível usar correções de GPS diferencial para veículos. Dava para usar em áreas metropolitanas litorâneas densamente povoadas como NYC
Os sistemas antigos de navegação automotiva eram grosseiros e os dados de mapas, em geral, eram péssimos, mas por causa da disponibilidade seletiva é difícil dizer que eram “claramente inúteis”
Claro, admito que eram bem ruins. Só que a disponibilidade seletiva era apenas um fator, e com a capacidade de processamento de hoje e mapas melhores, mesmo com o erro de posição da disponibilidade seletiva, teria sido mais fácil fazer a correção
O texto jurídico das regras atualizadas https://www.space.commerce.gov/itar-controls-on-gps-gnss-rec... é tão complexo que é difícil até entender se isso ainda se aplica
Falando em SDR, o ITAR também foi o motivo pelo qual o módulo de radar passivo GNU Radio da equipe Kraken RF foi retirado do ar
Também gosto de https://ciechanow.ski/gps/, que tem visuais incríveis para acompanhar essa explicação
Aqueles gráficos interativos são imbatíveis
Somado à capacidade de criar software para ajudar na análise e implementar a solução final, virou um projeto incrível. Estudei GPS e trabalhei profissionalmente com isso por alguns anos, mas ainda não sei tudo. Estou ansioso para olhar o código
Olhando para trás, sinto que foi uma ótima coisa a fazer. Agora sinto que entendo a área de RF de forma muito mais concreta e consigo usá-la como uma ferramenta. Isso me lembra as partes de que gosto nos próprios computadores
Se a fórmula para gerar o código P fosse pública, receptores GPS civis também poderiam fazer lock usando exatamente a mesma técnica do código C/A
Não li tudo, mas fiquei curioso. Será que existe uma forma de obter a sequência de chipping do código P para GPS mais preciso, por força bruta ou algum outro truque?
Se você se interessa pela história do desenvolvimento do GPS, “GPS Declassified”, de Richard Easton, foi um livro que contou isso de forma interessante
GPS funciona no modo avião, e literalmente dentro de um avião. Funciona sem serviço celular ou Wi‑Fi. Os EUA controlam a constelação de satélites GPS e podem desligar o GPS em determinadas regiões quando necessário, e de fato já fizeram isso. Foi por isso que outros países passaram a lançar suas próprias constelações GNSS
Também é interessante que os satélites GPS não transmitem sua posição, mas apenas o tempo. Fazer isso com os dados recebidos pelo celular é um exercício muito divertido, e o celular está conectado diretamente aos satélites
Além disso, recentemente aprendi os princípios básicos da navegação pelas estrelas, e achei interessante a simetria de que, embora seja um mecanismo completamente diferente, ela também depende muito de manter a hora precisa
Os primeiros receptores GPS que usei eram aparelhos autônomos, sem nenhuma conexão de dados, então sempre me pareceu óbvio que GPS não precisa de dados
Dispositivos como celulares, porém, normalmente recebem esses dados de outras fontes, porque isso é muito mais rápido do que esperar a transmissão dos dados GPS
Pelo que entendo, a capacidade de desligar GPS à vontade em uma região específica não existe mais nos satélites GPS mais recentes, e talvez nem exista em nenhum satélite atualmente em operação
Ao usar um iPhone, depois do pouso essas fotos ficam associadas ao local onde foram tiradas. Graças a isso, dá para encontrar mais tarde algum relevo interessante que você viu por acaso.
Ele inclui até os termos de busca usados e o monólogo interno. Não é simplesmente ensinar a pescar; é como mostrar como conseguir as peças para construir sua própria máquina de pesca, que é meu tipo favorito de tutorial
Ainda assim, fico muito grato por você ter visto essa abordagem com bons olhos