Sviluppo di un Sistema per tracciamento di un Veicolo mediante GPS

Transcript

Sviluppo di un Sistema per tracciamento di un Veicolo mediante GPS
Facoltà di Ingegneria
Corso di Laurea in Ingegneria delle Telecomunicazioni
Argomento:
Sviluppo di un sistema per il tracciamento di un
veicolo mediante GPS.
Relatore:
Laureando:
Prof. Franceso De Natale
Gianpaolo Marin
Tutor:
Ing. Gabrio Girardi
Anno Accademico 2005-2006.
INDICE:
INDICE:
1) INTRODUZIONE……………………………………………………….3
1.1) Presentazione Graphitech e stage…………………………………………………4
2) SCOPO DEL PROGETTO……………………………………………..5
3) STRUMENTI UTILIZZATI……………………………………………8
4) STATO DELL’ARTE…………………………………………………..11
4.1) GPS……………………………………………………………………………….11
4.1.1) Struttura del Sistema………………………………………………………..11
4.1.1.1) Segmento Spaziale…………………………………………………….12
4.1.1.2) Segmento di Controllo………………………………………………...13
4.1.1.3) Segmento di Utenza…………………………………………………...14
4.1.2) Determinazione della Posizione……………………………………………14
4.1.3) Errori del Sistema…………………………………………………………..17
4.1.4) Protocollo NMEA 0183…………………………………………………….19
4.1.4.1) Struttura delle frasi NMEA……………………………………………19
4.1.4.2) Prefissi………………………………………………………………...20
4.1.4.3) Formati dei Campi…………………………………………………….20
4.1.4.4) Checksum……………………………………………………………..22
Gianpaolo Marin
matricola 108817
Pagina 1 di 62
4.1.4.5) Le frasi NMEA in dettaglio…………………………………………...23
4.2) File XML………………………………………………………………………...27
5) APPLICAZIONE…………………………………………………………..30
5.1) WalkingPDA…………………………………………………………………………30
5.1.1) Interfaccia Grafica………………………………………………………………30
5.1.2) Algoritmo………………………………………………………………………..34
5.2) GTServer……………………………………………………………………………...38
5.2.1) Interfaccia Grafica………………………………………………………………38
5.3) GTServerSocket………………………………………………………………………42
5.4) FormFilter…………………………………………………………………………….46
5.4.1) Interfaccia Grafica………………………………………………………………46
5.4.2) Algoritmo………………………………………………………………………..51
6) CAMPI d’IMPIEGO………………………………………………………53
6.1) Localizzazione di oggetti all’interno della mappa 3D……………………………….53
6.2) Raccolta dei dati territoriali………………………………………………………….54
6.3) Turismo………………………………………………………………………………54
6.4) Altri impieghi………………………………………………………………………...56
7) CONCLUSIONI……………………………………………………………57
8) FOTO GALLERY…………………………………………………………59
9) BIBLIOGRAFIA…………………………………………………………...62
Gianpaolo Marin
matricola 108817
Pagina 2 di 62
1 INTRODUZIONE
INTRODUZIONE
Il corso di studi che ho intrapreso, Ingegneria delle Telecomunicazioni, prevede lo
svolgimento di uno stage della durata di tre mesi. Dopo aver parlato con il mio tutor
universitario Dr. Ing. Francesco De Natale, ho deciso di cimentarmi in uno stage esterno
avendo così l’opportunità di poter incrementare le mie competenze grazie all’esperienza fatta
nel mondo del lavoro.
L’azienda che mi ha ospitato è la GraphiTech, Center for Advanced Computer Graphics
Technologies, situata a Villazzano. Essa è nata grazie alla collaborazione tra la Fondazione
INI-GraphicsNet (situata in Germania), l'Istituto Trentino di Cultura (ITC) e l'Università
degli Studi di Trento.
Il presente lavoro di tesi ha come scopo principale la memorizzazione e trasmissione di
coordinate geografiche (ricevute tramite dispositivo GPS Bluetooth), la creazione di un
motore di ricerca per la visualizzazione degli hotspot su WorldWind e la possibilità di un
completo scambio d’informazioni tra un’unità Pocket PC e un qualsiasi computer su cui è
installato WorldWind con gli add-on necessari.
In particolare, per la memorizzazione e la trasmissione di coordinate geografiche si è
sviluppato un programma in Visual Basic per palmare. Tale programma collegato ad un
dispositivo GPS Bluetooth permette di leggere i dati ricevuti tramite porta seriale, scartare
quelli errati e salvare le coordinate (latitudine, longitudine, altitudine, data, luogo) in un file di
testo. Mentre avviene l’acquisizione, con la selezione di un apposito flag, è possibile inviare
tramite connessione wireless o USB questi dati ad un server, il quale funge da bridge fra il
palmare e l’applicazione WorldWind. Una volta che i punti sono arrivati a WorldWind è
possibile visualizzare sul mondo virtuale la posizione acquisita; si può ottenere anche il
Gianpaolo Marin
matricola 108817
Pagina 3 di 62
tracciamento di un intero percorso in real time tramite una ripetizione automatica del processo
per un singolo punto.
Per quanto riguarda il motore di ricerca, è stata implementata un’interfaccia grafica in C# per
permettere di eseguire una ricerca all’interno di un file di testo, di tipo XML (nel quale sono
memorizzate le coordinate geografiche, le icone associate e una breve descrizione), tramite la
digitazione di parole chiave. Non appena la ricerca ha avuto termine sono visualizzati su
WorldWind solamente gli hotspot risultanti.
1.1 Presentazione Graphitech e stage
stage
GraphiTech è una fondazione no-profit orientata all’innovazione con attività di sviluppo e di
ricerca nella vasta area dell’advanced computer graphics e della realtà virtuale. Lo scopo di
tale azienda è aumentare la competitività delle
industrie del Trentino con lo sviluppo e
l'applicazione dell’advanced computer graphics.
Attraverso un trasferimento di conoscenze fra il
settore di ricerca e l'industria, la Fondazione
contribuisce con la promozione di ricerca sulla
computer
Figura 1.1: logo Graphitech.
graphics,
l'elaborazione
dell'informazione e la comunicazione visiva,
comprese la realtà virtuale e l'ingegneria virtuale.
I settori di ricerca di quest’azienda sono molteplici, ma si possono schematizzare in diversi
campi tra i quali:
Interactive Graphics System.
Digital Technologies for Media and Streaming.
Digital Media Content Engineering.
Augmented Reality.
Collaborative Architectural Design.
Mixed Reality and Networked Audio – visual applications.
Technologies for the confidentiality of visual information.
Gianpaolo Marin
matricola 108817
Pagina 4 di 62
New Generation Internet for visual communication.
Lo sviluppo continuo di tecnologie informatiche ed elettroniche permettono oggi, ad un
numero sempre più elevato di persone, di utilizzare sistemi basati su realtà virtuale più
complessi.
L’utilizzo di tali ambienti spazia dai più articolati software di simulazione scientifica ai
comuni videogiochi. Quest’ultima area, grazie ad un’enorme diffusione e un conseguente
abbattimento dei costi, ha permesso di sviluppare sistemi per la simulazione di ambienti
virtuali con scenari di ampi spazi aperti. Oggi questi sistemi permettono la visualizzazione
d’informazioni territoriali finora accessibili solo in maniera cartacea e con uno spreco di
risorse elevato. Attualmente, grazie all’integrazione di dati GIS con informazioni collegate a
luoghi o elementi posizionati sul territorio, è possibile costruire un sistema in grado di legare
tali dati alla corrispettiva area geografica.
Un settore che ha tratto molto beneficio dallo sviluppo di queste tecnologie è il settore
turistico, che utilizza questi software per farsi pubblicità e valorizzare luoghi naturali poco
conosciuti.
Gianpaolo Marin
matricola 108817
Pagina 5 di 62
2 SCOPO DEL PROGETTO
Lo stage si è incentrato sullo sviluppo di uno strumento d’informazione turistica per la
visualizzazione 3D dell’Altopiano di Pine e della Val di Cembra. Il progetto ha portato alla
realizzazione di un sistema per la visualizzazione 3D in tempo reale basato sulla piattaforma
WorldWind, un pacchetto software Open Source sviluppato dalla NASA.
In particolare il progetto ha portato alla realizzazione di un “add-on” dell’applicazione
scaricabile via web, in grado di accedere in streaming, tramite un server remoto, alle ortofoto
ad alta risoluzione dell’area del trentino, con diversi livelli di dettaglio possibili in funzione
della distanza dell’osservatore dal terreno.
Figura 2.2: Esempio di ortofoto ad alta risoluzione, visuale Piazza Duomo.
Gianpaolo Marin
matricola 108817
Pagina 6 di 62
Tali informazioni, ordinate in layer, permettono di visualizzare sul terreno in 3D degli hotspot,
ciascuno corrispondente ad un punto georeferenziato e contenente informazioni aggiuntive sul
punto di interesse. Al passaggio del cursore sull’hotspot sono visualizzate, in overlay
sull’ambiente 3D, maggiori informazioni sul dato punto. Qualora l’utente desideri entrare in
possesso di ulteriori informazioni sul hotspot in questione (quali descrizione dettagliata,
immagini ed altri dati multimediali) basta un click del mouse sull’icona visualizzata. Il
sistema provvederà automaticamente ad attivare il browser di navigazione e caricare la pagina
web corrispondente al punto.
Figura 2.3: Visuale 3D di una valle del trentino.
Il “volo virtuale sul territorio trentino”, questo il nome del progetto, sintetizza in modo
adeguato lo spirito di quello che è un eccezionale e maturo sposalizio di idee e progetti, atti a
favorire lo sviluppo territoriale.
Gianpaolo Marin
matricola 108817
Pagina 7 di 62
3 STRUMENTI UTILIZZATI
L’applicazione software è stata sviluppata utilizzando i seguenti strumenti o ambienti di
sviluppo:
WorldWind: è un software open source sviluppato dalla NASA, costituito da un
mappamondo virtuale utilizzato in ambiente Microsoft Windows. Essendo open
source, l’utente può personalizzare a proprio piacimento il software, sia creando
degli add-on in maniera autonoma (sono programmi scritti in C#, VB o J#) oppure
sfruttando quelli già esistenti che più gli interessano, scaricabili gratuitamente dal
sito ufficiale di WorldWind (www.worldwindcentral.com/wiki/Main_Page).
L’utente interagisce con il
pianeta
ruotandolo
e
zoomando dentro e fuori.
La
visualizzazione
delle
immagini avviene attraverso
l’overlay di diverse immagini
e a seconda della distanza dal
terreno,
immagini
ci
si
avvale
satellitari
o
di
di
immagini ad alta definizione
acquisite attraverso voli aerei.
Figura 3.4: Schermata principale di WorldWind.
Gianpaolo Marin
matricola 108817
Pagina 8 di 62
La scelta di tale piattaforma, se paragonata ad altre applicazioni analoghe quali
Google Earth, fornisce l’enorme vantaggio di potere gestire data base in maniera
autonoma. In effetti, il maggiore problema nell’utilizzo di Google Earth è
costituito dal fatto che i dati non possono essere ospitati su un proprio server, bensì
essi sono gestiti da Google che provvede (ad intervalli di alcune settimane)
all’aggiornamento del database,
perdendone di fatto sia il controllo che la
proprietà e dunque senza garanzia alcuna che tali informazioni siano accessibili a
titolo gratuito nel futuro. Pertanto la scelta di WorldWind, che peraltro rappresenta
il maggiore concorrente di Google, permette sia l’utilizzo di una piattaforma
standard in tutto il mondo e dunque di larga diffusione, sia soprattutto di gestire
autonomamente i dati tramite la configurazione di server realizzati “ad hoc” e di
cui il fornitore di servizi ha il totale controllo in termini di accesso e
aggiornamento dei dati.
Microsoft Visual Studio 2005: è un sistema di sviluppo integrato sviluppato da
Microsoft. È inoltre un ambiente di lavoro di tipo IDE RAD (Rapid Application
Development) atto ad aumentare la produttività aiutando il programmatore, ad
esempio attraverso l’uso di IntelliSense (è una forma di Autocomplite e
documentazione per variabili, funzioni, metodi) e un designer visuale delle forms.
Visual Studio supporta diversi tipi di linguaggi di programmazione tra cui C#,
C++, Visual Basic, .Net e J#.
GPS:
Holux
GPSSlim236
Wireless
Bluetooth
è
uno
strumento
con
elevateprestazioni caratterizzato da:
1) Doppia funzione Bluetooth e GPS-mouse (sono
dei sensori di posizione a tutti gli effetti ma senza
alcun display. Essi si collegano ad una qualsiasi
apparecchiatura
in
grado
di
decodificare
il
protocollo NMEA-0813).
2) Completamente compatibile con il protocollo
Figura 3.5: GPS utilizzato.
Gianpaolo Marin
Bluetooth SPP (Serial PortProfile).
matricola 108817
Pagina 9 di 62
3) Usa il chipset della SiRF Star III, con frequenza pari a 1575.42 MHz.
4) 20 canali di ricezione GPS per permettere acquisizioni veloci.
5) High speed signal acquisition using 200000 time/frequency search channels.
6) Supporta il protocollo NMEA-0813 v2.2 ( Baund Rate 38400 bps, Data bit
8, No bit di Parità, Stop bit 1) o codice SiRF binario.
7) Bluetooth frequency da 2400 a 2480 GHz.
8) Bluetooth Input Sensitivity -80 dBm.
9) Output Level 4 dBm.
Pocket PC: modello Dell Axim X30 624MHz Pocket PC.
Figura 3.6: Palmare utilizzato.
Gianpaolo Marin
matricola 108817
Pagina 10 di 62
4 STATO DELL’ARTE
4.1 GPS
Questo sistema, la cui denominazione completa è NAVSTAR GPS, abbreviazione di
“Navigation Satellite Timing And Ranging Global Positioning System” (sistema di
posizionamento globale mediante misure di tempo e distanza rispetto a satelliti per
navigazione), è stato realizzato a partire dal 1973 a cura dello U.S. Department of Defence.
Il sistema, concepito per un posizionamento ad alte prestazioni per scopi militari, in
particolare per la missilistica, è impiegabile anche per usi civili, tra i quali la navigazione.
Il posizionamento che si ottiene con il GPS è tridimensionale, quindi contemporaneamente
planimetrico e altimetrico.
4.1.1 Strutture del sistema
Il sistema si suddivide in tre segmenti principali. Di seguito si riportano le nozioni base per
ciascuno di essi.
Gianpaolo Marin
matricola 108817
Pagina 11 di 62
4.1.1.1
4.1.1.1 Segmento spaziale
Il sistema GPS si basa su una costellazione di 24 satelliti (18 operativi e 6 di riserva). La
costellazione è stata progettata in modo da renderne visibili contemporaneamente da 4 a 12
satelliti, da ogni punto della superficie
terrestre.
I satelliti sono disposti su sei orbite circolari
inclinate di 55° rispetto all’equatore e con una
differenza di 60° in longitudine tra i nodi
ascendenti. Su ogni orbita sono disposti
quattro satelliti, di cui tre operativi e uno di
riserva. I satelliti orbitano ad un’altezza
operativa di 20183 Km da terra, anche se la
distanza effettiva varia da 18000 a 22000 Km,
e il loro periodo di rotazione è di 12 ore
sideree, più precisamente 11h58m02s).
Figura 4.7: Costellazione dei satelliti GPS.
I satelliti sono equipaggiati con due pannelli
2
solari che, con una superficie di 7-8 m ciascuno, forniscono la fonte di alimentazione
primaria del sistema di bordo (710-1100 W); quando i satelliti si trovano nella zona d’ombra
della Terra l’energia viene invece fornita da una serie di batterie (NiCd o NiH2).
Figura 4.8: Esempio di satellite GPS di quarta generazione.
Gianpaolo Marin
matricola 108817
Pagina 12 di 62
Ogni satellite è fornito della seguente strumentazione:
Quattro orologi atomici di estrema precisione (due al rubidio e due cesio).
Un computer di controllo.
Un sistema di trasmissione radio ad onde ultracorte.
Un sistema di controllo di assetto.
Note storiche:
Il primo satellite fu lanciato nel 1978.
La costellazione attuale, composta da 24 satelliti, fu terminata nel 1994.
Passano circa 10 anni per la costruzione di un satellite.
Ogni satellite pesa mediamente 1000 Kg ed è alto 5-6 m.
La potenza di trasmissione è inferiore ai 50 W.
4.1.1.2 Segmento di controllo
Il sistema di controllo a terra è
costituito
da
una
principale,
nota
stazione
come
GPS
Master Control Station (MCS),
da
cinque
di
stazioni
di
monitoraggio Monitor Stations
(MS) e da tre antenne terrestri
Ground Antennas (GA).
Figura 4.9: Disposizione delle stazioni di controllo.
Gianpaolo Marin
matricola 108817
Pagina 13 di 62
La stazione principale si trova nella Base Area Schriever (Colorado Spring, USA) e il suo
compito primario consiste nel monitorare e gestire le funzionalità dell’intera costellazione di
satelliti. Le stazioni di monitoraggio sono dislocate nell’Oceano Pacifico (più esattamente
nelle Isole Hawaii e nelle Isole Kwajalein), nell’Oceano Indiano (nell’Isola Diego Garcia) e
nell’Oceano Atlantico (nell’Isola di Ascensione), più una nell’MCS stesso. Il loro compito
principale è quello di seguire tutti i satelliti e di comunicare periodicamente la loro posizione
alla stazione principale. Nella normale routine, l’MCS utilizza le antenne a terra (collocate
presso le stazioni di Kwajalein, Diego Garcia e Ascension) per inviare ai satelliti periodici
aggiornamenti del clock di sistema e della loro posizione; qualora però l’MCS riscontrasse
discrepanze tra le posizioni previste e quelle reali, sempre tramite le antenne a terra,
invierebbe immediatamente segnali di correzione ai satelliti ‘fuori’ posizione. Le stazioni
devono controllare anche lo stato di salute dei satelliti, per decidere un’eventuale sostituzione.
4.1.1.
4.1.1.3
1.3 Segmento di utenza
Il segmento Utenza è costituito dalla innumerevole massa di ricevitori GPS esistenti oggi
sulla terra, siano essi collocati in un veicolo militare, in un’auto, in un telefonino o nel collare
di un animale selvatico. Sebbene ci siano innumerevoli applicazioni pratiche per l’utilizzo del
GPS, la maggior parte dei casi ricade in quattro categorie ben specifiche: navigazione,
sorveglianza, mappatura e temporizzazione.
4.1.
4.1.2
1.2 Determinazione della posizione
I ricevitori terrestri, mediante un proprio orologio interno, misurano la differenza fra l’istante
di ricezione e quello di trasmissione del segnale; moltiplicando tale differenza per la velocità
di propagazione delle onde elettromagnetiche si ottiene la distanza fra il satellite ed il
ricevitore.
Esistono due tipi di misure GPS, le misure di pseudorange e le misure di fase. Le prime
sono usate soprattutto nella navigazione, mentre le seconde in tutte le applicazioni in cui è
Gianpaolo Marin
matricola 108817
Pagina 14 di 62
richiesta una maggiore accuratezza, come ad esempio per scopi topografici o per il controllo
delle deformazioni terrestri.
La determinazione della posizione richiede la risoluzione di un sistema non lineare di 4
equazioni indipendenti in 4 incognite. Tali incognite sono:
Latitudine.
Longitudine.
Altitudine.
Tempo.
Occorre quindi disporre di 4 segnali, trasmessi da altrettanti satelliti. Conoscendo l’istante di
partenza e di arrivo del segnale, possiamo calcolare la distanza ricevitore-satellite, assegnando
al segnale la velocità della luce (300000 Km/s).
La misura della distanza è affetta da diversi errori, dovuti agli effetti atmosferici sulla velocità
di propagazione del segnale, alle imprecisioni dei segnali di clock dei satelliti e ad altri effetti
secondari. Per tale ragione, la distanza misurata è chiamata, nel gergo GPS, pseudodistanza o
pseudorange.
Tale pseudodistanza sarà il raggio di una sfera immaginaria con centro il satellite stesso. Ogni
punto della superficie della sfera è una delle possibili posizioni occupate.
Supponendo
che
inizialmente,
il
ricevitore
acquisisca il segnale di un solo satellite e che
determini la sua distanza; non avendo altri
riferimenti, si potrà solo affermare che il
ricevitore si trova sulla superficie di un’ipotetica
sfera centrata sul satellite in questione e con
raggio uguale alla distanza misurata. Utilizzando
un po’ di formule geometriche si scopre che la
maggior parte della superficie di quest’ipotetica
sfera verrebbe a cadere fuori dalla Terra, ma la
parte incidente sul nostro pianeta sarebbe in ogni
Figura 4.10: Un solo satellite in vista.
caso troppo grande per poter stabilire con
certezza la localizzazione del ricevitore.
Gianpaolo Marin
matricola 108817
Pagina 15 di 62
Se consideriamo due satelliti distinti, quindi due
sfere non concentriche, la posizione si troverà
sulla circonferenza del cerchio che individua il
piano
d’intersezione
delle
due
sfere
perpendicolare alla retta congiungente i due
satelliti.
Figura 4.11: Due satelliti in vista.
Se, infine, consideriamo tre diversi satelliti
avremo tre diverse sfere. Queste sfere avranno in
comune due punti nello spazio tridimensionale,
ma dei due punti uno è in genere manifestamente
errato e può essere facilmente scartato.
Figura 4.12: Tre satelliti in vista.
Tre
segnali
sono
quindi
necessari
per
determinare in modo univoco un punto, mentre
il quarto segnale serve al ricevitore perché esso
non
dispone
di
un
orologio
atomico
sincronizzato con quello che si trova sui satelliti.
Figura 4.13: Quattro satelliti in vista.
Gianpaolo Marin
matricola 108817
Pagina 16 di 62
4.1.
4.1.3
1.3 Errori del sistema
Il sistema GPS è un sistema affetto da molti tipi di errori, i quali influenzano notevolmente la
distanza misurata; alcuni di questi errori possono essere ridotti di ampiezza grazie a calcoli
matematici sperimentali, mentre la maggior parte non può essere corretta.
Gli errori si possono dividere nelle seguenti categorie:
Errori dovuti all’hardware presente nel ricevitore e nel satellite (rumore di tipo
elettronico): causato dalla differenza di allineamento tra il codice generato dal
ricevitore con quello proveniente dal satellite. Questo errore grazie alla tecnologia
utilizzata nei sensori di ultima generazione è molto piccolo, inferiore al metro.
Selective Availability e l’AntiSpoofing: introdotti dal dipartimento della difesa
degli USA, a bordo dei satelliti per creare artificialmente una degradazione della
precisione (la massima precisione è garantita, soltanto, agli utenti autorizzati) e per
proteggere gli utilizzatori militari dal pericolo di essere ingannati da false
trasmissioni con segnali simili a quelli del GPS.
Variazioni nel clock degli orologi atomici: un disallineamento di soli 3ns
comporta un errore di 1m sul calcolo della distanza.
Errori nelle effemeridi fornite dai satelliti: le effemeridi sono tabelle che
contengono dati precisi riguardo alla posizione, in un determinato intervallo
temporale, di corpi celesti naturali o artificiali. Un piccolo errore sulla posizione
del satellite causa un calcolo sbagliato della coordinata.
Errori dovuti al sistema di controllo nell’aggiustamento degli orologi satellitari e
nel calcolo delle orbite dei satelliti.
Effetti atmosferici: il segnale trasmesso dal satellite subisce rallentamenti e
deviazioni quando esso attraversa la ionosfera e la troposfera.
Gianpaolo Marin
matricola 108817
Pagina 17 di 62
Macchie solari: l’attività elettromagnetica del sole può generare interferenze sulla
trasmissione del segnale.
Figura 4.14: Esempio di macchie solari.
Errori dovuti al “multipath”: riguardano fenomeni di riflessione del segnale
giunto al ricevitore. Questi sono provocati dalla presenza di superfici riflettenti in
prossimità del ricevitore. La traiettoria del segnale osservato subisce riflessioni
multiple e quindi il tragitto percorso non coincide con quello geometrico fra
satellite e ricevitore. Ciò causa una sovrastima della distanza che si riflette in un
errore nella stima della posizione.
Figura 4.16: primo esempio di multipath.
Gianpaolo Marin
Figura 4.15: secondo esempio di multipath.
matricola 108817
Pagina 18 di 62
La somma degli errori forniti da queste non idealità del sistema porta un errore che può
arrivare anche a 20m.
4.1.
4.1.4
1.4 Protocollo
Protocollo NMEA 0183
Il GPS comunica attraverso uno speciale formato, standardizzato dalla National Marine
Electronics Association (NMEA), di tipo seriale basato sulla trasmissione di una ben precisa
famiglia di messaggi in formato testo. In effetti, la connessione bluetooth tra GPS e
dispositivo è gestita a tutti gli effetti come una connessione di formato RS232, a 4800bps,
quindi i messaggi viaggiano attraverso la connessione COM virtuale. Le origini di questo
sistema sono prevalentemente nautiche; oggi invece è impiegato nella maggior parte dei
dispositivi GPS commerciali.
Per quanto riguarda l’interfaccia COM RS232, per essere completamente compatibile con il
sensore GPS, deve essere impostata con le seguenti caratteristiche (standard):
Indirizzo COM viruale connesso al sensore.
Baud rate di 4800bps.
8 bit di dati.
Nessun bit di parità.
1 bit di stop.
4.1.4.1
.1.4.1 Struttura delle frasi NMEA
Le frasi del protocollo NMEA sono composte da una sequenza di caratteri ASCII.
L’inizio della stringa è delimitato dal carattere “$” seguito da un prefisso indentificatore; da
una serie di campi separati da una virgola ed un checksum finale.
Gianpaolo Marin
matricola 108817
Pagina 19 di 62
Esempio 1:
$PREFISSO, campo, campo, …, campo, *checksumCRLF
Una frase NMEA può contenere fino a 82 caratteri compresi "$" e CR LF.
Se i dati per un campo non sono disponibili, il campo viene omesso, ma le virgole che lo
delimiterebbero sono comunque aggiunte, senza spazi tra di loro.
4.1.
4.1.4.2
4.2 Prefissi
I dispositivi collegabili tra loro, con sistema NMEA, ricadono in diverse categorie:
Autopiloti.
Dispositivi di comunicazione (radio e anche GPS).
Sensori di direzione (bussole e giroscopi).
Dispositivi LORAN.
Sensori di velocità ed una categoria per altri trasduttori.
Tutte le sentenze NMEA, come detto, iniziano con un prefisso costituito dal carattere "$",
seguito da due caratteri che identificano l'entità che le genera, talker.
Nell'ambito del GPS, le frasi iniziano con "$GP", dove "GP" denota che essa è stata generata
da un dispositivo GPS. I successivi tre caratteri del prefisso della frase indicano il tipo di
frase.
Esempio 2:
una frase che inizia con $GPGLL è inviato da un dispositivo di tipo GPS (GP) ed è del
tipo Geographic position, Longitude and Latitude (GLL).
Gianpaolo Marin
matricola 108817
Pagina 20 di 62
4.1.4.3
4.1.4.3 Formati dei campi
La frase, dopo il prefisso, continua con una serie di campi, separati da virgole, che
contengono le informazioni vere e proprie. Si noti che tra le varie versioni (e spesso tra
diverse implementazioni e costruttori) le lunghezze dei campi possono variare o non essere
presenti. Chi scrive un software di decodifica considera i campi di lunghezza variabile e si
basa sulle virgole. Inoltre, alcune implementazioni includono gli zeri davanti ai numeri, altri
no, e il numero di cifre decimali varia tra diverse implementazioni.
Ecco i formati dei dati usati dalle frasi NMEA GPS:
hhmmss.ss: Ore, minuti, secondi e centesimi di secondo (es: 132957.94 =
13:29:57.94).
ddmmyy: Campo data giorno, mese, anno (es: 151005 = 15 ottobre 2005).
A: Campo numerico di lunghezza fissa di un carattere.
A-A: Campo alfanumerico di lunghezza variabile.
llll.ll: Campo latitudine (es: 4531.47 = 45°31.47').
yyyyy.yy: Campo longitudine (es: 00917.21 = 009°17.21').
x: Campo numerico con n cifre intere.
x.x: Campo numerico con n cifre intere e n cifre decimali (es: 123.45).
n: Campo numerico, singola cifra.
nn: Campo numerico, due cifre.
nnnn: Campo numerico, quattro cifre.
Riferimenti a gradi si intendono sessagesimali.
Riferimenti a UTC si intendono relativi all'ora universale, praticamente GMT,
Nota:
detto anche ora Zulu.
Gianpaolo Marin
matricola 108817
Pagina 21 di 62
In effetti ci sono piccoli scostamenti (costanti e accuratamente monitorati) tra l'ora "interna"
del sistema GPS e l'ora GMT, normalmente usata per gli orologi, attualmente intorno ai 13
secondi.
4.1.
4.1.4.4
1.4.4 Checksum
Al termine di ciascuna frase NMEA è posto, dopo un asterisco, un checksum per poter
individuare eventuali errori sulla linea di trasmissione tra emettitore e ascoltatore (talker e
listener). Con le attuali tecnologie, una trasmissione a 4800 bps su una interfaccia RS232 è, a
dir poco, affidabile, ma qualora la trasmissione avvenisse mediante un sistema più complesso
(infrarosso, Bluetooth) o una catena più lunga (come nel campo della localizzazione veicolare,
magari su GSM/GPRS o ponti radio) il checksum può essere utile per assicurare l'integrità
della trasmissione.
Il checksum è uno XOR a 8-bit (senza i bit di start o stop) di tutti i caratteri della frase NMEA,
compresi i delimitatori ",", tra i delimitatori "$" e "*" esclusi. Il valore esadecimale dei 4 bit
più "alti" e "bassi" del risultato sono convertiti in due caratteri ASCII (0-9, A-F). Il carattere
trasmesso per primo è quello più significativo.
Questo checksum è eseguito di default dal ricevitore GPS.
Gianpaolo Marin
matricola 108817
Pagina 22 di 62
4.1.
4.1.4.5
1.4.5 Le frasi NMEA in dettaglio
Lo standard NMEA prevede una gran quantità di sentenze e, di seguito, sono riportate quelle
che trovano un’applicazione pratica nei ricevitori GPS.
Figura 4.17: tutte le frasi che compongono lo standard NMEA
Le frasi seguite con un apice (^) sono spiegate più in dettaglio qui di seguito.
Gianpaolo Marin
matricola 108817
Pagina 23 di 62
GPGGA – Global Position System Fix
Comprende i dati concernenti la localizzazione 3D del dispositivo e il tempo
relativo al GPS.
GPGLL – Geographic Position Latitude/Longitude
Contiene solamente i dati posizionali.
GPRMC – Recommended Minimum GPS Data
È una delle frasi più complete, comprende i dati essenziali riguardanti data/ora,
posizione, velocità e qualità della rilevazione.
Gianpaolo Marin
matricola 108817
Pagina 24 di 62
GPGSA – GPS DOP and Satellites Active
Comprende i dati sulla qualità del fix e l'indicazione dei satelliti ricevuti (o di cui i
vari canali stanno tentando la ricezione).
Esistono significative differenze di implementazione nell'ordine e organizzazione
dei campi indicanti i satelliti attivi. Taluni ricevitori li raggruppano all'inizio della
sequenza (lasciando campi vuoti alla fine), alcuni li ordinano per numero (Garmin),
altri li lasciano in ordine sparso con campi vuoti intermedi (Evermore).
GPVTG – Vector Track and Ground Speed
Contiene informazioni sulla direzione e sulla velocità a terra del GPS.
Gianpaolo Marin
matricola 108817
Pagina 25 di 62
GPGSV – GPS Satellites in View
Contiene i dati relativi ai satelliti che il ricevitore, in base ai propri dati delle
effemeridi e eventualmente alla maschera di elevazione, ritiene di poter
ricevere. Per ciascun satellite sono indicati identificatore, azimuth, elevazione, e
livello di segnale ricevuto. La frase completa si struttura in un gruppo di più frasi
di tipo GSV per poter contenere tutti i campi necessari. Un ricevitore a 12 canali
potrà indicare un massimo di 12 satelliti suddivisi su tre frasi.
GPRMB – Recommended Minimum Navigation Data
Frase dedicata alla navigazione tra waypoints (hotspot).
Gianpaolo Marin
matricola 108817
Pagina 26 di 62
4.2 File XML
Il linguaggio XML (eXtensible Markup Language) è stato introdotto per colmare la mancanza
di uno standard che consenta ricerche intelligenti, scambio di dati, presentazioni adattabili e
personalizzazioni. Lo standard XML è un formato testuale, simile per molti aspetti al
linguaggio HTML, ideato specificamente per memorizzare e trasmettere dati.
Internet non si può limitare a fornire l’accesso ad informazioni e fissare standard di
visualizzazione, ma deve fissare uno standard per la comprensione delle informazioni,
cosicché i programmi software siano in grado di eseguire meglio le ricerche, di visualizzare e
di manipolare informazioni nascoste in file di testo. L’XML si descrive da solo, il che
significa che comprende sia la struttura che la semantica dei dati contenuti nel file.
Il linguaggio XML fornisce una rappresentazione strutturale (struttura ad albero) dei dati
che può essere ampiamente e facilmente implementata. Lo standard XML è costituito da un
sottoinsieme di SGML ottimizzati per l'invio nel Web. Definito dal consorzio W3C (World
Wide Web Consortium), il linguaggio XML assicura che i dati strutturati siano uniformi e
indipendenti dalle applicazioni o dai produttori.
L’inizio di un file XML è costituito da una tag iniziale (<title>), una tag finale (</title>) e da
informazioni, comprese tra le due tag. Diversamente dal linguaggio HTML, lo standard XML
consente di includere un numero illimitato di tag, ciascuna indicante non l'aspetto, ma il
significato di un elemento testuale. È compito dell'autore del documento stabilire il tipo di
dati da utilizzare e i nomi delle tag che meglio si adattano.
Il linguaggio XML consente di utilizzare fogli di stile quali XSL (eXtensible Style Language),
CSS (Cascading Style Sheets) e altre applicazioni per la visualizzazione ed elaborazione dei
dati. Questo procedimento permette al linguaggio XML di poter tenere separati i dati dalle
altre applicazioni di rappresentazione, permettendo così una perfetta integrazione dei dati
provenienti anche da più fonti.
Per rendere un documento XML più completo solitamente si allega ad esso un file DTD
(Document Type Definition), che definisce le regole utilizzate, quali ad esempio l‘indicazione
degli elementi presenti e la relazione strutturale esistente tra essi.
Anche se il linguaggio XML è totalmente personalizzabile esistono comunque delle regoli di
sintassi.
Gianpaolo Marin
matricola 108817
Pagina 27 di 62
Le più importanti sono:
Tutti i file XML devono iniziare con la dichiarazione standard che specifica la
versione XML e il set di caratteri utilizzati nel documento.
Esempio 3: <?xml version=”1.0” encoding=”iso-8859-1”?>.
Tutti i documenti XML devono avere un elemento principale (root).
Tutti gli elementi XML devono avere un tag di chiusura.
I tag sono case sensitive.
Tutti gli elementi XML devono essere nidificati correttamente.
Gli attributi devono essere inclusi nel tag di apertura e devono essere scritti tra
doppie virgolette.
I principali vantaggi dell’XML sono visibili in alcune applicazioni:
Nelle applicazioni che manipolano una grossa quantità di dati, poiché resta in ogni
modo flessibile ed estensibile.
Nelle applicazioni in cui esiste un rischio di ridondanza dei contenuti.
Qualora sia necessario uno scambio di una mole di dati elevata su piattaforme
diverse.
Nelle applicazioni in cui le informazioni siano facilmente disponibili per una
grande quantità di client.
Naturalmente l’XML presenta anche dei limiti, questo non deve preoccupare poiché è un
linguaggio in continua evoluzione.
I principali svantaggi sono:
Mancano trigger e indici per ricerche veloci.
Non è possibile la Multi-utenza.
Le funzioni di archiviazione non sono efficienti.
Non esistono controlli sull’integrità dei dati.
Non è implementato un controllo sulla sicurezza delle transizioni.
Non sono supportate interrogazioni tra più documenti.
Gianpaolo Marin
matricola 108817
Pagina 28 di 62
È un linguaggio prolisso perché richiede una coppia di tag per ciascun elemento.
A causa di queste lacune la ricerca nei file XML risulta lenta, ma serve comunque precisare
che questo standard non è un linguaggio ideato per database.
Gianpaolo Marin
matricola 108817
Pagina 29 di 62
5 APPLICAZIONE
L’applicazione sviluppata è suddivisa in quattro parti:
WalkingPDA: applicazione per PDA che permette la gestione di coordinate GPS.
GTServer: applicazione per un server dell’azienda che reindirizza i dati.
GTServerSocket: add-on per WorldWind che permette la ricezione e la gestione
delle coordinate GPS.
FormFilter: add-on per WorldWind che permette la ricerca di hotspot in trentino.
Queste applicazioni sono illustrate nei paragrafi seguenti.
5.1 WalkingPDA
alkingPDA
5.1.1 Interfaccia grafica
Quest’applicazione è stata sviluppata per un dispositivo PocketPC, nel caso analizzato un Dell
Axim X30.
All’avvio l’interfaccia si presenta nella scheda (o tab) “impostazioni” come mostrato in
Figura 5.18. L’utente deve scegliere la porta seriale COM alla quale l’interfaccia GPS si
collega virtualmente.
Gianpaolo Marin
matricola 108817
Pagina 30 di 62
Come già detto, il collegamento Bluetooth tra GPS e
dispositivo è gestito come una normale connessione
seriale, che utilizza il protocollo RS232. Di default è
selezionata la porta COM7.
Una volta connesso il dispositivo GPS al palmare, è
possibile procedere con le successive operazioni.
Figura 5.18: Finestra delle impostazioni.
Nella seconda scheda “connessione” è possibile stabilire
l’apertura di una connessione wifi con un server sempre
in ascolto.
Per eseguire la connessione basta inserire l’indirizzo IP
e la porta riferiti al server. La comunicazione è gestita
come una semplice conversazione client-socket. Questo
tipo di connessione è utilizzato normalmente per un solo
scambio o un numero limitato di dati trasmessi in modo
sequenziale. Una volta chiusa la connessione per poter
effettuarne
una
nuova
è
necessario
riavviare
l’applicazione.
Premendo il pulsante “Connetti” si inoltra al server un
messaggio con la richiesta di connessione, così
Figura 5.19: Finestra di connessione.
composto:
“Host;Indirizzo IP;Nome Utente;Nome applicazione;”
Gianpaolo Marin
matricola 108817
Pagina 31 di 62
Il nome dell’applicazione è “GPSTracker”.
Il server, una volta ricevuta la richiesta, risponde con “1” se la ricezione è avvenuta con
successo, con “0” altrimenti.
Il client, per poter inviare un nuovo messaggio deve sempre aspettare la risposta del server e,
se questa non arriva dopo un certo tempo (timeout), è segnalato l’errore ed è necessario
rinviare il messaggio, se questo non basta è necessario ristabilire la connessione.
Il pulsante “Disconnetti” permette di eliminare la connessione esistente tra client e server. Il
messaggio inviato, questa volta, è così composto:
“Quit;Indirizzo IP;”
Selezionando la terza scheda “punti d’interesse” si entra nel cuore del programma.
Per prima cosa bisogna creare un nuovo file di testo o
caricarne
uno
preesistente.
Una
volta
effettuata
quest’operazione è possibile iniziare ad acquisire le
coordinate geografiche.
Al di sotto del pulsante “acquisisci” vi è un menù a
tendina contenente i punti di interesse standard. Qualora
l’utente voglia inserire un nuovo hotspot basta digitarlo
nella casella di testo sottostante e cliccare “aggiungi”.
Nel caso non avvenga la selezione del punto, il campo
associato nella stringa dato risulterebbe vuoto.
Una volta associato un eventuale target alla coordinata
geografica, è possibile acquisire il punto attraverso la
pressione del tasto “acquisisci”. L’operazione richiede
qualche secondo.
Figura 5.20: Finestra di acquisizione.
I dati acquisiti possono essere gestiti in due maniere
differenti:
Semplicemente memorizzati in un file di testo per un utilizzo futuro.
Memorizzati in un file di testo ed inviati, con connessione wireless, ad un server
per poter sfruttare la funzione di tracking.
Gianpaolo Marin
matricola 108817
Pagina 32 di 62
La scelta di una di queste due modalità avviene tramite la selezione/deselezione del flag
“Invia dati a WW”.
Il messaggio inviato al server è composto dalla seguente stringa:
“point;Latidutine;Longitudine;Altitudine;Descrizione;end point;”
Una volta terminata l’acquisizione di un punto, esso è aggiunto nella tabella posta in mezzo
alla schermata, ed è possibile effettuare una nuova operazione con le stesse modalità.
Nella quarta ed ultima scheda “percorso” è possibile attivare la modalità di memorizzazione
delle coordinate in modalità sequenziale. I punti sono acquisiti in maniera automatica e
continua con l’utente in movimento. Se l’utente rimane
fermo in una posizione le coordinate vengono scartate.
Anche in questa modalità, come prima cosa, è
necessario creare un nuovo file di testo tramite
l’inserimento del nome nella casella di testo e la
pressione del tasto “ok”.
Come nella modalità “punti d’interesse”, le coordinate
scritte su file possono essere inviate ad un server
connesso sia in tempo reale durante l’acquisizione dei
punti, sia una volta che il percorso è concluso ed il file
di testo salvato e chiuso tramite il pulsante “Invia”.
L’invio dei dati in real time è selezionabile attraverso la
selezione/deselezione del flag “Invia dati a WW”.
Figura 5.21: Finestra di acquisizione.
L’avvio dell’acquisizione avviene mediante il tasto
“acquisisci”, mentre l’arresto dell’acquisizione con la
pressione del tasto “stop/salva”.
Il messaggio inviato al server questa volta è strutturato:
“track;Latitudine;Longitudine;Altitudine;end tack;”
per ogni punto del percorso inviato.
Gianpaolo Marin
matricola 108817
Pagina 33 di 62
5.1.2 Algoritmo
Acquisizione della coordinata
Per l’acquisizione di un singolo punto è stato deciso di compiere la media su una serie di
coordinate lette dal dispositivo. Sfruttando la classe “Timer”, che permette di generare un
evento ad intervalli costanti definiti dall’utente, è stato fissato il numero di letture di dati dal
dispositivo GPS. Ogni sei ripetizioni dell’evento di lettura è calcolata la media dei valori letti
ed è scritto sul file di testo il valore risultante.
Una volta letti, i dati sono memorizzati in una variabile stringa e spezzati in parole più piccole
in base ai diversi campi.
In base alla lettura del primo campo, quello che ci fornisce l’informazione del tipo di dato
memorizzato nella stringa NMEA, la stringa è inoltrata alla procedura adeguata. Dopo aver
individuato il tipo di dato, è effettuato un controllo sulla correttezza del dato letto. Questo
controllo permette di scartare quelle frasi che, a causa del rumore, sono fuse assieme, quelle
troppo corte e quelle con i campi utili vuoti o contenenti valori non consentiti. Dei dati che
passano questo checksum vengono analizzati i campi descriventi latitudine, longitudine,
emisfero, altitudine, data che sono poi memorizzati e sommati ai precedenti.
Eseguite le sei routine, il timer è spento e comincia la fase di elaborazione dei dati per la
memorizzazione nel file di testo. Per prima cosa è calcolata la media dei valori dei dati
acquisiti. Questi dati per essere compatibili con la piattaforma di WorldWind devono essere
convertiti con la seguente formula:
Coordinata = Gradi + (Decimi MOD 1000000)
equazione 5.1
600000
Si ha un utilizzo diverso anche per quanto riguarda gli emisferi. Gli emisferi Nord “N” ed Est
“E” sono sostituiti con un segno positivo, implicito, nel valore della coordinata; mentre per
quanto riguarda gli emisferi Sud “S” ed Ovest “W” sono sostituiti con un segno meno.
Gianpaolo Marin
matricola 108817
Pagina 34 di 62
Figura 5.22: Schema generale di funzionamento dell'applicazione.
Esempio 4:
Le coordinate lette dal GPS in località Villazzano Salita dei Molini n°2 (sede
Graphitech) risultano essere 4602.8721 N, 01108.7668 E. Eseguendo la conversione
sopra riportata si ottiene:
Nuova latitudine = 46 + (46028721 MOD 1000000) = 46,047868334°
600000
Nuova longitudine = 11 + (11087668 MOD 1000000) = 11,146113334°
600000
Dall’acquisizione di punti strategici dei quali si conosceva perfettamente la coordinata, è stato
possibile notare la presenza di un errore sistematico che è stato corretto con l’aggiunta di un
delta costante sia sulla latitudine sia sulla longitudine.
Effettuata la conversione, la coordinata è pronta per essere scritta sul file di testo o per essere
inviata al server cui si è connessi.
Al termine della fase di memorizzazione o di invio si ritorna allo stato iniziale per poter
permettere una nuova memorizzazione.
Gianpaolo Marin
matricola 108817
Pagina 35 di 62
Purtroppo alcune coordinate sbagliate superano la fase di controllo, ed è possibile che i dati
contenuti in queste stringhe siano completamente errati, e che si memorizzino coordinate
appartenenti ad altri paralleli o meridiani. Non è possibile eliminare questi dati in tempo reale,
ma solamente in una seconda fase grazie al buon senso dell’utente.
La modalità “percorso” è strutturata alla stesso modo, presenta solo una procedura in più che
permette di stabilire se l’utente è in movimento o è fermo nello stesso posto. Questa
procedura compie una semplice differenza tra il valore corrente e quello precedente. Se questa
differenza supera una determinata soglia il valore corrente è tenuto in considerazione e
subisce le operazioni sopra descritte, altrimenti è eliminato. Questa scrematura di punti fa sì
che non si formino nuvole di punti concentrate in uno spazio limitato.
Gianpaolo Marin
matricola 108817
Pagina 36 di 62
Inizio
Apertura
porta
no
Porta seriale
è aperta?
si
Leggo le
coordinate
Coordinata
utilizzabile
no
si
no
Coordinata
corretta
si
Somma
Ripetere per 6
volte
Scrivi
coordinata
Invio dati a
WW
no
Condizioni di
partenza
si
Invio dati con
Wifi
Diagramma 5.1: Diagramma di flusso delle fasi di acquisizione di un singolo punto d’interesse.
Gianpaolo Marin
matricola 108817
Pagina 37 di 62
Inizio
no
Apertura
porta
Porta seriale
è aperta?
si
Leggo le
coordinate
Coordinata
utilizzabile
si
Coordinata
corretta
Somma
Ripetere per 6
volte
L’utente è in
movimento
no
si
Scrivi
coordinata
no
Invio dati a
WW
Ripristino
si
Invio dati con
Wifi
Diagramma 5.2: Diagramma di flusso della fase di acquisizione di un percorso.
Gianpaolo Marin
matricola 108817
Pagina 38 di 62
5.2 GTServer
5.2.1 Interfaccia grafica
Il server all’avvio dell’applicazione si trova in modalità di non ascolto. Se arrivano richieste
di connessione mentre il server è disattivato saranno rifiutate.
Per avviare l’applicazione basta
eseguire un click sul pulsante
“Avvia server”. Il server passa così
dalla modalità non in linea alla
modalità “Listening”.
In questa
modalità, il server aspetta richieste
di connessione sulla porta in ascolto,
nel caso in Figura 5.23 la 5001.
Figura 5.23: Finistra di avvio di GTServer.
All’arrivo di una richiesta l’utente è identificato dal suo indirizzo IP ed è inserito nella lista
degli utenti connessi. È possibile
una connessione simultanea di più
utenti come mostrato in Figura 5.24.
Ogni
nuova
connessione
o
disconnessone di un utente è inoltre
registrata
in
un
file
di
testo
aggiornato ad ogni evento.
Figura 5.24: Server avviato con visualizzazione degli utenti connessi.
Gianpaolo Marin
matricola 108817
Pagina 39 di 62
Periodicamente viene anche creato un file di backup, nel quale sono aggiunti tutti gli utenti
che effettuano la loro prima connessione, questo per evitare ripetizioni inutili.
La visualizzazione degli utenti connessi avviene sfruttando un timer, che esegue un refresh
della finestra ogni 5 secondi. Qualora si voglia avere un refresh immediato della finestra,
basta premere il pulsante “Carica user”.
Quando un utente, effettuata la connessione, inizia ad inviare dati al server (ad esempio punti
di interesse o tracciati) strutturati come esposto nel capitolo applicazione WalkingPDA, il
server crea una nuova connessione verso un altro computer. Se su questo computer è attivo
WorldWind, ed è installato il plugin necessario per la ricezione dei dati dal server, si potranno
visualizzare, in tempo reale, le coordinate inviate dal dispositivo PDA.
Quando un client invia una richiesta di disconnessione il server chiude la connessione
esistente e cancella dalla lista l’utente.
Figura 5.25: Fase di disconnessione di un utente.
Di seguito è riportato lo schema di funzionamento generale dell’algoritmo sviluppato per la
gestione dei pacchetti in arrivo al server.
Come si può notare dallo schema, il server, una volta effettuata la connessione con il
dispositivo richiedente, si comporta come un bridge, cioè reindirizza tutti i dati ricevuti ad un
nuovo client connesso.
Gianpaolo Marin
matricola 108817
Pagina 40 di 62
Inizia
Not
Listening
Avvia server
no
si
Listening
Connetti
Point
Track
no
Esegue
connessione
Connessione attiva
Crea nuova
connessione
Disconnetti
Esegue
disconnessione
si
Reindirizza il
dato ricevuto
Fino a
end track
È un percorso
si
no
Diagramma 5.3: Schema di funzionamento dell’algoritmo GTServer.
Gianpaolo Marin
matricola 108817
Pagina 41 di 62
5.3 GTServerS
GTServerSocket
Questo add-on sviluppato per WorldWind permette di ricevere le coordinate inviate dal
server connesso.
Per avviare questo plugin basta selezionare dal menu a tendina “Plug-ins” e cliccare sulla
voce “(GT) Avvia Server Socket”. WorldWind passerà così in modalità ascolto e aspetterà di
ricevere dei dati.
Figura 5.26: Attivazione del add-on GTServerSocket.
Figura 5.27: GTServerSocket attivo e pronto a ricevere dati.
Per interrompere la ricezione di dati basta premere, sempre dal menu a tendina “Plug-ins”, la
voce “(GT) Interrompi server Socket”. Così facendo la connessione con il server sarà
immediatamente chiusa.
Figura 5.28: Procedura chiudere la connessione.
Gianpaolo Marin
matricola 108817
Pagina 42 di 62
Facendo interagire le tre applicazioni, WalkingPDA GTServer e GTServerSocket, come
mostrato in Figura 5.29 riusciamo ad ottenere un sistema per il tracking di oggetti o persone.
Figura 5.29: Schema di principio dell'iterazione tra le tre diverse applicazioni.
La localizzazione di questi oggetti sulla mappa ad alta risoluzione avviene mediante la
visualizzazione di un’icona, nel mio caso un auto sportiva, che si sposta seguendo le
coordinate inviate dal palmare al server e reindirizzate, dallo stesso, ad un computer connesso.
Qui di seguito è riportata una sequenza d’immagini che mostra il risultato dell’applicazione.
Gianpaolo Marin
matricola 108817
Pagina 43 di 62
Sequenza 5.1: Immagini descriventi la funzione di tracking, zona di Mezzocorona.
Gianpaolo Marin
matricola 108817
Pagina 44 di 62
È possibile visualizzare l’immagine anche cambiando inclinazione della telecamera il risultato
che si ottiene è il seguente.
Sequenza 5.2: Immagini descriventi la funzionalità di tracking con altra visuale, zona di Mezzocorona.
Un problema riscontrato nella creazione di questo plugin è che per visualizzare l’icona in
movimento sull’immagine dello schermo è necessario effettuare, per ogni spostamento
dell’icona, un refresh dell’intera immagine. Questo comporta una visualizzazione non fluida
dell’immagine sullo schermo.
Gianpaolo Marin
matricola 108817
Pagina 45 di 62
5.4 FormFilterR
ormFilterR
5.4.1 Interfaccia grafica
Questo add-on sviluppato per WorldWind permette di compiere una ricerca all’interno di file
XML. Esso è stato studiato e sviluppato in special modo per compiere ricerche all’interno di
quei documenti contenenti strutture interessanti il settore turistico. Esse vanno da paesaggi
naturali come laghi, fiumi, sentieri a strutture ricettive come ristoranti, alberghi, pizzerie.
Per avviare FormFilter è necessario selezionare dal menu “Plug-ins” la voce “Filtro” come
mostrato in Figura 5.30.
Figura 5.30: Come avviare l'applicazione FormFilter.
Una volta cliccato sulla voce “Fitro” appare, sovrapposta alla finestra normale di WorldWind,
la form del filtro. All’avvio l’applicazione si presenta come segue.
Figura 5.31: Interfaccia di avvio dell'add-on FormFilter.
Gianpaolo Marin
matricola 108817
Pagina 46 di 62
Per prima cosa è necessario selezionare, dal menu a tendina, il file XML nel quale effettuare
la ricerca. Il file XML su cui fare riferimento per una ricerca in ambito turistico è
“Baselga_redirect.xml”.
Nella finestra centrale della form sono riportati tutti layer pilotabili attraverso WorldWind, in
nero quelli attivi e in blu quelli non attivi. Gli asterischi inseriti prima del nome del layer
danno l’idea della struttura gerarchica di questi.
I layer contengono tutti quei dati che permettono di costruire il mappamondo virtuale così
com’è visualizzato. Ad esempio, accendendo o spegnendo il layer “Trentino-Urbanistica” si
procede alla visualizzazione o meno delle foto ad alta risoluzione che ricoprono il trentino. Il
layer che contiene le informazioni turistiche, invece, si chiama “Trentino”, esso è composto
da vari sotto menu di cui il più usato è “punti d’interesse”.
È possibile procedere manualmente all’accensione o spegnimento dei vari layer grazie ai
pulsanti “accendi/spegni singolo”, che agisce solo sul singolo layer, e “accendi/spegni tutto”,
che invece agisce su tutti i sotto-layer facenti parte della voce selezionata.
Per compiere la ricerca, basta scrivere nella casella di testo la parola chiave voluta e premere
il pulsante “filtra”.
Nell’esempio sottostante si utilizza la parola chiave “ristorante”.
Figura 5.32: Esempio di ricerca.
Quando appare questa schermata è ancora possibile eliminare quelle voci incluse nei risultati,
ma non rilevanti. Quest’operazione è possibile grazie alla selezione della riga desiderata e la
pressione del tasto “seleziona/deselezione”. La “X”, che identifica selezione e visualizzata
nella seconda colonna, si trasforma in un “-“ di non selezione.
Gianpaolo Marin
matricola 108817
Pagina 47 di 62
Possiamo vedere di seguito un esempio.
Figura 5.33: Ulteriore selezione dei dati da parte dell'utente.
Una volta effettuata quest’ulteriore scrematura dei risultati, sempre se necessaria, premendo il
pulsante “visualizza” è possibile visualizzare su WorldWind i risultati di tale ricerca.
Premendo tale pulsante la form del filtro è automaticamente nascosta.
Figura 5.34: Visualizzazione dei risultati sulla mappa.
Gianpaolo Marin
matricola 108817
Pagina 48 di 62
Riducendo la ricerca ad un solo ristorante è possibile una visualizzazione più dettagliata come
mostrato nelle figure seguenti.
Sequenza 5.3: Visualizzazione più dettagliata di un solo hotspot.
Gianpaolo Marin
matricola 108817
Pagina 49 di 62
Nelle figure seguenti è mostrato un altro esempio di ricerca utilizzando come parola chiave
“sentiero”.
Sequenza 5.4: Un secondo esempio di ricerca.
Per far riapparire di nuovo la form del filtro, è necessario selezionare nuovamente, dal menu a
tendina “Plug-ins”, la voce “Filtro”. Una volta comparsa è possibile eseguire una ricerca più
selettiva sui risultati già ottenuti, oppure eliminare la ricerca fatta premendo il tasto “elimina
filtro”, riportando così i layer alla situazione iniziale per poter fare una nuova ricerca.
Gianpaolo Marin
matricola 108817
Pagina 50 di 62
5.4.2
Algoritmo
Questa è stata la parte più difficile dello stage, perché si trattava di lavorare su un progetto già
avviato, sviluppato da persone diverse ma seguendo, in ogni modo, una struttura prefissata. Si
trattava allora, come prima cosa, di scoprire se quella data routine era già stata utilizzata per
un altro scopo. In caso affermativo capirne il funzionamento e, in seguito, come poterla
adattare al mio scopo; in caso contrario, invece, si procedeva all’implementazione di una
nuova struttura.
La parte interessante di quest’applicazione, non è tanto la ricerca della parola chiave
all’interno del file XML selezionato, perché questa è eseguita come una semplice lettura di un
file di testo, ma bensì la procedura che permette la lettura o l’accensione/spegnimento dei vari
layer.
I layer e tutti i vari sotto layer sono gestiti da una classe chiamata “RenderableObjectList”.
Questa classe contiene tutti i metodi, eventi e attributi necessari alla caratterizzazione della
struttura generale dei layer.
Per poter leggere i vari rami che compongono questa struttura ad albero, è necessario
compiere ricorsivamente la lettura di ogni ramo fino a che non si è arrivati alle foglie.
Quest’operazione va ripetuta a sua volta per ogni ramo della struttura.
Gianpaolo Marin
matricola 108817
Pagina 51 di 62
Inizio
Creazione oggetto
RenderableObjectList
Lettura layer
Loop fintanto
che ci sono
layer
Ci sono sotto
layer
Imposta layer
come root
Diagramma 5.4: Schema di principio della lettura dei layer di WorldWind.
Gianpaolo Marin
matricola 108817
Pagina 52 di 62
6 CAMPI D’IMPIEGO
L’applicazione sviluppata sulla base del progetto della NASA WorldWind, trova spazio in
svariati campi applicativi. Il settore in cui questo progetto esprime al meglio le sue
potenzialità è il settore turistico.
Di seguito sono descritti alcuni possibili campi applicativi.
6.1 Localizzazione di oggetti all’interno della mappa 3D
Sfruttando le funzionalità GIS dell’applicazione è possibile creare un sistema di tracking
volto alla localizzazione di oggetti, persone o autoveicoli. I soggetti localizzati devono essere
in possesso di un dispositivo GPS connesso ad un palmare avente il software sviluppato in
questa tesi. Questa funzionalità risulta particolarmente interessante in quanto, gli oggetti sono
inseriti direttamente nell’ambiente tridimensionale, fornendo all’utente informazioni sulla
posizione e sul tragitto fino ad ora percorso.
Questo sistema permette ad esempio di compiere delle gite in montagna più sicure, in quanto
dal campo base un addetto alla sicurezza può seguire gli spostamenti degli escursionisti. Così
facendo in caso di anomalie, quali errato percorso, pericolo o malessere, si può intervenire
rapidamente, avvisando gli escursionisti del problema o chiamando il pronto intervento. Il
servizio di pronto intervento non sarà quindi costretto a perdere del tempo in ricerche perché
il luogo d’intervento è perfettamente conosciuto.
Gianpaolo Marin
matricola 108817
Pagina 53 di 62
6.2 Raccolta dei dati territoriali
Attraverso l’utilizzazione del sistema di raccolta dati GPS è possibile aggiungere nuovi punti
d’interesse o nuovi percorsi al sistema di raccolta dati utilizzato. Questi dati possono essere
istantaneamente georeferenziati e trasmessi ad un elaboratore con lo scopo di visualizzare in
real time le informazioni sulla piattaforma desiderata, in questo caso WorldWind.
6.3 Turismo
L’utente interagendo con WorldWind può pianificare, comodamente da casa propria, luoghi e
percorsi da visitare. L’utente è facilitato nella scelta dei luoghi da visitare anche attraverso
un’ampia gamma di percorsi prestabiliti.
Come accennato in precedenza, l’applicazione dà la possibilità all’utente di:
Selezionare e visitare scenari all’interno della scena 3D.
Effettuare una ricerca tra i vari punti d’interesse, mantenendo così solamente le
informazioni desiderate.
Interrogare monumenti, edifici o luoghi naturale di particolare interesse per
ottenere maggiori informazioni.
Definire itinerari e percorsi.
Ottenere informazioni riguardanti punti di ristoro.
Gianpaolo Marin
matricola 108817
Pagina 54 di 62
Figura 6.35: Visualizzazione degli hot-spot già presenti nella prima versione del plug-in.
In un secondo momento o in tempo reale, tramite interazione tra software GPS e WorldWind,
l’utente può eseguire il tracking sulla mappa virtuale del percorso effettuato.
Figura 6.35: Possibilità di inserire o visualizzare sentieri sulla mappa.
Gianpaolo Marin
matricola 108817
Pagina 55 di 62
6.4 Altri impieghi
Ulteriori campi applicativi ove l’applicazione può essere utilizzata sono:
Monitoraggio e gestione del traffico stradale:
utilizzando dei campioni di automobili, dotati di sensore GPS, è possibile
rappresentare i dati rilevati utilizzando l’ambiente tridimensionale fornito da
WorldWind. Si può visualizzare così sulla mappa l’intensità del traffico e prendere
così delle decisioni riguardo al piano regolatore.
Antifurto satellitare:
apportando opportune modifiche, si potrebbe sfruttare la funzione di tracking
come antifurto satellitare per automezzi.
Gianpaolo Marin
matricola 108817
Pagina 56 di 62
7 CONCLUSIONI
Il tirocinio svolto mi ha permesso di acquisire nuove competenze sia dal punto di vista
formativo che relazionale e di mettere in pratica aspetti fino ad ora analizzati a lezione solo
dal punto di vista teorico. Mi ha dato inoltre l'opportunità di incrementare le mie competenze
nell'ambito del mondo informatico e della programmazione tramite l’utilizzo del software
Microsoft Visual Studio 2005.
La mia formazione universitaria è stata sufficiente per capire i temi e le singole attività che
ogni giorno dovevo svolgere e comunque eventuali mie mancanze sono subito state colmate
grazie alla disponibilità dei vari colleghi competenti e ai documenti letti. Ogni attività è stata
sviluppata con logica e organizzata razionalmente, la ricerca di documentazione permetteva di
evitare perdite di tempo successive.
Nella realizzazione di questo progetto sono state affrontate diverse problematiche, le più
significative sono:
Estrazione delle informazioni inviate da un ricevitore per GPS nello standard
NMEA 0183.
Checksum sulle coordinate lette.
Lavorare su una piattaforma, World Wind, già avviata e costituita da strutture
preesistenti.
La prima difficoltà è stata risolta grazie all’ausilio di una porta COM virtuale alla quale il
dispositivo GPS si collegava tramite Bluetooth; grazie a ciò i dati sono letti come da porta
seriale.
Gianpaolo Marin
matricola 108817
Pagina 57 di 62
Il terzo punto è stato superato grazie alla costanza nello studio del codice sorgente di
WorldWind a grazie ai consigli del mio tutor aziendale.
La seconda problematica non è stata risolta del tutto. Questo punto dovrà sicuramente essere
migliorato in un futuro per poter rendere quest’applicazione più robusta agli errori. Il
problema riscontrato riguarda alcune coordinate ricevute che apparentemente sono corrette,
mentre appartengono ad un altro meridiano o parallelo.
I risultati ottenuti nel complesso, comunque, soddisfano pienamente le specifiche di progetto.
I limiti di quest’applicazione riguardano solamente i dati GPS e la trasmissione delle
coordinate tramite Wifi, standard con problemi di affidabilità ben noti.
In questo progetto di tesi è presentata la base per lo sviluppo di un pacchetto applicativo con
l'obiettivo principale d'organizzare i dati complessi in modo da essere d’aiuto all’uomo come
sistema di supporto alle decisioni.
Al termine di questi tre mesi posso dire di essere pienamente soddisfatto della scelta fatta di
svolgere il mio stage in un’azienda. Gli obbiettivi sono stati maggiori delle mie aspettative e
consiglio a tutti gli studenti che dopo la laurea intendono entrare nel mondo lavorativo di
svolgere il proprio tirocinio in un'azienda, così d'aver modo di acquisire conoscenze e
competenze utili per il futuro.
Gianpaolo Marin
matricola 108817
Pagina 58 di 62
8 FOTO GALLERY
Di seguito è presentata una sequenza d’immagini visibili con l’utilizzo di WorldWind e
relativo add-on “Trentino” che permette la visualizzazione delle foto ad alta risoluzione.
Figura 8.36: Schermata iniziale di WorldWind.
Gianpaolo Marin
matricola 108817
Pagina 59 di 62
Figura 8.37: Zoomando sulla mappa si procede alla visualizzazione della sola Europa.
Figura 8.38: Visualizzazione dell'Italia con un diverso punto di vista.
Gianpaolo Marin
matricola 108817
Pagina 60 di 62
Figura 8.39: Immagine ad alta definizione raffigurante Villazzano. In special modo la sede di Graphitech.
Figura 8.40: Foto ad alta risoluzione di Trento centro raffigurante il mio appartamento.
Gianpaolo Marin
matricola 108817
Pagina 61 di 62
9 BIBLIOGRAFIA
Jean-Marie Zogg “GPS Basic Introduction to the system Application overview”.
Materiale fornito dalla Graphitech.
http://www.brains-N-brawn.com/noSink e link relativi.
Google Earth http://earth.google.com per l’interfaccia dell’add-on.
NASA World Wind http://learnarc.nasa.gov/worldwind.
World Wind http://worldwindcentral.com/wiki/Main_Page.
NMEA http://www.nmea.org.
NMEA sentence information http://home.mira.net/~gnb/gps/nmea.html.
NMEA information http://www.gpsinformation.org/dale/nmea.html.
NMEA 0183 http://www.nmea.org/pub/0183/.
Per esempi di codice http://www.codeproject.com/.
In generale http://wikipedia.org.
Manuale GPS Holux.
Informazioni e costrutti C++ http://www.cplusplus.com.
Per interfaccia grafica WolkingPDA http://www.maps-gps-info.com/fgpfw.html.
GPS http://www.ilmondodelletelecomunicazioni.it.
GPS http://www.colorado.edu/geograhy/gcraft/notes/gpg/gps_f.html.
GPS http://www.garmin.com/aboutGPS/.
XML file http://www.latoserver.it/XML/in10punti/.
XML ricerca http://www.dotnethell.it/articles/RicercaXML.aspx.
XML http://www.fabsoft.it/default.aspx?item=xml.
Gianpaolo Marin
matricola 108817
Pagina 62 di 62