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