2026-02-26 | Pinperepette

La Posizione Deriva

11.5 km al giorno. Senza che te ne accorga. Smontato pezzo per pezzo.

GPS Relativita' Trilaterazione iPhone

// La Iena Vuole Sapere

Sezione 00. L'antefatto

Mi sono rotto un braccio. Non in modo eroico, non scalando, non facendo parkour. Sono scivolato. Dettagli irrilevanti. Quello che conta e' che non posso guidare, e la iena ha preso il comando della macchina.

Dovevamo andare a Verona. Lei guida, il suo iPhone agganciato al CarPlay con Google Maps. Io sono seduto di fianco col gesso e il mio telefono in mano, a scrollare Twitter. Maps dice "tra 200 metri svolta a destra". Lei svolta a sinistra. "Era la prossima," dice. Il navigatore ricalcola. Io non posso neanche stringere il sedile.

"Ma come fa a sapere dove siamo?" chiede, mentre ignora un altro suggerimento.

"Satelliti."

"Si' ma come. Spiegamelo. Tanto stai li' a scrollare Twitter, almeno renditi utile."

Ha ragione. E poi lo so che le piace quando le spiego le cose. Finge che non le importi, ma poi sta zitta e ascolta, e alla fine fa una battuta che dimostra che ha capito tutto. Cosi' ho iniziato a spiegarle il GPS. Dall'inizio.

"Lo sai che ti piace sembrare Einstein," dice senza togliere gli occhi dalla strada.

"Non c'entra sembrare. Einstein c'e' dentro, letteralmente. Nel firmware dei satelliti."

"Dai, non esagerare."

"Senza le sue equazioni il navigatore sbaglierebbe di 11 chilometri al giorno. Ti manderebbe in mezzo a un campo di barbabietole."

Silenzio. Poi: "Ok, racconta."

E intanto ho fatto un'altra cosa da nerd: ho messo Twitter in background, ho aperto Open GPX Tracker sul mio iPhone e ho registrato l'intero viaggio. 101 minuti. 3,881 punti GPS. Ogni secondo una coordinata, un'altitudine, un timestamp. Lei col suo telefono sul CarPlay a seguire Maps, io col mio in mano a registrare dati GPS. Due iPhone, due scopi completamente diversi. Poi ci ho montato sopra due script Python e sei chart. Perche' se mi rompo un braccio, almeno ci scrivo un articolo.

0
Traccia GPS reale
0
Drift temporale
0
Deriva senza correzione
0
Tempo di volo segnale

// Come Funziona il GPS

Sezione 01. Trilaterazione e 4 satelliti

"Allora, prima cosa: il GPS non sa dove sei. Calcola dove sei."

"Che differenza c'e'?"

"Che non c'e' nessun satellite che ti punta e dice eccola li'. E' il tuo telefono che fa i conti."

Ogni satellite trasmette due cose: il suo ID e che ora e' sul suo orologio atomico. Il telefono riceve questi segnali, misura quanto ci hanno messo ad arrivare, e siccome sa che viaggiano alla velocita' della luce, calcola la distanza. Roba da terza media: distanza = velocita' × tempo. Solo che qui la velocita' e' 299,792,458 m/s e il tempo si misura in miliardesimi di secondo.

"Tipo il fulmine? Che conti i secondi dopo il lampo per sapere quanto e' lontano?"

"Esatto. Solo che invece del tuono usi la luce, e invece di uno ne hai quattro."

Con un satellite sai che sei da qualche parte su una sfera. Con due, su un cerchio. Con tre, in uno di due punti. Con quattro risolvi anche l'errore dell'orologio del telefono, che non e' atomico e sbaglia di qualche nanosecondo.

Si chiama trilaterazione. Non triangolazione (quella usa angoli). Il GPS usa solo distanze. Tipo: "sono a 20,200 km da questo satellite, a 21,300 km da quest'altro..." e cosi' via.

01
Ricezione
Il chip riceve segnali da 4+ satelliti
02
Tempo
Misura il ritardo di ogni segnale
03
Pseudorange
Calcola la distanza: rho = c * dt
04
Posizione
Risolve il sistema: x, y, z, dt_orologio

