Visualizzazione post con etichetta GPS. Mostra tutti i post
Visualizzazione post con etichetta GPS. Mostra tutti i post

venerdì 4 novembre 2011

Un Robot alla guida - Parte 3

Aggiungiamo ancora un tassello al nostro Autopilota/Navigatore; oggi parliamo del GPS (Global Positioning System), che è ormai abbastanza noto ai più anche grazie alle diffuse applicazioni in campo "consumer", prevalentemente nel settore automobilistico ...ma non solo.

(moderno ricevitore GPS con Antenna integrata ...un francobollo!)

Più in generale, dobbiamo immaginare il GPS (sistema estremamente complesso se esaminato dal punto di vista tecnico e nelle sue varie componenti o segmenti) come uno degli elementi principali di quelle applicazioni che prendono il nome di GNSS (Global Navigation Satellite System). Vorrei rimandare, per coloro che sono interessati ad un approfondimento tecnico, la descrizione di tutti i dettagli a documenti specializzati sull'argomento. Ne esistono tanti e alla fine dell'articolo vi riporterò la mia personale bibliografia ...può esservi utile.

(mappa 3D georeferenziata del basso Lazio)

Tra i vari componenti dei sistemi GNSS, di cui il GPS fa parte, è importante ricordare che dal 1 Ottobre 2009 è attivo in Europa il servizio EGNOS (European Geostationary Navigation Overlay Service). Tale servizio consente, mediante una complessa rete di Stazioni Terrestri e Ripetitori Satellitari Geosincroni, di implementare la cosiddetta "correzione differenziale" su scala geografica (...continentale appunto!).
In breve, possiamo riepilogare così, per punti, la recente storia del servzio di geolocalizzazione satellitare:
  • Il sistema GPS fu progettato agli inizi degli anni '70 dal US-DoD (Department of Defense, Stati Uniti) e divenne pienamente operativo, anche per uso civile, nel 1994. Il grado di accuratezza, in quegli anni, era un CEP (Circle of Equiprobalility) di circa 100 metri. Contemporaneamente e per gli stessi scopi bellici, l'URSS, realizzava il sistema GLONASS, concettualmente equivalente al GPS made in USA.
  • In data 1 Maggio 2000, il presidente degli Stati Uniti - Bill Clinton - decretò l'abolizione del SA (Selective Availability), un sottosistema che limitava la precisione del GPS per gli usi civili e, pertanto, il CEP passò da 100 m a 10-15 m.
  • In data 1 Ottobre 2009, l'Agenzia Spaziale Europea (ESA) iniziò la diffusione pubblica dell'Overlay EGNOS, portando il CEP a circa 2 m. (Nota: EGNOS è l'equivalente del sistema WASS operativo in Nord America).

(confronto tra mappa Google e mappa 3D
di un percorso GPS, andata e ritorno,
da/al Porto Turistico di San Felice Circeo)

Poche righe non possono certo condensare quaranta anni di evoluzione tecnologica, ma è interessante osservare come il servizio GNSS, costituito da GPS + EGNOS + GLONASS + (futuro GALILEO), condurrà l'accuratezza della localizzazione 3D, sul nostro caro Pianeta Terra, dalla grandezza del Metro a quella del Decimetro.
In questo scenario nuovi servizi potranno essere migliorati o, talvolta, inventati from scratch. Pensiamo, ad esempio, alla possibilità di tracciare la nostra posizione o quella di un Robot, su di una mappa e con la risoluzione del Centimetro!
Incredibile ...fino a pochi anni fa!!!

Ma come possiamo utilizzare un ricevitore GPS nelle nostre applicazioni "embedded"?
Semplice! Un moderno ricevitore (es. Garmin GPS 18x OEM), mediante una interfaccia UART (Universal Asyncronous Receiver Transmitter), ci invierà dei messaggi periodici nei quali è contenuta la nostra posizione sul geoide Terra, secondo il modello WGS-84.
Tali messaggi, definiti Sentenze, saranno codificate in accordo allo standard NMEA 0183 oppure in formato proprietario. I formati proprietari, ovviamente, variano da costruttore a costruttore (...sono in tanti ormai) e dovranno essere interpretati "manuali tecnici alla mano", mentre i formati standard risultano tutti normalizzati.
Nel seguente esempio Vi riporto la Sentenza GPRMC (Minimum Required - Type C) che rappresenta un comune denominatore per molti ricevitori OEM:

Sentenza RMC - 12 campi + Header $GPRMC + Trailer XX Hex Chk

$GPRMC,      Carattere di sincronismo '$' e denominazione GPRMC
171429,      Orario Fix [hhmmss]
A,           A=Fix valido, V=Warning (msg. non valido)
4113.5304,   Latitudine 41° 13.5304 secondi d'arco decimali
N,           N=Emisfero Nord, S=Emisfero Sud
01305.7166,  Longitudine 013° 05.7166 secondi d'arco decimali
E,           E=Quadrante Est, W=Quadrante Ovest
000.0,       Velocità in Nodi (Ground Speed!!!)
000.0,       Direzione Geografica (...non magnetica!!!)
200509,      Data Fix [ggmmhh]
001.8,       Deviazione magnetica rispetto a dir. geografica
E            Quadrante di deviazione magnetica
*7D          Checksum per verifica integrità messaggio

Questo messaggio, ad esempio, potrà essere ricevuto dal nostro microcomputer embedded, mediante una interfaccia RS232, RS422 o RS485, e consentirci, così, di elaborare la posizione del veicolo (automobile, aereo, imbarcazione, ...pedone, animale, robot!) in coordinate ECEF (Earth Fixed Earth Centered) o altro sistema di coordinate, se richieste.

(fare click per ingrandire)

Vediamo, ora, alcuni testi consigliati per approfondire l'argomento. Vi ricordo che per migliorare il grado di 'accuracy' nella determinazione della posizione è opportuno correlare l'output del sensore GPS con l'output del sensore inerziale-geomagnetico. Tale combinazione ci porterà alla realizzazione di un sensore GPS-INS (GPS-Inertial Navigation System) ...come è appunto il nostro Progetto Open di "Robot alla Guida".

Ecco i titoli:
  1. The Global Positioning System & Inertial Navigation - Farrel & Bath
  2. Strapdown Inertial Navigation Technology, Second Edition (Progress in Astronautics and Aeronautics) - Titterton & Weston
  3. Applied Mathematics in Integrated Navigation Systems, Third Edition - Rogers
  4. Quaternions and Rotation Sequences: A Primer with Applications to Orbits, Aerospace and Virtual Reality - Kuipers
Qui Pianeta Terra, un mondo reale ed un modello matematico, in cui orientarsi e navigare!

venerdì 30 settembre 2011

Sensore di assetto e posizione

Tra le applicazioni elettroniche da utilizzare a bordo dei veicoli, siano essi aerei, marini o terrestri, una di quelle che più mi affascina è relativa al campo dei sistemi di navigazione. Il cosiddetto Navigatore Satellitare è ormai considerato un accessorio indispensabile nel settore automobilistico, ma tante altre novità ci attendono!


In questo post vorrei fornirvi qualche aggiornamento sullo stato del progetto Sistemi Inerziali (che ho già introdotto nel blog qui) e fornire qualche dettaglio sull'architettura del sensore di assetto e posizione, un elemento centrale per i sistemi di navigazione.

Nella figura seguente trovate lo schema a blocchi del circuito:


Vediamo quali sono gli elementi principali del design:

  • Tre accelerometri MEMS analogici montati perpendicolarmente tra loro
  • Tre giroscopi MEMS analogici montati perpendicolarmente tra loro
  • Un Magnetometro Digitale Triassiale
  • Un convertitore A/D SigmaDelta a 16/24 bit AD7739
  • Un microcontrollore NXP LPC2129
  • Due generatori di Clock
  • Due sensori di temperatura
Premetto che i sensori MEMS sono disponibili in ampia scelta tra diversi costruttori e, solo per citarne alcuni, li troverete nel catalogo Analog Devices, ST Microelectronics o VTI, mentre per i sensori magnetici allo stato solido la scelta ricadrà quasi esclusivamente tra i sensori Honeywell.

Vediamo ora, per punti salienti, come funziona il nostro circuito:
  1. Fase di startup e inizializzazione - Il software caricato a bordo del microcontrollore LPC2129 provvede a configurare tutte le periferiche interne ed esterne
  2. Fase di allineamento della matrice di Coseni Direttori - La soluzione di assetto è rappresentata da una matrice 3x3 detta DCM (Direction Cosine Matrix) che deve essere inizializzata mediante l'allinemento con il vettore gravitazionale locale (allineamento al piano locale). Tale allineamento viene effettuato nei primi secondi di funzionamento utilizzando i dati forniti dagli accelerometri e dal magnetometro digitale. Durante la fase di allineamento il sensore deve essere tenuto stazionario.
  3. Fase operativa - Questa è la condizione di lavoro del sensore. Durante questa fase la soluzione di assetto viene costantemente aggiornata integrando i dati forniti dai giroscopi e aggiornando la DCM. Nel nostro prototipo tale integrazione avviene alla frequenza di 100Hz.
  4. Correzione degli errori - L'integrazione delle velocità angolari fornite dai giroscopi, comporta la presenza di alcuni errori quali: approssimazioni numeriche, bias dei giroscopi, errori di artogonalità, bias termici. Al fine rendere stabile nel lungo termine la soluzione di assetto si provvede a introdurre un anello di retroazione con i dati forniti dagli accelerometri, dai sensori magnetici e dal sensore GPS se presente. Tali dati saranno opportunamente filtrati (es. filtri ricorsivi, PID, Kalman, ecc.) e provvederanno a stimare e correggere gli errori accumulati nella DCM.
  5. Fase di output - In funzione dell'applicazione può essere necessario fornire la soluzione di assetto in termini di angoli euleriani (Roll, Pitch, Yaw - Heading), dati di velocità lineare e angolare, accelerazione, jerk, posizione rispetto al geoide WGS-84, ecc. Questa fase provvede a estrarre i dati nel formato desiderato ed a trasmetterli in uscita. Nel nostro prototipo l'uscita è costituita da una porta seriale RS232 la cui velocità è fissata in 115 Kbps. La frequenza di aggiornamento del pacchetto dati è, invece, di 25Hz.
Lo sviluppo di questo sensore vi consentirà di effettuare una moltitudine di esperimenti che vanno dalle applicazioni veicolari, alla robotica, al monitoraggio ambientale, alla realtà virtuale. A voi la scelta!

Qui Pianeta Terra, a presto.