martedì 6 ottobre 2015

GNSS - GPS - ARDUINO

Prove ed esperimenti sul Gps con Arduino.



In questo post descrivo quanto ho sperimentato e letto a proposito dei sistemi Gps.

Questo lavoro nasce da una domanda che da tempo avevo nella testa:

E' possibile ottenere risultati paragonabili a quelli raggiungibili con costosi ricevitori Gps professionali, utilizzando ricevitori di basso costo alla portata di tutti?




Note : 
Quando scrivo  Gps intendo genericamente sistemi di posizionamento tramite satellite, utilizzando questa sigla per semplicità e brevità.
Questo post come tutto il blog, è in continuo aggiornamento e correzione, grazie anche al contributo dei lettori. 

Accennerò agli aspetti di base, del sistema Gps che ritengo utili ad introdurre la parte successiva del progetto.
La trattazione dell'argomento sarà impostata con prevalenza agli aspetti pratici.
Su internet si trovano molti articoli e pubblicazioni sul funzionamento del Gps e quindi avrei potuto omettere queste note riassuntive sul sistema Gps, le riporto al solo fine di rendere più agevole al lettore trovare le basi in un'unico articolo. 
Per approfondimenti e spiegazioni più rigorose ricorrete alla bibliografia indicata in fondo all'articolo.

Ringraziamenti:
Un ringraziamento particolare al Prof. Sigfrido Leschiutta “il Signore dell’ora esatta”, senza le sue lezioni non sarei riuscito ad avvicinarmi al sistema Gps. (Consiglio la visione di alcune sue lezioni che si trovano su YouTube).
A mio figlio Adriano che mi sostiene con il software.
All'Ing. Marco Pierozzi per il sostegno ed i consigli.
 Al collega ed amico Geom. Maurizio d'Ettorre, per gli aiuti e l'incoraggiamento.
 Ai Geom. Stefano Nicolodi, Paolo Zeroni, per l'aiuto nelle prove di funzionamento e test.
All'Ing. Michele Bavaro per il materiale e per l'assistenza che mi ha fornito.
A Tomoji Takasu un grazie particolare per la fantastica libreria "RTKLIB", senza la quale tutto sarebbe molto più complicato.
 A tutti gli autori dei testi nella bibliografia sotto riportata, dai quali ho attinto dati, formule, immagini, citati nell'articolo.

Quanto fatto non ha pretesa di essere esaustivo dell'argomento, chi notasse errori o mancanze può segnalarlo con un gradito commento, correggerò ed integrerò il post.



***************

Descrizione del sistema di navigazione satellitare GNSS.


La sigla GNSS si riferisce ai sistemi satellitari globali di navigazione (in lingua inglese global navigation satellite system) con riferimento ai sistemi di geo-localizzazione e navigazione marittima, terrestre, aerea, che utilizzano una rete di satelliti artificiali in orbita.
Oggi ci sono più costellazioni di satelliti : GPS, GLONASS, GALILEO, ed altre.
Descriverò in maniera più approfondita il sistema GPS, in ogni caso i concetti di base di funzionamento rimangono validi per tutti i sistemi attualmente in uso.

GLONASS


Sistema di posizionamento globale Russo (GLObal NAvigation Satellite System)
Queste le caratteristiche:
Il segmento spaziale  è composto da 24 satelliti, sono distribuiti su 3 piani orbitali circolari inclinati di 64,8° rispetto all'equatore.(8 satelliti per piano) 
La distanza dei satelliti dalla superficie è di circa 19100 Km.
I segnali vengono trasmessi su due frequenze L1 = (1602Mhz + n*0,5625Mhz) 
ed L2 = (1246 Mhz + n*0,4375 Mhz). ( n = numero canale )
I satelliti vengono individuati in base al canale di trasmissione a differenza del sistema Americano dove vengono distinti dal messaggio trasmesso nel codice.
Il sistema utilizza 2 codici SP di libero accesso, HP criptato.
Altra differenza con il sistema Gps è il DATUM utilizzato anziché WGS84 il Glonass utilizza il Datum PZL90

GALILEO



Il sistema Europeo nasce per uso civile commerciale, con servizi gratuiti e a pagamento.
Ancora in fase di costruzione, è stato progettato con caratteristiche avanzate rispetto a GPS e GLONASS.
Nel progetto si è pensato a garantire interoperabilità con i sistemi esistenti ( soprattutto GPS).
Quando la costellazione di satelliti sarà completa ci saranno 30 satelliti ad un'altezza di 23200 Km, distribuiti su tre piani orbitali inclinati di 56°.
Servizi disponibili:
Open Service gratuito, frequeze E1, E5, codice libero, prestazioni simili al GPS con codice C/A.
Commercial Service a pagamento, accesso ai segnali E6 ( terza freq), accuratezza PP a 1 metro.

Altri servizi speciali:
Safety of Life Service (SoL) 
Public Regulated Service (PRS)
segnali crittografati, riservati a utenti che richiedono elevata continuità del servizio ed accesso controllato.
Search and Rescue Service (SAR)
servizio specifico per utenti del soccorso e della protezione civile in tutto il mondo.



GPS



GPS ( Global Positioning System). Sistema di posizionamento globale creato e gestito dal Ministero della Difesa Americano, è nato per esigenze militari.
Il primo satellite fu lanciato nel 1978 e il sistema fu ultimato nel 1994, viene continuamente aggiornato ed integrato.
Sviluppato anche per esigenze civili ( con limitazioni), è basato su una costellazione di satelliti appartenenti alla rete GPS (NAVIGATION SATELLITE TIME AND RANGING GLOBAL POSITIONING SYSTEM) .
Oltre alle applicazioni militari per cui è nato, trova impiego in molte attività civili:
Navigazione marittima, aerea e terrestre, anche avvalendosi di mappe georeferenziate.
Consente il controllo della posizione di automezzi.
Con particolari ricevitori e programmi è utilizzato per eseguire misure geodetiche, cartografiche e topografiche.


La rete GPS fornisce i dati con i quali i ricevitori possono determinare la propria posizione.
Il sistema adottato ( ad una via) presenta due caratteristiche fondamentali:
_ E' in grado di servire un numero illimitato di utenti, i satelliti trasmettono solamente.
_ Gli utenti non devono trasmettere.

Queste caratteristiche rendono il sistema di facile uso per l'utenza ma molto complesso e costoso da realizzare e da gestire.

Il sistema è costituito da tre segmenti:
_ Segmento spaziale.
_ Segmento di controllo.
_ Segmento utenza.

Segmento spaziale.

Il segmento spaziale è costituito da 24 satelliti + 5 di scorta, sono distribuiti su 6 orbite “circolari” ugualmente spaziati in longitudine di 60 gradi.

Le orbite hanno un raggio di 26560Km e sono inclinate rispetto al piano dell'equatore di 55 gradi.
Il periodo di rivoluzione dei satelliti è di 12 ore siderali.
In ogni satellite ci sono orologi atomici al Cesio, e al Rubidio.
Pannelli solari, batterie, carburante e razzi per correzioni dell'orbita.
Tutta la componentistica elettronica per trasmettere i segnali e ricevere comandi dal controllo a terra.
Pesano circa 800 Kg.
Il satellite ha una vita media di 7 anni.
Il compito del satellite è quello di trasmettere la propria posizione ed il tempo GPS.



Segmento di controllo.

Il segmento di controllo è costituito da 5 stazioni a terra distribuite in modo uniforme lungo la circonferenza terrestre in prossimità dell'equatore.
Di ogni stazione si conosce la posizione con precisione.
Quattro svolgono la funzione di Monitor Station, ricevono in continuo i segnali dai satelliti e misurano i parametri atmosferici, inviano questi dati alla Master Control Station (MSC), situata a Colorado Springs.
Qui vengono eseguiti tutti i calcoli per correggere gli errori degli orologi e ricalcolare effemeridi aggiornate.
I dati corretti vengono inviati ai satelliti avendo cura di sincronizzare tutti gli orologi con precisione, in quanto è di fondamentale importanza che gli orologi dei satelliti siano sincronizzati su di un unico tempo ( Tempo GPS).
Dalla (MCS) vengono inviati anche i comandi per correggere le orbite dei satelliti.