"E funziona bene?"

"Benissimo. Ma ha un problema grosso: dipende tutto dal tempo. Un errore di 1 nanosecondo, un miliardesimo di secondo, corrisponde a 30 centimetri di errore sulla posizione. Perche' la luce percorre 30 cm in un nanosecondo."

"Trenta centimetri per un miliardesimo di secondo?"

"Benvenuta nel GPS."

$$\rho = c \cdot \Delta t \quad \Rightarrow \quad \delta\rho = c \cdot \delta t = 299\,792\,458 \;\text{m/s} \times 1\;\text{ns} = 0.30\;\text{m}$$

Un nanosecondo di errore = 30 cm di posizione

"E quindi come fanno a essere cosi' precisi?"

"Orologi atomici. Per forza. E per questo serve Einstein. Ma ci arriviamo."

"Eccolo. Lo sapevo che ci infilavi Einstein."

// Il Segnale in Viaggio

Sezione 02. 67 millisecondi a 299,792,458 m/s

"Quei satelliti quanto sono lontani?"

"20,200 km."

"E si muovono?"

"Piu' di un proiettile da fucile. Quattro volte piu' veloci. Non come te che vai a 80 in terza corsia e speli i cerchioni nelle piazzole."

"I cerchioni li ho spelati UNA volta."

"Due. Comunque, quei satelliti completano un giro della Terra in 11 ore e 58 minuti, non 12, e non e' un caso. E' calcolato perche' da qualsiasi punto del pianeta ne vedi sempre almeno 4."

Il segnale radio parte dal satellite e viaggia alla velocita' della luce. Da 20,200 km di altitudine, ci mette circa 67 millisecondi ad arrivare al telefono. Sembra poco. Ma in quel tempo il segnale attraversa il vuoto dello spazio, la ionosfera (piena di elettroni liberi che lo rallentano), la troposfera (piena di vapore acqueo che lo distorce), e alla fine colpisce un'antenna da pochi millimetri nel tuo telefono. Che nel frattempo sta facendo altre mille cose. Multitasking.

"E il telefono come fa a misurare una roba cosi' piccola?"

"Non misura direttamente il tempo di volo. Confronta il codice ricevuto dal satellite con una copia locale che genera internamente. Lo sfasamento tra i due e' il ritardo. Da quello ricava la pseudorange: la distanza approssimata."

$$\rho_i = c \cdot (t_{\text{ricevitore}} - t_{\text{satellite},i}) + c \cdot \delta t_{\text{clock}} + \epsilon_{\text{atm}}$$

Pseudorange: distanza stimata dal satellite i, con errore di clock e atmosferico

"Perche' pseudo?"

"Perche' include l'errore dell'orologio del telefono, che non e' atomico e fa un po' schifo, in termini di precisione. Risolvendo il sistema con 4 satelliti quell'errore si elimina. Ma c'e' un errore che il sistema non puo' eliminare con l'algebra: l'errore sugli orologi dei satelliti stessi."

Se gli orologi atomici dei satelliti derivano, ogni pseudorange e' sbagliata. Garbage in, garbage out. E nessuna algebra puo' compensare un input sbagliato.

Tempo di volo del segnale per satellite (distanza/c)

Il satellite piu' vicino (alto in cielo, sopra la tua testa) e' a circa 20,200 km. Quelli bassi sull'orizzonte arrivano a 25,000+ km: il segnale percorre un arco piu' lungo attraverso l'atmosfera, piu' distorto, piu' rumoroso. Come parlare a qualcuno attraverso una parete di vetro vs attraverso un muro di mattoni.

// Il Tempo Rallenta

Sezione 03. Relativita' speciale

"Ok, e Einstein dove entra?"

"Adesso. Primo problema: i satelliti si muovono veloce."

"E quanto veloce e' veloce?"

