Università degli studi di Roma “Tor Vergata” Facoltà di Ingegneria Dipartimento di Ingegneria Informatica Progetto e realizzazione di un sistema di localizzazione basato sul “cell-id” nella piattaforma Simple Mobile Services Relatore Laureanda Ing. Stefano Salsano Simona Ielapi
Evoluzione dei dispositivi mobili Inizialmente un dispositivo cellulare era in grado di fornire solo delle funzionalità molto semplici, in particolare ricevere ed effettuare telefonate Col passare degli anni si è assistito a un sempre maggiore sviluppo tecnologico e le aspettative degli utenti sono cambiate Le funzionalità avanzate che ora possiamo trovare in un cellulare sono varie: fotocamera, connessione wi-fi, 3G, bluetooth, ricevitore GPS.
Il Progetto SMS Il progetto “Simple Mobile Services” (SMS) si propone di realizzare una classe di servizi per terminali mobili basati sul “paradigma della semplicità” che siano facili da reperire, facili da configurare, facili da usare e sicuri. L’applicazione più importante di SMS è il Move, un “service browser” che permette agli utenti di scoprire ed accedere ai servizi richiesti. Tra le funzionalità disponibili citiamo: Gestione dei “Mobile Electronic Memos” (MEM) Indoor Navigator Outdoor Navigator Find my Friends
La localizzazione Cellulare Il principale elemento che effettua la localizzazione è il dispositivo GPS che tramite i satelliti è in grado di restituire le proprie coordinate attuali Non tutti i cellulari sono provvisti di ricevitore GPS: si può effettuare una localizzazione anche senza GPS? Data la struttura a celle della rete cellulare, è possibile farlo, conoscendo la posizione della cella alla quale il dispositivo si è registrato
Le informazioni disponibili dopo la registrazione ad una cella sono: CellID (Base Station Identity): Numero Identificativo della Cella LAC (Location Area Code): Codice che esprime la zona dove si trova ciascuna cella MCC (Mobile Country Code): identifica la nazione dell'operatore (es. Italia: 222). MNC (Mobile Network Code): identifica l'operatore all'interno della nazione (es. Tim: 01).
OpenCellID OpenCellID è un progetto open source che si propone di creare un database completo dei Cell-ID di tutto il mondo associati alle relative coordinate. OpenCellID offre varie funzioni tra cui: Cell/Get: restituisce delle coordinate (latitudine e longitudine) relative a una cella Measure/Add: consente di aggiungere al database le coordinate di una cella;
Mentre con il GPS si può avere un elevato grado di precisione (1-10 metri ), con opencellid la precisione diminuisce, e la posizione restituita all’utente può discostarsi da quella reale per più di un chilometro. Per questo motivo nel Move si è deciso si associare ad ogni posizione un valore di “imprecisione”. Il range viene usato come valore di precisione dopo essere stato trasformato opportunamente con la scala logaritmica (log(range)). La precisione può assumere i valori compresi tra 0 e 4: 1 m 0 (log1) 10 m 1 (log10) 100 m 2 (log100) 1 km 3 (log1000) 10 km 4 (log10000) circonferenza di raggio pari al range
Integrazione di OpenCellId nell’architettura Move OciClient PositionServer opencellid.org DB OpenCellID DB OpenCellID DB SMS DB SMS OciServer OpenCellID XML/HttpJson/Http
Richiesta di una Measure/Add Inseriamo una latitudine e una longitudine Aspettiamo di sapere se l’operazione ha avuto successo
Richiesta della Find my Friends Richiediamo al Move di visualizzare sulla mappa la posizione dei nostri amici E attendiamo la visualizzazione
Eseguendo una Find my friends, è importante fare una distinzione tra gli utenti che per effettuare una localizzazione hanno usato un ricevitore GPS e quelli che hanno usato le informazioni della cella.
Come rappresentiamo la precisione sulla mappa? Abbiamo visto come facciamo a calcolare il valore di Precisione, ma come viene rappresentata sulla mappa? disegnamo attorno all’utente o alla posizione corrente una circonferenza decidiamo il raggio della circonferenza in base a una conversione tra i metri del range associato alle coordinate e al valore di esso in pixel
Quando la circonferenza diventa troppo grande da non entrare più nell’area di visualizzazione dello schermo, essa non viene più disegnata. Viene quindi usata una rappresentazione alternativa, che indica che l’utente si può trovare in un punto qualsiasi della regione di mappa rappresentata su schermo:
La prima soluzione Vantaggi: Precisione Svantaggi: Complessità AA A B BB (0, getHeight()) ( getWidth(),getHeight ()) (getWidth()/2,getHeight ()/2) (x0, y0) (x1, y1) Utente0 Utente1 (0, 0)( getWidth(), 0) AB
La seconda soluzione Vantaggi: Minore Complessità Svantaggi: Imprecisione Utente1 Utente0 (x0, y0) (x1, y1) (getWidth()/2,getHeight ()/2)
Test su Windows Mobile Oltre che sull’emulatore l’applicazione è stata testata con successo su un palmare modello Htc P3470 con piattaforma Windows Mobile. Su questo particolare dispositivo per accedere ai dati sul CellID è stato necessario interfacciarsi con la classe InternalProxy responsabile di recuperare le informazioni sulla cella.