Segmento utenza.



Questa sezione è costituita da tutti gli utenti ( civili e militari) che con apposito ricevitore sono in grado di captare e decodificare i segnali trasmessi dai satelliti.
La determinazione della posizione viene effettuata dal ricevitore o successivamente con opportuni calcoli.
Il numero degli utenti non è limitato, e rimangono anonimi.
Occorre che almeno quattro satelliti siano visibili contemporaneamente al ricevitore.
In funzione dell'uso e della precisione richiesta si utilizzano ricevitori e tecniche di calcolo diverse.





I segnali trasmessi dai satelliti.

Come abbiamo visto sopra:
Il compito del satellite è quello di trasmettere la propria posizione ed il tempo GPS.


I segnali sono controllati tutti dalla f0 = 10,23 Mhz originata dagli orologi atomici.

Vengono utilizzate due frequenze portanti:

L1 = (f0*154)=1575,42 Mhz λ = 19,029 cm.

L2 = (f0*120) = 1227,60 Mhz λ = 24,421 cm.

Ora hanno aggiunto anche una terza portante: L5. (si veda l'ultimo testo di Alberto Cina "Dal GPS al GNSS (Global Navigation Satellite System)" .


Le portanti sono modulate in fase PSK (Phase Shift Keying) da i seguenti segnali:



L1 modulata dal codice P e dal codice C/A. ( Coarse/Acquisition)
L2 modulata con il codice P. ( Precise code )
Entrambi i segnali vengono modulati anche dal codice D (50 Hz), che contiene i dati di navigazione, l'orario di trasmissione del messaggio, le correzioni orologio, le effemeridi, lo stato di salute del satellite ed altre informazioni.

Il Codice P, precise code (10,23 Mhz) (è riservato per usi militari)

Il codice C/A, Coarse/Acquisition (1,023 Mhz) è composto da 1023 bit ed ha un periodo di 1 ms, quindi un singolo bit 1/1023 ms. Questo codice è pubblico.

Analogamente alla terza portante che è stata aggiunta alla L1 e alla L2, è ora presente anche un altro codice pseudo-random denominato L2C e trasmesso sulla sola portante L2 dai satelliti GPS del blocco II-RM.

I codici trasmessi vengono chiamati “Pseudo Random” (PR), il codice trasmesso da ogni satellite è diverso, in questo modo il ricevitore potrà distinguere il codice di un satellite da quello di un altro satellite vicino.



Come funziona la determinazione della posizione.

La determinazione avviene utilizzando la trilaterazione:
Con tre distanze da punti noti si può determinare il punto incognito.

Conoscendo la distanza da tre punti noti (satelliti che trasmettono le coordinate della loro posizione istantanea),
 si riesce a determinare la posizione del punto incognito (ricevitore). 






Nella figura qui sopra per semplificare ho riportato le figure sul piano, in realtà avremo l'intersezione fra tre sfere con raggio = distanza (satellite-ricevitore) e quindi:



La distanza R1 individua la posizione del ricevitore sulla superficie della sfera centrata sul satellite S1

La distanza R2 determina un'intersezione con la prima sfera ed individua un cerchio; il ricevitore si troverà su questo cerchio.

la distanza R3 interseca le altre sfere individuando sul cerchio due punti, dei due punti si considera il più vicino alla superficie della terra, oppure quello con il raggio orbitale più prossimo a quello dei satelliti GPS oppure quello compatibile con una stima approssimata (eventualmente disponibile)della posizione del ricevitore.

Come si misurano i raggi delle sfere di posizione.

Per misurare la distanza satellite (S) ricevitore (R) si utilizzano:

Misure di codice, si utilizza il codice C/A o il codice P se abilitato.
La misura si basa sul “tempo di volo” correlando il segnale ricevuto dal satellite (S) con quello generato dal ricevitore (R).
Queste misure vengono chiamate (Pseudoranges) pseudodistanze.



Il ricevitore confronta il codice in arrivo con quello generato localmente facendo scorrere 
i due codici fino a quando si sovrappongono perfettamente e misurando quindi lo sfasamento o scorrimento in termini di tempo,  questo è appunto, tempo di percorrenza del segnale a meno dell'offset degli orologi.

               La distanza Sr (satellite – ricevitore) è:  



c = 300.000.000 m/s ( velocità di propagazione onde elettromagnetiche nel vuoto.

Quindi con tre distanze da tre satelliti di cui si conoscono le effemeridi, potremmo
scrivere tre equazioni di questo tipo:


    = coordinate effemeridi satellite NOTE

    = coordinate ricevitore INCOGNITE 

                   

(1*)


Misurate così le tre distanze Ricevitore-Satellite è possibile determinare la posizione del ricevitore in singola epoca ( un solo periodo di misura).

Le cose purtroppo non sono così semplici per una serie di fattori e di errori e/o di disturbi, che vedremo nel prossimo paragrafo.

Inoltre esiste una quarta incognita molto importante ed è la differenza di offset fra l'orologio del satellite e l'orologio del ricevitore, per evitare questo i due orologi dovrebbero essere sincronizzati fra loro, e con la stessa precisione e stabilità.
Gli orologi nei satelliti vengono sincronizzati e corretti dal (MSC) e sono come abbiamo visto orologi molto complessi, l'orologio nel ricevitore è invece un semplice orologio al quarzo e non è sincronizzato con il tempo GPS.
Esiste comunque una soluzione anche a questo problema.

Più sopra ho scritto “tempo di volo” , è più preciso dire che si tratta di differenza fra l'ora di invio del codice dal satellite, e l'ora di arrivo del codice al ricevitore.


Dove
     = Tempo dell'orologio ricevitore.

    =   Tempo orologio satellite.


I due orologi sono entrambi soggetti ad un offset e quindi sarà:

                    =  
                       =  
dove δ = indica gli offset degli orologi ( satellite , ricevitore).

avremo quindi :        


La cosa che ci interessa è conoscere la differenza fra i due offset. ( si presume che nel brevissimo tempo della misura i due errori rimangano costanti).

           
       =  differenza offset degli orologi ( satellite , ricevitore).    


Questa differenza di offset degli orologi è quindi la quarta incognita del problema.

Per questo sono necessari dati da almeno quattro satelliti per ottenere le equazioni sufficienti a determinare la posizione, in una sola epoca.

Ci sono inoltre errori dovuti al percorso del segnale dal satellite al ricevitore (errore Ionosferico ed errore Troposferico).

L'equazione (1*) vista sopra diventa quindi:





                                             ******************


Misure utilizzando le portanti 


Per determinare la distanza (Pseudoranges) Sr si utilizzano le portanti dei segnali, L1 o (L1+L2).

La misura si basa sulla differenza di fase tra il segnale emesso dal satellite ed il segnale generato nel ricevitore, in modo simile a quanto già visto per il codice, ma con maggior precisione in quanto la lunghezza dell'onda della (F1 = 1575,42 Mhz) è 19,023 cm, aumentando quindi la risoluzione sulla determinazione della distanza di molte volte rispetto alla risoluzione del codice C/A ( 1,023 Mhz).

Per eseguire queste misure occorrono ricevitori più complessi e costosi, con hardware e software più sofisticati.



Se fosse possibile conoscere il numero dei cicli interi dell'onda partita dal satellite basterebbe osservare il delta della fase per avere la distanza satellite ricevitore con notevole precisione.

L’ambiguità intera N

L'incognita (N) rappresenta il numero intero di cicli compresi fra il satellite e il ricevitore, e si definisce ambiguità iniziale.
(N) non è misurabile né desumibile.
La (N) è dipendente dal satellite ( è il satellite che si muove).


Per eseguire le misure di fase occorre che il ricevitore segua il satellite per più epoche.
Come per il codice abbiamo 4 incognite dipendenti dal ricevitore, alle quali si aggiunge una quinta incognita (N ) dipendente dal satellite e quindi non è possibile la soluzione in singola epoca.






Il satellite è in movimento e all'epoca (t1) 

si trova ad una distanza che sarà :   

all'epoca t2 la distanza sarà:               


Dove n(t1,t2) sono il numero dei cicli interi che variano in dipendenza della distanza satellite ricevitore. ( vedi figura sopra)

n(t1,t2) è una quantità intera misurabile dal ricevitore, purché non perda il contatto con il satellite.

L'ambiguità iniziale (N) rimane costante, fino all'interruzione del conteggio da parte del ricevitore ( ostacoli, o altri disturbi), questa interruzione prende il nome di Cicle slip.

Le operazioni descritte sia per il codice che per la fase vengono elaborate dal microprocessore interno del ricevitore e rese disponibili in uscita sotto forma di codici ASCII o codice binario proprietario del costruttore.



Il ricevitore GPS


I ricevitori con le nuove tecnologie sono diventati sempre più complessi e veloci, si trovano ricevitori da 30 – 40 euro, fino a cifre superiori ai 9.000 euro.

Descriverò quindi il funzionamento di un ricevitore essenziale, così composto:

  • Uno stadio ricevente a RF accordato su 1575,42 Mhz.
  • Un microprocessore.
  • Un modulo RTC molto stabile.
  • Una memoria con i dati dei satelliti delle costellazioni da utilizzare.
  • Una o più porte di comunicazione.

Si distinguono due fasi di lavoro:
  • Acquisizione.
  • Tracking.

L'acquisizione.
Nella fase iniziale il ricevitore abbassa la sensibilità e cerca per prima cosa i segnali dei satelliti più robusti, trovato il segnale stabile e utilizzabile di almeno tre satelliti il ricevitore passa alla fase successiva, questa fase prende il nome di avvio a freddo (Cold Start) e richiede circa un minuto.


Tracking.
In questa fase di tracciamento il ricevitore utilizza i segnali ricevuti, ed esegue la decifrazione dei codici ricavando le distanze dai satelliti.
Il calcolo della posizione che si svolge in questa fase è chiamato Fix.

Vediamo qui sotto quanto riportato nel data-sheet di un ricevitore (solo alcuni parametri):

Receiver type 50-channel ( numero dei canali )

GPS L1 C/A code (Costellazioni, frequenze ricevute e codici riconosciuti)

SBAS: WAAS, EGNOS ( Sistemi per l'aumento della precisione)

Time-To-First-Fix1 Cold Start 29 s ( tempo per il Fix dall'accensione)


Sensitivity Tracking & Navigation -162 dBm -158 dBm

(Le precisioni previste)
Horizontal position accuracy 2.5 m ( precisione SPS )
SBAS 2.0 m ( precisione con i servizi per l'aumento della precisione).
Velocity accuracy 0.1 m/s ( precisione sul calcolo della velocità)

( limiti operativi)
Operational Limits Dynamics 4 g
Altitude 50000 m
Velocity 500 m/s

Troverete indicate le porte di comunicazione ( seriali, USB ….) e troverete indicati i protocolli usati per input/output.

Protocollo NMEA0183
I dati in arrivo dal satellite vengono composti in stringhe.
I messaggi iniziano con $GP … terminano con il checksum di controllo e (CR Carriage Return) ed un Line Feed .

Qui sotto alcune sentences” del protocollo NMEA0183 .

$GPGGA = dati fissi sul sistema
$GPGLL = Latitudine, Longitudine
$GPGSA = Dop e satelliti attivi
$GPGSV = Satelliti acquisiti

$GPRMC = ( Recommended Minimum Specific Gnss Data)
Questa sentenza è quella che contiene i dati essenziali, se non occorrono ulteriori elaborazioni è possibile leggere anche questa sola stringa.

Ecco alcuni esempi di sentences:
$GPGSV,3,3,11,29,09,301,24,16,09,020,,36,,,*76
$GPGGA,092751.000,5321.6802,N,00630.3371,W,1,8,1.03,61.7,M,55.3,M,,*75
$GPRMC,092750.000,A,5321.6802,N,00630.3372,W,0.02,31.66,280511,,,*43
Il contenuto della stringa $GPRMC nell'esempio:

092750.000 = Informazione di tempo UTC ( ore, minuti, secondi, millesimi)
A = Dati validi se V = Dati non validi
5321.6802,N, = Latitudine ( Nord o Sud )
00630.3372,W, = Longitudine ( Est o West)
0.02 = velocità al suolo ( knot)
31.66, = gradi sessagesimali rispetto al meridiano 0.
280511 = Data UTC nel formato ggmmaa
seguono altri campi che possono anche essere vuoti ed infine
*43 = il codice di controllo preceduto da asterisco.

Nella manualistica si possono trovare tutti i dettagli delle sentenze usate.




Sistema di riferimento WGS 84

Il sistema di riferimento per il GPS è denominato WGS84.
Le “coordinate geocentriche” fanno riferimento ad una terna cartesiana, X, Y, Z con origine nel centro di massa della terra.


L'asse Z è diretto verso il polo Nord, l'asse X è l'intersezione del piano meridiano di Greenwich con il piano equatoriale passante per il centro di massa della terra, ed l'asse Y completa la terna ortogonale destrorsa .

A questo sistema è associato un ellissoide WGS84 con i seguenti parametri geometrici:

                a = 6378137             = 0,006694379990                f = 1/298,257223563

Nell'ellissoide:
a = semiasse maggiore o equatoriale.
b = semiasse minore o polare.



In funzione dei semiassi:

l'eccentricità           

lo schiacciamento  

vale anche              

semiasse polare           






Dato un sistema di riferimento con associato un ellissoide si definiscono le coordinate geodetiche del punto S.

= ( latidudine ) angolo fra la normale all'ellissoide del punto S,
               ed il piano equatoriale (X;Y).

= (longitudine rispetto a Greenwich) angolo antiorario fra il piano del meridiano per S, 
               ed  il piano meridiano di Greenwich origine.
         
   = (quota ellissoidica) distanza lungo la normale all'ellissoide fra la superficie 
                dell'ellissoide ed il punto S.

Le relazioni fra coordinate geodetiche e cartesiane di S sono:






dove la gran normale

Ho verificato questi passaggi realizzando un foglio elettronico con OpenOffice,
 e controllato con il programma  "Gps To Dat" di Alessio Mazzetti.


Il passaggio inverso da cartesiane a geodetiche è più complesso, qui riporto una soluzione ma in alcuni casi vengono adottate altre soluzioni.



Prima si calcolano i seguenti valori ausiliari:

distanza dall'asse polare        

seconda eccentricità              

angolo ausiliario               





Quindi si calcolano:

Longitudine             

Latitudine                


Quota ellissoidica     

Per applicazioni topografiche resta il problema di passare dalle coordinate geocentriche WGS84 alle coordinate sulle quali dobbiamo rappresentare il rilievo.
Questi calcoli possono comportare anche il cambio di Datum, sono effettuabili con software specialistico, Cartlab e Verto ( Igmi) sono due software utilizzabili per i sistemi Italiani.


Errori del Sistema GPS

Nel calcolo della pseudodistanza ( Sr) abbiamo utilizzato la la costante “c” =  velocità della luce nel vuoto,  ma una parte del percorso del segnale non viaggia nel vuoto.
 Vi sono poi altri errori da considerare.

Analizziamo meglio i principali errori del sistema:

  • Errori nei satelliti: Effemeridi trasmesse con errori.
  • Orologi dei satelliti con errori.
Questi errori vengono corretti dal controllo a terra ma ci sono sempre alcuni momenti nei quali la trasmissione è affetta da errore.


  • Errori nei ricevitori: Nei ricevitori si formano errori dovuti al rumore interno ed/o ritardi dovuti al software e all'elettronica.
  • Errori nella propagazione del segnale: Il segnale viaggia per gran parte nel vuoto, ma nella parte finale del percorso incontra l'atmosfera, e questo ha effetti diversi sulla propagazione del segnale.



  • L'errore ionosferico: fra 1000 Km e 100 Km di quota, la presenza di ioni ed elettroni liberi influenzano la propagazione del segnale GPS.
    Il centro di controllo trasmette ai satelliti la stima di questi errori calcolati secondo modelli matematici.
    A loro volta i satelliti inviano queste informazioni al ricevitore nei messaggi di navigazione.

  • Errore troposferico: Questo disturbo è dovuto agli strati più vicini compresi fra 40 Km di quota ed il suolo, nei primi 10 Km abbiamo anche la presenza di vapore d'acqua, nella stima di questo disturbo si considera la pressione, l'umidità relativa e la temperatura, si dovrà considerare anche l'elevazione dei satelliti. ( un satellite con elevazione di 10 gradi ha un disturbo 5 volte maggiore di un satellite allo zenit.)

  • Errori dovuti alla riflessione del segnale su ostacoli, questo errore è particolarmente insidioso nelle zone urbane. ( percorsi multipli o "multipath")


DOP

L'Accuratezza della posizione calcolata dipende dalla correzione o attenuazione degli errori visti sopra.
La geometria determinata dalla posizione dei satelliti produce una “diluizione” della precisione. (Precision Diluition).

Si definiscono:

GDOP = La degradazione Globale della precisione dovuta alla geometria dei satelliti.
PDOP = La degradazione nella determinazione della posizione.
TDOP = Degradazione nel tempo.

HDOP e VDOP = Le degradazioni orizzontali e verticali della posizione.
EDOP e NDOP = la degradazione Est e Nord.

L'entità del DOP è dovuta alla geometria (buona o cattiva) della costellazione di satelliti visibili nel momento della misura.

Se interessati alla spiegazione analitica per il calcolo del DOP potrete trovarla su
I fondamentali del GPS” di Ludovico Biagi.

Una spiegazione intuitiva si ha considerando che la determinazione della posizione è data dall'intersezione di sfere, se queste fossero delle figure puramente matematiche non avremmo questo fenomeno.

Il raggio della sfera nel nostro caso è una misura che ha una tolleranza (+ o –) intorno alla misura calcolata, questo conferisce alla sfera uno spessore ( paragonatelo alla buccia di un'arancia) e quindi quando si ha l'intersezione le due sfere anziché dare origine ad un punto si forma un volume.


Se consideriamo il solo piano avremo un'area.
La superficie di questa area è minore quando l'angolo d'intersezione è di 90°, quando l'angolo si fa più acuto la superficie aumenta.
Il DOP rappresenta la grandezza di questa superficie.

Il PDOP è il valore della degradazione geometrica della precisione nel calcolo della posizione, ed è espresso con un numero.
L'errore nella misura si determina moltiplicando il valore intrinseco per questo parametro.

Il DOP è prevedibile, in fase di progetto si può consultare gli almanacchi e verificare la configurazione della costellazione visibile, dal ricevitore all'orario della misura.

Esistono programmi che visualizzano la posizione dei satelliti nei giorni e nelle ore previste per le misure.
Con questo link potrete visualizzare la visibilità dei satelliti ed il DOP previsto per il giorno e l'ora della misura.

Per misure di precisione si cercheranno configurazioni favorevoli con GDOP più piccoli possibile.


Tecniche di misura con il GPS


Le misure “GPS” coinvolgono molti aspetti e caratteristiche diverse:
Coordinate assolute o relative, distanze, percorsi, precisione, tempo di misura.
Combinando opportunamente le molte opzioni disponibili si sceglie la modalità di misura più adatta per la nostra applicazione.
Qui sotto le opzioni disponibili da combinare.

Misure effettuate sulle osservabili : Codice, Fase con L1, Fase L1+L2.
Posizionamento : Assoluto, Relativo, Differenziale.
Ricevitore in modalità : Statica o Cinematica.
Calcolo ed elaborazione : Tempo reale o Post – elaborazione.
Costellazioni utilizzate:  Gps, Glonass, Galileo

Vediamo alcune di queste combinazioni:



Posizionamento Assoluto Real-time con misure di Codice.


Si usa un solo ricevitore.
Si effettua il calcolo delle coordinate mediante le sole osservazioni ai satelliti.
( In realtà il calcolo viene eseguito all'interno del ricevitore dal processore che elabora i dati ricevuti e li rende disponibili in formato NMEA o in formato proprietario del costruttore).
La soluzione avviene in singola epoca con la soluzione delle 4 incognite, osservando almeno 4 satelliti, si utilizzano le sole misure di codice C/A oppure P.
E' utilizzabile anche con ricevitore in movimento “Cinematico”.
Accuratezza circa 5-10 m.
Utilizzato per Rilievi in piccola scala, Trekking, Navigazione, Gis, ed in altre applicazioni dove è sufficiente la precisione raggiungibile.
Si può effettuare con ricevitori economici.


Posizionamento Assoluto Statico con misure di Codice e Fase.

Si usa un solo ricevitore.

Precise Point Positioning (PPP)
Utilizzato in Geodesia e Geofisica.
Le osservazioni devono prolungarsi per più epoche.
Il tempo di stazionamento può variare da un minimo di 30 minuti, fino ad alcune ore.
Precisione dipendente dal tipo di ricevitore ( mono o doppia freq.)
Calcolo con Post-elaborazione.
Accuratezza raggiungibile 1-2 cm.
Questo metodo non è attualmente molto utilizzato.



Posizionamento Relativo, misure di Codice o Fase con Post-elaborazione.

Il Posizionamento relativo si esegue con 2 o più ricevitori, si determina la posizione relativa fra i due ricevitori per differenza di coordinate ( baseline).
Si possono utilizzare ricevitori con Codice , Fase L1 o meglio con L1 + L2.
Occorre che i ricevitori vedano gli stessi satelliti.
Sessioni di misura dai 15 minuti ad oltre 60 minuti.
Viene eseguito il calcolo con Doppie Differenze (DD)  (per approfondimento consultare“I fondamentali del gps" di Ludovico Biagi.) 

Statico per basi maggiori di 20Km.
Statico Rapido per basi minori di  20 Km.
Accuratezza circa 1 cm. ( con fasi )
Utilizzato per Cartografia, Catasto, Reti, monitoraggio movimenti franosi.
E' possibile anche l'utilizzo cinematico con un ricevitore fisso ed uno mobile.


Posizionamento Differenziale.

Il posizionamento differenziale si effettua con Un ricevitore mobile ( rover) che oltre a ricevere i segnali dalla costellazione di satelliti riceve un messaggio di correzione da una stazione fissa (base) posta in posizione di coordinate note con precisione.

Sono possibili:

Rover che utilizza il solo Codice + la correzione dalla base.
In questo caso abbiamo: Tempo reale, possibilità cinematica.
Accuratezza migliore di 1m.
Si può utilizzare per rilievi a piccola e media scala, per GIS, navigazione di precisione.



Oppure:
Rover che utilizza Codice + Fasi (L1+L2)
Si utilizza per Topografia, Catasto, tracciamento, rilievi di dettaglio.
Accuratezza migliore di 5 cm.


RTK 
utilizzando base che trasmette al rover i messaggi di correzione , in tempo reale.
Preferibilmente per il posizionamento differenziale RTK si utilizza una coppia di
ricevitori geodetici a doppia frequenza ( L1+L2), collegati tra di loro mediante radio-modem.


NRTK quando la correzione viene trasmessa da una rete, tempo reale.
Nel caso di NRTK si usa un ricevitore geodetico a doppia frequenza,
utilizzato come rover, e un modem telefonico GSM/GPRS, che invia alla rete la posizione in formato NMEA ed acquisisce la correzione dalla rete in formato RTCM.

Oppure si utilizza un collegamento internet le correzioni in questo caso vengono fornite con il protocollo (NTRIP) con il quale vengono inviati i messaggi RTCM di correzione.

Un'ulteriore possibilità è quella di utilizzare il sistema di Posizionamento differenziale utilizzando ricevitori con Codice + Fase ( in questo caso L1), la precisione è minore ed i tempi per ottenere la posizione sono maggiori.
(Vedremo un'applicazione di questo caso ).

Per una trattazione teorica dei posizionamenti Relativi e  Differenziali occorre far riferimento a quanto pubblicato sull'argomento, vedi bibliografia.



Interoperabilità

E' la possibilità di un ricevitore di elaborare i segnali provenienti da più costellazioni.
Questa caratteristica renderà sempre più precisa e veloce la determinazione del punto misurato.
Il solo Gps rende disponibili in ogni parte del globo più di 4 satelliti visibili, il sistema Glonass ne rende disponibili almeno 5, il sistema Galileo renderà visibili almeno altri 5 satelliti.
Le frequenze disponibili aumentano, ed aumentano i codici trasmessi.
I nuovi ricevitori dovranno quindi avere molti canali ed essere predisposti per utilizzare i codici delle diverse costellazioni.
Il GPS e Galileo saranno più facilmente integrabili in quanto utilizzano lo stesso DATUM e le scelte progettuali di Galileo sono state fatte pensando all'integrazione con il GPS.
 Il sistema Galileo inoltre rende disponibili segnali ed allarmi alla utenza nel caso che l'accuratezza della posizione sia inferiore alle specifiche (integrity), questa funzione permette usi civili altrimenti non realizzabili.

Reti e stazioni permanenti


Le reti GNSS statiche o “passive” sono reti geodetiche simili a quelle tradizionali, sono costituite
da punti materializzati, con la differenza che i punti sono scelti in funzione dell’accessibilità strumento gps e visibilità dei satelliti.
La rete statica GNSS fondamentale in Italia è la IGM95.
Le monografie dei vertici riportano le coordinate φ, ω, h nel datum ETRF89, praticamente coincidente con il WGS84, e nel precedente datum nazionale Roma 40.
A questa rete si sono agganciate reti regionali di raffittimento, Lombardia, Umbria ed altre regioni Italiane.
Con l'ausilio di queste reti statiche si effettua il posizionamento con il metodo relativo e post-elaborazione In questo caso si utilizzano due ricevitori determinando le baselines di collegamento alla rete.
Accuratezza raggiungibile circa 2-3 cm.

Le reti statiche si possono utilizzare in tempo reale con la tecnica di posizionamento RTK ( base + rover) con due ricevitori collegati via modem o GSM.
Il posizionamento Differenziale risulta molto produttivo ed adatto per rilievi topografici, Catasto, ecc...
La problematica principale è quella di dover utilizzare due ricevitori ( base e rover) che devono comunicare fra loro, con maggiori costi iniziali e la necessità di due operatori.
Per ovviare a questi problemi, si sono diffusi sul territorio servizi che forniscono dati da utilizzare in sostituzione della base.
Con l'acquisto di un solo rover ed un abbonamento al servizio che fornisce i dati è possibile effettuare posizionamento differenziale con costi inferiori ed eventualmente con un solo operatore.
Il rover dovrà essere in grado di collegarsi con il servizio che fornisce i dati.

Reti GNSS dinamiche.

Le Reti Dinamiche sono costituite da Stazioni GNSS Permanenti.
La stazione tipo è composta da antenna geodetica, ricevitore GNSS in grado di ricevere più costellazioni e L1+L2, un server con collegamento di rete, eventuale stazione meteo, la stazione rimane in funzione 24 h al giorno per tutto l'anno.
I dati acquisiti da ogni stazione vengono inviati ad un centro di controllo archiviati, e resi disponibili all'utenza, in varie modalità:

Per post-elaborazione :
Files RINEX (compattati, e con diverse opzioni di campionamento)
Vengono resi disponibili anche file di navigazione, ed altro.
Spesso sono disponibili le coordinate delle stazioni su datum diversi .

Tempo reale:

- Correzioni DGPS (solo codice)
- Correzioni NRTK (codice + fase) con collegamento GSM o Internet (Ntrip).


Prove pratiche con ricevitori "GPS"

Dopo gli accenni al funzionamento teorico del sistema, procediamo con alcune prove ed esperimenti.
 Vediamo di realizzare "Il nostro primo Gps".
Inizio con il più semplice progetto:
Gps posizionamento assoluto con misure di codice.
Materiale occorrente:
_ Arduino UNO
_ Display LCD io ho usato 20x2 (si può utilizzare anche un 16 x 2 o altro).
_ ricevitore gps ublox 6M ( io ho utilizzato un GY-GPS6MV2 con antenna )


_ materiale vario.

Con questo progetto si visualizzano le coordinate del punto, che vengono aggiornate ogni tre secondi.

Ho montato il ricevitore su basetta, realizzando qualcosa di simile ad uno shield, il display LCD utilizza i pin da D2 a D7 e si lasciano liberi i due D0 e D1 della porta seriale per eventuali altri usi.
Si utilizzano i pin digitali D8 = RX, e D9 = TX, per la softserial, questi verranno utilizzati per la comunicazione dei dati NMEA dal ricevitore ad Arduino.
Ho inserito un partitore sul pin digitale che da Arduino invia i segnale al ricevitore, questo per proteggere il ricevitore.
Questa disposizione del display (D2-D7), servirà poi per avere disponibili i pin per la SD shield, che useremo nel prossimo progettino.

Ecco il semplice schema di collegamento:




Si possono utilizzare anche altri ricevitori simili la cosa da tenere in attenzione sono le tensioni di lavoro ( 5 V o 3,3 V), ed anche il valore dei livelli logici.
Particolare attenzione a quanto si invia al pin RX del ricevitore.
Vi ricordo che il pin TX del GPS si collegherà al pin RX di Arduino, e il pin RX del GPS riceverà il segnale dal TX di Arduino.

ecco qui sotto lo sketch per Arduino, i commenti dovrebbero spiegare tutti i passaggi.

[code]
/*
************************************************
*****   Sergio & Adriano Prenleloup        *****
************************************************
*****   GPS CON LCD UBLOX NEO 6M           *****
*****   Versione CON “TinyGPSPlus”         *****
*****   LIBRERIA DI  Mikal Hart            *****
*****  nome file =  gps-plus-009
*****
*****   ------ ver. 1.09 DEL 20/6/2015     *****
************************************************
**  ********************************************* ***
**  Versione semplice solo coordinate             ***
** SUL BLOG  http://avventurarduino.blogspot.it

/*

/* Circuito lcd   -> Arduino
 * LCD GND  -1-   -> GND
 * LCD VCC  -2-   -> 5V
 * LCD V0   -3-   ->  CENTRALE TRIMMER 20K
 * LCD RS   -4-   -> D2 marrone  Pin 2
 * LCD R/W  -5-   -> GND
 * LCD En   -6-   -> D3 rosso    Pin 3
 * LCD DB0  ( nc )
 * LCD DB1  ( nc )
 * LCD DB2  ( nc )
 * LCD DB3  ( nc )
 * LCD DB4   -11-  -> D4 arancio Pin 4
 * LCD DB5   -12-  -> D5 giallo  Pin 5
 * LCD DB6   -13-  -> D6 verde   Pin 6
 * LCD DB7   -14-  -> D7 blu     Pin 7
 * LCD LED+  -15-  -> 5V
 * LCD LED-  -16-  -> GND

 *

 */
 /*
   Il pin RX Arduino va collegato al pin TX GPS.
   Il pin TX Arduino va collegato al pin RX GPS.
   (Ho inserito partitore resistivo )
 
*/

// LIBRERIE
// LiquidCrystal.h - libreria Arduino per lcd
// SoftwareSerial.h - libreria Arduino per seriale software
// TinyGPS++.h - libreria che intrpreta le stringhe NMEA
// questa è l'evoluzione della TinyGPS - vedi il sito:
// http://arduiniana.org/libraries/tinygpsplus/
//------------------------------------------------------

#include  "LiquidCrystal.h"
#include  "TinyGPS++.h "
#include   "SoftwareSerial.h"

// pin digitali utilizzati per il display LCD
// questa disposizione lascia liberi i pin per la SD
// da implementare in altra versione
// rimangono liberi anche i pin 1 e 0 porta seriale
//--------------------------------------------------

#define LCD_RS_PIN 2
#define LCD_EN_PIN 3
#define LCD_D4_PIN 4
#define LCD_D5_PIN 5
#define LCD_D6_PIN 6
#define LCD_D7_PIN 7

float latitudine = 0;
float longitudine = 0;

long int lastTimeDisplay = 0; // per controllo tempo di aggiornamento display

// Inizializa la libreria per la gestione dell'LCD
// LiquidCrystal(rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(LCD_RS_PIN, LCD_EN_PIN, LCD_D4_PIN, LCD_D5_PIN, LCD_D6_PIN, LCD_D7_PIN);

static const int RXPin = 8, TXPin = 9;  // questi sono i pin della soft serial
static const uint32_t GPSBaud = 9600; // modificato da 4800 per ublok 6m

// The TinyGPS++ object // istanza a TinyGPS++
TinyGPSPlus gps;

// pin utilizzati dalla Soft-Serial
SoftwareSerial ss(RXPin, TXPin);

void setup()
{

  ss.begin(GPSBaud);
  lcd.begin(20, 2);
  lcd.clear();
  lcd.print("Ricerca satelliti ");
  delay (2000);
  lastTimeDisplay = millis();
}

void loop()
{
  // Lo sketch legge le sentenze NMEA e se valide mostra le coordinate.
  // la struttura è predisposta per leggere e/o mostrare
  // anche altri dati messi a disposizione dalla libreria vedi il link.
  //------------------------------------------------------------------
  while (ss.available() > 0)
   {
//---- continua a leggere ed aggiornare i dati ricevuti
     if (gps.encode(ss.read()))
      {
       raccoltaDati();
      }
 //---- mostra le coordinate aggiornate ogni tre secondi
           if (millis() - lastTimeDisplay > 3000)
                 {
                   displayInfo();
                   lastTimeDisplay = millis();
                 }
   }
 //----- se non riceve dati invia messaggio e si blocca
     if (millis() > 5000 && gps.charsProcessed() < 10)
      {
        lcd.print("No GPS detected: check wiring.");
        while(true);
      }
}
//*******************************
// END - loop -
//********************************

void raccoltaDati()
// se ci sono dati validi vengono sostituiti nelle variabili
{

  if (gps.location.isValid())
  {
 
    latitudine = (gps.location.lat());
 
    longitudine = (gps.location.lng());
 
  }
 }
// fine raccolta dati

//-----------------------------
void displayInfo()
{
// vengono mostrati sul display i dati aggiornati
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Lat  = ");
    lcd.print (latitudine,6);
    lcd.setCursor(0, 1);
    lcd.print("Long = ");
    lcd.print(longitudine,6);

 }
//  fine display




[/code]


La libreria utilizzata è la TinyGPS++ più semplice da usare della TinyGPS, in ogni caso con pochissime modifiche è possibile cambiarla.



Il Gps nella scatola!



Questo semplicissimo progetto è alla portata di tutti ma per la verità  non ha molte applicazioni pratiche.
Nei prossimi progetti in corso di studio vedrò di realizzare un oggetto più utile.


2° Progetto GPS

Utilizzerò parte del materiale già visto ma cercando di realizzare un ricevitore più completo.

Gps posizionamento assoluto con misure di codice con registrazione su SD card delle coordinate calcolate.

Materiale occorrente:
_ Arduino UNO
_ Display LCD io ho usato 20x2 (si può utilizzare anche un 16 x 2 o altro apportando le opportune modifiche).
_ ricevitore gps ublox 6M ( io ho utilizzato un GY-GPS6MV2 con antenna )
_ SD Shield (Itead Studio) con sd card.
_ 2 Pulsanti
_ Materiale vario ( vedi schema)


Con questo progetto si visualizzano le coordinate del punto, che vengono aggiornate ogni tre secondi e visualizzate sul display ( esattamente come il precedente progetto), le coordinate vengono scritte sul file della SD card.
E' possibile mettere in pausa la registrazione, e proseguirla in altro momento.

Al momento dell'accensione viene inizializzata la SD card e quindi il display propone la scelta fra leggere il gps e registrare le coordinate sulla SD, oppure trasferire le coordinate già registrate sul file sul PC.
La scelta è effettuata attraverso la pressione dei tasti aggiunti ( a Sinistra LCD, a Destra LCD).

Ho montato il ricevitore su basetta, realizzando qualcosa di simile ad uno shield, il display LCD utilizza i pin da D2 a D7 e si lasciano liberi i due D0 e D1 della porta seriale per eventuali altri usi.
Si utilizzano i pin digitali D8 = RX, e D9 = TX, per la softserial, questi verranno utilizzati per la comunicazione dei dati NMEA dal ricevitore ad Arduino.
Ho inserito un partitore sul pin digitale che da Arduino invia i segnale al ricevitore, questo per proteggere il ricevitore.
Questa disposizione del display (D2-D7).
La Shield SD utilizza i pin :

//---- ITEAD STUDIO - SD Shield
 static const int chipSelect = 10;    // pin in output CS
//Pin Arduino --> Pin SD Shield
// 5 V        --> 3,3 V
// GND        --> GND
// D13        --> SD_CLK
// D12        --> SD_OUT
// D11        --> SD_IM
// D10        --> SD_CS  (chipSelect)
//-------------------------------------------------------

I pin digitali sono quindi tutti utilizzati ( lascio volutamente non utilizzati il pin 0, e pin 1 della seriale), per i pulsanti quindi utilizzo in modo digitale A0 ed A1 ( 14 e 15).

Ecco il semplice schema di collegamento:




Lo schema è quello del precedente esperimento, con l'aggiunta di due pulsanti e relative resistenze da 10k, e la SD Shield per memorizzare i dati ricevuti.

Dopo l'inizializzazione della SD sul display appare la richiesta di scelta :

SD-READ...GPS-WRITE

Premendo il tasto Destro START si attiva il (GPS-WRITE) che scriverà leletture sul file.
Sul display appaiono le coordinate che si aggiornano ogni 3 secondi e vengono scritte nella SD.
Quando si desidera si può sospendere la registrazione con la pressione del tasto Destro.
Con nuova pressione del tasto destro si riprende la registrazione.... così via fino a fine lavoro.
Finita la registrazione con Arduino spento  si collega la USB e si torna al menù inziale in questo caso si sceglie  ( SD-READ ) tasto sinistro, e si scaricano i dati dalla SD.
Finita la lettura è possibile cancellare il file o conservarlo.
Un successivo lavoro si accoda.

Lo sketch proposto pur essendo molto semplice utilizza quasi tutte le risorse di memoria di Arduino.
In fase di compilazione si ha questo messaggio di avviso:
"Low memory available, stability problems may occur."
Non ho riscontrato problemi ma la cosa impedisce di aggiungere migliorie o altro.
Il fatto probabilmente è dovuto all'uso delle librerie che si richiamano all'inizio dello sketch.
Come abbiamo visto in questa configurazione Arduino raggiunge i suoi limiti sia come Pin utilizzati, sia come Memoria utilizzata.

Riporto solo la parte centrale dello sketch, con la quale si seleziona tramite la pressione del relativo pulsante la funzione desiderata.

void loop()
{              
                   //("SD-READ...GPS-WRITE");
  menu_Inizio();  // si propone la scelta se lettura/scrittura gps
                  // oppure lettura sd e trasferimento su pc
  attesaPulsante(); // si attende la scelta

   if (stato_switch[0]==1)//scelta gps-write //tasto Destro
     {
     
       while (true)//rimane qui
       {
     
        //************************************************
        GPS_Mio(); //legge gps e scrive su sd
        //************************************************
         stato_bottoni[0]= 0;
         stato_switch[0]=0; // rimetto a 0 lo stato pulsante
        controllaPulsante();   // si controlla il tasto Destro
                               // se premuto va in pausa/stop
        if (stato_switch[0]==1)//pausa/stop
        {
         lcd.clear();
         lcd.setCursor(0, 0);
         lcd.print("PAUSA /  STOP");
         lcd.setCursor(0, 1);
         lcd.print("CONTINUA premi -->");
       
         stato_bottoni[0]= 0;
         stato_switch[0]=0; // rimetto a 0 lo stato pulsante
       
          attesaPulsante();  // rimane in attesa pulsante
       
   
 
        }                   // se premuto un pulsante riparte
                            // legge gps e scrive su sd
     
       }//while (loop)
      }// if scelta iniziale

  // attesaPulsante();       // si attende scelta
  else if (stato_switch[1]==1)
       {
       //*******************************************
       //  Trasferimento su Pc di quanto contenuto nella SD
       //*******************************************
       sdRead();   // si è scelto lettura sd e trasferimento su pc
        deleteFile(); //si potrà scegliere se cancellare il file sulla sd    
       }// else if
} //end loop  

//********************************

Lo sketch è ampiamente commentato.

Qui per scaricare lo sketch.

Qui sotto uno stralcio dei dati registrati sulla SD ( Latitudine , Longitudine)

   ***   ***  *** ***
 43.852455 11.524364
 43.852417 11.524331
 43.852379 11.524309
 43.852345 11.524283
 43.852314 11.524264
 43.852310 11.524259
 43.852310 11.524255
 43.852291 11.524247
   ***   ***   ***   ***
Con opportune modifiche si possono registrare altri dati e/o cambiare il formato di presentazione.
Io ho registrato la coppia di coordinate ogni 3 secondi, ma si può variare la cadenza di registrazione.

Questo secondo progetto è sicuramente più completo del primo, ma ancora da migliorare.



****************
****************
****************

Prova del ricevitore U-blox Neo 7P

Con questa prova cerco di verificare la possibilità di utilizzare un ricevitore relativamente economico per ottenere dati paragonabili a ricevitori professionali.

Materiale utilizzato:

Ricevitore U-blox Neo 7P .
Io ho utilizzato un modulo USB  con NEO7P.
E' un modulo economico molto utile per valutare il ricevitore della Ublox. (Fornito da Michele Bavaro.)



Un'antenna economica con un supporto autocostruito
Un cavalletto con supporto di base per strumento. 
Un PC portatile con connessione internet.





Questo è lo schema generale della prova.






La prima cosa da fare è scaricare e installare RTKLIB sul pc ( vedi link nella bibliografia).

Collegare antenna e ricevitore USB al pc.

Controllare che vi sia il collegamento alla rete per ricevere le correzioni RTCM.

Per utilizzare questa modalità occorre avere l'accesso ad un server della propria zona.
Si dovranno immettere l'indirizzo internet del provider, username e password di accesso al servizio.


Quanto segue è solo indicativo. Leggete attentamente il  manuale dell'RTKLIB, vi troverete tutte le schermate e le possibili opzioni per configurare la vostra sessione di rilievo.
In particolar modo vi consiglio di leggere i paragrafi da 3.1 fino a 3.8.
Nella appendice E del manuale troverete approfondimenti teorici sui metodi di calcolo utilizzati nella libreria.
********************

Predisposto il ricevitore ed il pc possiamo procedere.

Lanciare RTKNAVI , premere su "I" e inserire le modalità di input.
Selezionate Rover e Base Station, su Opt indicare la porta seriale ed il bit rate.
Poi premendo su "O" indicare il file su cui si scriveranno i dati calcolati.
Premendo su "L" si indica il file per il log.






Definiti input e output si dovranno scegliere alcune opzioni sulla modalità di rilievo che vogliamo eseguire.

In questo caso si esegue un rilievo statico, il Rover in pratica rimane in posizione fino a quando non si ottiene il FIX.



Prima dello Start premere su "Option" poi su Setting 1 selezionate :
Static
L1
Elevation Mask  (10 o 15 )

Spuntare GPS e RAIM




su Setting 2 selezionate
Continuos

nel Min Ratio lasciate inizialmente il valore di default (3), successivamente potrete valutare di aumentarlo.





Ora potete tornare nella finestra iniziale e premere Start.

Il programma si avvia e vedrete le colonnine del segnale dei satelliti prima del Rover poi della Base.

In prima istanza vedrete la posizione "SINGLE"
Successivamente vedrete che diventa "FLOT" 
 In questa fase il programma elabora i dati rilevati dal Rover e Base alla ricerca del "FIX"

Nell'immagine qui sotto si vedono alcune delle finestre prodotte da RTKNAVI che fa parte della libreria  RTKLIB.

Nella finestra più grande in alto si vede:
A sinistra la "soluzione ottenuta"  FIX .
Sotto le coordinate Latitudine, N, Longitudine E, Quota.

Nei due riquadri si possono vedere le colonnine che rappresentano il segnale ricevuto dai satelliti, Rover in alto e Base in basso.

I satelliti utili sono 7 ( in comune fra base e rover)

Nella finestra in basso a sinistra si vede il monitor delle correzioni RTCM inviate dalla base tramite il collegamento internet (NTRIP).

Nella finestra in basso a destra viene visualizzato graficamente la posizione delle coordinate calcolate, si può notare che il reticolo è con una griglia con quadrati di 5 cm.

Il programma genera inoltre i files di output per successive analisi ed / o elaborazioni.




L'esito positivo di questa prima prova mi spinge a continuare nella sperimentazione e nell'approfondimento di questo studio.

Aggiornerò questo post dedicato al GPS via via che procedo nelle prove.

Sono in attesa di nuovo materiale da utilizzare..... continua.

***************
***************
***************


Questo post è in costruzione, se interessati ritornate per leggere ulteriori sviluppi, oppure registratevi per ricevere notifica automatica degli aggiornamenti.

Sono graditi commenti e correzioni.

E' possibile lasciare commenti anche senza registrazione Vi chiedo solo di lasciare almeno un nome di riferimento.

Grazie!

****************
****************
****************


Bibliografia

_ Ludovico Biagi, "I fondamentali del GPS", Como, Politecnico di Milano.
Volume disponibile in formato digitale all’indirizzo
http://geomatica.como.polimi.it/workbooks/n8/list.php

_ Alberto Cina, "Dal GPS al GNSS (Global Navigation Satellite System)", Celid.
_ Alberto Cina, "GPS Principi, modalità e tecniche di posizionamento",  Celid.

_ Davide Scullino, "Tecnologia e apparati GPS" ( ElettronicaIn )

_ Francesco Paolo Pacillo CRISEL S.R.L. " Il GPS per il mapping GIS" Roma, Crisel.

Volume disponibile anche in formato digitale all'indirizzo:
http://www.trafficlab.eu/index.php 

_ RTKLIB  Libreria per utilizzare i dati gps, vedi il link:  http://www.rtklib.com/

_  Programma "Gps To Dat" di Alessio Mazzetti  http://www.studiomazzetti.com/

20 commenti:

  1. Trovo molto interessante l'esperimento! Ti scrivo in privato anche perchè sto raccogliendo altri dati per un articolo che avevo predisposto la primavera scorsa per GalileoNet che tratta la precisione centimetrica con GPS contenuti negli smarthphone ed una ricerca fatta dagli scienziati dell'Università del Texas che hanno realizzato il prototipo per ottenere misurazione con precisioni dell'ordine centimetrico con hardware low-cost. A presto Sergio!!

    RispondiElimina
    Risposte
    1. Bene aspetto tue notizie.
      Sergio

      Elimina
    2. scusi avrei bisogno di un gps precisione centimetrica low cost.
      a chi mi devo rivolgere????

      Elimina
    3. L'articolo cerca di esaminare la possibilità di avere precisioni notevoli utilizzando "GPS-economici".
      Per ottenere precisione centimetrica attualmente vengono utilizzati gps professionali con doppia frequenza di note marche ( TRIMBLE TOPCON LEICA ecc...) che li vendono a prezzi che possono arrivare anche a 15000 euro.
      Tutto dipende dalla configurazione che si acquista (base + rover ) o solo il rover.
      Chiaramente con solo il rover si dovrà stipulare un abbonamento per utilizzare le correzioni dalla rete di nostro interesse....
      Attualmente non mi risultano in commercio gps con precisione centimetrica con costi contenuti.
      Importante sarebbe capire in che modo e per quale scopo devi utilizzare il gps.
      Se per esempio ti occorre verificare una distanza fra due posizioni con la rtklib potresti utilizzare il sistema della post elaborazione utilizzando due gps posti agli estremi con tempi di rilievo medio-lunghi si possono ottenere precisioni centimetriche anche con apparecchi mono-frequenza.
      Scrivi dettagliando meglio l'utilizzo del gps e cercherò di consigliarti per quanto posso.
      Saluti Sergio

      Elimina
  2. Ottimo articolo, ben documentato!

    RispondiElimina
    Risposte
    1. Ti ringrazio per il commento, presto aggiungerò altre prove.
      Sergio

      Elimina
  3. Ciao Sergio bell'avventura ...
    e bel esperimento ti saluto con un poesia...

    Bianco & Nero
    Scacchi
    Ajedrez
    di Jorge Luis Borges
    I
    Nell'angolo severo i giocatori
    muovono i lenti pezzi. La scacchiera
    li avvince fino all'alba al duro campo
    dove si stanno odiando due colori.
    Su di esso irradiano rigori magici
    le forme: torre omerica, regina
    armata, estremo re, cavallo lieve,
    pedoni battaglieri, obliquo alfiere.
    Quando si lasceranno i due rivali,
    quando il tempo oramai li avrà finiti,
    il rito certo non sarà concluso.
    In Oriente si accese questa guerra
    che adesso ha il mondo intero per teatro.
    Come l'altro, è infinito questo gioco.
    II
    Debole re, pedone scaltro, indomita
    regina, sghembo alfiere, torre eretta
    sul bianco e nero del tracciato cercano
    e sferrano la loro lotta ramata.
    Non sanno che il fortuito giocatore
    che li muove ne domina la sorte,
    non sanno che un rigore adamantino
    ne soggioga l'arbitrio e la fortuna.
    Ma il giocatore è anch'esso prigioniero
    (Omar lo dice) d'una sua scacchiera
    fatta di nere notti e bianchi giorni.
    Dio muove il giocatore, e questi il pezzo.
    Che dio dietro di Dio la trama inizia
    di tempo e sogno e polvere e agonie?

    RispondiElimina
  4. Ciao! Grazie per la poesia.
    I commenti vengono pubblicati solo dopo che li ho letti, e li leggo prima possibile ma a volte passano alcuni giorni...
    Un saluto a tutti Voi.
    Sergio

    RispondiElimina
  5. Salve
    Inanzitutto complimenti per il lavoro svolto e il blog!
    Sto cercando di sviluppare anche io una soluzione simile per rapidi controlli topografici. Ha avuto modo di contrlare la precisione del punto rilevato confrontandolo con le coordinate fornite da un gps topografico "commerciale" o con le coordinate di un punto fiduciale?

    RispondiElimina
    Risposte
    1. Grazie per il commento.
      Si ho avuto modo di controllare un punto determinato con Gps doppia freq, facendo stazione sul chiodo lasciato, i risultati sono stati interessanti ma non ho pubblicato perchè vorrei controllare anche altri punti.
      In questo mese penso di aver tempo per effettuare altre misure, nel frattempo ho determinato con attrezzatura gps professionale Leica due punti ai quali ho comodità di accesso e sui quali effettuerò prove ulteriori.
      Nel frattempo mi è arrivato altro materiale gps e farò le prove anche con quello.
      Credo che tra circa un mese sarò in grado di pubblicare un'aggiornamento.
      Cordiali saluti
      Sergio

      Elimina
  6. Ciao mi chiamo Francesco e penso che questo sia davvero uno studio all'altezza delle più complete tesi di laurea. Molti docenti universitari avranno appreso tanto dalla lettura di questo articolo. Complimenti

    RispondiElimina
  7. Sergio non riesco ad iscrivermi. Vorrei contattarti in privato per illustrarti una mia idea. Come posso fare?

    RispondiElimina
    Risposte
    1. Grazie per i commenti, il blog è basato su quanto offerto da google puoi diventare lettore fisso e credo che tu riceverai da google avviso su nuovi post.
      Puoi anche mettere la spunta su Inviami notifiche sotto ai messaggi.
      Saluti

      Elimina
    2. Per quanto riguarda i contatti privati non so dirti. Ho provato a chiedere sul forum di assistenza ma non sono riuscito a risolvere.
      L'unico modo e che tu pubblichi un commento dove mi dai una tua email e li ti posso contattare ( magari puoi usare una mail per questo uso ).
      Io non trovo altro mezzo su questa piattaforma, potrei trovare con altre piattaforme dove potrei inserire un modulo per i contatti, ma qui non ci sono riuscito.
      In ogni caso proverò a cercare di rendere possibile questa possibilità in quanto ci sono state più richieste di contatto privato.
      Un saluto Sergio

      Elimina
  8. Ottimo articolo. Anchio avrei necessità di contattarti. Come possso fare? Grazie Angelo

    RispondiElimina
    Risposte
    1. Grazie per il commento.

      Per quanto riguarda i contatti privati non so dirti. Ho provato a chiedere sul forum di assistenza ma non sono riuscito a risolvere.
      L'unico modo e che tu pubblichi un commento dove mi dai una tua email e li ti posso contattare ( magari puoi usare una mail per questo uso ).
      Io non trovo altro mezzo su questa piattaforma, potrei trovare con altre piattaforme dove potrei inserire un modulo per i contatti, ma qui non ci sono riuscito.
      In ogni caso proverò a cercare di rendere possibile questa possibilità in quanto ci sono state più richieste di contatto privato.
      Un saluto Sergio

      Elimina
  9. Credo che prenderò spunto per realizzare il mio ricevitore. Come ti contatto?

    RispondiElimina
    Risposte
    1. Grazie per il commento.

      Per quanto riguarda i contatti privati non so dirti. Ho provato a chiedere sul forum di assistenza ma non sono riuscito a risolvere.
      L'unico modo e che tu pubblichi un commento dove mi dai una tua email e li ti posso contattare ( magari puoi usare una mail per questo uso ).
      Io non trovo altro mezzo su questa piattaforma, potrei trovare con altre piattaforme dove potrei inserire un modulo per i contatti, ma qui non ci sono riuscito.
      In ogni caso proverò a cercare di rendere possibile questa possibilità in quanto ci sono state più richieste di contatto privato.
      Un saluto Sergio

      Elimina
  10. Ciao Sergio
    nell'uso della RTKLIB hai menzionato la necessita' della correzione RTCM ma nella configurazione dell'Input (Rover+Base Station) non hai menzionato (3) Correction.
    Per avere una precisione centimetrica serve la Correction ? Grazie
    Giorgio

    RispondiElimina
  11. Grazie per il commento.
    Ho utilizzato per la prova una configurazione Base - Rover ma in realtà la Base è solo virtuale ed rappresentata dai dati RTCM inviati con il collegamento internet ( in questo caso si parla di NTRIP).
    Come pui vedere si tratta della determinazione di un punto in modo differenziale un ricevitore posto su coordinate note (Base) ed il rover che riceve i satelliti, i dati vengono inviati alla libreria RTKLIB che esegue i calcoli fino a trovare il FIX del rover. La base è su coordinate note e precise e quindi si ha anche sul rover la determinazione di un punto fisso di precisione centimetrica.
    Questo dipende dalla rete alla quale ci si collega nel mio caso il server della rete che raccoglie i dati di molte stazioni base su punti noti elabora una stazione fittizia e quindi mi invia i dati dei satelliti.
    Puoi infatti vedere nella schermata che ci sono in comune i satelliti 16,18,21,22,26,27,29 mentre il mio rover riceve il segnale anche da 8 e 31 che in questo caso vengono esclusi dal calcolo (colore grigio).
    Si selezione 3 correction quando si ha a disposizione le sole correzioni.
    Questa modalità essendo piu rapida è utilizzata per il rilievo dinamico o veloce.
    preferibilmente occorre avere altra strumentazione

    Rover che utilizza Codice + Fasi (L1+L2)
    Si utilizza per Topografia, Catasto, tracciamento, rilievi di dettaglio.
    Accuratezza migliore di 5 cm.


    RTK
    utilizzando base che trasmette al rover i messaggi di correzione , in tempo reale.
    Preferibilmente per il posizionamento differenziale RTK si utilizza una coppia di
    ricevitori geodetici a doppia frequenza ( L1+L2), collegati tra di loro mediante radio-modem.
    Spero di aver chiarito il problema proverò a fare altre prove non ho in questo momento attivo il collegamento con la rete e quindi...
    Ti ringrazio e ti saluto cordialmente.
    Sergio

    RispondiElimina

Vi ringrazio per la lettura e vi invito al prossimo post.
Se il post vi è stato utile, vi è piaciuto oppure no, scrivete un commento.

Un saluto a tutti.
Sergio

Copyright - Condizioni d’uso - Disclaimer
http://avventurarduino.blogspot.it/2012/10/inizia-lavventura-arduino-12-settembre.html