"3,874 metri al secondo. Quasi 14,000 km/h, come ti dicevo prima. Sembra tanto, ma e' un diecimillesimo della velocita' della luce. Pero' la relativita' speciale (quella che Einstein pubblico' nel 1905, a 26 anni, mentre lavorava all'ufficio brevetti) dice una cosa precisa: qualsiasi oggetto in movimento sperimenta un tempo piu' lento rispetto a un osservatore fermo."

"Tipo che il tempo rallenta se vai veloce?"

"Esatto. Non e' un'illusione. Non e' un effetto percettivo. Non e' filosofia. Gli orologi atomici sui satelliti ticchettano effettivamente piu' lentamente rispetto a quelli a terra. Lo sappiamo perche' li misuriamo. Ogni giorno."

La quantita' e' data dal fattore di Lorentz:

$$\gamma = \frac{1}{\sqrt{1 - \frac{v^2}{c^2}}} = \frac{1}{\sqrt{1 - \left(\frac{3874}{299792458}\right)^2}} = 1.000000000083$$

Fattore di Lorentz per un satellite GPS a 3,874 m/s

"E quindi? Quanto cambia?"

"Eh, guardalo bene. 1 seguito da nove zeri e poi 83. Sembra una roba da ignorare. Il tipo di numero che butteresti via in un float senza pensarci. Ma moltiplicalo per 86,400 secondi, cioe' un giorno, e la differenza diventa:"

-7.2 microsecondi al giorno

"7 microsecondi? E chi se ne frega."

"Tu. Tu te ne freghi. Perche' 1 microsecondo = 299.8 metri di errore. Quindi 7.2 microsecondi = circa 2.2 km di errore al giorno. Solo dalla relativita' speciale. E non abbiamo neanche iniziato con quella generale."

"C'e' anche un'altra?"

"Tieni gli occhi sulla strada."

Punto chiave: la dilatazione temporale non e' un'approssimazione. E' stata misurata direttamente con orologi atomici sugli aerei (esperimento di Hafele-Keating, 1971). Hanno messo degli orologi su aerei di linea, li hanno fatti volare, li hanno confrontati con orologi a terra. Differenza misurata: esattamente quella prevista da Einstein. La relativita' non e' opinabile.

// La Gravita' Accelera il Tempo

Sezione 04. Relativita' generale

"Secondo problema: i satelliti sono lontani dalla Terra."

"Quello lo avevo capito, 20,000 e rotti km."

"Si', ma il punto non e' la distanza. E' la gravita'. La relativita' generale (quella del 1915, la piu' bella teoria della fisica) dice che il tempo scorre piu' lentamente dove la gravita' e' piu' forte. Quaggiu' la gravita' e' forte. Lassu' e' molto piu' debole. Quindi gli orologi sui satelliti ticchettano piu' velocemente rispetto ai nostri."

"Aspetta aspetta. Prima hai detto che vanno piu' lenti. Adesso piu' veloci?"

"Esatto. Due effetti opposti. E il secondo e' sei volte piu' grande del primo."

$$\frac{\Delta f}{f} = \frac{\Phi_{\text{GPS}} - \Phi_{\text{Terra}}}{c^2} = \frac{-\frac{GM}{R_{\text{GPS}}} + \frac{GM}{R_{\text{Terra}}}}{c^2}$$

Dilatazione gravitazionale: differenza di potenziale diviso c^2

Con i numeri reali:

+45.7 microsecondi al giorno

"Cioe' il tempo lassu' va piu' veloce? Tipo nei film?"

"Tecnicamente si'. Di 45.7 microsecondi al giorno. La gravita' pesa sul tempo. Meno gravita', tempo piu' veloce. I satelliti vivono in un tempo leggermente accelerato. Come se il tempo fosse un fluido e la gravita' lo rendesse piu' viscoso."

"Ok adesso la smetti di parlare come un libro."

"No."

Nota storica: Einstein predisse questo effetto nel 1915. Fu verificato nel 1959 da Pound e Rebka, che misurarono lo spostamento di frequenza dei raggi gamma tra la cima e la base di una torre di 22 metri a Harvard. Ventidue metri. La gravita' cambia il tempo misurabilmente su 22 metri. Pazzesco.

// Il Bilancio

