Introduzione
2
L’idea fornita dall’ “Ubiquitous Computing” rappresenta proprio la
possibilità di svincolare il computer al di fuori del “desktop”, avvicinandosi
sempre più al mondo fisico reale, connettendo qualunque persona in
qualsiasi luogo o momento e semplificando drasticamente la fase di
apprendimento di ogni applicazione.
In questo campo ci si è resi conto che i dispositivi hardware, messi a
disposizione dalle varie case produttrici, sonno già pronti per questa nuova
corrente di pensiero, mentre a livello software non esiste ancora un sistema
in grado di supportare questo scambio di dati.
Il contributo di questa tesi si colloca proprio in questo secondo ambito : la
realizzazione di una piattaforma software mobile in cui una sessione utente
sia completamente indipendente e svincolata dall’hardware utilizzato.
Per sviluppare questo software sono stati utilizzati computer e dispositivi
palmari, con l’aggiunta di dispositivi di input gestuali di nuova concezione
come ad esempio un guanto dotato di un sensore wireless in grado di
catturare ed interpretare il movimento della mano dell’uomo.
Il punto di partenza è stato un sistema software middleware
precedentemente sviluppato, che permette di condividere applicazioni tra
diversi dispositivi di input/output e tra diversi utenti tramite un server ed un
application server.
In seguito ad una prima fase di studio e di comprensione di questo
middleware per cercarne possibili espansioni e miglioramenti, è stato
sviluppato il software necessario per integrare nel sistema dispositivi di tipo
palmare.
Il porting per pda e tutto il middleware sono realizzati in ambiente Java per
rendere il sistema compatibile con un elevato numero di dispositivi
hardware. In un secondo momento si è poi creato una applicazione di prova
per testare il corretto funzionamento del sistema e per misurarne le sue
potenzialità attraverso indicatori..
La scelta dell’applicazione benchmark per questo sistema è caduta su
un’applicazione interattiva di gaming conosciuta in tutto il mondo: Pacman.
Introduzione
3
Era già infatti presente una versione di Pacman in 3d, sviluppata utilizzando
un porting di OpenGL per la virtual machine Java chiamato GL4Java.
Purtroppo però non tutti i dispositivi possono supportare le GL4Java, quindi
si è deciso di sviluppare parallelamente un pacman versione
bidimensionale, con la possibilità di essere utilizzato anche su dispositivi
con potenza di calcolo e memoria inferiore come i pda ed i telefoni cellulari
di nuova generazione. Pacman rappresenta infatti una tipica applicazione
dove è necessario condividere dati e codice, per poter giocare in
multiutenza e con dispositivi di tipo diversi. Questa applicazione dimostra
molto bene le potenzialità e le capacità della piattaforma anche per
applicazioni che necessitano un maggiore scambio di informazioni
attraverso la rete (come potrebbero richiedere anche applicazioni interattive
e di gaming più complesse). Naturalmente lo sviluppo di questa nuova
applicazione è stato compiuto tenendo sempre in considerazione la
necessità di poter essere usato da più utenti diversi contemporaneamente
collegati con dispositivi di input e output differenti, e l’esigenza di poter
essere eseguito sincronizzandosi con la versione tridimensionale attraverso
il middleware. Con l’ausilio di codice già sviluppato in un’altra tesi, si è
cercato di interfacciare ed utilizzare anche un guanto dotato di un
accelerometro triassiale, capace di funzionare da inclinometro per poter
leggere tutte le inclinazioni del corpo sul quale questo è appoggiato, nel
caso specifico proprio una mano.
Come si può ben capire da questa breve introduzione, il primo sforzo di
questa tesi è stato quello di ricercare applicativi già esistenti che potessero
aiutarci a conseguire il risultato cercato. La seconda parte invece è servita
nel modellare il codice già esistente secondo i nostri scopi prefissati, e nel
creare poi un’applicazione nuova ad hoc proprio per poter testare le
funzionalità e potenzialità di tutto il sistema.
Introduzione
4
Nell’elaborazione di questa tesi si è poi deciso di seguire lo stesso ordine
logico secondo il quale il progetto è stato sviluppato e portato avanti.
In particolare nel primo capitolo di parlerà del middleware già esistente
utilizzato per lo studio e del software utilizzato per poter utilizzare il
guanto.
Nel secondo capitolo invece si discuterà dell’hardware ed i dispositivi
utilizzati, evidenziando i problemi inerenti, incontrati nell’integrazione
degli specifici dispositivi.
Nel capitolo 3 invece si discuteranno i problemi superati a livello software,
le soluzioni proposte e nel capitolo 4 si vedrà come è stata decisa
l’implementazione del nuovo pacman bidimensionale.
Infine nel capitolo 5 presenteremo i risultati riguardanti le rilevazioni di
tempo e di prestazioni registrate alla conclusione del progetto e
concluderemo discutendo dei possibili impieghi e sviluppi futuri di questo
middleware, e dei miglioramenti da apportare per poter rendere tutto ancora
più semplice, intuitivo e performante.
Il Software utilizzato
5
Capitolo 1
Il software utilizzato
In questo primo capitolo studieremo in dettaglio la struttura del Session
Management Platform, il middleware che ci fornirà il supporto necessario
per la comunicazione fra i vari dispositivi. Analizzeremo la sua struttura, il
suo funzionamento e i possibili sviluppi futuri.
In seguito sposteremo la nostra attenzione sull’interfaccia Software per il
sistema wireless di controllo gestuale. Questo software ci permetterà di
testare il sistema utilizzando come dispositivo di input un guanto in grado
di catturare il movimento della mano per poter pilotare o comandare un
qualsiasi dispositivo.
Il Software utilizzato
6
1.1 Introduzione al Middleware
Senza alcun dubbio la sfera cognitiva informatica è sempre stata
caratterizzata dal binomio inscindibile utente - pc, ovvero dall’associazione
di una persona ad un solo personal computer. Il concetto di “Ubiquitous
computing” e le moderne tecnologie sconvolgono però questo binomio
iniziale. Grazie infatti al continuo miglioramento delle tecnologie di
drogaggio del silicio è stato possibile raggiungere livelli di
miniaturizzazione talmente elevati da poter incominciare a parlare di
nanotecnologia. Grazie a quest’ultima è stato infatti possibile creare
dispositivi portatili sempre più piccoli e leggeri: un esempio di questi
possono essere i PDA e gli smartphone attualmente sul mercato. Essi
integrano capacità computazionali estremamente elevate e allo stesso tempo
dimensioni e consumi molto contenuti. Come predice la legge di Moore
(l'evoluzione elettronica porta a un raddoppio della capacità elaborativa
dei computer ogni 18 mesi), la tendenza alla miniaturizzazione avanza
tutt’oggi inesorabilmente . Allo stato attuale l’utente non utilizza più un
solo pc, che accende usa e
infine spegne, ma ha una
serie di dispositivi tutti in
grado di comunicare fra loro.
L’utente non è più per forza
legato esclusivamente ad un
dispositivo, anzi ne può
usare contemporaneamente
più di uno; potrebbe addirittura utilizzare l’input di un sistema (ad esempio
di "motion capture") e l’output di un altro (ad esempio un televisore al
plasma collegato ad un pc). Oltre a ciò l’utente è in grado di spostarsi
portando con se alcuni device, mentre è costretto ad abbandonarne altri
lasciandone liberi per eventuali altri utenti. Inoltre spostandosi, l’utente
Figura 1.1: Possibili collegamenti di un utente a
diversi device
Il Software utilizzato
7
può avvicinarsi ad alcuni device che, rilevando la posizione dell’utente,
possono iniziare ad offrire servizi. Il sistema progettato è conscio di questa
dinamicità dello stato dell’utente ed è quindi in grado di gestisce la
sincronizzazione di tutti questi dispositivi.
Altri problemi che vengono gestiti dal Platform sono
lo stato di tutti i dispositivi. Questi infatti possono essere connessi o
disconnessi, liberi o occupati. Questo stato viene quindi comunicato
a tutti gli utenti collegati al sistema;
le applicazioni disponibili in rete. L’’utente deve infatti poter
scegliere un’applicazione da utilizzare nei suoi device. Particolare
attenzione va posta su questo punto in quanto alcune applicazioni
potrebbero essere non disponibili poiché in uso da un numero troppo
elevato di utenti;
gli utenti connessi. Un utente può “loggarsi” e “sloggarsi” a uno o a
più device; inoltre il platform permette anche comunicazione tra i
singoli client.
Figura 1.2: I tre problemi principali gestiti
dal Platform
Il Software utilizzato
8
Il sistema di funzionamento globale del Platform è suddiviso in tre
livelli:
Livello Applicativo;
Livello di Sicurezza;
Livello di Rete;
Il primo livello che incontriamo è quello applicativo: tutte le applicazioni
ed i servizi che sfruttano il middleware sono qui rappresentati. Strutturato in
questa maniera il livello applicativo si ha un leggero sovraccarico
appositamente introdotto per minimizzare le funzionalità del livello di rete e
quindi per renderlo più veloce e reattivo.
Il livello sicuramente necessario sia per la privacy delle informazioni, sia
per evitare funzioni collaterali da parte di malintenzionati, è quello di
sicurezza. Tuttavia attualmente questo livello non è ancora stato sviluppato
completamente. Una corretta implementazione di questo livello si potrebbe
basare su uno scambio di chiavi simmetriche per ottenere maggiori
prestazioni e su un’identificazione tramite chiavi asimmetriche o certificati.
L’ultimo livello che incontriamo è quello di rete. Questo rappresenta il
cuore del middleware; il suo scopo principale è quello di controllo dei
Figura 1.3: Livelli del Middleware
Il Software utilizzato
9
device, e quindi la gestione delle connessioni e della sincronizzazione dei
dispositivi e delle sessioni degli utenti.
Ovviamente per la gestione di un elevato numero di servizi ed utenti è
necessario preveder la possibilità di replicazione dei server che gestiscono
la rete utilizzando un protocollo di bilanciamento e smistamento del carico
di rete.
1.2 Struttura e funzionamento del Middleware
Il middleware è strutturato in due blocchi principali: il Platform Server e il
Platform Client. Il primo è costituito dal server che gestisce la
comunicazione e il passaggio dei dati all’interno dell’infrastruttura; il
secondo è un generico client connesso al server. Di quest’ultimo fanno
parte l’Application Server, che rappresenta il server per una generica
applicazione, e l’Application Client che è un client utilizzabile da un
qualsiasi utente per accedere ad una determinata risorsa.
La comunicazione tra queste tre struttura avviene tramite un protocollo di
rete molto utilizzato e conosciuto: il TCP.
Figura 1.4: Esempio di uso del Middleware