Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

19
voti

GPS II - global positioning system

Indice

GPS

Dopo l'introduzione entriamo nel vivo, senza pretesa di essere né rigoroso né esaustivo, cercherò di fare una carrellata sulle basi del funzionamento dei GPS

GPS_Satellite_NASA.jpg

GPS_Satellite_NASA.jpg

Navigazione iperbolica tridimensionale

Una volta compreso il funzionamemto nel caso "piano" il passaggio a 3D è quasi banale:

Due trasmettitori nello spazio mi permettono di determinare una famiglia di iperboloidi

300px-HyperboloidOfOneSheet.png

300px-HyperboloidOfOneSheet.png

parametrizzata con la differenza di tempo di ricezione degli impulsi.

Con un terzo trasmettitore ottengo un secondo iperboloide, quest'ultimo intersecherà il primo su di una curva nello spazio, la posizione incognita sarà su questa curva.

Infine un quarto trasmettitore determina un terzo iperboloide che interseca la curva nella posizione incognita.

Quindi con almeno quattro trasmettitori siamo in grado di determinare la posizione incognita nell spazio.

Certo passare dal livello intuitivo a quello analitico è tutt'altro che semplice, la posizione dei satelliti non è fissa e comunque si ha un sistema non lineare di equazioni.

La cosa è stata studiata esaurientemente in Existence and uniqueness of GPS solutions ma per questa "chiaccherata informale" pare sufficiente quanto detto.

Si consideri solo che la precisione degli oscillatori usati per misurare i ritardi è fondamentale al punto che per ottenere dati utilizzabili, i satelliti usano come riferimento orologi atomici con tabelle di correzione caricate dalle stazioni a terra. Poi nel ricevitore si devono applicare ulteriori correzioni per l'effetto Doppler e gli effetti relativistici dovuti al movimento dei satelliti per poi sincronizzare e correggere l'oscillatore locale.
Una interessante ricaduta di questo fatto è che un GPS è forse la fonte di clock / ora e data più accurata disponibile a livello hobbistico ma anche oltre.

Posizione dei trasmettitori

Per avere la coperture globale richiesta la scelta naturale per la collocazione dei trasmettitori è stata "in orbita intorno la terra".

Poi anche questo sistema soffre -come visto nel caso 2D- di possibili degradazioni dell'accuratezza a causa di cattive geometrie e per minimizzare questo effetto è indispensabile che i trasmettitori non si trovino tutti sullo stesso piano.

Escludiamo quindi l'orbita geostazionaria che giace sul piano dell'equatore, escludiamo anche orbite troppo basse che a causa del sorgere e del rapido tramontare dei satelliti ne richiederebbe troppi per soddisfare la specifica "quattro satelliti sempre visibili da ogni punto della terra".


Rimangono quelle che si chiamano MEO(Medium Earth Orbit) che hanno una quota di circa 20000 km e un periodo orbitale di circa 12h (che corrisponde ad una velocità di circa 4 km/s) ed infatti quì sono collocati i 24 satelliti della costellazione GPS.

orbitegps_fig1.gif

orbitegps_fig1.gif

Sono sei orbite inclinate circa 60 gradi rispetto il piano dell'equatore distribuite sui 360 gradi di longitudine.

Quì si può giocare un po' (dare i comandi q e poi 4, trascinando col pulsante sinistro si muove, col destro si zoomma)

Segnale dei satelliti

I satelliti GPS usano una coppia di frequenze una in banda L1-1575.42 MHz e una in banda L2-1227.6 MHz trasmesse con polarizzazione circolare per non avere problemi di orientamento dell'antenna ricevente e per ridurre l'interferenza dalle riflessioni. Le antenne dei satelliti cercano di illuminare l'intero emisfero con la stessa densità di potenza.

La trasmissione avviene su due frequenze contemporaneamente perchè questo permetterebbe una parziale correzione degli errori di propagazione tramite il così detto P-code. Questa funzionalità non è tuttavia implementata su nessun ricevitore ad uso civile -che io sappia- ma comunque l'accuratezza ottenuta è molto buona utilizzando solo la frequenza L1.

Ciascun satellite non trasmette un impulso ma una sequenza continua di dati BPSK a 1.023 Mbps formato da "pacchetti" uguali tra loro lunghi ciascuno 1023 bit quindi avrò un pacchetto completo ogni 1ms. Questi pacchetti, detti C/A-code Course Acquisition code, sono sequenze pseudo-casuali di bit ( PRN ), ed identificano univocamente il satellite. Cioè ciascun satellite trasmette la propria sequenza unica e diversa da tutti gli altri.