Sezione 05. 38 microsecondi e 11.5 km

"Ok, allora. Uno lo rallenta e l'altro lo accelera. Si cancellano?"

"No. Vince la gravita'. Per distacco."

Dilatazione temporale: Speciale vs Generale vs Netto

"Relativita' speciale: -7.2 us/giorno. Rallenta. Relativita' generale: +45.7 us/giorno. Accelera. Il netto e' +38.5 microsecondi al giorno. L'orologio del satellite guadagna 38.5 microsecondi ogni giorno rispetto al tuo."

"38 microsecondi. Non e' un niente?"

"Moltiplicalo per la velocita' della luce."

$$\Delta d = c \cdot \Delta t = 299\,792\,458\;\text{m/s} \times 38.5 \times 10^{-6}\;\text{s} \approx 11\,541\;\text{m}$$

11.5 km di deriva al giorno senza correzioni relativistiche

"11.5 km al giorno. Dopo un giorno il GPS pensa che sei a 11 km da dove sei. Dopo due giorni, 23 km. In una settimana, 80 km. Maps ti direbbe 'sei arrivato' e saresti in un campo di barbabietole."

"Vabe' dai."

"Sul serio. Guarda il grafico."

Deriva posizionale: 24h senza vs con correzione relativistica

"La linea rossa e' il GPS senza Einstein. La verde e' il GPS reale, corretto. La differenza e' tra 'sei al bar' e 'sei in mezzo all'Adige'."

"E come lo risolvono?"

"Col trucco piu' bello di tutta l'ingegneria spaziale. Prima di lanciare il satellite, rallentano l'orologio atomico. Da 10.23 MHz a 10.22999999543 MHz. Quella differenza di 0.00457 Hz e' Einstein codificato in hardware."

"Cioe' modificano l'orologio prima di lanciarlo?"

"Si'. Si fidano di un'equazione scritta nel 1915 per tarare un orologio che vola a 14,000 km/h a 20,000 km di altitudine. E funziona. Ogni giorno. Da trent'anni."

Il fix hardware: i satelliti GPS non trasmettono il loro "tempo reale". Gli orologi atomici vengono rallentati prima del lancio: da 10.23 MHz a 10.22999999543 MHz. Quella manciata di decimali compensa esattamente i 38.5 us/giorno di drift relativistico. Einstein codificato in quarzo.

// La Metodologia (aka Il Nerd Col Gesso)

Sezione 06. Dati GPS reali

"Bella la teoria. Ma tu ce l'hai la prova?"

"Indovina cos'ho fatto per tutto il viaggio col braccio buono."

"Hai registrato."

"Ho registrato."

Open GPX Tracker sul mio iPhone. App gratis, App Store, fa una cosa sola e la fa bene. Una coordinata GPS al secondo: latitudine, longitudine, altitudine, timestamp. L'ho avviato prima di partire, fermato all'arrivo. Il suo iPhone era agganciato al CarPlay con Google Maps. Il mio lo tenevo in mano col braccio buono.

A4 direzione Verona. 110 km in linea d'aria, 101 minuti. Lei guidava seguendo Maps sul CarPlay. Io scrollavo tra GPX Tracker e Twitter, e intanto le spiegavo Einstein. Multitasking.

Poi a casa ci ho montato due script Python. Il primo (01_parse_gpx.py) parsa il file GPX, calcola statistiche, esporta JSON. Il secondo (02_relativity_calc.py) fa i calcoli relativistici step-by-step. Tutto verificabile, tutto riproducibile.

I due script in nvim. Una mano sola, zero scuse.
01_parse_gpx.py e 02_relativity_calc.py aperti in nvim

"E quanto ci hai messo a scrivere gli script?"

"Meno di quanto ci hai messo tu a parcheggiare. E li ho scritti con una mano sola. Immagina le bestemmie a fare Ctrl+C con il mignolo."

Risultato: 3,881 punti GPS reali. Niente simulazioni. Niente dati finti. Questa e' la traccia vera del mio iPhone mentre la iena ignorava il navigatore sulla A4:

