• Non ci sono risultati.

3.4 API Android utili alla realizzazione del progetto

3.4.4 Google Elevation API

Elevation API [Goo16-2] fornisce informazioni sull’altitudine per qualun- que posizione geografica sulla superficie terrestre, compresi i fondali marini. Nel caso in cui una valutazione precisa dell’elevazione di un determinato luo- go non fosse disponibile, viene effettuata una stima approssimata basandosi sulle quattro misurazioni pi`u vicine. Attraverso le API di Google Maps Ele- vation, `e possibile arricchire ulteriormente i dati riguardanti un percorso o un punto d’interesse, utilizzando le informazioni sull’elevazione. I dati sull’ele- vazione vengono richiesti attraverso un’interfaccia HTTP. All’interno di una richiesta possono essere specificati uno o pi`u punti geografici (che identificano un percorso), utilizzando latitudine e longitudine.

Anche per Elevation API sono previsti due diversi limiti di utilizzo:

Standard Usage Limit Per utenti delle API standard: 1. 2.500 richieste gratuite al giorno.

2. Fino a 512 locazioni per ogni richiesta. 3. Un massimo di 10 richieste al secondo.

Premium Usage Limit Per i clienti Google Maps APIs Premium Plan:

1. 100.000 richieste in 24 ore.

2. Fino a 512 locazioni per ogni richiesta. 3. Massimo 50 richieste al secondo.

Esempio di richiesta HTTP per Elevation API

Il codice che segue mostra un esempio di richiesta di altitudine a Elevation API: 1 2 . . . 3 4 H t t p C l i e n t h t t p C l i e n t = new D e f a u l t H t t p C l i e n t ( ) ; 5 HttpContext l o c a l C o n t e x t = new B a s i c H t t p C o n t e x t ( ) ; 6 S t r i n g u r l = ” h t t p : / / maps . g o o g l e a p i s . com/maps/ a p i / e l e v a t i o n / ” + ” xml ?\ l o c a t i o n s=” + S t r i n g . v a l u e O f ( l a t i t u d e ) + ” , ” + S t r i n g . v a l u e O f ( l o n g i t u d e \ ) + ”&s e n s o r=t r u e ” ;

7 HttpGet h t t p G e t = new HttpGet ( u r l ) ; 8 try { 9 H t t p R e s p o n s e r e s p o n s e = h t t p C l i e n t . e x e c u t e ( httpGet , \ l o c a l C o n t e x t ) ; 10 H t t p E n t i t y e n t i t y = r e s p o n s e . g e t E n t i t y ( ) ; 11 i f ( e n t i t y != n u l l) { 12 . . . 13 } 14 } catch ( C l i e n t P r o t o c o l E x c e p t i o n e) {} 15 16 . . .

L’URL della richiesta a Elevation API `e qui mostrata come esempio:

h t t p s : / / maps . g o o g l e a p i s . com/maps/ a p i / e l e v a t i o n / xml ? l o c a t i o n s

= 3 9 . 7 3 9 1 5 3 6 , − 1 0 4 . 9 8 4 7 0 3 4 | 3 6 . 4 5 5 5 5 6 , − 1 1 6 . 8 6 6 6 6 7 & key=YOUR API KEY

Esempio di risposta di Elevation API

Il formato della risposta potr`a essere XML o JSON, specificandolo pre- ventivamente nella richiesta. La risposta in formato XML della richiesta mostrata precedentemente sar`a:

{ ” r e s u l t s ” : [ { ” e l e v a t i o n ” : 1 6 0 8 . 6 3 7 9 3 9 4 5 3 1 2 5 , ” l o c a t i o n ” : { ” l a t ” : 3 9 . 7 3 9 1 5 3 6 0 , ” l n g ” : −104.98470340 } , ” r e s o l u t i o n ” : 4 . 7 7 1 9 7 5 9 9 4 1 1 0 1 0 7 } , { ” e l e v a t i o n ” : − 5 0 . 7 8 9 0 3 5 7 9 7 1 1 9 1 4 , ” l o c a t i o n ” : { ” l a t ” : 3 6 . 4 5 5 5 5 6 0 , ” l n g ” : −116.8666670 } , ” r e s o l u t i o n ” : 1 9 . 0 8 7 9 0 3 9 7 6 4 4 0 4 3 } ] , ” s t a t u s ” : ”OK” }

Progettazione e sviluppo di

ARMH (Augmented Reality

Motorbike Helmet)

In questo capitolo verranno mostrati gli aspetti fondamentali della pro- gettazione e dell’implementazione del sistema ARMH.