Il ricevitore estrarrà poi l'informazione "tempo di arrivo del pacchetto" che verrà usata per i calcoli delle differenze di distanza.

In pratica il ricevitore può -ad esempio- miscelare il segnale in arrivo con una replica generata localmente -e traslabile nel tempo- della sequenza pseudo-casuale e se le due sequenze sono uguali e sincronizzate la banda collasserà verso la DC (prime tre tracce del grafico). E' sufficiente che la mia replica sia "fuori tempo" anche di poco per ottenere invece solo rumore in uscita (prima, quarta e quinta traccia) che viene facilmente filtrato ad esempio con un integratore.

Questi pacchetti -realizzati con codici Gold - hanno alcune proprietà interessanti:

Intanto essendo formati da sequenze psuedo-casuali hanno uno spettro di frequenza che tende a quello del rumore, cioè l'energia trasmessa non è "concentrata" su una particolare frequenza ma tende a "sparpagliarsi" su di una banda relativamente larga -alcuni MHz in questo caso- e questo li rende difficilmante disturbabili -tecnica spread spectrum.

Inoltre hanno anche la proprietà di avere una bassa correlazione incrociata, cioè se miscelassi il segnale di un satellite con la replica di quello di un satellite diverso otterrei ancora solo "rumore" in uscita. Questo permette di avere tutti i satelliti che trasmettono sulla stessa frequenza senza però disturbarsi a vicenda.