Traccia GPS reale: viaggio verso Verona (3,881 punti)

"E questa e' la stessa traccia buttata su mappa stradale. Guarda:"

Mappa del percorso reale: dati GPS iPhone sovrapposti

"Cerchio verde: partenza. Cerchio rosso: Verona. Se zoomi vedi che la traccia segue le corsie dell'autostrada. Precisione di pochi metri. E tutto questo funziona perche' le correzioni relativistiche sono gia' applicate dal firmware del satellite."

"Cioe' Einstein e' gia' dentro?"

"Da sempre. Gratis. Trasparente. Senza quelle correzioni, in 101 minuti di viaggio il GPS avrebbe accumulato circa 800 metri di errore in piu'. Abbastanza per metterti sulla corsia sbagliata. O in un fosso."

"Grazie per l'immagine."

// La Precisione

Sezione 07. DOP, satelliti e fonti di errore

"Ok ma se e' cosi' preciso, perche' il navigatore ogni tanto mi dice che sono sulla strada di fianco?"

"Perche' la precisione del GPS non e' un numero fisso. Cambia ogni secondo, in base a quanti satelliti vedi, dove sono, e cosa c'e' tra te e loro."

"Guarda i dati del nostro viaggio. Velocita': picchi di 121 km/h, che per i tuoi standard e' da record."

"Andavo in discesa."

"Certo. Poi cali a zero nelle soste perche' volevi il caffe'. Altitudine: da 43 a 185 metri, il profilo della pianura padana fino alle colline moreniche."

Velocita' e altitudine reali (iPhone, A4 → Verona)
Come il DOP moltiplica l'errore

"Vedi il grafico a destra? Quello e' il DOP: Dilution of Precision. Pensalo come il moltiplicatore del danno in un videogioco. Prende l'errore base e lo amplifica."

"Tipo critico?"

"Tipo critico. DOP 1 = satelliti distribuiti bene nel cielo, errore minimo. DOP 5 = raggruppati in un angolo, errore quintuplicato. DOP 8+ = non fidarti di niente."

"E quanto sbaglia?"

"Dipende. L'errore di posizione e' DOP × URE. URE e' l'errore base, circa 3 metri. Con DOP 1 hai 3 m. Con DOP 5 hai 15 m. Con DOP 8 hai 24 m. Tipo leverage finanziario ma per la tua posizione."

"E basta quello a far sbagliare?"

"Magari. Guarda qui:"

Fonte Errore tipico Causa
Ionosfera 2-5 m Elettroni liberi rallentano il segnale in modo variabile
Troposfera 0.5-1 m Vapore acqueo e pressione alterano la velocita'
Multipath 1-5 m Segnali che rimbalzano su edifici, terreno, guard rail
Orologio ricevitore 1-3 m L'orologio del tuo telefono non e' atomico (ovviamente)
Effemeridi 1-2 m Errore nella posizione orbitale trasmessa dal satellite
Relativita' (se non corretta) 11,500 m/giorno Dilatazione temporale SR + GR non compensata

"Vedi l'ultima riga?"

"11,500 metri?!"

"Tutti gli altri errori sono nell'ordine dei metri. L'errore relativistico, se non corretto, e' nell'ordine dei chilometri. E' come avere un bug che corrompe il database di 1 record al secondo, e un altro che lo cancella tutto. Einstein non e' un optional. E' il fix piu' importante del sistema."

// Difese e Correzioni

Sezione 08. Lo stack di correzioni

"Ma se ci sono tutti questi errori, come fa a funzionare?"

"Perche' non si fida di un segnale grezzo. Tipo: non ti fidi dell'input dell'utente, giusto? Il GPS fa la stessa cosa. Applica strati di correzioni. Tipo middleware in un server Express. Ogni layer sistema qualcosa."