Innanzitutto saranno analizzati i requisiti necessari allo sviluppo, compre- so ambiente di sviluppo, hardware necessario per i dispositivi e componenti software in grado di offrire determinate funzionalit`a. Successivamente sar`a il- lustrata la struttura del progetto, la comunicazione tra le diverse componenti e il modo in cui le informazioni vengono elaborate e visualizzate in realt`a au- mentata. Infine verranno descritti possibili miglioramenti e implementazioni future.

4.1

Analisi dei requisiti

ARMH (Augmented Reality Motorbike Helmet) `e un progetto sperimen- tale nato in ambito di ricerca presso la Raleri s.r.l., azienda attiva nel settore ottico, che da anni studia nuove tecnologie in campo ottico-sportivo. L’o- biettivo `e quello di sviluppare un sistema di navigazione basato sulla realt`a

aumentata, che possa essere sfruttato all’interno di un casco motociclisti- co. Le informazioni saranno proiettate attraverso un sistema HUD (Head- Up-Display) e comprendono: tracciato del percorso tra due punti, velocit`a di marcia, indicazioni stradali, un grafico dell’altitudine del percorso, una mappa e le notifiche avviate dallo smatphone collegato.

L’insieme delle informazioni dovr`a essere presentato all’utilizzatore in mo- do poco invasivo, al fine di non compromettere la sicurezza alla guida. Sar`a, inoltre, necessario implementare un canale di comunicazione con un secon- do device (smartphone), al quale verr`a affidato il compito di interagire con l’utente e di procurare le informazioni.

Al fine di garantire un costante scambio di dati con lo smartphone, il device installato nel casco, dovr`a prevedere componenti hardware in grado di sfruttare la tecnologia Bluetooth o WiFiDirect. Oltre a ci`o, dovranno essere presenti dei sensori inerziali IMU (Internal Measurement Unit), come accele- rometro e giroscopio, che saranno utilizzati per intercettare l’orientamento e i movimenti del casco. Una GPU in grado di fornire accelerazione hardware, seppur non necessaria, sar`a utile nel rendering grafico di oggetti 3D.

Per rendere possibile la progettazione e l’implementazione, `e stato neces- sario emulare il dispositivo installato nel casco utilizzando un comune tablet. Al fine di tralasciare alcune problematiche non inerenti la materia di studio. Tale scelta non comporta rilevanti modifiche concettuali per la realizzazione dell’intero sistema.

Grazie alla sua grande versatilit`a e alla predisposizione in ambito mobile, si `e scelto di utilizzare Android come sistema operativo per l’intero progetto. Inoltre l’opportunit`a di modificare il codice sorgente, offre allo sviluppatore la possibilit`a di adattare al meglio il sistema operativo alle funzionalit`a ri- chieste. L’ambiente di sviluppo utilizzato `e Android Studio nella versione 1.4 , un’ IDE basato su IntelliJ IDEA, fornito da Google per lo sviluppo su piat- taforma Android. Android Studio `e disponibile gratuitamente per Windows, Mac OS X e Linux, rilasciato con licenza Apache 2.0. La versione del sistema operativo utilizzato per la componente che sfrutter`a la realt`a aumentata `e

Android 5.1 (Lollipop). La seconda applicazione potr`a essere installata su dispositivi con versioni di Android pari o superiori alla 4.1.

L’elaborazione e la gestione degli oggetti virtuali 3D sar`a affidata ad una libreria per la realt`a aumentata, in grado di posizionarli nello spazio grazie alle coordinate geografiche. A tal fine `e stata scelta la libreria gratuita e open- source droidAR, che `e caratterizzata da una grande potenzialit`a e dall’assenza di limiti di utilizzo. Seppur corredata di una scarna documentazione, la possibilit`a di studiarne il codice e il funzionamento l’ha resa utile ai fini didattici.

Il sistema sviluppato sar`a in grado di fornire le seguenti funzionalit`a: ˆ Calcolo del percorso tra due punti, eventualmente offrire la possibilit`a

di scegliere il percorso preferito.

ˆ Calcolo dell’altitudine lungo il percorso.

ˆ Visualizzazione delle informazioni in realt`a aumentata.

ˆ Visualizzazione della rotta attraverso una mappa e un tracciato in AR.

ˆ Navigazione turn-by-turn con indicazioni stradali.

ˆ Connessione Bluetooth tramite moduli integrati nei dispositivi.

ˆ Interazione con l’utente mediante il rilevamento dei movimenti e l’ap- plicazione dedicata, installata su uno smartphone.

ˆ Ricezione delle notifiche avviate dallo smartphone collegato.

Documenti correlati