Show HN: Proyecto para construir un receptor GPS
(axleos.com)- gypsum es un proyecto para construir un receptor que decodifica señales GPS desde cero para obtener una ubicación; la parte 1 de una serie de 4 se enfoca en encontrar señales satelitales enterradas bajo el ruido
- GPS es una señal de tipo broadcast enviada por unos 30 satélites a todo el planeta, por lo que los satélites no saben quién está escuchando y un centro de datos tampoco puede recibir las ondas de radio por el usuario
- La señal GPS que llega a una antena en tierra puede tener una potencia 100,000 veces menor que el ruido circundante y ser 100 millones de veces más débil que una señal celular común, así que casi no se ve directamente
- El receptor compara repetidamente el código C/A, conocido tanto por el satélite como por el receptor, para promediar el ruido aleatorio y encontrar la señal de datos de 50 bps sobre un código PRN de 1 Mbps
- La adquisición (acquisition) es una etapa intensiva en cómputo que explora, para cada satélite, el PRN, el desplazamiento Doppler de ±5 kHz y la fase del código para encontrar satélites visibles y estimar el retardo temporal y la velocidad relativa
Proyecto para escuchar señales GPS directamente
- gypsum es un proyecto para crear un receptor GPS desde cero
- La serie de 4 partes cubre el proceso de decodificar señales GPS para obtener una ubicación; la parte 1 corresponde a la etapa de encontrar la señal y adquirir satélites
- GPS tiene unos 30 satélites que envían señales a toda la Tierra, y esas señales siempre están presentes alrededor, sin importar la altitud o el clima
- GPS comenzó en 1978 y, al momento de escribir el artículo, habían pasado 45 años
Balizas silenciosas y cálculo de ubicación que no se puede reemplazar con servidores
- Cuando se transmite, la señal de un satélite GPS tiene una potencia similar a la de un foco doméstico, pero al llegar a tierra se vuelve extremadamente débil
- GPS funciona casi como send-and-forget: el satélite no puede saber quién está escuchando
- La radio FM y la TV abierta tienen características similares
- Por esta estructura, es difícil que alguien cobre por el acceso mismo a GPS
- El cálculo de ubicación no encaja con una arquitectura en la que un servicio web procese todo y entregue el resultado
- GPS requiere escuchar directamente las ondas de radio que llegan al lugar donde está el usuario
- Un centro de datos no puede escuchar en lugar del usuario las ondas de radio que llegan a su ubicación
Explorar frecuencias GPS con SDR
- Para recibir y posprocesar señales GPS por software se necesita un receptor RF ajustable, y ese equipo es una radio definida por software (SDR)
- Se usa SDR++ para explorar el espectro
- Durante el uso de SDR hacen falta algunos conceptos
- bias tee: el circuito interno del SDR suministra energía DC a la antena conectada por SMA. El SDR usado venía apagado por defecto, así que hubo que encenderlo manualmente
- automatic gain control (AGC): circuito de hardware o función de software que intenta amplificar señales débiles para mejorar la relación señal-ruido (SNR) de los datos recibidos
- IQ samples: I es el componente in-phase y Q es el componente quadrature o imaginario; permiten procesamiento desde la perspectiva de tiempo, amplitud y polaridad
- El SDR genera un pico grande en la frecuencia central ajustada
- Para principiantes, puede parecer que hay una señal fuerte en cualquier lugar donde se mire
- Se puede reducir este pico ajustando apenas fuera de la frecuencia central o usando la IQ correction del software
Cómo encontrar señales enterradas bajo el ruido
- En una antena terrestre, la señal GPS llega con una potencia 100,000 veces menor que la energía y las señales circundantes
- La señal GPS puede estar hasta 50 dB por debajo del piso de ruido térmico
- Los satélites GPS modernos están diseñados para enviar una señal que llega al receptor en torno a -130 dBm
- En el ancho de banda C/A, el piso de ruido térmico en un entorno residencial típico es de alrededor de -110 dBm
- Como comparación, una señal celular ronda los -50 dBm, es decir, es 100 millones de veces más fuerte que una señal GPS
- GPS usa técnicas de espectro ensanchado (spread-spectrum) para identificar y decodificar señales enterradas bajo el ruido de esta forma
Escuchar una señal inaudible con código C/A y PRN
- Los satélites GPS envían, junto con datos desconocidos para el receptor, una señal conocida tanto por el satélite como por el receptor
- Esta señal se llama código C/A, código PRN o chipping code, y el satélite la repite 1,000 veces por segundo
- C/A significa coarse acquisition
- En GPS, originalmente concebido para uso militar, el código C/A era una etapa de baja resolución para engancharse al código P, más preciso
- Hoy el código C/A es la base de la mayoría del GPS civil, mientras que el código P sigue disponible solo para uso militar
- La razón por la que los receptores civiles no pueden usar el código P es que no conocen los valores de la secuencia de chipping
- Si la fórmula para generar el código P fuera pública, podría engancharse con la misma técnica que el código C/A
- El código P es más preciso porque opera con una tasa de chipping más alta
- El receptor suma y compara repetidamente el PRN esperado con la señal recibida real
- El ruido aleatorio se promedia hacia 0 con el tiempo
- La señal PRN se sigue acumulando y crece
- GPS usa acceso múltiple por división de código (CDMA) para manejar varios satélites al mismo tiempo
- La señal de datos real se transmite mezclada con el código PRN
- El código PRN opera a 1 Mbps
- La señal de datos se transmite a unos 50 bps, mucho más lenta
- Gracias a la baja velocidad de datos, el código PRN permanece como una señal de referencia estable durante un periodo relativamente largo
Generación del código C/A por satélite
- Como hay varios satélites, el receptor debe saber cuáles son visibles
- Cada satélite GPS tiene un código PRN único y estable
- Este código está definido en la especificación civil de GPS IS-GPS-200L, en la
Table 3-I (Code Phase Assignments) - En línea hay muchos materiales que explican cómo generar códigos PRN, pero no había muchos recursos reproducibles para comparar el código PRN completo
Etapa de adquisición: encontrar satélites visibles
- Un receptor GPS genera copias del PRN que emite cada satélite para encontrar los satélites visibles en el cielo, y busca ese PRN en los datos recolectados por la antena
- Esta etapa es la adquisición, y el objetivo es engancharse a los satélites que están sobre el usuario
- El receptor toma una captura breve de datos de antena de aproximadamente 1 segundo y calcula la correlación con cada PRN replicado
- Si hay una correlación fuerte entre el PRN replicado y los datos reales, se sabe que el satélite correspondiente a ese PRN está enviando una señal desde arriba
- La señal recibida real difiere del PRN ideal
- La señal GPS se debilita al atravesar la atmósfera terrestre
- Como el satélite se mueve rápidamente, la señal recibida sufre desplazamiento Doppler
- La velocidad orbital de los satélites GPS es bien conocida, por lo que también se conoce el rango esperado de desplazamiento Doppler
- Un satélite que se acerca aumenta la frecuencia hasta +5 kHz
- Un satélite que se aleja reduce la frecuencia en -5 kHz
- Como la hora en que se inicia la recepción es arbitraria, también se puede empezar a escuchar a mitad de una transmisión PRN
- La etapa de adquisición explora tres ejes al mismo tiempo
- El código PRN de cada satélite
- El rango esperado de desplazamiento Doppler
- La fase con la que se desplaza el PRN replicado para alinearlo con el PRN recibido
- La carga computacional es grande, pero al encontrar los parámetros correctos aparece claramente un pico de correlación
Enfoque de implementación y resultado de la parte 1
- La implementación convierte cada PRN del dominio del tiempo al dominio de la frecuencia, y correlaciona la frecuencia de los datos satelitales entrantes con el espectro de cada código PRN
- Este enfoque corresponde a una correlación cruzada en el dominio de la frecuencia
- Como el desfase en el dominio del tiempo se convierte en un desplazamiento de los componentes de frecuencia, la búsqueda de desplazamiento Doppler y la búsqueda de fase pueden procesarse en el mismo cálculo
- El desplazamiento Doppler se hace converger de una forma parecida a una búsqueda binaria, buscando el valor que produce el pico de correlación más fuerte para cada satélite visible
- Como resultado de la parte 1, se determina qué satélites GPS están actualmente sobre el usuario y se obtiene, para cada satélite, una estimación aproximada de fase/retardo temporal y desplazamiento Doppler/velocidad relativa
- El siguiente paso continúa en Part 2: Tracking Pinpricks
1 comentarios
Opiniones de Hacker News
Se pueden conseguir receptores de muestreo RF directo o de conversión RF directa lo suficientemente rápidos para GPS. Ej.: Xilinx RFSoc https://www.mouser.com/datasheet/2/903/ds889_zynq_usp_rfsoc_..., artículo de National Instruments https://www.ni.com/en/solutions/aerospace-defense/radar-elec..., hardware comercial relacionado https://www.ni.com/en-us/shop/category/flexrio-custom-instru...
Es un poco curioso que NI vea la conversión RF directa como rentable y aun así venda el equipo por 30 mil dólares, pero si estás prototipando recepción de banda ancha con coherencia de fase alrededor de 3 GHz y tienes un laboratorio y presupuesto adecuados, vale la pena comprar algunas unidades. Para producción en masa, probablemente esperaría a que bajara más el costo de una placa propia o vería si se puede hacer con un receptor heterodino tradicional
Para uso militar, si te preocupan las armas avanzadas de rastreo RF, un receptor de conversión directa puede ser una buena opción. Porque no tiene fuga del oscilador local que el equipo enemigo pueda detectar
Cuando veo la expresión “from scratch”, me da curiosidad saber qué tan desde cero lo hicieron realmente, y me decepcionó un poco ver que el hardware era RTL-SDR. Aun así, la decodificación del protocolo es muy interesante y el resultado es excelente
GPS empezó en 1978, pero hasta el 2000 la señal se degradaba deliberadamente mediante algo llamado “disponibilidad selectiva”. Por eso, para muchos usos GPS era prácticamente inútil, claramente inadecuado para navegación vial, y solo tenía utilidad limitada para exploración en zonas remotas o navegación marítima
Es muy impresionante que gypsum pueda obtener posición y hora exacta desde un arranque en frío con menos de un minuto de señal de antena; incluso parece mejor que los receptores comerciales actuales. En viajes en auto a principios de los 2000, había que esperar 15 o 20 minutos en la banquina antes de salir hasta que el receptor GPS fijara posición, y si no lo lograba, simplemente arrancábamos mirando un mapa de papel
Incluso 46 años después, la capa de radio mantiene compatibilidad total hacia atrás y hacia adelante, y métricas clave como el tiempo hasta la primera fijación y el error de distancia equivalente de usuario mejoraron entre 10 y 1000 veces sin cambios incompatibles en el protocolo
La potencia total de transmisión RF que da servicio a toda la Tierra es menor que el consumo eléctrico de un hogar estadounidense típico, mucho menor que 5G, TV o radio AM/FM, y está por debajo del piso de ruido. Esto es posible gracias al uso de códigos Gold apilados
También se diseñó para permitir compartición de frecuencias con sistemas competidores como Galileo, algo difícil de ver en redes móviles. Como la fase de los datos modulados y de la portadora está fija, también hizo posible cosas como la decodificación de fase de portadora, lo que permite mejores pseudodistancias y precisión
En conjunto, parece que sus diseñadores tuvieron una visión de futuro enorme, una suerte enorme, o ambas cosas
Lo que quería decir aquí es que partí de hardware que no sabe nada de GPS, es decir, un dispositivo que solo puede muestrear campos electromagnéticos, y a partir de ahí construí el receptor
La razón por la que el tiempo hasta la primera fijación del hardware antiguo era lento está relacionada, en esencia, con el avance de la capacidad de procesamiento. Los receptores GPS tradicionales tenían que descargar el “almanaque” de todos los satélites y, por el formato y la velocidad de transmisión de datos de GPS, eso tomaba como mínimo 12,5 minutos aun con condiciones favorables
Con la capacidad de procesamiento moderna, los receptores, incluido gypsum, pueden hacer fuerza bruta sobre el espacio de búsqueda para encontrar los satélites visibles, en vez de esperar pistas transmitidas por el aire. Esta técnica es la que se explicó al final de la parte 1
En 1999 hice un viaje en auto conectando la versión RS-232 de un receptor GPS Delorme Earthmate Hyperformance a una Toughbook y corriendo algo como Delorme Street Atlas USA 6.0
Durante el cruce del país ofrecía indicaciones de ruta suficientemente útiles. No tenía asistencia de carril, pero antes de cada giro avisaba el giro incluyendo el nombre de la calle
Esa versión también tenía reconocimiento de voz, así que si decías cosas como “¿falta mucho?”, te daba la hora estimada de llegada al siguiente punto de paso y al destino final, además de la ubicación actual, y era bastante divertido
Si bajo disponibilidad selectiva el error circular probable típico en el peor caso era de unos 30 m, eso es suficientemente preciso para navegación vial salvo en zonas muy densas. Incluso allí bastaba con mirar el mapa una vez, y en rutas abiertas funcionaba muy bien
Los receptores GPS antiguos usaban la cantidad de canales de seguimiento como argumento de marketing; los receptores baratos solo tenían hardware para rastrear 6 a 8 satélites, mientras que los caros podían rastrear 12
Por lo tanto, este receptor definido por software implementa muchas de las partes que originalmente habría manejado el hardware, y puede rastrear todos los satélites visibles
El enfoque definido por software tiene ventajas poderosas. Por ejemplo, la adquisición inicial de satélites calcula la correlación cruzada entre la señal recibida y varios códigos Gold; si eso se procesa en el dominio de Fourier, se puede adquirir la señal bastante rápido
Si quieres un receptor GPS DIY hardcore que baje hasta el nivel de transistores, probablemente te resulte entretenido leer https://lea.hamradio.si/~s53mv/navsats/theory.html. Es un receptor GPS DIY estilo años 90, con esquemas dibujados a mano, PCB dibujada a mano e incluso antena hecha a mano
Además, a fines de los años 90, aunque no era ideal en entornos urbanos densos, es un ámbito en el que los receptores modernos también suelen sufrir, y también era posible la corrección GPS diferencial para autos. Podía usarse en zonas costeras metropolitanas densamente pobladas como NYC
La navegación automotriz antigua era tosca y los datos de mapas en general eran pésimos, pero por la disponibilidad selectiva es difícil decir que “definitivamente era inútil”
Claro, admito que era bastante mala. Pero la disponibilidad selectiva era solo un factor, y con la capacidad de procesamiento actual y mejores mapas, incluso con el error de posición de la disponibilidad selectiva habría sido más fácil corregirlo
La redacción legal de la normativa actualizada https://www.space.commerce.gov/itar-controls-on-gps-gnss-rec... es tan compleja que cuesta entender incluso si todavía aplica
Ya que hablamos de SDR, ITAR también es la razón por la que se retiró el módulo de radar pasivo GNU Radio creado por el equipo de Kraken RF
También me gusta https://ciechanow.ski/gps/, que tiene excelentes materiales visuales para acompañar esta explicación
Esos gráficos interactivos son imbatibles
Combinado con su capacidad para crear software que ayuda al análisis e implementa la solución final, se convirtió en un proyecto genial. He estudiado GPS y he trabajado con él profesionalmente durante años, pero todavía no lo sé todo. Me entusiasma revisar el código
Mirando atrás, siento que fue algo realmente bueno. Ahora siento que entiendo el ámbito de RF de una forma mucho más tangible y que puedo usarlo como herramienta. Me recuerda las partes de las computadoras que más me gustan
Si la fórmula para generar el código P fuera pública, los receptores GPS civiles podrían engancharlo con exactamente la misma técnica que el código C/A
No lo leí completo, pero me da curiosidad. ¿Habrá alguna forma de obtener la secuencia de chipping del código P por fuerza bruta u otro truco para lograr GPS más preciso?
Si te interesa la historia del desarrollo del GPS, “GPS Declassified” de Richard Easton me pareció un libro que la cuenta de manera interesante
El GPS funciona en modo avión, incluso literalmente dentro de un avión. Funciona sin servicio celular ni Wi-Fi. Estados Unidos controla la constelación GPS y puede apagar el GPS en regiones específicas cuando lo necesita, y de hecho lo ha hecho. Por eso otros países terminaron lanzando sus propias constelaciones GNSS
También es interesante que los satélites GPS no transmiten una ubicación, sino solo tiempo. Hacer esto con los datos recibidos en un teléfono es un ejercicio realmente entretenido, y el teléfono está conectado directamente con los satélites
Además, hace poco aprendí los principios básicos de la navegación usando estrellas, y me pareció interesante la simetría de que, aunque es un mecanismo totalmente distinto, también depende mucho de mantener la hora exacta
Los primeros receptores GPS que usé eran dispositivos independientes sin ninguna conexión de datos, así que me parecía obvio que el GPS no necesita datos
Dicho eso, dispositivos como los teléfonos normalmente obtienen esos datos de otras fuentes porque es mucho más rápido que esperar la transmisión de datos GPS
La función de poder apagar el GPS a voluntad en una región específica, según entiendo, ya no existe en los satélites GPS más recientes, y quizá tampoco en ninguno de los que están actualmente en operación
Si usas un iPhone, después de aterrizar esas fotos quedan vinculadas con la ubicación donde fueron tomadas. Gracias a eso, puedes encontrar más tarde algún terreno interesante que viste por casualidad.
Incluso incluye los términos de búsqueda usados y el monólogo interno. No se limita a enseñar a pescar, sino que muestra cómo conseguir las piezas para construir tu propia máquina de pesca; es mi tipo favorito de tutorial.
Aun así, muchas gracias por valorar ese enfoque.