Correzione Come funziona Miglioramento
Correzione relativistica Frequenza dell'orologio ridotta prima del lancio (-0.00457 Hz su 10.23 MHz) Elimina i 38.5 us/giorno di drift
Modello ionosferico Parametri broadcast (modello Klobuchar) stimano il ritardo ionosferico Corregge ~50% dell'errore ionosferico
Doppia frequenza (L1/L5) Ionosfera dispersiva: confrontando L1 e L5 si calcola il ritardo esatto Rimuove quasi tutto l'errore ionosferico
EGNOS / WAAS / SBAS Satelliti geostazionari inviano correzioni differenziali in tempo reale Precisione sub-metrica
A-GPS Il telefono scarica effemeridi e almanacco via rete cellulare Fix piu' veloce (secondi invece di minuti)
Fusione sensori Accelerometro, giroscopio, barometro integrati con il GPS Posizione stabile in tunnel, indoor, multipath

"Entrambi i nostri iPhone usano quasi tutte queste robe. Il chip GPS, un Broadcom BCM47765, riceve su due frequenze L1 e L5, applica la correzione relativistica, scarica i dati A-GPS dalla rete Apple, e fonde tutto con accelerometro e giroscopio a 6 assi."

"E il risultato?"

"2-5 metri di precisione in campo aperto. In pochi secondi. Abbastanza per dirti che sei in corsia di sorpasso e non in corsia d'emergenza."

"E tutto quanto per quei microsecondi di prima?"

"Tutto parte da li'. 10.22999999543 MHz invece di 10.23000000000 MHz. Quella manciata di decimali e' Einstein, hardcoded nel quarzo dell'orologio atomico. Prima ancora che il satellite lasci la Terra."

"Cioe' lanciano un satellite nello spazio con un orologio apposta sballato."

"Sballato in modo che diventi giusto quando arriva in orbita. Si'."

// Una Dipendenza Runtime

Sezione 09. Conclusione

"Ok, riepilogo per me che sono lenta."

"Non sei lenta, fai finta."

"Riepilogo."

  1. Il GPS misura il tempo di arrivo di segnali da 4+ satelliti a 20,200 km
  2. Calcola la distanza con la velocita' della luce: 1 ns = 30 cm di errore
  3. Deve compensare la relativita' speciale: -7.2 us/giorno (satellite piu' lento)
  4. Deve compensare la relativita' generale: +45.7 us/giorno (meno gravita')
  5. Il netto e' +38.5 us/giorno = 11.5 km/giorno di deriva
  6. Si corregge con una modifica hardware sull'orologio: -0.00457 Hz

"Senza Einstein, il navigatore ti porterebbe in mezzo a un campo dopo un giorno. In una settimana, in un'altra citta'. La relativita' non e' una curiosita' accademica. E' una specifica tecnica. E' nel firmware. E' nelle equazioni che il chip del telefono risolve 10 volte al secondo, anche adesso che il tuo sta li' sul CarPlay a dirti di svoltare a destra."

"E io svolto a sinistra."

"Lo so. Per quello servono 11.5 km di margine."

Siamo arrivati a Verona. La iena ha parcheggiato al terzo tentativo, col navigatore che diceva "hai raggiunto la destinazione" mentre eravamo ancora in mezzo alla strada.

"Ancora con Einstein?" Ha guardato il mio schermo pieno di formule e grafici.

"Sai che senza di lui il navigatore non funziona?"

"Non funziona neanche con lui. Mi ha detto di svoltare a destra e c'era un senso unico."

"Quello e' un problema di mappe, non di relativita'."

"Per me e' un problema di chi progetta le rotonde. Tutte uguali. Come le fai a distinguere?"

Difficile darle torto. Ma almeno adesso sai che quando la pallina blu di Google Maps ti segue fedelmente, non e' magia. E' un satellite a 20,200 km con un orologio atomico rallentato di 0.00457 Hz, che risolve un'equazione di un tizio che nel 1915 non aveva neanche il telefono.

"Einstein e' una dipendenza runtime del tuo telefono."

Ogni volta che apri Maps, il tuo iPhone risolve equazioni della relativita' scritte nel 1915. 38 microsecondi al giorno separano la navigazione dalla deriva. Il GPS non e' solo ingegneria. E' fisica fondamentale, codificata in silicio, lanciata in orbita, e usata per trovare il kebabbaro piu' vicino.

Signal Pirate