Questa tecnica si chiama CDMA ( Code Division Multiple Access ed è usata oggi anche dai moderni sistemi di telefonia celluare in alternativa alle più note FDMA (Frequency Division Multiple Access) ad esempio la classica separazione in frequenza dei canali TV, oppure TDMA (Time Division Multiple Access) una trasmissione alla volta, separate nel tempo ed usata ad esempio per i pacchetti Ethernet.

Per fare un'analogia si potrebbe pensare al segnale dal satellite come una lunghissima chiave (come quella di un lucchetto!) che "unisce il satellite a noi. Il ricevitore si pensa allora come un cilindro di serratura "passante" che può scorrere su quella chiave. Per poter ruotare il cilindro si deve farlo scorrere avanti e indietro fino a trovare "il punto giusto" che rappresenta il ritardo con cui riceviamo il segnale. D'altra parte se la chiave non è quella giusta (C/A-code diverso, satellite diverso) il cilindro non ruoterà mai per quanto lo faccia scorrere avanti e indietro.

Naturalmente dato che un pacchetto è lungo 1 ms questo si ripete uguale a se stesso ogni 300 km, e quindi il risultato sarà in aritmetica modulo 300 km.... altro lavoro per risolvere le ambiguità!

Questo però non è tutto, il satellite trasmette anche dei dati di navigazione sovraimpressi alla sequenza prima vista con un'operazione EXOR. Questi dati, trasmessi a 50 bps, non influenzano molto le proprietà dei codici Gold essendo molto più lenti e permettono di trasmettere al ricevitore informazioni essenziali, tra queste:

  • Riferimento di tempo, l'unità base per i GPS è la settimana
  • La posizione del satellite, le effemeridi di precisione, nella forma di coefficienti dell'equazione di Keplero della sua orbita.
  • Correzioni del clock del satellite, essenziale per la corretta risoluzione della posizione.
  • Quello che si chiama almanacco, cioè l'informazione sulla posizione degli altri satelliti, così da permettere di scegliere gli altri satelliti necessari alla soluzione o prevederne tramonto e sorgere per sapere quali convenga o sia possibile agganciare.

Vorrei solo notare che da un punto di vista dell'informazione la banda del segnale non si deve pensare legata al clock di 1.023 MHz, infatti questa cadenza si riferisce ad una sequenza nota, quindi nessuna informazione, invece la banda effettiva richiesta per le misure di ritardo ed i dati di navigazione è al di sotto di 1 KHz.

Hardware dei satelliti

In linea di principio i satelliti potrebbero essere dei semplici "ripetitori" cioè dei transponder lineari tipo quelli per DBTV ed i segnali, generati in stazioni a terra potrebbero essere semplicementi ritrasmessi dai satelliti.

Ma questa architettura presenta il "punto debole" dell'uplink -ancora in vista di applicazioni militari- si può facilmente "disturbare" il collegamento con la stazione a terra o renderla proprio inoperativa.

Quindi ogni satellite è equipaggiato con computer, memoria, alcuni orologi atomici e tutto quello che è necessario per operare autonomamente per settimane. Naturalmente se non ci sono problemi le stazioni a terra controllano le trasmissioni dei satelliti ed inviano correzioni e dati orbitali "freschi" quando possibile.

Ricevitori

Un ricevitore GPS si può pensare come una black box che una volta alimentata ed "esposta" al cielo (o collegata ad una opportuna antenna) invii -tipicamente tramite una linea seriale- alcuni messaggi periodici che contengono posizione, velocità, ora e data ed altri dati.

small rx

small rx

L'antenna utilizzata dovrà avere un diagramma di radiazione idealmente semisferico per "coprire" tutto il cielo da orizzonte ad orizzonte e ricevere i vari satelliti ovunque si trovino.

La strategia per ricevere e decodificare il segnale GPS si basa su di un intensivo uso di tecniche DSP, in pratica si cerca di digitalizzare il segnale "il prima possibile" per processarlo poi in modo digitale.

Il front-end deve essere analogico, filtro passabanda e prima downconversion, ma poi viene subito campionato e digitalizzato per essere processato in maniera digitale.

Il processo base -come già introdotto- può essere generare una replica locale e correlarla con il segnale ricevuto, e deve essere fatto contemporaneamente per almeno quattro ma più produttivamente per tutti i satelliti ricevuti. Il parallelismo necessario si presta bene ad essere realizzato in ASICs.

Si legge spesso "GPS 20 canali" che significa sono stati realizzati 20 canali IF indipendenti di replica e correlazione.

Le uscite di questi blocchi sono:

  • Le così dette running time differences - differenze di tempo (distanza)
  • Le velocità relative calcolate dall'effetto Doppler
  • I dati di navigazione estratti dal flusso di pacchetti

che vengono avviate ad un microprocessore vero e proprio per la risoluzione delle equazioni, il risultato è una coppia di vettori, posizione e velocità del ricevitore.


Il sistema di riferimento per questi vettori è di solito un sistema cartesiano ortogonale con l'origine nel centro della terra rotante in sincronia con la terra stessa, per rendere più usabili i risultati ci si deve invece riferire a qualcosa di più "pratico" come ad esempio la griglia geografica di latitudine, longitudine e altezza.

Per far questo occorre un modello della terra che tenga conto della sua ellitticità ed anche dei vari riferimenti cartografici che più o meno ogni nazione ha creato in modo autonomo. Questo riferimento geodetico detto datum non è appunto unico, ma per i GPS quello che viene universalmente usato è il WGS-84. Così per avere un'idea ci sono alcune decine di metri di differenza nelle posizioni secondo WGS-84 ed il sistema italiano ROMA-40.

L'ultimo compito dello stesso processore è quindi trasformare i vettori prima trovati secondo questa nuova "base" per fornirci i dati in uscita in unità ingegneristiche facilmente utilizzabili: latitudine, longitudine, quota, velocità e direzione di movimento.

Tutto questo, ed anche il restante 99% tralasciato in queste righe viene oggi sempre più spesso realizzato in un singolo IC VLSI che integra RF, baseband o IF , processore ARM, RAM e ROM... un mostro!

sirf_logo.jpg

sirf_logo.jpg

Tuttavia a scopo didattico trovo molto più interessante un occhiata al progetto datato 1991 di un ricevitore GPS realizzabile in casa! Usa componenti "normali" tra cui molta logica HCT ed un 68000, certo non vale la pena di realizzarlo oggi, ma la dettagliata descrizione dei circuiti e delle strategie di progetto è impagabile.

Cold Start

Vediamo ora brevemente la sequenza di avviamento "a freddo" di un ricevitore GPS La prima volta che il ricevitore viene acceso è "completamente ignorante"... nel senso che ignora

  • Dove si trova: posizione attuale, ed eventualmente velocità.
  • Data e ora, beh questa potrebbe averla se avesse un RTC a bordo (spesso c'è)
  • Quali satelliti siano visibili al momento.
  • Quale sia l'errore del suo oscillatore locale e quale quello dei satelliti

Tutto questo porta ad un "gravoso" lavoro per cercare di agganciare i satelliti necessari:

  • Si inizia provando a cercare di agganciare un satellite a caso tra i 24...si prende la sua sequenza PRN e
  • si prova a correlarla con quanto ricevuto considerando tutte le possibili combinazioni di errore clock proprio e satellite ed errore Doppler (anche le velocità sono sconosciute)
  • per ciascuna combinazione si deve provare traslare la replica nel tempo di una quantità incognita fino ad azzeccare il ritardo giusto
  • naturalmente non è detto che il satellite scelto sia visibile in questo momento dalla nostra locazione, in caso di insuccesso se ne deve provare un'altro....

Il parallelismo dei canali IF velocizza molto questo processo permettendo di "provare" più PRN e combinazioni di errori contemporaneamente. Naturalmente appena agganciato il primo satellite le cose migliorano esponenzialmente, cominciamo a ricevere informazioni che permettono di calcolare l'errore del nostro oscillatore, riceviamo l'ora e la data...ora lasciamo uno dei canali IF a ricevere questo satellite e ne cerchiamo un'altro.

Appena abbiamo tre satelliti è possibile calcolare una posizione chiamata 2D -in due dimensioni- assumiamo di trovarci a quota zero, quindi la terza superficie da intersecare per la soluzione del problema iperbolico diventa la terra, cioè l'ellissoide descritto in WGS-84. Ma una volta che la nostra posizione è nota i dati dell'almanacco ricevuti dai satelliti gia agganciati permettono di calcolare la visibilità di tutti gli altri e "mirare" la ricerca a quelli effettivamente disponibili.

In breve saremo quindi in grado di seguire tutti i satelliti visibili ed avere una posizione 3D, completa di quota.

Nelle prime generazioni di GPS (4 canali) questo processo poteva durare anche più di mezz'ora, i ricevitori odierni sono in grado di farlo in meno di un minuto!

Warm start

Un GPS che sia stato spento dopo aver memorizzato l'almanacco si riavvia invece molto più velocemente e semplicemente, sono note:

  • propria posizione, essersi spostati di qualche centinaio di km è ininfluente
  • ora e data, anche quì non è richiesta una grande accuratezza

riesce quindi a sapere quali siano i satelliti visibili, gli errori probabili ed è in grado di calcolare la posizione in pochi secondi. L'almanacco trasmesso copre un periodo di alcuni mesi, sempre che il ricevitore abbia sufficiente memoria non volatile da dedicargli.

In funzione...

Naturalmente terminata l'acquisizione iniziale non è che si stia con le mani in mano....principalmente si deve fare in modo che le repliche siano sempre sincronizzate con i segnali dei satelliti che ovviamente cambiano la loro posizione di continuo e quindi si deve ricalcolare continuamente la propria posizione e inoltre:

  • Gestire il tramonto dei satelliti usati (una volta che si spostano sotto l'orizzonte non sono ovviamente più ricevibili) rimpiazzandoli nelle equazioni con altri disponibili.
  • Selezionare tra i vari satelliti visibili quelli che forniscono una soluzione con migliore geometria e quindi migliore accuratezza. Tra i dati calcolati dal GPS e inviati all'host insieme a posizione e velocità ci sono infatti una serie di indicatori della bontà della geometria ad esempio HDOP (horizontal diluition of precision) è un numero che ci dice quanto buona sia l'accuratezza orizzontale (N-S E-W), VDOP è invece la stessa cosa ma "vertical DOP", riguardo la quota.
  • Poi deve rimpiazzare un satellite che, pure che sia ricevibile, non è ricevuto a causa -ad esempio- di un palazzo che abbiamo accanto e che ci scherma.
  • Memorizzare l'almanacco, come dire previsoni della posizione dei satelliti nel prossimo futuro, questa è un'operazione che può richiedere decine di minuti per essere completata, non si deve dimenticare che la tramissione dati avviene a 50 bps (da ciascun satellite) e che ci sono molti altri dati da trasmettere con priorità più alta.
  • ed inoltre filtrare digitalmente i dati calcolati, preparare e trasmettere le stringhe in uscita sulla seriale che "condensano" tutto questo lavoro, eventualmente verificare ed eseguire comandi di configurazione ricevuti dal processore host etc. etc.

To be continued 2

Dopo tanti "discorsi" volevo concludere con qualcosa di un po' più pratico, ma anche stavolta direi che sono "arrivato lungo" e il pudore mi impone di fermarmi...

Noterei solo ancora che non ho trattato di display, tastiera, eventuale cartgografia stradale sovraimpressa, in sostanza niente di quello che nell'accezione comune viene chiamato GPS. Il GPS è quello che abbiamo visto, tutti questi "accessori" -peraltro indispensabili per "farne qualcosa"- sono applicazioni che utilizzano un GPS come trasduttore di posizione per poi risolvere un qualche problema pratico.


Bibliografia parti I e II

1

Commenti e note

Inserisci un commento

di ,

Non posso che rinnovare i complimenti per il lavoro... perché per me "comprensibile" :)

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.