5 puntos por GN⁺ 2024-04-16 | 1 comentarios | Compartir por WhatsApp
  • 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

 
GN⁺ 2024-04-16
Opiniones de Hacker News
  • La frase “no hay SDR en el mercado que diga poder muestrear formas de onda que oscilan más de mil millones de veces por segundo” antes era cierta, pero ya no
    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
    • Me pregunto por qué la “fuga del oscilador local” es un problema mayor que el reloj de muestreo
  • Buen artículo
    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
    • El diseño de las señales L1+L2, la capa de radio de GPS, es absurdamente bueno
      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
    • “from scratch” ciertamente es una expresión algo extraña. Yo también implementé el receptor en Python, así que está lejos de ser realmente desde cero
      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
    • No estoy nada de acuerdo con que “claramente era inútil para navegación vial”
      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
    • Entiendo la decepción por que el hardware sea RTL-SDR, pero si volvemos 15 o 20 años atrás, gran parte de lo que aquí hace el software se habría implementado en hardware
      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

  • https://en.wikipedia.org/wiki/Automotive_navigation_system
    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
  • Un receptor GPS capaz de proporcionar datos de navegación mientras se mueve a más de 600 m/s, es decir, sin estar limitado artificialmente, bajo el ITAR anterior se consideraba material militar
    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
  • Es un artículo que muestra bastante bien y con bastante detalle el procesamiento de señales necesario
    También me gusta https://ciechanow.ski/gps/, que tiene excelentes materiales visuales para acompañar esta explicación
    • Ese blog me sorprende cada vez que lo veo. Mientras leía este artículo pensé que era el tipo de cosa que escribiría Bartosz, y resulta que ya lo había hecho
      Esos gráficos interactivos son imbatibles
  • Excelente. No conozco el trasfondo técnico del autor, pero desentrañar los detalles del vasto y complejo mundo del GPS ya es en sí mismo un logro enorme
    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
    • Muchas gracias por las buenas palabras. Soy programador autodidacta y no tengo formación en RF ni en electrónica/ingeniería eléctrica, así que este proyecto fue un reto bastante grande y a veces requirió mucho aprendizaje y experimentación frustrantes
      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
    • Me parece interesante la parte que dice que lo único que impide que los civiles usen el código P es que no conocemos los valores de la secuencia de chipping
      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?
  • Muy impresionante. Estoy totalmente de acuerdo con el autor en que el GPS es un logro de ingeniería sorprendentemente ingenioso
    Si te interesa la historia del desarrollo del GPS, “GPS Declassified” de Richard Easton me pareció un libro que la cuenta de manera interesante
  • Increíble. Hace unos años me puse a investigar esto exactamente por la misma razón
    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
    • La idea errónea de que el GPS funciona en modo avión y sin servicio de datos ni Wi-Fi quizá venga de personas cuya primera experiencia con smartphones fue también su primera experiencia con GPS
      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
    • No es correcto decir que los satélites GPS no envían posición. Más precisamente, envían el almanaque, que es la posición aproximada de toda la constelación, y las efemérides, que son su propia posición precisa
      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
    • Me parece que para creer que el GPS deja de funcionar sin servicio de datos hay que tener un modelo mental bastante equivocado de lo que es el GPS
    • Aunque Estados Unidos controla la constelación GPS, no es el único sistema global de posicionamiento. La UE, China, India y Rusia también tienen sus propios sistemas
    • Los datos de almanaque que envían los satélites GPS son, en la práctica, información de posición. No son literalmente la posición, pero el código P tampoco es literalmente el tiempo
      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
  • Sé que las apps de mapas funcionan durante los vuelos, y por eso las uso para tomar fotos del terreno de abajo mientras vuelo

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.

  • Me gusta mucho que este texto esté construido como un viaje de aprendizaje en primera persona, como si avanzara en tiempo real.
    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.
    • Escribir de esta manera implica exponerse hasta cierto punto. Porque deja ver la forma y los límites de mi ignorancia, así como el camino que seguí para aprender.
      Aun así, muchas gracias por valorar ese enfoque.
  • En YouTube está el documental The Lonely Halls Meeting, con entrevistas a figuras clave que participaron en la creación del GPS: https://youtu.be/Z5N4CqJLAhQ?si=lvaQZv-WG3ab_gEI