P O L I T E C N I C O D I B A R I

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "P O L I T E C N I C O D I B A R I"

Transcript

1 P O L I T E C N I C O D I B A R I D I P A R T I M E N T O D I I N G E G N E R I A E L E T T R I C A E D E L L ' I N F O R M A Z I O N E C O RS O D I L A UREA M A G IST RALE IN INGEGNER IA IN F O RMATIC A T E S I D I L A U RE A IN E LA BORAZIO N E D I IM M A G IN I E V IS IO N E A R T IF IC I A LE STUDIO, PROGETTAZIONE E SVILUPPO DI UN PROTOTIPO DI UN SISTEMA DI REALTA' VIRTUALE PER LA RIQUALIFICAZIONE DEGLI AMBIENTI VITALI Relatore: prof. ing. Vitoantonio BEVILACQUA Correlatori: dott. Michele PANTALEO prof.ssa Marina DE TOMMASO Laureando: Rosario SANTORO A N N O A C C A D E M I C O / 1 3

2 SOMMARIO 1 INTRODUZIONE E CONTESTO LA REALTÀ AUMENTATA E LA REALTÀ VIRTUALE STATO DELL'ARTE IL CONTESTO Prima fase Seconda fase Terza fase SENSORISTICA Elettrocardiogramma (ECG) Elettroencefalogramma (EEG) Elettromiogramma (EMG) FIT La condizione di stress e suo rilevamento L'INTERVENTO DEL CANDIDATO NEL PROGETTO PANORAMICA DEL SISTEMA PANORAMICA DI ALTO LIVELLO CICLO ESEMPLARE DI FUNZIONAMENTO La macrofase offline La macrofase online ARCHITETTURA DEL SISTEMA MODULO OFFLINE: MODELLAZIONE 3D L'ACQUISIZIONE Teoria sull'acquisizione Le alternative i

3 3.1.3 La soluzione di acquisizione VISORI DI REALTÀ VIRTUALE Meta AR Oculus Rift LEAP MOTION CREAZIONE DELL'AMBIENTE VIRTUALE Unity 3D Le classi L'architettura event-oriented La descrizione XML della scena La doppia visualizzazione I TIPI DI OGGETTO MODIFICABILI PROTOTIPO DELL'AMBIENTE VIRTUALE MODULO ONLINE: CONTROLLO DELLA REALTÀ VIRTUALE L'INTERFACCIA OPERATORE Il Qt Creator Il design pattern MVC e la sua variante Il diagramma delle classi L'aspetto della GUI LA COMUNICAZIONE Il formato JSON Integrazione in Qt Creator Integrazione in Unity 3D e C# Il protocollo di comunicazione in JSON SVILUPPI FUTURI ALTRI STIMOLI MAGGIORE ATTIVITÀ DA PARTE DEL PAZIENTE INGOMBRO DELL'OCULUS VR IL SISTEMA COME WEB SERVICE ii

4 5.5 DESCRIZIONE DELLE SCENE 3D MEDIANTE X3D ALTRI UTILIZZI DEL SISTEMA CRONOLOGIA DELLE MODIFICHE ALL'AMBIENTE CONCLUSIONI APPENDICE CONTENUTO X3D D'ESEMPIO BIBLIOGRAFIA iii

5 iv All'equilibrio.

6 Introduzione e contesto 1 INTRODUZIONE E CONTESTO 1.1 La realtà aumentata e la realtà virtuale Negli ultimi anni, la disciplina della Visione Artificiale ed Elaborazione di Immagini ha apportato una serie di enormi contributi in ambito medico, sia in fatto di diagnosi sia di mezzi. Per quanto riguarda le diagnosi, basta citare le numerose tecniche di image processing mediante le quali l'immagine ottenuta attraverso una lastra, un'endoscopia o una TAC, può essere migliorata al fine di facilitare la rilevazione di occorrenze di certi artefatti. In questa disciplina vi è una branca in particolare il cui sviluppo in questi tempi sta subendo una forte spinta: la realtà aumentata e la realtà virtuale. Figura Relazione tra l'ambiente reale, la realtà aumentata e la realtà virtuale [1] Questi due ambiti sono in correlazione l'uno con l'altro. Come illustrato in Figura 1.1, non si tratta di una distinzione netta ma di una misura di quanto la realtà osservata si fonde con 1

7 Introduzione e contesto informazioni e scenari prodotti esclusivamente da una macchina. A seconda di quanto una di queste due componenti prevale sull'altra si ottiene la definizione per la scena osservata. Ad esempio considerando un paio di occhiali sulle cui lenti vengono proiettate informazioni come una scritta recante data e ora, si è di fronte ad un sistema di realtà aumentata in quanto la provenienza della maggior parte dell'immagine percepita dall'osservatore è naturale, a fronte delle poche informazioni prodotte sinteticamente (Figura 1.2). Aggiungendo una quantità sempre maggiore di informazione digitale sulle lenti ci si avvicina ad una configurazione di "virtualità aumentata"; portando questo procedimento agli estremi e dunque rimuovendo tutta la scena naturale e visualizzando il 100% di informazioni digitali si giunge alla definizione di realtà virtuale (Figura 1.3). Questi dispositivi ricreano l'illusione della tridimensionalità proiettando contenuti stereoscopici sulle lenti e imitando il funzionamento naturale del sistema visivo umano (vedere 3.1.1). Figura 1.2- La scena complessivamente percepita in un sistema di realtà aumentata

8 Introduzione e contesto Figura Il visore di realtà virtuale impiegato in fase di test (Oculus Rift) Tali dispositivi hanno applicazioni che spaziano dall'ambito videoludico (realtà virtuale) ad attività quotidiane come la guida di un'automobile (realtà aumentata). Un altro settore che beneficia dei progressi della tecnologia VR è quello medico/riabilitativo. Recenti innovazioni permettono infatti ad un medico chirurgo di operare un paziente nel modo meno invasivo possibile, servendosi di un visore a realtà aumentata che mostra e aggiorna in tempo reale il modello tridimensionale di un organo del paziente, guidando il bisturi del chirurgo lungo il tratto di incisione migliore (Figura 1.4). Figura Applicazioni di realtà aumentata in ambito medico chirurgico

9 Introduzione e contesto Figura Un dispositivo di realtà aumentata mentre viene usato per alleviare il dolore e l'ansia durante la sostituzione del bendaggio di un'ustione 3 Esistono anche una serie di giochi con webcam 4 sviluppati dall'università dello Ulster il cui scopo è la riabilitazione in seguito ad infarto. Questi giochi sono stati creati per incoraggiare movimenti marcati del tronco del corpo usando una tecnologia webcam a basso costo e un comune PC. I giochi conservano un profilo del giocatore in modo tale che il gioco stesso possa adattarsi dinamicamente per fornire un livello appropriato di sfida per l'abilità motoria del paziente. Risulta di particolare efficacia l'utilizzo di giochi poichè il paziente durante la riabilitazione ha una tendenza allo scoraggiamento. Essendo la riabilitazione un processo intensivo, frequente e impegnativo bisogna motivarlo permettendogli di riabilitarsi mentre gioca [2]. Nel caso in cui si tratti di un bambino, egli può trarre beneficio dalla distrazione dalla particolare operazione che sta subendo giocando servendosi di sistemi di realtà virtuale [3]. 1.2 Stato dell'arte La realtà virtuale è ben conosciuta per i suoi impieghi nei simulatori di volo e nei giochi. Comunque, questi sono solo due dei molti modi in cui essa è impiegata oggigiorno Un esempio è "Coleraine" (http://www.youtube.com/watch?v=1_qh1a0azia) 4

10 Introduzione e contesto Un utilizzo diverso è la rilevazione finalizzata all'eliminazione delle situazioni di stress. Sono già state in parte esplorate le tecniche di realtà virtuale finalizzate al rilevamento di condizioni di stress. Nel bando ALBO 5 della Regione Toscana, veniva previsto l'utilizzo della realtà virtuale non immersiva per la valutazione delle situazioni di stress in ambiente lavorativo [4]. Il progetto ALBO si proponeva di verificare l'applicabilità delle tecnologie ICT per la costruzione di ambienti di lavoro virtuali e "immersivi" finalizzati alla rilevazione, al monitoraggio e al miglioramento continuo del benessere organizzativo nelle imprese industriali e non della Toscana. Il concetto di benessere oggetto della ricerca è strettamente correlato alla prevenzione dello stress e dei rischi psico-sociali emergenti o latenti sui luoghi di lavoro. 1.3 Il contesto Il progetto propone metodologie e strumenti per definire nuovi approcci nella progettazione di ambienti di vita dedicati a soggetti con capacità residua nelle fasi iniziali della perdita di autonomia. Il progetto, nel suo insieme, prevede la realizzazione di un sistema per la misura oggettiva della capacità residua che permetterà di determinare in modo oggettivo il deficit cognitivo e/o sensoriale. La misura della capacità residua costituirà un requisito in input per la configurazione di un ambiente di vita sostenibile che potrà essere adeguato per assecondare l evoluzione del deficit. Ciascun ambiente di vita deve essere analizzato e riqualificato, con particolari accorgimenti architettonici e di design, per ottenere un sistema adattabile in funzione del deficit misurato. Sarà dotato di strumenti attivi (domotica e ausili) e passivi (elementi strutturali e accessori di ambiente) che miglioreranno le capacità del soggetto di sopperire al deficit. Il progetto prevede la realizzazione di un laboratorio dimostrativo nel quale eseguire i test necessari per la validazione direttamente sugli utenti finali, valutando così la qualità della progettazione. 5 Ambienti di Lavoro virtuali per la rilevazione del Benessere Organizzativo 5

11 Introduzione e contesto Il progetto ha come principale obiettivo quello di mettere in atto una procedura di progettazione/riqualificazione di ambienti domestici e assistenziali al fine di consentire un adattamento dinamico e personalizzato degli stessi a seconda del contesto e delle capacità cognitive/motorie residue del paziente in questione. Il termine riqualificazione porta con sé l enorme vantaggio di non richiedere necessariamente la costruzione ad-hoc di strutture, bensì di modificare quelle esistenti con opportuni interventi a costi non troppo elevati. L adattamento dell ambiente avviene sia mediante accorgimenti architettonici (arredi, infissi,.) sia attraverso la definizione di una sequenza di scenari ambientali multisensoriali preimpostati, costruiti sulle particolari esigenze del paziente: l idea è quindi quella di seguire nel tempo l'evoluzione della patologia del paziente stesso intervenendo attraverso la modifica di alcuni dei principali parametri inerenti il comfort ambientale. A fronte di questa premessa, il progetto può essere realizzato in tre fasi principali: 1. Progettazione e generazione delle specifiche progettuali e di configurazione ambientale (paragrafo 1.3.1); 2. Progettazione, attuazione e realizzazione dell ambiente domotico multisensoriale (paragrafo 1.3.2); 3. Realizzazione di una piattaforma tramite la quale monitorare e controllare gli alert generati volontariamente attraverso un meccanismo di feedback basato su ADL 6 ; questi alert possono in alternativa essere generati automaticamente attraverso la piattaforma domotica (paragrafo 1.3.3) Prima fase La prima fase di progettazione e generazione delle specifiche progettuali, anche a valle di campagne di acquisizione di geometrie tridimensionali degli ambienti oggetto di modellazione, prevede l utilizzo di tecniche di realtà virtuale/aumentata mediante la quale è possibile immergere il paziente in scenari virtuali dando allo stesso la percezione di trovarsi nella realtà: in questo contesto viene valutata la percezione emotiva, di piacevolezza 6 Activities of Daily Living 6

12 Introduzione e contesto mediante l utilizzo di sensori tipo EEG e della risposta simpatico-cutanea provata durante l esplorazione dell ambiente virtuale mediante l utilizzo di sensori e tracciati ECG e EMG. In questo modo è possibile percepire in maniera oggettiva e quantificata la gradevolezza o sgradevolezza/fastidio che un paziente sperimenta per esempio in un ambiente più o meno luminoso o rumoroso, o dinanzi ad una porta colorata, o ad una vetrata che cambia colore. L'output di questa fase è la produzione di una serie di specifiche progettuali necessarie alla fase di attuazione e realizzazione dell ambiente domotico: si tratta dunque di sistemi di fonoassorbenza, servomeccanismi per operazioni di sollevamento, abbassamento, orientazione, regolazione delle tende, apertura/chiusura/modulazione dell'angolazione di finestre, serrande e porte Seconda fase L'output della prima fase costituisce la base per l implementazione di un adeguato sistema di domotica avanzata. Questo sistema di domotica avanzata sarà in grado di applicare le caratteristiche dello scenario prescelto all ambiente controllato mediante i classici meccanismi di retroazione e di inseguimento delle variabili di controllo tipici dell automazione. Questo tipo di domotica consentirà pertanto, in aggiunta alla domotica classica, di adeguarsi in maniera automatica e proattiva nel tempo alle esigenze psicofisiche del soggetto fragile Terza fase L ultima fase prevede la realizzazione di una piattaforma che svolga le tipiche funzioni di una centrale operativa e che si occupi della gestione di sistemi per il calcolo dell indice di ADL e per la memorizzazione delle informazioni veicolate mediante l utilizzo di applicazioni mobile. Il paziente/soggetto target potrà pertanto quotidianamente effettuare segnalazioni ad un sistema centrale che prenderà decisioni supportate da esperti medici. Inoltre l'utilizzo della piattaforma consentirà l'offerta di un ulteriore servizio che tenendo conto della condizione contingente del soggetto (risposta al piano farmacologico, impreviste complicanze del decorso della condizione patologica, effetti collaterali cronicizzanti delle terapie continuative) sarà in grado di fornire meccanismi di alert, ovvero modificare le condizioni di regolazione automatica proposte dal sistema domotico, sulla base delle indicazioni di specialisti medici in grado di comprendere la condizione del soggetto target. 7

13 Introduzione e contesto 1.4 Sensoristica Elettrocardiogramma (ECG) Al contrario delle contrazioni dei muscoli scheletrici volontari che sono comandate direttamente dal sistema nervoso, le contrazioni del muscolo del cuore iniziano internamente, nelle fibre muscolari stesse e sono soltanto accelerate o rallentate dal sistema nervoso (e da una varietà di fattori chimici). Il processo coinvolge movimenti di ioni entranti e uscenti dalle cellule muscolari e la polarizzazione e depolarizzazione cellulare [5]. Posizionando una serie di sensori in determinate posizioni sulla superficie del corpo (Figura 1.6), è possibile tracciare nel tempo l'andamento delle differenze di potenziale da un sensore ad un altro: il tracciato risultante è un elettrocardiogramma (ECG, anche noto come EKG, Figura 1.8). Figura Posizione degli elettrodi sul tronco del paziente (non sono raffigurati quelli sulle gambe) Figura Differenze di potenziale delle tracce I, II e III in un ECG (in senso antiorario, partendo da quella disposta orizzontalmente) 8

14 Introduzione e contesto Figura Esempio di tracciato di un ECG a 12 tracce (12-lead) Elettroencefalogramma (EEG) L'identificazione di un EEG normale si deduce sul riconoscimento di un EEG anormale, sulla conoscenza delle normali variazioni delle forme d'onda e sulla loro evoluzione dalla gioventù alla vecchiaia. L'encefalogramma è una misura unica e valutabile della funzione elettrica del cervello. È un mezzo grafico delle differenze di potenziale tra due parti del cervello registrata nel tempo. L' EEG riguarda lo studio di questi segnali elettrici che sono generati dal cervello. L' EEG extracraniale fornisce un sunto ampio dell'attività elettrocerebrale attraverso entrambi gli emisferi del cervello. L'EEG intracraniale fornisce invece un EEG specifico registrando direttamente dal cervello attraverso elettrodi impiantati chirurgicamente in specifiche regioni del cervello. Può essere così rivelata informazione su una disfunzione diffusa o locale cerebrale, come la presenza di scariche epilettiformi interictali (Interictal Epileptiform Dischagers, IEDs), o sequenze di particolare importanza. Per l'interpretazione di un EEG anormale bisogna prima comprendere i criteri necessari per la definizione dei pattern normali. Mentre un normale EEG non esclude una diagnosi clinica (come l'epilessia), un'occorrenza insolita su un EEG può essere a supporto di una 9

15 Introduzione e contesto diagnosi, può indicare una disfunzione cerebrale o può non avere niente a che fare con la ragione dello studio (per esempio, un mal di testa). I segnali elettrici si creano infatti quando cariche elettriche si muovono nel sistema nervoso centrale. Tali segnali sono nell'ordine dei µv. [6]. Figura Il casco con elettrodi attraverso il quale viene misurata l'attività cerebrale (EEG) Figura Posizionamento degli elettrodi nel sistema (punti neri) e nel sistema (punti neri e bianchi) in un EEG. Le sigle su ciascun punto identificano univocamente una regione del cranio. 10

16 Introduzione e contesto Le registrazioni EEG dal cuoio capelluto mostrano la differenza di potenziale tra due differenti siti sulla testa sopra la corteccia cerebrale che è più vicina all'elettrodo che sta registrando. Durante l'uso normale, i potenziali elettrici sono acquisiti indirettamente dalla superficie del cuoio capelluto e incorporano l'analisi delle forme d'onda, delle frequenze, dei voltaggi, della morfologia e topografia. Questi potenziali vengono acquisiti per via digitale attraverso un certo numero di elettrodi disposti tra loro in accordo allo standard internazionale che prevede una suddivisione in regioni ampie dal 10% al 20%, in ciascuna delle quali verrà posizionato un elettrodo. Una misura clinicamente accettabile prevede almeno 21 elettrodi. Recentemente è stato messo a punto il nuovo standard che prevede un maggior numero di elettrodi e dunque più vicini tra loro, tuttavia il più diffuso resta il Per la corretta lettura di un tracciato EEG come quello in Figura 1.11, quando stimolato da interventi esterni come il progetto di questa tesi si propone di realizzare, è necessaria una sincronizzazione fine (al microsecondo) tra la lettura e le variazioni degli input forniti al paziente a mezzo della realtà virtuale. È possibile soddisfare questo requisito tramite realizzazione di un sistema real-time (soft realtime) oppure tramite la registrazione di marche temporali rispetto ad un riferimento comune (per esempio l'orario di un server NTP) e in fase di studio dei tracciati tenere presente l'eventuale sfasamento. Figura Tracciato d'esempio di un EEG 11

17 Introduzione e contesto Elettromiogramma (EMG) L'elettromiografia è il test che verifica lo stato di salute dei muscoli e dei nervi che controllano quei muscoli. Il test è condotto inserendo dei sottili aghi nei muscoli: questi aghi registrano l'attività elettrica prodotta dai muscoli. Dopo il posizionamento degli elettrodi può venir chiesto al soggetto osservato di flettere il braccio e l'attività elettrica visualizzata su monitor fornisce informazioni circa l'abilità del muscolo di rispondere quando i nervi dei muscoli sono stimolati [7]. Figura Esempio di elettromiografia (EMG) ad un braccio. Dunque un EMG produce una lettura nel momento in cui il muscolo cui gli elettrodi sono collegati compie un movimento e tale segnale è direttamente proporzionale allo sforzo compiuto. Una volta chiarito lo scenario di un EMG ci si imbatte purtroppo in un'incompatibilità con il progetto. Un EMG misura lo sforzo dei muscoli ai quali è collegato, ma il soggetto osservato durante la somministrazione dell'ambiente virtuale tramite il visore non compie alcun movimento sotto sforzo. Nella configurazione attuale, infatti, il paziente è considerato come entità statica nella realtà e il movimento più evidente che può compiere è la rotazione della testa per esplorare il mondo virtuale in cui è immerso. Date queste premesse, un EMG risulta del tutto inutile ed è stato dunque escluso. Eventualmente in configurazioni future, considerando l'inclusione di dispositivi quali il Leap Motion (si rimanda ai paragrafi 3.3 e 5.2), sarà possibile incrementare l'attività del 12

18 Introduzione e contesto paziente permettendogli, per gradi, un livello di interazione sempre maggiore con il mondo virtuale che gli viene presentato. Esempi di interazioni sono: la possibilità di indicare un oggetto con un dito, proiettando una linea che permetta all'operatore medico di capire rapidamente a quale oggetto il paziente si riferisca; la possibilità di muoversi nell'ambiente virtuale (al momento è possibile solo osservare in ogni direzione); la possibilità di interagire con degli oggetti presenti nella scena, come tende, porte e finestre FIT Il Laboratorio di Informatica Industriale del Politecnico di Bari in collaborazione con AMT Services S.r.l. nell'ambito del PON Sviluppo di un Sistema di Rilevazione della Risonanza (SS-RR) (contesto FIT, Fondo rotativo per l'innovazione Tecnologica) ha recentemente sviluppato un sistema il cui scopo è il riconoscimento degli stati d'animo di una persona osservando e studiando l'espressione del volto, il tono della voce e la gestualità, servendosi di webcam e microfoni. Ai fini del progetto oggetto di questa tesi è stato considerato il riutilizzo di due di questi tre moduli: il rilevamento dell'espressione facciale è stato tralasciato poiché non è possibile inquadrare il volto del soggetto, completamente ostruito dalla presenza del visore virtuale Oculus Rift. Gli output di questi moduli software andranno ad affiancare la sensoristica medica EEG ed ECG precedentemente considerata La condizione di stress e suo rilevamento La condizione di stress psicofisico di un soggetto può trovare riscontro nelle letture dei tracciati EEG ed ECG. In un'ottica generale, è stata già dimostrata la possibilità di rilevare una certa quantità di emozioni attraverso la lettura e l'interpretazione di un elettroencefalogramma e tali stati d'animo includono la sensazione di disagio e stress [8]. Recentemente, è stata coinvolta in queste indagini anche l'elettrocardiografia: infatti, è stata studiata la dipendenza tra caratteristiche oggettive di un ECG e la presenza di stress mentale nel soggetto osservato [9]. Esempi di queste caratteristiche sono le variazioni a breve termine delle misurazioni della variabilità del ritmo cardiaco (Heart Rate Variability, HRV) e la variabilità morfologica (MV), analizzate sia nel dominio del tempo sia della 13

19 Introduzione e contesto frequenza. I risultati dello studio di Costin, Rotariu & Pasarica hanno rivelato infatti che le misure HRV denominate mhr e mrr, le VLF/LF/HF normalizzate, differenze tra la LF normalizzata e la HF normalizzata e il valore SVI sono metriche effettive per il rilevamento dello stress mentale [9]. Risultati migliori sono stati ottenuti usando l'analisi MV e un modulo per il supporto alle decisioni basato su entrambi i metodi, HRV ed MV. Un'altra caratteristica che può fornire una misura del grado di stress di un soggetto è la risposta simpatico cutanea (Sympathetic Skin Response, SSR). 1.5 L'intervento del candidato nel progetto Nel presente lavoro di tesi, il candidato ha affrontato lo studio, la progettazione e lo sviluppo del prototipo del sistema di realtà virtuale ipotizzato nel paragrafo 1.3, mediante il quale somministrare ad un soggetto affetto da deficit cognitivi e/o motori nello stadio iniziale, una replica virtuale e fedele dei suoi ambienti quotidiani e permettergli di interagire con un operatore che in tempo reale possa apportare cambiamenti a tali ambienti. Questi cambiamenti sono volti a facilitare le operazioni più comuni la cui possibilità per il soggetto affetto da certi tipi di disturbi va man mano riducendosi: si parla dunque di tracciamento di percorsi luminosi verso stanze della casa con un'importanza particolare (come i sanitari o la cucina o la stanza da letto), di aggiunta di meccanismi di oscuramento automatici alle finestre per regolare nell'arco della giornata la quantità di luce che entra nell'appartamento o ancora la riproduzione di suoni particolari in alcuni punti della casa. L'obiettivo di queste modifiche è, in ultima analisi, ridurre la quantità di stress nel soggetto quando vive i propri spazi vitali. La ricerca di questa condizione di minor stress è guidata dall'interpretazione degli output di sensori quali elettroencefalogramma (EEG) ed elettrocardiogramma (ECG). Una volta individuata la configurazione migliore, le modifiche introdotte nell'ambiente sintetico vengono realizzate con dispositivi domotici nella realtà. Considerando il contesto descritto in questo capitolo, l'intervento del candidato riguarda la prima fase del progetto (paragrafo 1.3.1), cioè il modulo dell'acquisizione e ricostruzione del mondo virtuale e il sistema di immersione e somministrazione della realtà virtuale. 14

20 Panoramica del sistema 2 PANORAMICA DEL SISTEMA 2.1 Panoramica di alto livello Figura Schematizzazione del progetto come sistema a retroazione La somministrazione dell'ambiente virtuale al paziente, l'analisi dei suoi parametri vitali e la conseguente modifica della configurazione del mondo sono operazioni cicliche ed effettuate in sequenza, a partire da una configurazione iniziale (la configurazione reale dell'appartamento) con l'obiettivo di raggiungere una certa condizione d'equilibrio a regime. Tali caratteristiche riportano alla mente le caratteristiche salienti di un sistema retroazionato, ottica attraverso la quale è stato progettato il sistema (Figura 2.1). 15

21 Panoramica del sistema 2.2 Ciclo esemplare di funzionamento Viene ora esposto un ciclo completo di funzionamento del sistema dal punto di vista del livello applicativo: nei capitoli 3 e 4 entrambi i moduli verranno analizzati con maggior dettaglio. Figura Diagramma delle componenti e delle loro interazioni. È possibile notare le due macrofasi ("offline" e "online") separate da una linea verde. I blocchi con i bordi rossi sono le componenti singole che saranno in esecuzione 16

22 Panoramica del sistema Tenendo presente la Figura 2.2, il funzionamento dell'intero sistema è suddiviso in due macrofasi: la parte offline e la parte online, eseguite temporalmente in questo ordine. Nella macrofase offline si effettuano acquisizioni dell'ambiente reale e costruzione dell'ambiente virtuale, mentre nella macrofase online avviene la somministrazione dell'ambiente virtuale al soggetto osservato sotto la supervisione dell'operatore medico. È importante notare che in entrambe tali fasi, è prevista la presenza di un operatore umano. Nella macrofase offline questa figura sarà un operatore/programmatore specializzato nella costruzione di ambienti virtuali, che abbia particolare familiarità con il motore di gioco Unity 3D e gli strumenti di acquisizione, così come previsto nel paragrafo Nella macrofase online, tale operatore afferisce invece al settore medico (in particolare neurologico), in quanto è suo compito la modifica in tempo reale della configurazione dell'ambiente somministrato al soggetto sulla base dei valori forniti dalla sensoristica medica EEG ed ECG e moduli FIT (vedere rispettivamente i paragrafi 1.4 e 1.4.4) La macrofase offline La prima fase tratta dell'acquisizione dell'ambiente vitale del paziente, sia esso il suo appartamento o la struttura ricettiva specializzata che lo accoglie. Le acquisizioni effettuate sono di due tipi: la distinzione giace nel ruolo che gli oggetti acquisiti rivestiranno nella macrofase online. Infatti, tenendo a mente che lo scopo del sistema e stimolare il paziente apportando modifiche al suo ambiente, alcuni oggetti presenti al suo interno dovranno poter subire tali modifiche e altri oggetti invece rimarranno invariati nel tempo. Gli oggetti che non subiranno variazioni sono ovviamente la pianta dell'appartamento, la posizione delle finestre e tutte quelle modifiche che un sistema domotico non è per sua natura in grado di attuare. Tutti questi oggetti potranno essere dunque acquisiti assieme alla stanza intera, andando a formare un'unica nuvola di punti immutabile, che tra l'altro andrà a costituire i confini invalicabili dell'ambiente virtuale. Ad ogni modo, ciò non preclude affatto la possibilità di acquisire in due momenti distinti stanza e oggetti immutabili al suo interno: una delle ragioni a favore di quest'ultimo approccio è la maggior qualità di un'acquisizione singola di un oggetto. La seconda tipologia di acquisizioni riguarda quegli oggetti di cui si intende permettere la modifica a runtime, durante la somministrazione dell'ambiente al paziente. Questi oggetti, 17

23 Panoramica del sistema detti anche "stimoli", è opportuno che vengano acquisiti separatamente dal resto dell'ambiente poichè nel motore grafico dovranno costituire una mesh distinta alla quale i metodi di modifica invocati a runtime devono potersi riferire in maniera univoca. Una volta concluso il sopralluogo per l'acquisizione, si prosegue alla fase di creazione dell'ambiente virtuale. Mediante il software Unity 3D si importano le nuvole di punti dell'ambiente, degli oggetti e degli stimoli, disponendole nelle stesse posizioni dei rispettivi oggetti reali. Alcuni degli oggetti potrebbero richiedere un raffinamento grafico, come per esempio una riduzione delle irregolarità della superficie di una parete. Il risultato è un surrogato dell'ambiente reale, pronto per la navigazione virtuale. Bisogna ora considerare i dispositivi fisici di output che verranno impiegati poichè questa scelta influisce sul tipo di esportazione dell'ambiente virtuale in Unity 3D. Nel caso di output su un dispositivo di realtà virtuale infatti la schermata sarà suddivisa in due parti ciascuna contenente immagini per i rispettivi occhi; impiegando un normale monitor invece l'esportazione sarà quella comune, con un unico riquadro. Il candidato ha previsto la possibilità per l'operatore medico di visualizzare in anteprima le modifiche da lui proposte sul mondo virtuale prima che queste vengano somministrate al paziente. Considerato ciò, risulta che gli output visivi del sistema debbano essere necessariamente due: l'output su visore virtuale stereoscopico (paziente) e l'output su schermo in una finestra normale (l'operatore medico). Dal punto di vista dell'implementazione, ciò richiede una doppia esportazione dell'ambiente virtuale in Unity 3D ciascuna delle quali sarà basata su un modello comune del mondo reale. L'ultimo passo della macrofase offline è la creazione di una descrizione degli stimoli presenti nel mondo virtuale da comunicare all'interfaccia grafica di cui disporrà l'operatore medico (vedere paragrafo 3.4.4). 18

24 Panoramica del sistema La macrofase online Figura Funzionamento di alto livello della macrofase online La macrofase online ha luogo nel momento della somministrazione dell'ambiente virtuale al paziente, sotto la supervisione di un operatore medico che ha la facoltà di modificare alcune caratteristiche degli stimoli disponibili sulla base delle letture della sensoristica medica collegata al paziente. La prima operazione di questa macrofase è il caricamento della descrizione degli stimoli nell'interfaccia grafica in modo tale che tutti i componenti del sistema ora lavorino e si scambino messaggi tenendo presente il medesimo modello e la medesima configurazione del mondo. Successivamente l'operatore medico disporrà di un elenco di stimoli con le rispettive proprietà modificabili; si potranno variare alcuni di questi parametri e scegliere se renderli effettivi sul modello, visualizzandoli su tutte le viste disponibili, o se saggiarne solo un'anteprima sulla propria macchina. Man mano che gli stimoli variano, il paziente risponderà in modo diverso e i suoi parametri vitali varieranno in accordo. Si suppone che dopo una certa quantità di modifiche dell'ambiente virtuale venga raggiunta una situazione di equilibrio in cui si è individuato una configurazione del mondo tale che produca la quantità minore di stress nel soggetto 19

25 Panoramica del sistema osservato. In questa sede si dà per certa l'esistenza almeno di un minimo locale nella quantità totale di stress nel paziente. In seguito, la configurazione dell'ambiente verrà analizzata da esperti nel settore domotico che indicheranno il modo più efficiente di rendere effettive le modifiche a cui si è pervenuti. 2.3 Architettura del sistema Presentato il sistema da un punto di vista applicativo, viene ora affrontata una presentazione dello stesso dal punto di vista del livello implementativo e progettuale. In Figura 2.4 è rappresentata l'architettura del sistema, la struttura a stack di ciascuna delle componenti e le interazioni tra queste. Di questi quattro stack, lo stack disegnato in basso si riferisce alla macrofase offline, mentre i tre superiori rappresentano la macrofase online del progetto. Figura Vista globale degli stack delle componenti e delle loro interazioni Una vista della struttura di un sistema come una pila (stack) è un artificio di progettazione e rappresentazione molto comune nell'ambito dell'information Technology. Esso si presenta come una sequenza di moduli interconnessi e indipendenti fra loro: ciascuno di questi strati (layer) ha una funzione ben specifica che non si sovrappone a nessuno degli altri layer. Solitamente, procedendo dal basso verso l'alto in uno stack, il livello di astrazione dei dati si eleva: prendendo come esempio la pila ISO/OSI (Figura 2.5), si passa dai byte (o bit) del 20

26 Panoramica del sistema livello fisico in basso, fino ad un file audio o pagina web al livello applicativo, strato che si occupa di interagire con l'utente, passando attraverso una serie di rappresentazioni intermedie come frame, pacchetti e stream. Figura La pila International Organization for Standardization Open Systems Interconnection model (stack ISO/OSI) 7 In maniera simile, gli stack progettati dal candidato in Figura 2.4, individuano la sequenza di moduli indipendenti che svolgono il compito assegnato. Il primo dettaglio implementativo da descrivere è l'architettura scelta per il sistema nella macrofase online. Come spiegato nel paragrafo 4.1.2, la modifica apportata dal candidato al design pattern Model-View-Controller (MVC), ovvero la trasformazione della componente View in un gateway per più di una View, permette l'aggiunta e la rimozione di visualizzatori durante l'esecuzione, a prescindere che si tratti di un'anteprima in una finestra normale su schermo o di un visore di realtà virtuale. La comunicazione tra visualizzatori e l'interfaccia operatore avviene tramite protocollo TCP (Transmission Control Protocol). La libertà d'impostazione degli indirizzi IP non pone vincoli sulla configurazione dal punto di vista dei tier, ovvero le macchine fisiche che compongono l'architettura dell'intero sistema. 7 Fonte: Wikipedia 21

27 Panoramica del sistema Figura Modalità di connessione tra un visualizzatore (sia anteprima sia stereoscopico) e l'interfaccia dell'operatore La Figura 2.6 indica le tre possibili configurazioni per una connessione tra l'interfaccia operatore e un visualizzatore. localhost: il visualizzatore e l'interfaccia operatore sono in esecuzione sulla stessa macchina, costituendo così un'architettura monolitica (one-tier); Local Area Network: il visualizzatore è collegato nella stessa rete locale della GUI operatore, dunque le macchine coinvolte diventano due (two-tier); Rete esterna: estendendo la connessione oltre i confini di una rete locale, è possibile collegare in remoto un visualizzatore all'interfaccia grafica (sempre two-tier). Questa configurazione presenta un ulteriore beneficio, poichè non obbliga paziente e operatore ad essere presenti nella stessa stanza. A prescindere da questo grado di libertà, il sistema rimane in una chiara configurazione client-server, dove a fungere da server è l'interfaccia operatore in Qt mentre i client sono qualsiasi visualizzatore che si connetta ad esso, a prescindere se stereoscopico o meno. 22

28 Modulo offline: modellazione 3D 3 MODULO OFFLINE: MODELLAZIONE 3D 3.1 L'acquisizione Teoria sull'acquisizione La stereoscopia Il sistema percettivo umano riesce a ricostruire la tridimensionalità attraverso un processo chiamato stereopsi, mediante il quale si interpretano i cosiddetti indizi monoculari e binoculari [10] (anche noti rispettivamente come pittorici e fisiologici) riuscendo a ricostruire la tridimensionalità. Indizi monoculari sono l'interposizione, la grandezza relativa e familiare, gli indizi prospettici, l'ombreggiatura e il movimento relativo. Indizi binoculari sono invece la convergenza dei due globi oculari e la disparità oculare. La creazione di contenuti multimediali tridimensionali si basa sull'imitazione del funzionamento della vista umana: in fase di acquisizione ci si serve di due telecamere orientate e distanziate opportunamente, una delle quali catturerà immagini da mostrare all'occhio sinistro e l'altra le immagini da mostrare all'occhio destro. In fase di riproduzione, si dovrà fare uso di un sistema che permetta di far ricevere l'immagine sinistra all'occhio sinistro e l'immagine destra all'occhio destro: tale tecnica è chiamata parallasse [10]. Il cervello mediante la stereopsi ricaverà l'informazione sulla profondità dei diversi oggetti nella scena. Le tecniche di rappresentazione e di separazione in fase di fruizione sono diverse. Il metodo più semplice è quello dell'anaglifia [11], che consiste nel separare i due canali (flusso sinistro e flusso destro) filtrandoli mediante due colori complementari fra di loro (come rosso e ciano, ma non solo): lo spettatore dovrà indossare occhialini con lenti dello stesso colore dei filtri. Tale metodo è semplice ma penalizza di molto la percezione cromatica e l'esperienza utente. Successivamente è stata sperimentata una tecnica basata 23

29 Modulo offline: modellazione 3D sulla polarizzazione. I due flussi venivano proiettati con filtri polarizzatori con direzioni di polarizzazione perpendicolari [10] fra loro. L'utente avrebbe dovuto indossare occhiali con lenti polarizzate in modo adeguato. Siccome la separazione dei canali, in accordo con la legge di Malus, dipendeva dall'orientamento degli occhialini rispetto allo schermo, si è pensato di impiegare la tecnica della polarizzazione circolare [10], assegnando quella sinistrorsa ad un occhio e quella destrorsa all'altro. In entrambe le modalità di polarizzazione, è necessario un monitor con due pannelli distinti e sovrapposti la cui emissione è polarizzata in modo adeguato, oppure in caso di proiezione è necessario un tipo speciale di schermo, detto silverscreen, in grado di conservare la polarizzazione dell'onda che lo colpisce. Si è passati poi alle tecniche di separazione attiva [12]. Impiegando monitor con frequenza di proiezione raddoppiata vengono proiettati in modo alternato il frame sinistro e il frame destro. Gli occhialini dello spettatore sono dotati in questo caso di filtri otturatori finemente sincronizzati con il monitor. Questo metodo sfrutta la persistenza retinica dell'occhio umano. Il costo però sale. Un'innovazione interessante è stata il monitor autostereoscopico [10] capace di fornire l'illusione della profondità senza che lo spettatore indossi alcun paio di occhiali ma sfruttando la barriera di parallasse o una rete lenticolare. L'attuale frontiera della sperimentazione è il multiview [13] che prevede l'acquisizione di più di due flussi della stessa scena in modo tale da permettere una percezione del 3D in modo autostereoscopico da più di una posizione (che è uno svantaggio della tecnica precedente). Una tecnica di natura diversa è l'utilizzo di una sola vista, quindi un solo flusso di acquisizione, a cui viene associata un'immagine in scala di grigi solitamente acquisita con una profondità in bit minore (8 bit, per esempio), in cui ciascun pixel è tanto più scuro quanto più vicino è un certo punto della scena [14]. Queste immagini possono essere create in due modi diversi: si estrapola l'informazione della profondità dalla singola vista già acquisita con il normale sensore RGB; si utilizzano speciali telecamere in grado di produrre le cosiddette mappe di profondità (vedere ) Mappe di profondità Una mappa di profondità (Figura 3.1) è un'immagine monocromatica (o un canale di un'immagine a più canali) in cui ogni pixel non è, come in una normale acquisizione, la 24

30 Modulo offline: modellazione 3D somma dei contributi di raggi luminosi incidenti sullo stesso elemento della matrice di transistor del sensore, ma fornisce una misura della distanza dal sensore fino all'oggetto cui i punti catturati da quel pixel appartengono. Figura Un esempio di mappa di profondità in cui è possibile individuare un oggetto in primo piano (foreground) e uno sfondo (background). L'intensità del pixel e la distanza possono essere direttamente o inversamente proporzionali, a seconda del sensore. L'informazione sulla distanza può essere ottenuta con due diverse tecniche. La prima si serve di un cluster di emettitori infrarosso che emettono una certa quantità di raggi IR secondo un pattern uniforme: i raggi proiettati vengono riflessi dagli oggetti che colpiscono e vengono catturati da un sensore infrarosso (Figura 3.3). A seconda della distanza dell'oggetto sul quale i punti incidono, la densità dei punti catturati in ricezione cambierà. Nel dettaglio, la densità dei punti riflessi su una superficie e la distanza della superficie stessa dal sensore sono direttamente proporzionali. La seconda tecnica continua ad utilizzare emettitori IR ma si basa sul concetto di tempo di volo (Time Of Flight, TOF). Nella cattura di un singolo frame, un illuminatore infrarosso emette un singolo impulso infrarosso e questi raggi vengono riflessi dagli oggetti su cui incidono. Il sensore infrarosso in ricezione è dotato di un otturatore controllato molto rapido. L'impulso IR riflesso è modificato dalla struttura della scena e quest'informazione può essere estratta combinando il segnale riflesso con l'otturatore rapido. Dopo la normalizzazione, i valori misurati di intensità possono essere interpretati come valori di profondità [15]. 25

31 Modulo offline: modellazione 3D (a) (b) Figura L'ASUS Xtion (a) e l' ASUS PrimeSense (b) Figura Il pattern di fasci luminosi infrarossi proiettati dall'emettitore IR. Si noti la differenza di densità di punti a seconda della distanza dell'oggetto sul quale incidono D laser scanning La scansione laser 3D può essere realizzata con approcci basati su differenti principi di cattura, alcuni ideali per una scansione a corto raggio, altri più indicate per raggi mediolunghi. Rientrano nella categoria dei laser scanner a corto raggio (distanza focale minore di un metro) i laser scanner 3D a triangolazione e laser scanner 3D a luce strutturata; le tecnologie per i laser scanner a medio-lungo raggio sono impulsi laser a tempo di volo e a spostamento di fase. 8 Foto di Mattew Fisher (http://graphics.stanford.edu/~mdfisher/kinect.html) 26

32 Modulo offline: modellazione 3D Figura Percorso del fascio di luce in un laser scanner triangolatore Figura Calcolo della distanza in un laser scanner 3D a triangolazione I laser scanner a triangolazione (Figura 3.5) usano un raggio laser o un punto laser per scansionare un oggetto. Un sensore riceve la luce del laser riflessa dall'oggetto e mediante la triangolazione trigonometrica il sistema calcola la distanza dell'oggetto dallo scanner. La distanza tra la sorgente laser e il sensore e l'angolo tra il laser e il sensore sono rilevate con grande precisione. Quando il raggio laser si riflette sull'oggetto scansionato, il sistema può risalire all'angolo con il quale esso incide sul sensore e da lì alla distanza dalla sorgente laser alla superficie dell'oggetto. 27

33 Modulo offline: modellazione 3D Figura Laser scanner a luce strutturata Anche gli scanner a luce strutturata (solitamente bianca o blu) usano la triangolazione trigonometrica ma invece di misurare la luce del laser questi sistemi proiettano una serie di pattern lineari sull'oggetto (per esempio, una serie di righe parallele). Successivamente, esaminando i bordi di ciascuna linea del pattern riflesso e catturato, viene calcolata la distanza dello scanner dalla superficie dell'oggetto. Essenzialmente la telecamera invece di osservare una linea laser, osserva il bordo di un pattern proiettato e ne calcola la distanza in modo simile. Figura Laser scanner a tempo di volo di un impulso laser Gli scanner a impulsi laser, anche noti come scanner a tempo di volo, sono basati sul concetto che la velocità della luce è nota con estrema precisione 9, quindi se si conosce il tempo impiegato dal raggio laser a raggiungere un oggetto e a tornare indietro al sensore, si può dedurre la distanza di quell'oggetto. Questi sistemi usano elettronica accurata in grado di misurare tempi nell'ordine dei picosecondi (ps) e misurano il tempo impiegato da milioni di impulsi laser riflessi al sensore, calcolandone la distanza. Ruotando lo scanner a 360 su se stesso (di solito servendosi di uno specchio) lo scanner può acquisire tutta una stanza. 9 Velocità della luce nel vuoto: c = m/s 28

34 Modulo offline: modellazione 3D Figura Laser scanner a spostamento di fase I laser scanner a spostamento di fase (phase shift) sono anch'essi basati sul tempo di volo, con all'aggiunta della modulazione della potenza del fascio laser. Lo scanner, una volta ricevuto il fascio, confronta le fasi dei raggi emessi e poi riflessi. La misurazione dello spostamento di fase è più accurata. Si veda la Tabella 3.1 per un confronto tra i metodi. Tabella Confronto tra le tecniche di laser scanning Raggio Tecnica di laser scanning Vantaggi Svantaggi Corto Medio-lungo Triangolazione singolo raggio Triangolazione di pattern di laser Basato su impulsi Spostamento di fase Disponibile in molte forme (scanner di aree, handheld, braccio portatile) Spesso è più portabile Minor preparazione delle parti Minore sensibilità alla luce ambientale Solitamente più accurata Spesso maggior risoluzione Minor rumore Da 2 a 1000m Più accurato Acquisizione più veloce Minor rumore Generalmente meno accurati Generalmente a minor risoluzione Rumore maggiore Solo scansioni di area Generalmente non molto portabili Più sensibile alla finitura della superficie (richiede preparazione) Può richiedere un'illuminazione particolare Meno accurato Acquisizione più lenta Maggior rumore Solo distanze medie 29

35 Modulo offline: modellazione 3D Le alternative Un approccio alternativo prevede l'aggiunta di tecniche di intelligenza artificiale come i problemi a vincoli (Constrained Satisfaction Problems, CSP) per l'individuazione della struttura di una stanza indipendentemente dalla presenza di oggetti, i quali vengono approssimati a box [16] Acquisizione a mano L'acquisizione manuale è il metodo di acquisizione più flessibile ma anche più lungo e complicato. Un addetto rileva le misure degli ambienti e degli oggetti per poi riportarli manualmente nel software di creazione del mondo virtuale. Pur lasciando libertà e flessibilità sotto tutti gli aspetti dell'acquisizione e modellazione, questa tecnica richiede molto tempo sia durante il sopralluogo per la raccolta delle misure sia in fase di modellazione e inserimento dei dati essendo interamente demandata alla manodopera umana I laser scanner CAM2 Figura I loghi della FARO e della CAM2 Figura Il laser scanner Focus 3D X-330 prodotto dalla FARO I laser scanner della CAM2 (azienda del gruppo FARO Technologies Inc.) utilizzano la tecnologia di laser scanning a triangolazione e sono quindi dotati di uno specchio che ruota 30

36 Modulo offline: modellazione 3D attorno all'asse orizzontale e che riflette di 90 il raggio laser proiettato. Oltre a ciò, il dispositivo intero ruota lentamente intorno all'asse verticale: in questo modo il laser può raggiungere punti in ogni direzione nell'ambiente. Le dimensioni di questo dispositivo sono compatte (24cm x 20cm x10cm) e il peso è di 450g. Ha una fotocamera a colori da 70 Mpx integrata e la batteria dura fino a 5 ore. I dati acquisiti sono memorizzati su una scheda SD. È dotato di una bussola elettronica per associare dati direzionali alle scansioni, facilitando quindi il processo di auto-registrazione (ambito GIS 10 ). Possiede anche un altimetro che permette di distinguere le altezze delle diverse acquisizioni (per esempio nei piani di un edificio). Il controllo del dispositivo è via wireless LAN oppure tramite touch screen. Un pregio di questo tipo di laser scanner e in particolare del modello X330 in Figura 3.10 è l'intervallo di distanze che può acquisire, da 60 cm a 330 m e con grande precisione. Questi pregi sono bilanciati dallo svantaggio dell'elevato costo (nell'ordine delle decine di migliaia di ). Il laser scanner FARO è impiegato nel settore forense per la conservazione delle scene del crimine e per sopralluoghi (Figura 3.11): infatti, il software SCENE della FARO che carica le scansioni è in grado si effettuare misure precise di distanza tra due punti. Il software è anche in grado di fondere tra loro acquisizioni in diversi punti dello stesso ambiente. Figura Un autoveicolo incidentato catturato mediante un laser scanner. Sono indicate le posizioni in cui sono avvenute le diverse scansioni, dalla cui fusione questa immagine è stata generata. 10 Geographic information system 31

37 Modulo offline: modellazione 3D L'acquisizione con laser scanner è costosa ma più precisa. Figura Una nuvola di punti catturata mediante laser scanner rappresentante un'intersezione stradale a livelli sfalsati Figura Il risultato della fusione delle nuvole di punti catturate mediante diverse acquisizioni con laser scanner e visualizzato nel software SCENE della FARO 32

38 Modulo offline: modellazione 3D Kinect (a) (b) Figura Il Kinect per Windows (a) e i sensori al suo interno(b) Il Kinect è una gamma di dispositivi prodotti dalla Microsoft per il riconoscimento del movimento dell'utente e si prefigge lo scopo di permettere agli utenti di interagire in modo naturale con i computer attraverso i gesti e il parlato. Il Kinect for Windows impiegato dal candidato assieme al software di ricostruzione Skanect (paragrafo ) appartiene a questa gamma e ha al suo interno sensori audio e video (Figura 3.14b). Per la parte audio, i sensori sono quattro microfoni disposti lungo il corpo del Kinect a formare il cosiddetto array di microfoni: la quantità di microfoni permette sia di registrare audio da una direzione ben precisa sia di individuare la provenienza di un suono. La parte video prevede un sensore RGB che memorizza dati a tre canali con una risoluzione di 1280x960 a 12 FPS 11 oppure a 640x480 a 30 FPS, un emettitore di infrarossi (IR) e un sensore IR. L'emettitore IR proietta dei raggi a luce infrarossa e il sensore IR riceve i raggi riflessi: questi raggi vengono convertiti e la distanza con l'oggetto che li ha riflessi interpretata. In questo modo si acquisisce un'immagine di profondità (per i dettagli si rimanda al paragrafo ). È possibile attivare la funzione "Near Mode" che permette ai sensori luminosi di vedere oggetti vicini anche 40 centimetri senza perdere accuratezza o precisione, con un peggioramento graduale per distanze superiori ai tre metri. L'SDK del Kinect for Windows, aggiornato con una buona frequenza, contiene driver, strumenti, API, interfacce per dispositivi, ed esempi di codice per semplificare lo sviluppo delle applicazioni per il deploy commerciale. 11 Frames Per Second 33

39 Modulo offline: modellazione 3D Questo SDK è inoltre in grado di riconoscere alcune caratteristiche umane come il tracciamento dello scheletro (posizione e postura dell'utente), il tracciamento del volto e il riconoscimento dei gesti e della voce. Le librerie Kinect Fusion ( ) acquisiscono dati del colore e della profondità di una scena durante una scansione e ricostruiscono i dati in un modello tridimensionale. L'SDK espone i dati dell'array di sensori e fornisce agli sviluppatori strumenti per accedere a questi dati: per esempio, è possibile accedere in maniera estesa ai dati di profondità e all'emettitore infrarosso. L'SDK offre infine la possibilità di integrazione con le librerie OpenCV e MATLAB Kinect Fusion Le Kinect Fusion sono librerie che compongono l'sdk del Kinect for Windows: si occupano dell'acquisizione di nuvole di punti e la loro fusione è mirata alla ricostruzione tridimensionale di ambienti o oggetti. Ne esiste un'implementazione anche nelle librerie PCL 12 denominata KinFu (pcl.kinfu). Il candidato ha ritenuto opportuno studiare anche questa libreria poichè è stata creata su misura del Kinect e dunque è lo strumento ideale per sviluppare un sistema ad-hoc per l'acquisizione di oggetti e/o ambienti, aspetto importante dell'ottica del presente lavoro di tesi. Segue quindi l'esposizione della processing pipeline delle Kinect Fusion (con riferimento alla Figura 3.15). Figura Processing pipeline della ricostruzione tridimensionale effettuata dalle librerie Kinect Fusion 12 Point Cloud Library 34

40 Modulo offline: modellazione 3D a) Conversione della mappa di profondità. Si converte la profondità raw dei sensori del Kinect in profondità in virgola mobile in metri, seguita da una conversione opzionale in una nuvola di punti orientata che consiste di punti/vertici 3D nel sistema di coordinate della telecamera e le normali alla superficie in questi punti da utilizzare con la funzione AlignPointClouds. b) Calcolo della posizione della telecamera. Si calcola la posizione e l'orientamento della telecamera rispetto ad un riferimento globale e ne si tiene traccia durante gli spostamenti del sensore in ciascun frame servendosi di un algoritmo di allineamento iterativo, che permette di conoscere sempre la posizione corrente del sensore relativa al frame iniziale. A tal proposito esistono due alternative nelle Kinect Fusion. La prima è l'algoritmo NuiFusionAlignPointClouds che può essere usato sia per allineare la nuvola di punti calcolata dalla ricostruzione con quella della telecamera di profondità del Kinect, sia in modalità standalone (per esempio per allineare due telecamere separate che osservano la stessa scena). L'altro algoritmo è AlignDepthToReconstruction che fornisce risultati più accurati di tracciamento della telecamera ma può risultare meno robusto per oggetti in movimento nella scena. Se il tracciamento dovesse subire interruzioni è sufficiente riallineare la telecamera con l'ultima posa tracciata. c) Fusione dei dati di profondità. I dati provenienti dalla posizione corrente del sensore vengono integrati in una singola rappresentazione volumetrica dello spazio. Questa integrazione dei dati di profondità è eseguita per ciascun frame applicando una media durante l'esecuzione per ridurre il rumore; allo stesso tempo riesce a gestire qualche cambiamento dinamico nella scena come l'aggiunta o la rimozione di alcuni oggetti. Osservare una superficie da punti di vista nuovi contribuisce a riempire una porzione vuota o buco e alla continua ridefinizione con nuovi dati delle stesse superfici. 35

41 Modulo offline: modellazione 3D Figura La fase di raycasting 13 : l'intersezione delle tre frecce indica il punto di vista dell'osservatore mentre il reticolo rappresenta i pixel del monitor. d) Raycasting. Il volume ricostruito può subire il procedimento di raycast (Figura 3.16) da un punto di vista e la nuvola di punti risultante può subire un processo di shading per produrre un'immagine visibile renderizzata del volume 3D ricostruito. Il tracciamento effettuato dalle Fusion usa solo i dati del sensore di profondità e si basa sulla sufficiente presenza di variazioni di profondità tra un frame e il successivo in modo tale da far corrispondere i dettagli robusti nei due frame e calcolare la differenza di posizione. Per questa ragione il tracciamento e la ricostruzione risulteranno difficoltosi se effettuati in ambienti spogli o privi di dettagli (come per esempio un muro completamente bianco). Le scene ideali presentano oggetti sparsi a diverse distanze. Per mantenere un buon tracciamento è necessario effettuare spostare o ruotare con lentezza il Kinect. Nelle Kinect Fusion sono implementati due algoritmi di tracciamento: AlignDepthFloatToReconstruction e AlignPointClouds. Se si sta creando un volume di ricostruzione, la funzione AlignDepthFloatToReconstruction probabilmente eseguirà un tracciamento migliore. D'altra parte, la funzione AlignPointClouds può essere anche usata da sola, senza un volume di ricostruzione per allineare due nuvole di punti. È bene notare che l'interfaccia INuiFusionReconstruction usa al suo interno la funzione AlignDepthFloatToReconstruction. L'algoritmo AlignPointClouds invece può fornire in output un'immagine ARGB visibile del risultato dell'algoritmo di allineamento che può essere riutilizzata come input per altri algoritmi di visione come segmentazione degli oggetti. I pixel in ciascuna vista durante

42 Modulo offline: modellazione 3D la ricostruzione possono rientrare nella categoria degli inlier o degli outlier, in relazione al tracciamento positivo nelle diverse scene oppure no: entrambe le categorie evidenziano i pixel in questione con dei colori particolari. Anche il secondo algoritmo di tracciamento AlignDepthFloatToReconstruction può fornire in uscita un'immagine di tipo NUI_FUSION_IMAGE_TYPE_FLOAT come risultato dell'allineamento dell'algoritmo di tracciamento della camera e che può essere processata per creare un rendering a colori o può essere usata come input per altri algoritmi di visione come la segmentazione degli oggetti. Questa immagine descrive quanto bene un pixel di profondità descrive il modello di ricostruzione. Questi valori residui sono normalizzati tra -1 e 1 e rappresentano il costo/energia di allineamento per ciascun pixel. Valori di intensità maggiori (sia positivi sia negativi) rappresentano maggiore discrepanza e valori minori rappresentano minore discrepanza o meno informazione su quel pixel. Il volume di ricostruzione è composto da piccoli cubi nello spazio, denominati "Voxel". I volumi che possono essere scansionati arrivano fino a 8m 3. Le risoluzioni tipiche del voxel di un mondo reale sono 1-2mm/voxel. Una peculiarità della ricostruzione e fusione 3D è il legame che sussiste tra la dimensione del voxel e l'estensione dell'ambiente acquisito. È possibile specificare il volume di ricostruzione passando una struttura NUI_FUSION_RECONSTRUCTION_PARAMETERS alla funzione NuiFusionCreateReconstruction. Il numero di voxel che possono essere creati dipende dalla quantità di memoria disponibile all'allocazione sulla macchina di esecuzione e tipicamente si arriva a 640x640x640= voxel creabili su un dispositivo con 1.5GB di memoria o più. L'aspect ratio di questo volume può essere arbitrario ma è opportuno far corrispondere le dimensioni del volume del voxel a quelle della forma dell'area nel mondo reale che si intende scansionare. Il membro voxelspermeter scala la dimensione reale a cui corrisponde un voxel: per esempio, in presenza di un volume cubico 384x384x384 vx, si può rappresentare un cubo di 3m di lato nel mondo reale se si imposta voxelspermeter a 128vpm 14, dato che 384/128=3, dove ciascun voxel è 3m/384=7.8mm 3, oppure un cubo di 1.5m di lato se si è impostato 256vpm (384/256=1.5 e ciascun voxel occupa un volume di 1.5m/384=3.9mm 3 ). Tale 14 Voxels Per Meter 37

43 Modulo offline: modellazione 3D combinazione di voxel nello spazio e i voxel per metro permettono di specificare dimensione e risoluzione del volume da acquisire, ma si noti che si tratta di un tradeoff: in altre parole, non è possibile acquisire un volume di grandi dimensioni ad alta risoluzione, ma bisogna scegliere il punto di equilibrio più adeguato tra risoluzione e dimensione. Questo tradeoff è generato dalle caratteristiche della macchina che esegue il processo di ricostruzione. In particolare sulle GPU 15 il massimo blocco di memoria contiguo che si può tipicamente allocare è circa 1GB, e questo limita la risoluzione della ricostruzione approssimativamente a 640x640x640 = vx. Similmente, sebbene le CPU abbiano una quantità di memoria maggiore delle GPU, non viene aggirato il problema in quanto la frammentazione della memoria heap potrebbe impedire l'allocazione di blocchi di memoria dell'ordine del GB. Il tradeoff è quindi obbligatorio; se dovessero essere richieste sia alta risoluzione sia dimensioni elevate, una soluzione potrebbe essere volumi multipli o dispositivi multipli Skanect Figura Logo dell'applicativo Skanect (ManCTL) Skanect 16 è un software creato dalla ManCTL e rilasciato il 27 gennaio 2014 sia sotto licenza commerciale a pagamento sia in versione gratuita di prova: in quest'ultimo caso viene limitato il numero delle facce nell'esportazione della mesh (massimo 5000 facce). Skanect permette di collegare un dispositivo di acquisizione come il Kinect della Microsoft (ma funziona anche con l'asus PrimeSense, Figura 3.2b) attraverso le OpenNI e opera la fusione tra le nuvole di punti acquisite dalle diverse viste in tempo reale, basandosi sulle geometrie in due acquisizioni consecutive. La ricostruzione della mesh tridimensionale è possibile grazie alla natura dei due flussi video acquisiti, cioè quello del visibile e una mappa di profondità a 16 bit. 15 Graphical Processing Unit

44 Modulo offline: modellazione 3D Figura Skanect durante un'acquisizione in modalità "body" La Figura 3.18 mostra un'acquisizione in atto: nella parte sinistra è mostrata la nuvola di punti ricostruita; sulla destra i singoli output del sensore RGB e la mappa di profondità (a colori modificati). In basso a destra invece, vengono mostrate contemporaneamente la nuvola di punti ricostruita e la scena correntemente inquadrata: in fase di acquisizione è opportuno fare riferimento a questa finestra in quanto comunica all'utente se le nuove acquisizioni sono state aggiunte correttamente al modello già ricostruito oppure se Skanect non è riuscito a seguire lo spostamento degli oggetti nella scena da un frame al successivo. In quest'ultimo caso, la zona verde scompare e rimane in trasparenza l'ultima vista della nuvola di punti ricostruita: sarà compito dell'utente riposizionare il dispositivo di acquisizione in modo tale da riprendere la ricostruzione da dove si era interrotta. È opportuno segnalare che l'interruzione della ricostruzione è tutt'altro che rara durante un'acquisizione: infatti, lo spostamento del dispositivo è un'operazione delicata e richiede assenza di scossoni evitando di avvicinarsi troppo agli oggetti da acquisire, poichè il sensore di profondità ha un limite inferiore di distanza al di sotto del quale non riesce a dedurre la posizione di un punto. Inoltre, quando viene effettuata una ricostruzione (fusione) ad alta qualità l'attesa è molto lunga. 39

45 Modulo offline: modellazione 3D Figura Le impostazioni iniziali di Skanect Skanect permette di settare due importanti caratteristiche prima di iniziare l'acquisizione. Con riferimento alle prime due opzioni mostrate in Figura 3.19, la prima è la modalità della scena e la seconda la cosiddetta bounding box. La bounding box, ovvero scatola di contenimento, è il volume del cubo che costituirà il limite per lo spazio acquisito e il modello ricostruito: il lato di questo cubo può variare da 0.1 fino a 9 metri. Opzionalmente, è possibile raddoppiare l'altezza di questo cubo, scelta consigliata nel caso dell'acquisizione del corpo di una persona. Sono previste quattro diverse modalità di scena: body (corpo umano), object (singolo oggetto), room (stanza completa) e half room (parte di una stanza). Sostanzialmente, sussistono differenze solo tra body/object e room/half room, in quanto acquisendo un oggetto o un corpo umano il Kinect si muove intorno all'oggetto da acquisire mentre nel caso di una stanza il dispositivo dovrà inquadrare verso l'esterno. Il candidato ha effettuato diverse acquisizioni di prova servendosi della combinazione Kinect+Skanect ed è pervenuto alle seguenti conclusioni. L'impostazione iniziale della tipologia della scena influisce molto sia sulla procedura di acquisizione in sè per sè sia sui risultati finali della ricostruzione. Infatti, la modalità migliore di funzionamento di Skanect è "body" (esempio nella Figura 3.25 e Figura 3.26) 40

46 Modulo offline: modellazione 3D oppure "object" in quanto riduce di molto il volume da acquisire e quindi a parità di tempo è possibile tornare su scene già acquisite e perfezionarle aumentandone il livello di dettaglio. Nel caso di acquisizioni di ambienti interi, il candidato ha riscontrato diversi casi in cui la ricostruzione offline (in seguito alle acquisizioni) portava a risultati completamente estranei alla realtà acquisita; tali occorrenze si verificavano solo con le modalità room/half room (esempio in Figura 3.24). Un altro aspetto da non sottovalutare è la mole di dati acquisiti. Supponendo per assurdo che l'acquisizione di un'intera stanza venga portata a termine senza errori e con una buona qualità, si dovrebbe gestire un modello tridimensionale di dimensioni elevate che allungherebbe i tempi di risposta e di utilizzo di qualsiasi software di modellazione impiegato in fase di post-processing. Con adeguati accorgimenti la dimensione di un modello esportato con le modalità "body"/"object" è medio-bassa. Il candidato ha acquisito con Skanect una lampada da comodino (Figura 3.21) e un mobile di piccole dimensioni (Figura 3.23): i modelli tridimensionali risultanti (inclusi come game object in Unity) sono rispettivamente in Figura 3.20 (con una fonte luminosa accesa) e Figura 3.22 ed entrambi sono stati ricostruiti selezionando il massimo della fedeltà. A valle delle ricostruzioni si è rivelato necessario operare un post-processing sulle rispettive mesh, il cui motivo giace nell'eccessiva dimensione dei modelli esportati che comporta elevati tempi di attesa di generazione del modello e un notevole rallentamento di qualsiasi programma sia nell'importazione del modello sia nell'interazione con lo stesso. Skanect offre un'intera sezione di strumenti di post-processing che includono l'esclusione di porzioni del modello (mediante intersezione di un piano), la semplificazione della mesh, la chiusura delle porzioni non acquisite mediante watertighting, open e closed hull, l'aggiunta di colore alla mesh in accordo alle viste RGB acquisite e interpolando le zone sprovviste di colore. Queste semplificazioni hanno provveduto a ridurre drasticamente la dimensione del modello esportato. Nella Tabella 3.2 e Tabella 3.3 sono elencate le 41

47 Modulo offline: modellazione 3D operazioni di post-processing subite dai due modelli acquisiti, la variazione della complessità della mesh e del peso del modello.obj esportato (con texture UV 17 a parte). Tabella Variazione del numero di facce del modello del mobile in seguito alle operazioni di postprocessing Operazione di post-processing Numero di facce del modello Dimensione modello.obj esportato (ricostruzione ultimata) MB Simplify <8% Fill holes - closed hull - smoothing <6cm MB La drastica riduzione del numero delle facce tra la seconda e la terza riga è dovuta ai 6cm di limite di smussamento della mesh. Tabella Variazione del numero di facce del modello della lampada in seguito alle operazioni di postprocessing Operazione di post-processing Numero di facce del modello Dimensione modello.obj esportato (ricostruzione ultimata) MB Sagomatura del modello con il piano Simplify < 3% Fill holes - opened hull - smoothing <2cm MB Skanect offre quattro formati di esportazione del modello acquisito:.obj,.ply,.stl,.vrml. Per l'esportazione dei due modelli acquisiti con Skanect si è utilizzato il formato.obj con texture UV (l'alternativa per la texture è "per-vertex"). 17 Mappatura UV della texture: il procedimento mediante il quale la texture 2D viene proiettata su una forma 3D. Si chiama UV per via delle coordinate di un punto della texture (u,v) dato che (x,y,z) sono già utilizzati nel modello tridimensionale. 42

48 Modulo offline: modellazione 3D Figura Una lampada da comodino acquisita e inclusa nel mondo virtuale Figura L'oggetto dell'acquisizione di Figura 3.20 Figura Il modello 3D di un mobile di piccole dimensioni acquisito e incluso nella scena Figura L'oggetto reale acquisito in Figura 3.22 Figura Nuvola di punti registrata risultante dall'acquisizione in modalità "room" (visualizzata con Blender) 43

49 Modulo offline: modellazione 3D Figura Nuvola di punti senza texture risultante dall'acquisizione di un volto (Skanect in modalità "body", visualizzata in Blender) Figura Nuvola di punti in Figura 3.25 con texture per-vertex associata (visualizzazione in Blender) Reconstruct Me Figura Il logo dell'applicativo ReconstructMe Reconstruct me 18 è un software simile a Skanect che utilizza Kinect o Asus PrimeSense per ricostruire ambienti 3D da nuvole di punti. L'interfaccia di quest'applicazione è molto più semplice e non offre le stesse opzioni di Skanect sia per quanto riguarda il postprocessing sia per le opzioni di esportazione (solo.ply ed.stl). La bounding box massima è inoltre minore di quella di Skanect, quindi un'eventuale acquisizione di una stanza sarebbe ulteriormente penalizzata. Esistono due licenze, una commerciale a pagamento e l'altra di prova gratuita senza limite nella mesh di esportazione ma con l'aggiunta di artefatti come sfere colorate e il nome del software

50 Modulo offline: modellazione 3D Il progetto Matterport Figura Il dispositivo di acquisizione messo a punto dalla Matterport (prima versione) Figura La seconda versione 19 Il progetto Matterport prevede sia software sia hardware. La parte software consiste in un'applicazione di fusione e ricostruzione 3D (come Skanect) da nuvole di punti acquisite con la parte hardware, costituita quest'ultima da tre ASUS PrimeSense ognuno dotato di sensore di profondità e sensore RGB e disposti reciprocamente ad un angolo di 120 (Figura 3.28). Questi tre dispositivi sono racchiusi in una scatola che, montata su un treppiedi, ruota lentamente e acquisisce i dettagli dell'ambiente in cui è posizionata, in modo simile al laser scanner FARO, con la differenza che non si tratta di laser scanning, ma di RGB+depth. È controllabile a distanza via bluetooth e ipad con un'app dedicata e costa 4500$ (più una quota mensile). In tempi brevi e soprattutto in modo semplice è possibile avere un modello 3D di qualità accettabile (Figura 3.30). 19 $4m.html 45

51 Modulo offline: modellazione 3D Figura Esempio di ricostruzione di una stanza mediante Matterport Spostando il dispositivo in altre posizioni nello stesso ambiente è possibile acquisire dettagli mancanti nelle precedenti acquisizioni: considerando questi spostamenti, l'acquisizione dura venti minuti circa [17]. La ricostruzione è effettuata dal cloud Matterport dopo l'upload dell'acquisizione Google Tango project Google Tango 20 è un progetto iniziato nel febbraio 2014 il cui scopo è la messa a punto di uno smartphone Android con hardware e software dedicato alla visione artificiale ed elaborazione delle immagini, in particolare al tracciamento della posizione del dispositivo nello spazio tridimensionale, alla ricostruzione di una mappa dell'ambiente e, più in generale, cerca di digitalizzare in 3D tutto quello che circonda l'utente. I suoi sensori permettono di effettuare più di 250mila misurazioni 3D al secondo. Questo smartphone non è attualmente in vendita ma è ancora in fase di "early prototyping" (primo prototipo) e solo alcuni pezzi sono stati distribuiti a sviluppatori di Università ed Enti di ricerca per studiarne applicazioni, trovare bug e contribuire alla sua messa a punto. Il software di ricostruzione di Matterport esposto poc'anzi rientra in questi gruppi. Il Google Tango possiede quattro fotocamere. La fotocamera principale è da 4Mpx RGB, dotata di flash laterale. Subito in baso è situata una camera con ottica fisheye in grado di catturare immagini con un angolo di 180 e un altro obbiettivo che viene utilizzato per catturare la profondità degli ambienti e oggetti. Il quarto sensore è una fotocamera frontale 20 https://www.google.com/atap/projecttango/ 46

52 Modulo offline: modellazione 3D che ha un angolo di visione di 120 che ha circa lo stesso campo visivo dell occhio umano [18]. Figura Project TANGO, un prototipo di smartphone costruito da Google per la ricostruzione 3D su dispositivi mobile Figura Elaborazione artistica di un'acquisizione con lo smartphone Google TANGO La soluzione di acquisizione Confronto fra le tecniche Tabella Confronto fra le tecniche di acquisizione esposte in precedenza. Per ciascuna cella viene espresso un giudizio sulla caratteristica basato sul colore (rosso: scarso, giallo: accettabile, verde: ottimo) e, a seconda di quante caselle sono colorate, viene quantificata la caratteristica (1:poco, 2:nella media, 3:molto). Per esempio, il costo delle Fusion è basso (una tacca) e questo è un bene (verde), mentre gli strumenti di postprocessing offerti da Reconstruct me sono pochi (sempre una tacca) ma questo è un male (rosso) Metodo di acquisizione Tempo Precisione Costo Distanze Complessità di utilizzo Postprocessing Esportazione Manuale Skanect Reconstruct me Kinect Fusion Matterport Laser scanner 47

53 Modulo offline: modellazione 3D Il confronto tra le tecniche di acquisizione presentate nel capitolo è stato condotto valutando sette diversi aspetti, ciascuno dei quali viene di seguito spiegato includendo un commento su ciascuna delle sei tecniche candidate. Tempo: durata del processo di acquisizione, post-processing escluso. Tutti i dispositivi comportano un tempo di attesa praticamente simile, intorno ai venti minuti per acquisizione dettagliata, che nel caso di dispositivi automatizzati come il laser scanner e Matterport vengono impiegati per una rotazione completa, mentre per gli altri metodi in cui è previsto lo spostamento del Kinect il tempo è impiegato nell'inquadratura lenta di ogni prospettiva degli oggetti/stanze. Il metodo manuale impiega un tempo maggiore rispetto agli altri poichè la raccolta delle misure a mano porta via molto tempo. Precisione: qualità del modello ricostruito a processo ultimato (post-processing escluso). Tutti i metodi garantiscono una buona qualità di ricostruzione del modello 3D fatta eccezione per Reconstruct me e le Fusion che sono sempre accettabili ma di qualità peggiore. Costo: prezzo del dispositivo. Il laser scanner e Matterport svettano per l'elevato costo mentre il metodo manuale e le Fusion non hanno un costo in quanto il primo non prevede attrezzatura particolare e le seconde si possono scaricare gratuitamente. Skanect e Reconstruct me si assestano a metà in quanto per l'utilizzo completo richiedono l'acquisto di una licenza commerciale. Distanze: massima distanza alla quale è possibile rilevare un punto (e quindi un oggetto). Con un range che va da qualche decina di centimetro alle centinaia di metri, la tecnica del laser scanning copre le distanze maggiori. Le stesse distanze potrebbero essere coperte con il mero intervento umano ma è ovviamente più difficoltoso. Il metodo Matterport ha una portata massima inferiore ma riesce con facilità ad acquisire una stanza, anche servendosi di acquisizioni multiple fuse tra di loro. I metodi che sfruttano il Kinect invece mostrano un basso profilo per un problema comune alla base, vale a dire il compromesso tra la risoluzione del voxel e la dimensione massima di un'acquisizione (come esposto in ). Per questa ragione l'estensione massima non può superare una stanza di piccole dimensioni. 48

54 Modulo offline: modellazione 3D Complessità di utilizzo: difficoltà nell'utilizzo dell'intero metodo, dall'acquisizione all'esportazione del modello. L'acquisizione manuale dell'ambiente e degli oggetti è un procedimento tanto lungo e faticoso quanto più complessi e vasti sono gli ambienti e gli oggetti da acquisire. La procedura si semplifica con l'utilizzo del Kinect e di software (Skanect/Reconstruct me/api Fusion) per la sua gestione fino a diventare semplice come la pressione di un tasto "Avvia" nei metodi Matterport e laser scanner. Post-processing: quantità e utilità degli strumenti messi a disposizione dal metodo stesso per la rifinitura del modello appena acquisito. Reconstruct me non offre alcuno strumento di post-processing al contrario di Skanect che offre watertighting, semplificazione della mesh con diversi metodi, colorizzazione, sagomatura del modello e altri. Essendo librerie di programmazione, le Fusion possono implementare e includere qualsiasi procedura di post-processing. Il laser scanning offre sì qualche strumento ma solo nel software fornito a parte. Per il metodo manuale, il postprocessing è tanto più facile quanto più semplice è il modello (idealmente, un solido geometrico basilare) ma come per il laser scanner della CAM2 è necessario servirsi (ovviamente) di tool esterni. Esportazione: quantità di formati in cui è possibile esportare il modello ricostruito. Fatta eccezione per Matterport e il laser scanner a proposito dei quali non si dispone di informazioni e di Reconstruct me che offre un solo formato di esportazione, gli altri metodi offrono una buona gamma di formati. Le Fusion, trattandosi di librerie di programmazione, offrono il massimo della libertà in quanto è possibile includere le librerie più adatte all'esportazione e conversione dei formati (per esempio le PCL). A valle del confronto e forte dello spirito di equilibrio pesato che caratterizza il lavoro di un ingegnere, il candidato ritiene che la soluzione di acquisizione migliore sia composta dalla combinazione Microsoft Kinect e Skanect e dell'acquisizione manuale. Nel dettaglio, considerate le buone prestazioni dello Skanect in modalità "object", il Kinect verrebbe impiegato nel progetto per acquisire ogni oggetto presente nella stanza, sia esso uno stimolo oppure no. D'altra parte, visti i pessimi risultati di ricostruzione del Kinect quando si tratta di acquisire un ambiente, il candidato ritiene opportuno demandare la modellazione dell'ambiente ad un operatore umano: ciò è altresì permesso dalla semplicità geometrica 49

55 Modulo offline: modellazione 3D della modellazione di una stanza che è assimilabile ad un parallelepipedo e la cui costruzione la si può effettuare direttamente in Unity 3D, usandolo come un programma CAD 21, a seguito di una sessione di raccolta delle misure degli ambienti. L'operatore incaricato della costruzione della scena si occuperà, laddove necessario, della rifinitura dei modelli 3D degli oggetti acquisiti e dell'aggiunta delle texture alle pareti (nel caso in cui per esempio sia presente della carta da parati) Formati di esportazione dei modelli 3D Tenendo presente che nel progetto è previsto l'utilizzo di più applicazioni di modellazione e motori di gioco, è opportuno valutare quali formati garantiscono la portabilità dei modelli 3D tra queste applicazioni. Vengono perciò di seguito elencati i formati di esportazione incontrati nel corso dello studio del candidato. OBJ: formato ASCII open, contiene il semplice elenco delle coordinate dei vertici e la posizione UV di ciascun vertice della texture. È solitamente affiancato da altri due file: l'.mtl che contiene informazioni sul materiale della mesh e il.png che contiene la texture. PLY: Polygon File Format, contiene una lista di triple (x,y,z) per i vertici e una lista di facce descritte da indici nella lista dei vertici. STL: formato senza unità utilizzato per la prototipazione rapida e la stampa tridimensionale (richiede che le mesh siano chiuse e abbiano subito il watertighting). È da preferire quando la scansione è ad alta risoluzione dato che la dimensione del file è minore di OBJ. Definisce una superficie triangolata grezza e non strutturata descrivendo il versore della superficie triangolare e i tre vertici secondo la regola della mano destra. FBX: FilmBoX, formato proprietario di Autodesk, non documentato. 3DS, MAX: formati proprietari di 3DStudio Max, è lo standard industriale de facto (assieme a OBJ) per il trasferimento di modelli tra programmi 3D. 21 Computer Aided Design 50

56 Modulo offline: modellazione 3D Per la modellazione e rifinitura delle mesh acquisite ma anche per la conversione tra un formato e l'altro è possibile utilizzare tool gratuiti come Blender 22 e MeshLab 23 o proprietari come 3DStudio Max e Revit (entrambi sviluppati da Autodesk). Considerata la soluzione di acquisizione scelta (Kinect & Skanect) e il motore di gioco Unity 3D, il formato per i modelli 3D più adatto risulta dunque essere l'obj con texture UV (modalità con la quale sono stati importati i modelli della lampada e del mobile in Unity): esso è infatti esportabile da Skanect, leggibile dai programmi di modellazione sopracitati e importabile in Unity3D. Per quanto attiene ai modelli a parte presenti nell'ambiente virtuale prototipale di Figura 3.51, il formato con il quale sono stati scaricati alcuni di essi è stato l'fbx. 3.2 Visori di realtà virtuale Il candidato ha valutato diverse soluzioni per quanto riguarda la parte di output stereoscopico per il paziente. Questo è un settore fervente e sta riscuotendo un notevole successo sul mercato poichè ha applicazioni non solo in ambito medico, come nel presente lavoro di tesi, ma anche nel mondo videoludico. Nuovi e migliori dispositivi sono in fase di messa a punto, ma il candidato ne ha individuati due in particolare, i Meta AR e gli Oculus Rift, entrambi nati come progetti sulla piattaforma di crowdfunding Kickstarter Meta AR Nascono come diretti concorrenti dei Google Glass e permettono di creare sia realtà virtuale sia realtà aumentata. Sono progettati per interfacciarsi con il motore di gioco Unity 3D attraverso un apposito framework incluso nell'sdk (Software Development Kit). I Meta AR sono in grado di riconoscere mani e di tracciare la posizione delle dita e offrono un'interfaccia di controllo precisa basata sui gesti

57 Modulo offline: modellazione 3D Figura La prima versione del visore "Meta 1" Figura La seconda versione "Meta SpaceGlasses" Figura La versione più recente "Meta Pro" Figura Confronto della superficie utilizzabile per la realtà aumentata tra MetaPro e Google Glass (in alto a destra) 52

58 Modulo offline: modellazione 3D Figura Composizione hardware degli occhiali MetaPro La risoluzione del display see-through in ciascuna lente è di 1280x720 pixel e garantisce un FOV (Field Of View) di 40. Le connessioni disponibili sono via Wireless LAN (modalità b/g/n), Bluetooth 4.0 e USB 3.0. La tecnologia che impiegano gli occhiali Meta si basa su sensori di profondità 3D a tempo di volo, due telecamere RGB, una IMU (Integrated Motion Unit) a 9 assi, accelerometro, giroscopio e bussola. Il peso dei soli occhiali è di 180g. Il Meta Pro è corredato di un pocket computer con processore Intel i5 da 1,5GHz, 4GB di RAM, un SSD da 128GB e una batteria da 32Wh. Queste caratteristiche motivano il prezzo particolarmente alto di questo dispositivo (3650$). Va infine citato il Meta App Store 25 dove vengono pubblicate le applicazioni create appositamente per questi occhiali: degna di nota è l'applicazione di realtà aumentata in ambito medico 26, la preferita dal pubblico. A conti fatti, i Meta sono stati progettati principalmente per la realtà aumentata e per l'interazione con gli oggetti virtuali. In relazione agli scopi del progetto, i Meta presentano il vantaggio del basso ingombro una volta indossati dal paziente, aspetto assolutamente da non sottovalutare. Inoltre, l'interazione con il mondo virtuale è facilitata sia dal punto di vista hardware sia software, 25 https://www.spaceglasses.com/killer_apps 26 https://www.spaceglasses.com/applicants/131 53

59 Modulo offline: modellazione 3D poichè esiste già un'api (Application Programming Interface) per il riconoscimento dei gesti dell'utente: ciò permetterebbe di fare a meno di hardware esterno come il Leap Motion (paragrafo 3.3). La presenza di un piccolo sistema audio solleva dall'obbligo di procurarsi delle cuffiette. Gli svantaggi, tralasciando il costo, sono invece la scarsa immersività e minore praticità di implementazione di una soluzione di realtà aumentata: infatti, una realtà completamente virtuale dà maggiore libertà e semplicità d'implementazione al programmatore di quel mondo rispetto alla soluzione aumentata poiché non vi è bisogno di interfacciarsi in tempo reale con il mondo esterno. Un altro punto a sfavore è la regolazione della luce: se nel mondo virtuale si volesse simulare una riduzione della quantità di luce in una stanza, con un dispositivo come i Meta risulterebbe impossibile, poiché la luminosità dell'ambiente continuerebbe ad essere percepita dal paziente interferendo con la misurazione dei parametri vitali. Infine, trattandosi di realtà aumentata, c'è bisogno che il paziente si trovi fisicamente nell'ambiente che si intende riqualificare Oculus Rift Figura Prima versione del development kit dell'oculus Rift, il visore di realtà virtuale impiegato dal candidato per il test L'Oculus Rift è un visore di realtà virtuale prodotto dalla Oculus VR, compagnia californiana fondata da Palmer Luckey, nata da un crowdfunding su Kickstarter, mediante il quale raccolse 2.4 milioni di dollari a fronte dei 250mila richiesti. Ebbe da subito l'appoggio di compagnie di sviluppo di videogiochi come Valve, Epic Games e Unity. L'Oculus Rift permette l'head tracking a 360 con una latenza sufficientemente bassa usando una tecnologia di tracking proprietaria, permettendo così di guardarsi intorno come 54

60 Modulo offline: modellazione 3D nella vita reale. Ogni minimo movimento della testa è tracciato in tempo reale creando un'esperienza naturale e intuitiva. In maniera dissimile dalla stereoscopia su un televisore o in un film, ciò è ottenuto presentando immagini uniche e parallele a ciascun occhio. Questo è lo stesso modo mediante il quale gli occhi umani percepiscono le immagini del mondo, creando un'esperienza molto più naturale e confortevole. L'Oculus Rift permette un'esperienza di realtà virtuale di alto livello ad un prezzo accessibile: è stato infatti progettato anche per essere quanto più possibile confortevole e leggero per lunghe sessioni di gioco. Il suo peso è di 370 grammi circa, simili ad un paio di occhiali da sci pesanti. Il campo visivo è ampio approssimativamente 110, valore raggiunto deformando allungamento il mondo virtuale oltre la visione periferica. La combinazione di un campo visuale ampio, dell'head tracking e della stereoscopia 3D crea un'esperienza di realtà virtuale immersiva. L'SDK 27 dell'oculus include integrazioni out-of-the-box per l'unreal Development Kit (link), Unreal Engine 4 e Unity 4 che facilitano lo sviluppo di applicazioni di realtà virtuale. Al momento i sistemi operativi supportati sono Windows, Mac OS X e Linux. Il visore del Development Kit 1 (Figura 3.38), del costo di 300, è dotato di tre diverse paia di capsule lenticolari intercambiabili a seconda del grado di miopia del giocatore (A, B, C, rispettivamente per miopia nulla, leggera e avanzata). Il visore necessita di alimentazione esterna a 5V CC e sulla scheda sono presenti ingressi DVI, HDMI e USB mini. Per i primi due collegamenti, è come aver collegato alla propria macchina un proiettore o un secondo monitor; il collegamento USB invece è necessario per interfacciare il proprio ambiente di sviluppo VR con il dispositivo e poterne fruire senza dover necessariamente esportare. Uno svantaggio dell'oculus Rift è la risoluzione non particolarmente elevata del display a cristalli liquidi (LCD), dettaglio di cui ci si accorge una volta indossato il visore, considerata la distanza dei piccoli schermi dagli occhi (si riescono a distinguere i singoli pixel). Inoltre, la frequenza di aggiornamento degli schermi è sì buona ma purtroppo non elevatissima e ciò, dopo un utilizzo più o meno lungo a seconda dell'utente che lo indossa, può provocare fastidio. 27 Software Development Kit 55

61 Modulo offline: modellazione 3D Ad ogni modo non ne risentono l'immersività e l'esperienza di realtà virtuale che rimangono buone, considerata la precisione e responsività dell'head tracking. Il terzo e ultimo modello in fase di studio e sviluppo è il prototipo Crystal Cove (Figura 3.39), presentato al CES 2014 di Las Vegas, che garantisce di eliminare i difetti di cui sopra[19]. Infatti, la latenza è stata ridotta di molto e la risoluzione e definizione dei display OLED da 5,6 pollici con risoluzione 1920x1080 (16:9) aumentano ancora di più l'esperienza di realtà virtuale. Inoltre, è stato aggiunto anche il tracciamento della posizione della testa dell'utente: questo particolare permette di rilevare piccoli spostamenti della testa (come sporgersi da un balcone). Figura La seconda versione, il prototipo Crystal Cove, presentato al CES di Las Vegas Figura Un particolare della Figura 3.39 I punti bianchi sul visore in Figura 3.39 servono a individuare con maggiore precisione i movimenti dell'utente considerando non solo la testa ma anche tutto il corpo, mediante una piccola telecamera ("EyeToy") disposta di fronte. Figura Output su schermo delle due immagini 28 Foto: Maurizio Pesce - wired.it 56

62 Modulo offline: modellazione 3D stereoscopiche proiettate all'interno dell'oculus Rift A marzo 2014 l'intera compagnia è stata acquisita da Facebook Inc. al prezzo di 2 miliardi di dollari [20]. 3.3 Leap Motion Il Leap Motion traccia entrambe le mani e tutte e dieci le dita con precisione al punto e ad alta velocità. Figura Il Leap Motion Figura L'interno del Leap Motion: in rosso sono cerchiati i due sensori infrarosso, in azzurro i tre emettitori infrarosso 57

63 Modulo offline: modellazione 3D Figura Volume visibile e utilizzabile del Leap Motion Il dispositivo ha un raggio d'azione come in figura: 120 (avanti e indietro) intorno alla normale al dispositivo e 150 lateralmente, sempre rispetto alla normale. Lungo tali direzioni la distanza massima alla quale è rilevabile una mano è 61 cm. Il Leap Motion permette una nuova dimensione di gioco ma può anche essere utilizzato per interagire in modo innovativo con applicazioni come Google Earth e di disegno in generale. In alternativa è possibile ricercare un'applicazione in particolare nel negozio online dedicato al Leap Motion, l'app Leap 29. Il costo del dispositivo è di 80 $ (marzo 2014). Tale rilevamento è permesso attraverso tre illuminatori infrarossi e ciò presenta vantaggi come l'alimentazione via USB (basso assorbimento di potenza) ma anche svantaggi: trattandosi di luce emessa e riflessa non può occorrere riflessione se le due mani sono disposte in modo allineato rispetto al Leap perchè quella più in basso schermerebbe dalla luce infrarossa la mano più lontana. 29 https://airspace.leapmotion.com/ 58

64 Modulo offline: modellazione 3D Figura La modellazione delle mani e delle dita mediante Leap Motion. Nel progetto il Leap Motion può essere utilizzato in due modalità diverse. La prima prevede che il dispositivo sia adagiato su un ripiano di fronte all'utente e ne rilevi il movimento delle mani sopra di esso (utilizzo canonico). La seconda invece è più audace e interattiva in quanto prevede che il Leap Motion sia attaccato solidalmente alla parte anteriore dell'oculus Rift (Figura 3.46). Figura Il Leap Motion montato sulla parte anteriore dell'oculus Rift In questa configurazione, c'è l'importante vantaggio di avere le proprie mani sempre nel campo visivo del Leap Motion e quindi non si è vincolati ad una certa posizione ma le proprie mani saranno visibili finchè l'utente effettua movimenti con le mani di fronte al visore (e al Leap). 59

65 Modulo offline: modellazione 3D 3.4 Creazione dell'ambiente virtuale Unity 3D Lo sviluppo di giochi per computer e, più in generale, di ambienti virtuali interattivi e navigabili è passato nel tempo dall'essere un'esclusiva delle grandi aziende di sviluppo alla disponibilità per l'utente comune che può ora disporre di piattaforme di sviluppo di giochi come Unity 3D. Figura Il logo del motore di gioco Unity 3D Figura L'interfaccia utente di Unity 3D durante lo sviluppo di un ambiente Unity 3D è uno strumento di authoring integrato per la creazione di videogiochi 3D. Attualmente supporta lo sviluppo solo su Windows e ios ma le opzioni di esportazione sono 60

66 Modulo offline: modellazione 3D numerose e includono Windows, Linux, Iphone, Google Android, Nintendo Xbox 360, Sony Playstation 3 e anche un semplice browser dotato del plugin Unity 3D player. Unity 3D è rilasciato con due tipi di licenze: una licenza pro a pagamento (mensile) che si può provare gratuitamente per un mese e una licenza free senza limiti di tempo ma con l'inibizione di alcune funzionalità come la proiezione delle ombre, l'importazione dei pacchetti per le superfici d'acqua e l'interfacciamento con l'oculus Rift. Gli script che è possibile associare ad un game object possono essere scritti in JavaScript, C# e Boo 30. Un game object in Unity è una qualsiasi entità rappresentabile nella scena: un cubo, una luce, un piano, un modello 3D importato sono tutti esempi di game object. Ad un game object può essere associata una mesh, una texture, un materiale e, più in generale, una componente. Qualsiasi game object ha la componente "transform" che conserva informazioni sulla posizione nello spazio rispetto ad un riferimento fisso della scena, sulla rotazione e sulla scala (dimensione). Una componente agganciabile può essere anche uno script scritto in uno dei linguaggi indicati poc'anzi. Figura La componente dello script StimulusCommon di un gameobject trattato come stimolo. Per esempio nel progetto ogni game object che rappresenta uno stimolo ha uno script "StimulusCommon" associato (Figura 3.49). Per quanto riguarda l'interfacciamento con il visore virtuale Oculus Rift, è necessario scaricare un plugin gratuito dal sito degli sviluppatori di Oculus Rift (dopo essersi registrati 31 ): questo plugin sarà un file ".unitypackage" che verrà importato in Unity 3D e metterà a disposizione i game object appropriati per la modellazione ed esportazione con il visore Oculus (come per esempio la doppia telecamera per la stereoscopia). Ad importazione 30 Boo è un linguaggio di programmazione orientato agli oggetti, a tipi statici, general-purpose che cerca di fare uso del supporto della Common Language Infrastructure per Unicode, l'internazionalizzazione e le web application. Utilizza una sintassi ispirata a Python e tiene in considerazione l'estensibilità del linguaggio e del compilatore. 31 https://developer.oculusvr.com/?action=dl 61

67 Modulo offline: modellazione 3D avvenuta, si aggiungerà un menu "Oculus" nell'editor Unity attraverso il quale gestire le build del progetto e aggiungere i prefab giusti. Il prefab da aggiungere è OVRPlayerController composto da una forward direction (la direzione in cui è rivolto il personaggio) e da un OVRCameraController che contiene le due telecamere per la visione stereoscopica (leftcamera e rightcamera) Le classi Alcune delle classi codificate dal candidato sono derivate da una classe di Unity denominata MonoBehaviour (nel package UnityEngine, di cui va segnalato l'utilizzo in ogni file sorgente C#). Tutti gli script che divengono componenti di un game object dovrebbero essere derivati da MonoBehaviour, poichè offre un'interfaccia per accedere all'esecuzione della scena, ai suoi elementi e ai game object. Per fare un esempio, i metodi più frequentemente reimplementati di quest'interfaccia sono Awake(), Start(), Update(), ondestroy() e vengono richiamati in precise circostanze durante l'esecuzione: Awake viene eseguita all'avvio dell'eseguibile della scena, Start all'istanziamento del game object cui è associato lo script, Update è richiamato ad ogni frame e ondestroy alla distruzione del game object Commpack La classe CommPack svolge le stesse funzioni della sua omonima lato Qt. Si rimanda dunque al paragrafo L'unica differenza è nella lista degli stimoli, che è una List di StimulusCommon EventManager La libreria riutilizzata per la gestione del sistema event-oriented: contiene metodi per il dispatching degli eventi e per l'aggiunta e rimozione dei listeners Gui Il file gui.cs contiene la classe Gui che si occupa dell'interfaccia grafica e dell'inizializzazione dell'ambiente virtuale istanziando la classe che gestisce la connessione TCP, passandole l'indirizzo IP del server e la porta. Va notato che, per ora, questi parametri sono hard-coded nel programma (in quanto assegnate nel codice): in realtà questi parametri andrebbero specificati all'avvio dell'eseguibile già esportato, per esempio passandoli 62

68 Modulo offline: modellazione 3D attraverso la CLI 32 oppure scrivendoli in appositi campi mostrati all'avvio della scena virtuale in una maschera, proprio come un menu di gioco. L'oggetto di classe Gui rimane poi in un ciclo infinito che prevede la ricezione di dati dal server e il loro dispatching sottoforma di eventi attraverso il metodo TriggerEvent() 33. Questo ciclo infinito è eseguito in un altro thread attraverso la chiamata a RunAsync della libreria Loom, altrimenti la scena di gioco sarebbe stata inservibile in quanto sempre bloccata con la ricezione sincrona di dati su socket TCP NetManager Si occupa della connessione e disconnessione del client al server e della trasmissione e ricezione dei dati. La ricezione dei dati è effettuata con un metodo sincrono poichè il chiamante di questo metodo è già in un thread secondario: diversamente dal Qt che offre un metodo sul socket TCP per la ricezione di un'intera riga di caratteri, in C# l'unico metodo per la lettura di dati da stream TCP richiede un parametro in ingresso che specifichi quanti byte leggere dal socket. Non disponendo a priori di quest'informazione, il candidato ha scelto di acquisire un byte (un char) alla volta finchè non venga incontrato il carattere di line feed "\n" e aggiungere man mano questi byte ad una lista dinamica: alla ricezione del line feed, la lista viene copiata in un vettore di byte e poi convertita in stringa ASCII. Sarà ovviamente premura del server evitare che nella stringa JSON inviata siano presenti dei caratteri di line feed all'infuori di quello finale RVEventObj Contiene le stringhe statiche di tutti gli eventi possibili, come "audio" e "solid" StimulusCommon La differenza principale nella progettazione delle classi lato Unity e lato Qt giace nell'assenza della derivazione dei singoli stimoli da un'unica classe Stimulus (come descritto in ) poichè i linguaggi C++ e C# non lasciano al programmatore le stesse libertà. In particolare, la differenza è nel polimorfismo a runtime, limitato al solo downcast in C#. Si consideri il seguente codice. 32 Command Line Interface 33 In C# i nomi dei metodi iniziano per convenzione con la lettera maiuscola come per le classi, contrariamente a quanto ci si aspetterebbe. 63

69 Modulo offline: modellazione 3D Stimulus* stimolo; Solid* solido = new Solido("cubo"); stimolo = solido; L'ultima riga non costituisce errore in C++ poichè Solid è una classe derivata da Stimulus e il C++ supporta il polimorfismo a runtime in entrambe le direzioni. Solid* solid = (Solid*) (getstimuli()[i]); Il metodo "getstimuli()" restituisce la QList (gergo Qt) di tutti gli stimoli. Tale lista è stata dichiarata come "QList<Stimulus*>" e può contenere riferimenti a Solid, Light e Audio senza che ciò costituisca un errore, trattandosi di classi derivate da Stimulus stesso. In C# invece il polimorfismo a runtime è supportato solo nella direzione di generalizzazione e non in quella di specializzazione: in altre parole è possibile trattare un oggetto Solid come se fosse uno Stimulus, ma il cast di uno Stimulus in Solid o altra classe derivata genera un eccezione a runtime di tipo "unsafe cast". Di conseguenza, nella struttura delle classi lato Unity il candidato ha dovuto eliminare la differenza tra uno stimolo generale e gli stimoli concreti implementando una sola classe (StimulusCommon) che abbia al suo interno l'unione degli insiemi delle proprietà (e dei metodi di accesso) di tutti gli stimoli previsti L'architettura event-oriented Affinchè i valori delle nuove proprietà specificate via JSON arrivino ai rispettivi stimoli, il candidato ha scelto l'adozione di un'architettura orientata agli eventi che prevede un singolo dispatcher degli eventi ed n listener, ovvero tutti i game object corrispondenti agli stimoli. I listener sono raggruppati per tipo di evento, corrispondente al tipo di stimolo (solid, audio, light,...). Le classi afferenti a quest'architettura event-oriented sono state create da Dustin Andrew 34 nel 2012 e rilasciate sotto licenza GNU GPL, nel rispetto della quale vengono riutilizzate in questo contesto. Il funzionamento di quest'architettura è suddiviso in cinque diverse fasi. 1. Inizializzazione dell'architettura. In Unity si crea un game object vuoto e gli si aggiunge come componente lo script C# "EventListener". Si estende la classe

70 Modulo offline: modellazione 3D "CustomEvent" personalizzandola con le stringhe identificative dei diversi tipi di evento previsti (nel progetto, "RVEventObj"). 2. Ricezione del messaggio. Si riceve il messaggio JSON con il metodo NetManager.rx() e ne si crea un oggetto di classe CommPack da passare al metodo TriggerEvent(CommPack). 3. Generazione dell'evento. All'interno del metodo TriggerEvent si crea l'evento come oggetto di classe RVEventObj e ne si avvalorano il tipo e le proprietà. Quest'oggetto viene poi inviato a tutti i game object già in ascolto tramite il metodo EventManager.instance.dispatchEvent(RVEventObj). 4. Iscrizione del listener. Nel metodo Start() della classe StimulusCommon ogni game object si mette in ascolto del tipo di evento appropriato servendosi del metodo EventManager.instance.addEventListener(string, gameobject, callback): il primo parametro è il tipo di evento (in accordo al punto 1), il secondo è il game object in questione (una sorta di "this") e il terzo è la funzione di callback da chiamare alla ricezione dell'evento. La funzione di callback dovrà avere la seguente firma: public void CallBackFunc(RVEventObj). 5. Esecuzione delle modifiche. All'interno della suddetta funzione si effettuerà un controllo sull'id a cui l'evento si riferisce: se coincide con l'id del game object che ha ricevuto l'evento allora si assegnano le varie proprietà. La struttura di Unity, inoltre, impedisce che thread secondari abbiano permessi di modifica dei game object, operazione a disposizione solo del thread principale del gioco. Ciò rappresenterebbe un problema in quanto la ricezione dei dati JSON in rete avviene in un thread separato da quello principale per ovvi motivi di continuità dell'esecuzione e disponibilità dell'interfaccia utente. Il candidato ha ovviato a questo problema servendosi della libreria Loom 35 suggerita nella documentazione ufficiale di Unity. Loom è tornata utile sostanzialmente in due evenienze nel contesto del presente progetto: per eseguire operazioni in modo asincrono e

71 Modulo offline: modellazione 3D per accodare operazioni sul thread principale. Rispettivamente questi due compiti sono svolti dalle chiamate Loom.RunAsync(() => {...}); Loom.QueueOnMainThread( () => {...}); La notazione tra parentesi degli argomenti è detta funzione lambda. Sulla destra dell'operatore lambda ("=>") c'è il corpo della funzione che si riferisce ai parametri passati in ingresso sulla parte sinistra dell'operatore lambda (in questo caso sono assenti) La descrizione XML della scena L' extensible Markup Language è un linguaggio di markup creato nel 1998 il cui scopo è lo scambio e l'interusabilità di documenti strutturati e l'estendibilità. È basato su Unicode ed è platform independent. I principali vantaggi derivanti dall'utilizzo di questo formato sono nell'interscambiabilità dei documenti, la struttura ad albero navigabile e la leggibilità sia da macchine sia da umani. Le sue alternative sono JSON e YAML. XML è un linguaggio di markup da estendere creando adeguati elementi, attributi e valori. Nel contesto del progetto è stato utilizzato come mezzo per descrivere la composizione della scena e in particolare gli stimoli e le rispettive proprietà modificabili. La GUI Qt e il mondo virtuale sono applicativi indipendenti che comunicano solo durante l'esecuzione via TCP. Concettualmente però il mondo modellato al quale entrambi si riferiscono è lo stesso: questo mondo viene creato in Unity 3D e dunque la componente Unity lo conosce a priori ma lo stesso non avviene per l'interfaccia grafica Qt di modifica. Per questo motivo si è rivelato necessario un modo per descrivere la composizione del mondo virtuale al Qt. Le alternative prevedevano una descrizione comunicata tramite un handshake applicativo via TCP oppure tramite file caricato manualmente nell'interfaccia Qt dall'operatore. I formati candidati erano l'xml o sempre il JSON. Il candidato ha preferito usare entrambi questi formati nello sviluppo del sistema in modo tale da non precludersi alcuna strada negli sviluppi futuri: il formato JSON è stato adottato per la formattazione della comunicazione tra GUI Qt e viste Unity a runtime (si rimanda al paragrafo 4.2.4) mentre l'xml è stato scelto per questa fase prettamente descrittiva. 66

72 Modulo offline: modellazione 3D Bisogna tener presente che questa descrizione non riguarda l'intera composizione del mondo virtuale ma soltanto gli oggetti che possono essere modificati e che possono aver ripercussioni sui parametri vitali del paziente: a questi oggetti ci si riferirà con il termine "stimolo". Dunque, questo file XML è sostanzialmente un elenco di entità modificabili corredate ciascuna dell'elenco di proprietà modificabili, come dimensione, posizione, rotazione, colore e così via. Il Listato 3.1 ne è un esempio. Listato Esempio di descrizione XML degli stimoli di una scena <stimuli> <stimulus> <id>cubo01</id> <type>solid</type> <editable property="pos"> <x>3</x> <y>2</y> <z>3</z> </editable> <editable property="rot"> <x>0</x> <y>0</y> <z>0</z> </editable> <editable property="siz"> <x>1</x> <y>1</y> <z>1</z> </editable> <editable property="col"> <r>200</r> <g>0</g> <b>0</b> <a>1</a> </editable> </stimulus> <stimulus> <id>comodino01</id> <type>light</type> <editable property="pow"> 150 </editable> <editable property="pos"> <x>4</x> <y>1</y> <z>5.4</z> </editable> <editable property="col"> <r>150</r> <g>150</g> <b>0</b> <a>1</a> </editable> <editable property="isin"> 1 </editable> </stimulus>... </stimuli> La struttura ad albero utilizza un nodo radice di nome "stimuli" i cui diretti discendenti sono tutti e soli "stimulus". Ciascuno degli "stimulus" rappresenta uno stimolo e ha almeno 67

73 Modulo offline: modellazione 3D un identificativo "id", un tipo "type" e una proprietà modificabile "editable" non vuota. Il contenuto di ciascun "editable" varia a seconda del valore del campo "property" del tag editable. Considerando il Listato 3.1, vengono descritti due stimoli. Il primo è un solido identificato dall'etichetta "cube01" di cui è permessa la modifica di posizione, rotazione, dimensione e colore. Inizialmente questo solido ha posizione (3,2,3), rotazione (0,0,0 ), dimensione 1x1x1 e colore (200,0,0,1) nel formato RGBA 36. Il secondo stimolo è una luce di nome "comodino01" ed espone la modifica della sua potenza luminosa (l'unità di misura sottintesa è Watt), posizione, colore e se si tratta di una luce artificiale o naturale (isinner): inizialmente la luce è nella posizione (4,1,5.4), ha un colore sulle tonalità medie del giallo (150,150,0,1) ed è una luce artificiale con potenza 150W. Non è necessario esporre tutte le possibili proprietà per ciascuno stimolo. Può infatti essere descritta una configurazione particolare in cui un solido è compreso tra due mobili e in questo caso rotazione e dimensione potrebbero essere disattivate e mantenute costanti ai valori imposti dall'operatore in fase offline, per evitare collisioni tra i diversi corpi rigidi; oppure, nel caso di una luce, può essere modificabile esclusivamente il colore trattandosi per esempio di un lampadario. Questo file così formattato, viene caricato nell'interfaccia grafica Qt (si rimanda al paragrafo 4.1.4) La doppia visualizzazione Data l'architettura del sistema, il candidato ha ritenuto opportuno fornire una visuale del mondo anche all'operatore. Infatti la vista dell'oculus Rift durante l'esecuzione occupa uno schermo intero e comunque prevede la visualizzazione di entrambe le viste (sinistra e destra) nella stessa schermata: questo è ovviamente scomodo per l'operatore. Per questo motivo oltre alla normale visualizzazione stereoscopica per Oculus Rift, il candidato ha previsto un ulteriore tipo di esportazione dell'ambiente virtuale in una finestra normale, senza visualizzazioni stereoscopiche. Questa vista alternativa è stata creata per fornire all'operatore dell'interfaccia di controllo del mondo virtuale un'anteprima della configurazione del mondo prima di sottoporla al visore del paziente. 36 Red, Green, Blue, Alpha 68

74 Modulo offline: modellazione 3D Durante la progettazione si era pensato di sfruttare l'esportazione su browser della scena Unity 3D e ciò avrebbe permesso l'inclusione e visualizzazione della scena RV nell'interfaccia di controllo stessa attraverso l'utilizzo di una classe particolare offerta dal Qt, la QWebView. Questa ipotesi è stata scartata poichè Unity 3D impedisce di aprire, chiudere e gestire socket TCP quando si sceglie l'esportazione della scena per browser: l'unico meccanismo di comunicazione di rete permesso in questo caso è la Remote Procedure Call (RPC). Ciò giustifica la scelta di esportare l'anteprima per l'operatore come eseguibile standalone che mostrasse la scena in una finestra a parte. Considerando inoltre che lo scopo di questa visualizzazione alternativa è di fornire un'anteprima, il candidato ha pensato di lasciare a discrezione dell'operatore di commutare tra lo stesso punto di vista del paziente, aggiornato in tempo reale da uno stream dati TCP dalla vista con il visore, e un punto di vista completamente mobile che permetta all'operatore di cambiare posizione e osservare il mondo da altre posizioni oltre a quella correntemente occupata dal paziente. Ad ogni modo le differenze tra le due tipologie di esportazioni sono poche e riguardano principalmente due aspetti: i dettagli delle connessioni di rete e l'assetto delle telecamere. A seconda del tipo di visualizzazione la connessione di controllo degli stimoli va stabilita su porte diverse (6001/6002, cfr. Figura 2.2) e per la connessione dello stream della posizione del paziente la vista stereoscopica produrrà il flusso TCP mentre la vista anteprima lo consumerà (in alternativa può essere usato il meccanismo delle RPC). Per quanto riguarda la telecamera, per la natura della visione stereoscopica (si veda paragrafo ) devono esserci due viste differenti e distanziate e orientate in modo opportuno piuttosto che una singola telecamera che inquadri in prospettiva la scena. In Unity 3D ciò comporta l'aggiunta di una seconda telecamera per l'inquadratura, costituendo così una left-camera e una rightcamera, una per ciascun occhio; inoltre per l'interfacciamento con l'oculus Rift, si importa un plugin dedicato che aggiunge non solo il game object della suddetta telecamera composita ma anche degli script di controllo del movimento della testa del giocatore attraverso accelerometri, bussola e giroscopio. Dal lato dell'implementazione è sia possibile scegliere a compile-time che tipo di scena esportare sia a run-time, aggiungendo un parametro booleano passato via shell che indica se costruire una scena stereoscopica o meno. In fase di inizializzazione verranno costruiti gli oggetti adatti. 69

75 Modulo offline: modellazione 3D 3.5 I tipi di oggetto modificabili Gli oggetti inclusi nella scena virtuale che hanno una o più proprietà esposte a modifica da parte dell'operatore sono definiti "stimoli". Correntemente, il candidato ha implementato tre tipi diversi di stimoli: la luce, un corpo solido e una fonte sonora. Le proprietà modificabili di una fonte luminosa (Light) sono la posizione nello spazio, il colore della luce emanata (utile per fini cromoterapeutici), se si tratta di una fonte luminosa interna o esterna (cioè, una lampadina o l'illuminazione pubblica) e l'intensità luminosa espressa in Watt. Un corpo solido (Solid) è sostanzialmente qualsiasi oggetto con una mesh all'interno della scena tridimensionale. Nell'ottica del progetto, potrebbe trattarsi di un quadro, una porta, una poltrona. Di tale oggetto è possibile modificare posizione, rotazione, dimensioni e la tinta della texture 37. Una fonte sonora (Audio) permette di modificare la propria posizione, intensità del suono riprodotto e l'indicazione di quale file riprodurre. Inizialmente si era pensato di specificare direttamente dall'interfaccia operatore in Qt (attraverso un messaggio di commit delle modifiche) il percorso del file audio da riprodurre, ma ciò avrebbe obbligato l'operatore a conoscere la struttura delle directory nel file system dei rispettivi client (a parte ovviamente la configurazione in cui un visualizzatore è in esecuzione sul localhost), accoppiando in modo eccessivo ed inopportuno client e server. La soluzione scelta e implementata è stata invece una combo box (menù a tendina) nell'interfaccia operatore attraverso la quale scegliere un suono tra quelli disponibili: questo elenco verrà popolato in fase di lettura del file XML di configurazione del mondo, in cui si conosceranno a priori i suoni disponibili. Per i nuovi stimoli e per le nuove proprietà di stimoli esistenti in fase di progettazione, si rimanda alla sezione Texture: i dettagli, un'immagine di superficie o un colore associato a superfici generate al computer o ad un modello 3D. 70

76 Modulo offline: modellazione 3D 3.6 Prototipo dell'ambiente virtuale Figura Il primo prototipo di ambiente di test. Si noti in basso a destra l'interfaccia operatore in funzione, mentre nel riquadro in alto a sinistra è riportato (per ragioni di debug) il messaggio JSON ricevuto. In Figura 3.50 è rappresentato il primo ambiente di test creato dal candidato. L'obiettivo era evidentemente la semplicità e gli unici due stimoli controllabili erano un cubo e una fonte luminosa di tipo puntuale 38. Nella stessa scena, per ragioni di debugging, viene visualizzato in una textbox l'intero messaggio JSON ricevuto. Dopo aver affinato le conoscenze del motore Unity 3D ed essersi procurato una certa quantità di modelli tridimensionali da includere nella scena, il candidato ha elaborato la versione migliorata dell'ambiente di test (Figura 3.51). 38 Il tipo "Point" è una fonte luminosa isotropa. 71

77 Modulo offline: modellazione 3D Figura La versione ufficiale dell'ambiente di prova Questo ambiente virtuale è stato composto servendosi di modelli 3D scaricati gratuitamente da alcuni negozi online 39 e di due oggetti acquisiti dal candidato, trattati nel paragrafo (Figura 3.20 e Figura 3.22). Gli stimoli presenti in questa scena sono otto: Tre cubi colorati in blu, rosso e nero (tipologia di stimolo: "solid"). Tre fonti luminose di tipo "spotlight" che proiettano cioè un cono di luce, posizionate nella lampada azzurra sul tavolo a sinistra, nella lampada da soffitto centrale e nello schermo del computer portatile sulla scrivania dall'altra parte della stanza (tipologia di stimolo: "light"). Due fonti sonore: una canzone proveniente dal computer e il ticchettio delle lancette dall'orologio a parete (visibile in Figura 3.52) (tipologia di stimolo: "audio"). 39 Come 72

78 Modulo offline: modellazione 3D Figura Particolari dell'ambiente virtuale in Figura

79 Modulo online: controllo della realtà virtuale 4 MODULO ONLINE: CONTROLLO DELLA REALTÀ VIRTUALE 4.1 L'interfaccia operatore Il Qt Creator Figura Il logo delle librerie Qt Figura Il logo della Nokia, contesto nel quale sono state sviluppate le librerie Qt Figura Il logo della Digia, attuale proprietaria del progetto Qt Il framework Qt permette uno sviluppo multi piattaforma, è principalmente utilizzato per la creazione di interfacce grafiche ed è scritto in C++. 74

80 Modulo online: controllo della realtà virtuale Lo sviluppo del framework iniziò nel 1991 ad opera della Quasar Technologies in Norvegia. Successivamente fu rinominata in Trolltech e acquisita dalla Nokia che ne sponsorizzò lo sviluppo. Nel 2012 la Digia acquistò il progetto. Attualmente il Qt è disponibile sia in forma closed source con una licenza commerciale, sia con una licenza open-source sviluppatore scaricabile liberamente. Il Qt Creator è un IDE (Integrated Development Environment) che si basa sulle librerie Qt e permette la creazione di interfacce grafiche mediante drag&drop (in modo simile all'interfaccia di Autocad) e l'implementazione del loro funzionamento. I vantaggi principali derivanti dall'impiego delle librerie Qt sono due. Multipiattaforma. I sorgenti in Qt possono essere compilati per i maggiori sistemi quali Windows, ios, Linux, Embedded Linux e, quando era in auge, anche il sistema operativo Symbian dei primi smartphone caduto ormai in disuso. Ciò è possibile grazie al tool QMake che interpreta il file principale di un progetto Qt, il.pro che contiene l'elenco dei file coinvolti, delle librerie esterne e dei moduli del Qt da caricare come ad esempio la rete, l'xml, la grafica OpenGL. Il Qmake eseguito sul file.pro produce in uscita i MakeFile configurati per il sistema in uso (equivale all'esecuzione del comando configure nei sistemi Unix) che guideranno nella compilazione dei sorgenti. Il meccanismo signal/slot. In maniera simile al funzionamento in ambito Microsoft Windows Presentation Foundation con gli hook. Il Qt è fortemente orientato agli oggetti intendendo con ciò che esistono molte classi ciascuna specializzata per uno scopo: ad esempio c'è la QString, la QJsonDocument, la QTcpSocket, QThread e così via. Ognuna di queste classi ha dei metodi che automatizzano operazioni comuni come la scrittura di byte in rete, la conversione di un intero in stringa, la gestione di un file ecc... Ciascuna di queste classi è derivata da un'unica classe genitrice di nome QObject che offre tra le altre cose il metodo connect(..) QObject::connect(QObject *sender, SIGNAL(..), QObject *receiver, SLOT(..)); che permette di legare l'emissione di un segnale all'esecuzione di un metodo (slot). Un segnale è emesso attraverso la parola chiave emit e ha una firma come se fosse una funzione. 75

81 Modulo online: controllo della realtà virtuale In questo modo è possibile costruire il comportamento dell'interfaccia grafica (GUI, Graphical User Interface) in modo più semplice e inoltre permette la comunicazione tra componenti che richiederebbero un cablaggio complesso se si usassero solamente le regole del C++. È possibile anche servirsi delle librerie Qt senza dover necessariamente scaricare anche il Qt Creator. Figura L'interfaccia operatore durante lo sviluppo (nel Qt Designer) Il design pattern MVC e la sua variante Per design pattern si intende un insieme di accorgimenti, metodologie e architetture di progettazione software volte alla prevenzione di problemi comuni nel ciclo di vita del software. Un design pattern non è un concetto limitato al solo ambito dell'ingegneria del software ma trova applicazione anche in qualsiasi altra branca dove sia necessaria della progettazione. Un design pattern può essere visto come una raccolta di soluzioni di alto livello che vanno implementate in modo sempre diverso a seconda del caso particolare in esame. Queste soluzioni sono frutto dell'esperienza progettuale comune di cui si garantisce così il riutilizzo e sollevano dal compito di trovare soluzioni a problemi comuni e noti alla comunità dei progettisti. Nello specifico, un design pattern in ingegneria del software fornisce soluzioni a problemi di programmazione noti: per esempio ci si può servire di un design pattern che risolve un problema di visibilità e comunicazione tra componenti che vanno mantenute separate, oppure può servire per la corretta progettazione di una componente il cui solo 76

82 Modulo online: controllo della realtà virtuale scopo è l'osservazione di altre, oppure ancora garantisce un'elevata manutenibilità del codice nell'ottica di futuri aggiornamenti e fix. In altre parole, l'adozione di un design pattern è una caratteristica necessaria in un software di qualità, dove per qualità si intendono anche aspetti che riguardano tutto il ciclo di vita del software. Figura Semplice schema del design pattern MVC (puro) Figura Il design pattern MVC (puro) con interazioni e compiti per ciascuna delle tre componenti 40 Nel progetto dell'interfaccia operatore in Qt, il candidato ha scelto di implementare il design pattern architetturale Model-View-Controller (Figura 4.5) il cui scopo è la

83 Modulo online: controllo della realtà virtuale separazione e comunicazione tra i tre livelli tipici di un'applicazione: livello dati, livello della logica applicativa e il livello di presentazione. La logica dell'applicazione è implementata nel "controller", il livello dei dati nel "model" mentre la "view" si occupa della presentazione. Nell'ottica del progetto il candidato ha ritenuto opportuno apportare alcune modifiche a questo pattern. L'ostacolo maggiore da superare è stata la gestione di più di una vista nel sistema: infatti, all'interfaccia operatore possono essere collegati diversi visualizzatori, siano essi a realtà virtuale o in una normale finestra, mentre il design pattern MVC puro prevede la gestione di una sola interfaccia utente. Figura Il design pattern MVC modificato dal candidato. La componente View diventa un aggregatore e gateway di viste. La soluzione è stata la modifica della componente "view" in una sorta di gateway per le view (da cui "vieway", Figura 4.7) a cui un visualizzatore esterno si connette via TCP e ne inizia a ricevere i dati. Internamente, il nuovo componente "vieway" si comporta esattamente come una view classica evitando così che il controller o il model subiscano modifiche nel loro comportamento e nella comunicazione. In teoria non sono posti limiti al numero di visualizzatori della scena simulata a patto però che siano in grado di operare con il protocollo discusso al paragrafo Dal lato implementativo, allo stato delle cose, il sistema accetta solo due connessioni TCP alla volta, sulle porte 6001 e 6002, dove rispettivamente si attende la connessione della scena esportata per Oculus Rift e la connessione dell'anteprima operatore (cfr. Figura 2.2). 78

84 Modulo online: controllo della realtà virtuale Il diagramma delle classi Figura Diagramma delle classi UML dell'interfaccia operatore Qt 79

85 Modulo online: controllo della realtà virtuale In riferimento al diagramma delle classi in Figura 4.8, verrà ora spiegato il contenuto delle classi più importanti RV_controller La classe RV_controller svolge il ruolo di controller nell'ottica MVC ed è l'interfaccia grafica dell'applicazione scritta con il Qt Creator: essa dunque contiene anche i segnali e gli slot necessari al funzionamento della stessa (segnali quali la pressione di un pulsante della GUI). Questa classe conserva i riferimenti agli eseguibili delle scene Unity 3D dell'ambiente virtuale e ne gestisce l'intero processo, dall'avvio fino al termine (attraverso la classe QProcess). Inoltre, ci sono due timer (istanze della classe QTimer) che si occupano di inviare ogni minuto dei messaggi di controllo della connessione alle viste collegate (messaggio "check", vedere 4.2.4) RV_model Implementa il model dell'mvc e di conseguenza è responsabile della conservazione, aggiornamento e comunicazione dello stato corrente del mondo. Essa conserva una lista di riferimenti ad oggetti derivati dalla classe "Stimulus", in questo caso "Solid", "Light", "Audio" (QList<Stimulus*>), di cui ne permette l'aggiunta; inoltre memorizza il percorso e il nome del file xml contenente la configurazione iniziale del mondo (xmlpath). In fase d'inizializzazione dell'intera interfaccia operatore, un riferimento a questa classe è passato dal controller alla componente "vieway" in modo tale che quest'ultimo possa richiedere, in fase di commit delle modifiche, la configurazione corrente degli stimoli in formato JSON e includerla nel messaggio in fase di invio. Di conseguenza, è la componente dove avviene la conversione dell'array degli stimoli in JSON (si rimanda a per i dettagli 4.2.2). Istanziata dal controller, durante l'esecuzione del programma ne è sempre presente una e una sola istanza RV_vieway È l'aggregatore delle viste e riveste il ruolo di "view" nel contesto del design pattern MVC. Si occupa dei server e socket TCP (QTcpServer e QTcpSocket) gestendone la variazione di stato e la connessione/disconnessione dei client visualizzatori. Riceve il 80

86 Modulo online: controllo della realtà virtuale comando di commit delle modifiche dall'interfaccia operatore e si occupa di inviare i messaggi JSON a ciascuna vista connessa. Conserva un riferimento all'unica istanza del model e un riferimento ad un oggetto di classe CommPack CommPack La classe Communication Packet (abbreviata in CommPack) rappresenta un messaggio nel formato previsto in e contiene i campi "method", "error" e "content" il cui significato è spiegato nel paragrafo 4.2.4, oltre ai comuni metodi get/set. Contiene il metodo di conversione del messaggio in formato JSON che viene invocato durante l'invio fisico dei dati in rete; dualmente, è in grado di convertire un messaggio JSON in un'istanza della classe CommPack permettendo così l'accesso ai campi method ed error del messaggio di risposta di uno dei client Stimulus La classe Stimulus non viene mai istanziata direttamente ma è la classe base da cui vengono derivate le classi che implementano gli stimoli reali. Essa contiene due campi di fondamentale importanza, l'identificativo ("id") e la tipologia di stimolo ("type"): tali campi vengono avvalorati nel costruttore delle classi e in seguito possono solo essere letti Le classi derivate da Stimulus Le classi che implementano gli stimoli reali corrispondono agli stimoli previsti attualmente dal progetto (cfr. paragrafo 3.5). struct _pos{ float x; float y; float z; }; struct _col{ unsigned char r; unsigned char g; unsigned char b; float a; }; struct _rot{ float x; float y; float z; }; struct _size{ float dx; float dy; float dz; }; Listato Le strutture impiegate nel progetto (sia Qt sia Unity3D): rispettivamente posizione, colore, rotazione e dimensione. 81

87 Modulo online: controllo della realtà virtuale L'aspetto della GUI Figura L'interfaccia Qt di controllo del mondo virtuale In Figura 4.9 è rappresentata la GUI dell'operatore. Essa è composta da tre parti principali: l'elenco degli stimoli, la configurazione di uno stimolo e i comandi. La parte dei comandi offre all'operatore la possibilità di caricare un file XML contenente la configurazione degli stimoli nel mondo virtuale (in qualsiasi momento dell'esecuzione) mediante il pulsante "Load XML description": a lettura completata, la lista degli stimoli viene svuotata e ripopolata. I pulsanti "Start OVR" e "Start Preview" avviano (e osservano lo stato) l'eseguibile della scena, rispettivamente stereoscopica e normale, nel caso in cui si utilizzi la configurazione in localhost dei visualizzatori (si rimanda al paragrafo 2.3). Per il controllo della scena virtuale e per il suo eventuale roll-back si utilizzano i pulsanti "Revert..", "Preview.." e "Commit". La funzione della preview permette di mostrare le modifiche al mondo solo nella scena di anteprima dell'operatore (la scena del paziente non subisce modifiche); i pulsanti "Commit" e "Revert" rispettivamente rendono effettive o comandano il roll-back delle modifiche anche al visore virtuale del paziente. Per configurare uno stimolo è sufficiente che l'operatore ne selezioni uno dall'elenco e la schermata accanto verrà popolata con gli adeguati comandi, a seconda della tipologia dello stimolo (Figura 4.10). È bene notare che la GUI deve essere in esecuzione prima delle scene virtuali in quanto funge da server: inoltre, è opportuno conoscere le regole del firewall della macchina su cui è in esecuzione e modificarle in modo tale che le porte 6001 e 6002 risultino aperte. 82

88 Modulo online: controllo della realtà virtuale Figura La GUI dopo aver letto il file XML descrittivo del prototipo della scena in Figura La comunicazione Il formato JSON JavaScript Object Notation 41 è un formato di descrizione e di interscambio di dati standardizzato nel 1999 che si basa su Unicode e sulla sintassi di descrizione degli oggetti in JavaScript (linguaggio di client-side scripting nelle pagine web). È inoltre di facile comprensione per gli umani (human-readable). Si consideri il seguente codice javascript. var num = 4; var arr = ["lun","mar","mer","gio","ven"]; var obj = {"qty": 5}; arr.push("sab"); obj.what = "days"; obj.content = arr; obj.qty++; console.log(obj);

Giornata ANIPLA Introduzione alla visione industriale 3D. Milano, 14 giugno 2012 www.vblab.it R. Sala - remo.sala@polimi.it

Giornata ANIPLA Introduzione alla visione industriale 3D. Milano, 14 giugno 2012 www.vblab.it R. Sala - remo.sala@polimi.it Giornata ANIPLA Introduzione alla visione industriale 3D Milano, 14 giugno 2012 www.vblab.it R. Sala - remo.sala@polimi.it La visione delle macchine: 35 anni di storia Il testo Digital image processing

Dettagli

Lezione 19: Grafica in tempo reale. I problemi del Real Time. I problemi del Real Time. I problemi del Real Time. I problemi del Real Time

Lezione 19: Grafica in tempo reale. I problemi del Real Time. I problemi del Real Time. I problemi del Real Time. I problemi del Real Time I problemi del Real Time Lezione 19: Grafica in tempo reale Come visto nelle precedenti lezioni, i calcoli necessari a generare immagini 3D sono numerosi e complessi. I programmi di grafica 3D impiegano

Dettagli

Sommario PREMESSA... 2 1 RILIEVO LASER SCANNING... 2. 1.1 La tecnica... 2 1.2 La campagna... 6 1.3 Elaborazione dei dati... 10

Sommario PREMESSA... 2 1 RILIEVO LASER SCANNING... 2. 1.1 La tecnica... 2 1.2 La campagna... 6 1.3 Elaborazione dei dati... 10 REL D Rilievi topografici e studio di inserimento urbanistico Pag 1 Sommario PREMESSA... 2 1 RILIEVO LASER SCANNING... 2 1.1 La tecnica... 2 1.2 La campagna... 6 1.3 Elaborazione dei dati... 10 REL D Rilievi

Dettagli

RILIEVO LASER SCANNER RILIEVO DEGLI EDIFICI STORICI AMBIENTE E TERRITORIO

RILIEVO LASER SCANNER RILIEVO DEGLI EDIFICI STORICI AMBIENTE E TERRITORIO RILIEVO LASER SCANNER RILIEVO DEGLI EDIFICI STORICI AMBIENTE E TERRITORIO Il laser a scansione terrestre opera in modalità totalmente automatica ed è in grado di acquisire centinaia o migliaia di punti

Dettagli

LA VISIONE STEREOSCOPICA

LA VISIONE STEREOSCOPICA LA VISIONE STEREOSCOPICA ELABORAZIONE DELLE IMMAGINI Università degli Studi dell Insubria A.A. 2004/2005 Sinardi Matteo Zappino Massimo Indice Introduzione Cenni storici L'occhio umano La stereopsi Stereogrammi

Dettagli

Nexsoft. Business Solutions. Stereoscopia

Nexsoft. Business Solutions. Stereoscopia Nexsoft Business Solutions Stereoscopia La storia della stereoscopia L'idea di stereoscopia è molto antica. Fu Euclide nel 208 a.c. a comprendere i principi della visione tridimensionale: ciascuno dei

Dettagli

L avvento di una Nuova Rivoluzione Digitale (?)

L avvento di una Nuova Rivoluzione Digitale (?) L avvento di una Nuova Rivoluzione Digitale (?) Seminario @ IanusLab Ottobre 2013 Alessio Merola Progetto Galileo Manifattura digitale Artigianato in chiave digitale I volani della terza rivoluzione industriale

Dettagli

Daniele Marini. Dispositivi di uscita e videotecnologia

Daniele Marini. Dispositivi di uscita e videotecnologia Daniele Marini Dispositivi di uscita e videotecnologia Introduzione La tecnologia più diffusa, dopo quella Crt (Cathode Ray Tube), è oggi la Lcd (Liquid Crystal Display). Impiegata, in particolare nei

Dettagli

DISPOSITIVI DI INPUT

DISPOSITIVI DI INPUT LA TASTIERA (o keyboard) DISPOSITIVI DI INPUT Quando viene premuto un tasto si genera un codice corrispondente alla cifra alfanumerica selezionata che viene inviato alla CPU per essere elaborato. La tastiera

Dettagli

20 Giugno 2013 Gianni Rosa Gallina giannishub@hotmail.com @giannirg http://giannishub.cloudapp.net/it/

20 Giugno 2013 Gianni Rosa Gallina giannishub@hotmail.com @giannirg http://giannishub.cloudapp.net/it/ 20 Giugno 2013 Microsoft Kinect introduzione Gianni Rosa Gallina giannishub@hotmail.com Twitter: @giannirg Blog: http://giannishub.cloudapp.net/it/ Agenda Cos è Microsoft Kinect? Cosa si può fare con Kinect?

Dettagli

Sviluppo di applicazioni web con il pattern Model-View-Controller. Gabriele Pellegrinetti

Sviluppo di applicazioni web con il pattern Model-View-Controller. Gabriele Pellegrinetti Sviluppo di applicazioni web con il pattern Model-View-Controller Gabriele Pellegrinetti 2 MVC: come funziona e quali sono vantaggi che derivano dal suo utilizzo? La grande diffusione della tecnologia

Dettagli

Martina Agazzi. Corso di Tecniche plastiche contemporanee. Prof. Carlo Lanzi

Martina Agazzi. Corso di Tecniche plastiche contemporanee. Prof. Carlo Lanzi Martina Agazzi Corso di Tecniche plastiche contemporanee Prof. Carlo Lanzi RILEVAMENTO 3D DI UN OGGETTO ARTISTICO (SCULTURA) Luce strutturata Dispositivo portatile, facilmente trasportabile digitalizzazione

Dettagli

Applicazioni e considerazioni conclusive

Applicazioni e considerazioni conclusive Applicazioni e considerazioni conclusive 8.1 La telecamera tridimensionale Il sistema di scansione a luce debolmente strutturata permette di scandire un oggetto e di ricavarne un immagine tridimensionale

Dettagli

Bus di sistema. Bus di sistema

Bus di sistema. Bus di sistema Bus di sistema Permette la comunicazione (scambio di dati) tra i diversi dispositivi che costituiscono il calcolatore E costituito da un insieme di fili metallici che danno luogo ad un collegamento aperto

Dettagli

3restituzione - stereoscopia

3restituzione - stereoscopia 3restituzione - stereoscopia La condizione che deve essere verificata perché si realizzi l orientamento esterno è la complanarità dei raggi omologhi Perché i raggi omologhi si intersechino devono essere

Dettagli

Il Reverse Engineering al servizio dell Arte

Il Reverse Engineering al servizio dell Arte Il Reverse Engineering al servizio dell Arte CRP Technology realtà italiana leader da oltre trentanni nel settore del Race Engineering, Rapid Prototyping e Rapid Manufacturing ha messo a disposizione dell

Dettagli

Sommario Ottica geometrica... 2 Principio di Huygens-Fresnel... 4 Oggetto e immagine... 6 Immagine reale... 7 Immagine virtuale...

Sommario Ottica geometrica... 2 Principio di Huygens-Fresnel... 4 Oggetto e immagine... 6 Immagine reale... 7 Immagine virtuale... IMMAGINI Sommario Ottica geometrica... 2 Principio di Huygens-Fresnel... 4 Oggetto e immagine... 6 Immagine reale... 7 Immagine virtuale... 9 Immagini - 1/11 Ottica geometrica È la branca dell ottica che

Dettagli

La percezione del colore

La percezione del colore 30 Gennaio 2007 Corso di Laurea in Informatica Multimediale Facoltà di Scienze MMFFNN Università di Verona La percezione del colore Chiara Della Libera DSNV Università di Verona Sezione di Fisiologia Umana

Dettagli

HORIZON SQL MODULO IMMAGINI

HORIZON SQL MODULO IMMAGINI 1-1/9 HORIZON SQL MODULO IMMAGINI 1 MODULO IMMAGINI... 1-2 Considerazioni Generali... 1-2 Miniature a tutto schermo... 1-3 Disabilitare il caricamento dei file delle miniature... 1-3 Drag&Drop... 1-3 Apri

Dettagli

L'algebra di Boole falso vero livello logico alto livello logico basso Volts

L'algebra di Boole falso vero livello logico alto livello logico basso Volts L algebra di Boole L'algebra di Boole comprende una serie di regole per eseguire operazioni con variabili logiche. Le variabili logiche possono assumere solo due valori. I due possibili stati che possono

Dettagli

Capitolo 6 ELABORAZIONE DI IMMAGINI A COLORI

Capitolo 6 ELABORAZIONE DI IMMAGINI A COLORI Capitolo 6 ELABORAZIONE DI IMMAGINI A COLORI Il colore viene utilizzato nelle immagini digitali per due motivi principali: è un descrittore che semplifica l identificazione di un oggetto e la sua estrazione

Dettagli

Information Visualization

Information Visualization Information Visualization Introduzione alla CG Prof. Andrea F. Abate abate@unisa.it http://www.unisa.it/docenti/andreafrancescoabate/index CG e VR: cosa sono e a cosa servono Con il termine Computer Graphics,

Dettagli

10 argomenti a favore dell over IP

10 argomenti a favore dell over IP Quello che i fornitori di telecamere analogiche non dicono 10 argomenti a favore dell over IP Le telecamere di rete non sono certo una novità, infatti il primo modello è stato lanciato nel 1996. Nei primi

Dettagli

Reti di computer. Agostino Lorenzi - Reti di computer - 2008

Reti di computer. Agostino Lorenzi - Reti di computer - 2008 Reti di computer Telematica : termine che evidenzia l integrazione tra tecnologie informatiche e tecnologie delle comunicazioni. Rete (network) : insieme di sistemi per l elaborazione delle informazioni

Dettagli

Lavagna Interattiva Multimediale L.I.M.

Lavagna Interattiva Multimediale L.I.M. Lavagna Interattiva Multimediale L.I.M. La Lavagna Interattiva Multimediale, detta anche L.I.M. o lavagna elettronica, è una superficie interattiva su cui è possibile scrivere, disegnare, allegare immagini,

Dettagli

DIFFRAZIONE, INTERFERENZA E POLARIZZAZIONE DELLA LUCE

DIFFRAZIONE, INTERFERENZA E POLARIZZAZIONE DELLA LUCE DIFFRAZIONE, INTERFERENZA E POLARIZZAZIONE DELLA LUCE Introduzione Il modello geometrico della luce, vale a dire il modello di raggio che si propaga in linea retta, permette di descrivere un ampia gamma

Dettagli

Introduzione alla Realtà

Introduzione alla Realtà Università di Pisa Corso di Laurea in Terapia Occuapazionale Corso di Bioingegneria applicata alla Realtà Virtuale Anno Accademico 2009/2010 Introduzione alla Realtà Virtuale in Riabilitazione i Stefano

Dettagli

Telecamere analogiche e/o digitali, dai sensori ai pixel, le nozioni fondamentali

Telecamere analogiche e/o digitali, dai sensori ai pixel, le nozioni fondamentali Telecamere analogiche e/o digitali, dai sensori ai pixel, le nozioni fondamentali Mini-guida ai principi fondamentali di funzionamento delle telecamere, utili per chi deve valutare i prodotti e fare la

Dettagli

DISEGNO dell ARCHITETTURA II

DISEGNO dell ARCHITETTURA II 1 DISEGNO dell ARCHITETTURA II Raddrizzamento fotografico Le diapositive costituiscono unicamente una base per lo sviluppo della lezione e, come tali, non sostituiscono in alcun modo i testi consigliati.

Dettagli

L informazione grafica. Le immagini digitali. Esempi. Due grandi categorie. Introduzione

L informazione grafica. Le immagini digitali. Esempi. Due grandi categorie. Introduzione 1 2 L informazione grafica Le immagini digitali grafica a caratteri grafica vettoriale Introduzione grafica raster 3 4 Due grandi categorie Esempi Immagini reali: acquisite da una scena reale mediante

Dettagli

Sviluppo di una app per Android al fine di gestire una serie di rilievi fotografici nell ambito della sicurezza dei fiumi

Sviluppo di una app per Android al fine di gestire una serie di rilievi fotografici nell ambito della sicurezza dei fiumi 1. Android App Android App Sviluppo di una app per Android al fine di gestire una serie di rilievi fotografici nell ambito della sicurezza dei fiumi Adriano Mancini mancini@dii.univpm.it Si deve sviluppare

Dettagli

2005-2015. Ing. Alessio Negri

2005-2015. Ing. Alessio Negri Software realizzati 2005-2015 Ing. Alessio Negri Laurea Magistrale in Ingegneria Informatica in ambito visione stereoscopica Moduli di controllo del sistema GSM Software VB6 per l interfacciamento con

Dettagli

Lezione 16: La luce strutturata

Lezione 16: La luce strutturata Robotica A Lezione 16: La luce strutturata Modificare la luce per semplificare i calcoli Con una sola telecamera In generale, non si possono misurare le distanze. Non tutti gli oggetti possono essere assimilati

Dettagli

Tratto da Facility Management Italia n. 7. Autori: Enzo Scudellari, Marco Storchi.

Tratto da Facility Management Italia n. 7. Autori: Enzo Scudellari, Marco Storchi. Tratto da Facility Management Italia n. 7. Autori: Enzo Scudellari, Marco Storchi. Le attività per la progettazione, l attuazione ed il controllo delle attività che attengono alla gestione di un patrimonio,

Dettagli

3DE Modeling Professional

3DE Modeling Professional 3DE Modeling Professional 3DE Modeling Professional è la parte di 3DE Modeling Suite che si occupa della modellazione 3D automatica di oggetti ed edifici a partire da nuvole di punti ottenute con scanner

Dettagli

Caratteristiche Tecniche

Caratteristiche Tecniche cubestresslite system cubestresslite system è il sistema completo per la gestione dell esame ECG da Sforzo. Include l hardware e il software necessari per l esecuzione dell esame ed è compatibile con gli

Dettagli

XnView. Visualizzatore/Convertitore di formato per immagini. Guida di riferimento alle funzionalità principali

XnView. Visualizzatore/Convertitore di formato per immagini. Guida di riferimento alle funzionalità principali XnView Visualizzatore/Convertitore di formato per immagini Guida di riferimento alle funzionalità principali Questa guida è stata realizzata dall'aiuto in linea di XnView ed ha lo scopo di essere un riferimento

Dettagli

Le immagini digitali: introduzione

Le immagini digitali: introduzione Le immagini digitali: introduzione 1 L immagine digitale Un immagine pittorica è compsta da milioni di pigmenti colorati molto piccoli che, messi vicino l uno all altro, danno l impressione dei vari oggetti.

Dettagli

S.I.T. srl 4 febbraio 2008. Dispositivo indossabile per la misura di parametri biometrici

S.I.T. srl 4 febbraio 2008. Dispositivo indossabile per la misura di parametri biometrici Dispositivo indossabile per la misura di parametri biometrici Indice degli argomenti Indice delle figure...2 Introduzione...3. Parametri misurati dal sistema Hornet...4 2. Caratteristiche hardware del

Dettagli

3 Tecniche di misura della postura e del movimento

3 Tecniche di misura della postura e del movimento 3 Tecniche di misura della postura e del movimento Esistono diverse tecniche di analisi della postura e del movimento che possono essere classificate in base alla strumentazione utilizzata. Di seguito

Dettagli

CARATTERISTICHE APPLICAZIONI

CARATTERISTICHE APPLICAZIONI TAGARNO MAGNUS HD TREND MAGNUS HD TREND è l'ultimo sistema di visione prodotto da TAGARNO. Esso combina un ineguagliabile qualità delle immagini in HD con le caratteristiche di un microscopio. Grazie alla

Dettagli

Visione periferica. e visione centrale. [Premessa]

Visione periferica. e visione centrale. [Premessa] Visione periferica e visione centrale [Premessa] La dimensione dell'immagine che si forma sulla retina di un oggetto a volte non è collegata alla dimensione con cui viene visto quell'oggetto. Vi sono molte

Dettagli

Informazioni Tecniche riguardo a PhoToPlan

Informazioni Tecniche riguardo a PhoToPlan Informazioni Tecniche riguardo a PhoToPlan Le seguenti pagine forniranno una visione dettagliata dei possibili utilizzi di PhoToPlan Q1 Cosa significa Fotoraddrizzamento? Q2 Come si effettua un fotoraddrizzamento?

Dettagli

QuickStart Guide di Avigilon Control Center Client Versione 5.4.2

QuickStart Guide di Avigilon Control Center Client Versione 5.4.2 QuickStart Guide di Avigilon Control Center Client Versione 5.4.2 Autore: Andrea Marini Tecnotrade sas Versione 1.0 Revisione del 10 giugno 2015 TECNOTRADE s.a.s 26900 Lodi (LO) Italia Via S. Cremonesi,

Dettagli

I principali vantaggi tecnologici di un sistema Mobotix

I principali vantaggi tecnologici di un sistema Mobotix I principali vantaggi tecnologici di un sistema Mobotix Le sfuocate immagini half frame sono solo un ricordo Sensore megapixel, l'elaborazione interna, basata sul bilanciamento del bianco, generano immagini

Dettagli

La Visione Artificiale. La vis ione delle macchine La vis ione umana Acquis izione di immag ine

La Visione Artificiale. La vis ione delle macchine La vis ione umana Acquis izione di immag ine La Visione Artificiale La vis ione delle macchine La vis ione umana Acquis izione di immag ine Copyright Alcune slide sono tratte dal testo: Digital Image Processing Materiale didattico relativo si trova

Dettagli

Il colore. IGEA 2006-07 7 febbraio 2007

Il colore. IGEA 2006-07 7 febbraio 2007 Il colore IGEA 2006-07 7 febbraio 2007 La luce Radiazione elettromagnetica 380 740 nanometri (790 480 THz) Percezione della luce /1 Organi sensoriali: Bastoncelli Molto sensibili (anche a un solo fotone:

Dettagli

Serie IMZ-RS400. RealShot Manager versione 4. www.sonybiz.net/nvm

Serie IMZ-RS400. RealShot Manager versione 4. www.sonybiz.net/nvm Serie IMZ-RS400 RealShot Manager versione 4 www.sonybiz.net/nvm Software di monitoraggio basato sull innovativa piattaforma DEPA (Distributed Enhanced Processing Architecture) che fornisce un analisi delle

Dettagli

Via libera all'innovazione. Sistema KODAK RVG 6500

Via libera all'innovazione. Sistema KODAK RVG 6500 Via libera all'innovazione. Sistema KODAK RVG 6500 1 Molto più avanzato 2 Carestream Dental Tecnologia wireless Intelligent Positioning System ipad ipod iphone Compatibile ipad / ipod touch / iphone Presentazione

Dettagli

Progetto Integrabile Studio di fattibilità e progetto esecutivo. Il sistema domotico

Progetto Integrabile Studio di fattibilità e progetto esecutivo. Il sistema domotico Progetto Integrabile Studio di fattibilità e progetto esecutivo Il sistema domotico Bolzano, 28-10-2010 Team di progetto: Valerio Gower Massimiliano Malavasi Sergio Moscorelli 1 ICF (Classificazione Internazionale

Dettagli

IL RILIEVO TOPOGRAFICO CON LASER SCANNER

IL RILIEVO TOPOGRAFICO CON LASER SCANNER IL RILIEVO TOPOGRAFICO CON LASER SCANNER fb.m. s.r.l. 1 Il continuo sviluppo della tecnica di rilievo e la ricerca continua del miglior risultato ore-lavoro, ha prodotto la strumentazione per il rilievo

Dettagli

Guida alla qualità del colore

Guida alla qualità del colore Pagina 1 di 7 Guida alla qualità del colore Nella presente guida vengono descritte le opzioni disponibili sulla stampante per la regolazione e la personalizzazione della resa del colore. Menu Qualità Modalità

Dettagli

Modulo DISPOSITIVI DI SICUREZZA E RIVELAZIONE

Modulo DISPOSITIVI DI SICUREZZA E RIVELAZIONE Facoltà di Ingegneria Master in Sicurezza e Protezione Modulo DISPOSITIVI DI SICUREZZA E RIVELAZIONE IMPIANTI DI VIDEOSORVEGLIANZA TVCC Docente Fabio Garzia Ingegneria della Sicurezza w3.uniroma1.it/sicurezza

Dettagli

HD+ Descrizione generale. Caratteristiche principali

HD+ Descrizione generale. Caratteristiche principali HD+ Descrizione generale HD+ è un dispositivo di acquisizione ECG wireless, sviluppato come acquisitore per PC e Tablet che utilizzino piattaforme standard (Windows / MAC OS / Android) e per l utilizzo,

Dettagli

Illuminazione avanzata

Illuminazione avanzata Informatica Grafica per le arti Illuminazione avanzata E' possibile applicare una bitmap ad una luce. Una luce a cui e' applicata una bitmap proietta l'immagine associata nello spazio. Marco Gribaudo marcog@di.unito.it

Dettagli

Studio e sviluppo di uno Scanner 3D con Kinect

Studio e sviluppo di uno Scanner 3D con Kinect Studio e sviluppo di uno Scanner 3D con Kinect Università politecnica delle marche Facoltà di ingegneria Corso di laurea magistrale in ingegneria informatica Tesi di laurea di: Luca Pignati Relatore: Prof.

Dettagli

C M A P M IONAM A E M NT N O

C M A P M IONAM A E M NT N O IMMAGINE DIGITALE Nelle immagini digitali, il contenuto fotografico (radiometria) viene registrato sotto forma di numeri. Si giunge a tale rappresentazione (RASTER) suddividendo l immagine fotografica

Dettagli

LA SIMULAZIONE ILLUMINOTECNICA CON RADIANCE MEDIANTE ECOTECT

LA SIMULAZIONE ILLUMINOTECNICA CON RADIANCE MEDIANTE ECOTECT A02 059 Laura Bellia Carla Di Martino Gennaro Spada LA SIMULAZIONE ILLUMINOTECNICA CON RADIANCE MEDIANTE ECOTECT L ILLUMINAZIONE DI UNA CHIESA DI INTERESSE STORICO ARTISTICO Copyright MMX ARACNE editrice

Dettagli

Optojump Next rende possibile: > valutare la performance e le condizioni di un atleta

Optojump Next rende possibile: > valutare la performance e le condizioni di un atleta PERFORMANCE Optojump Next rivoluziona la metodologia di allenamento e preparazione atletica nello sport. È un innovativo sistema di analisi e misurazione che introduce una nuova filosofia di valutazione

Dettagli

PRINCIPI DI PROGETTAZIONE DI UN SITO WEB

PRINCIPI DI PROGETTAZIONE DI UN SITO WEB PRINCIPI DI PROGETTAZIONE DI UN SITO WEB Area di specializzazione Esperto in DTP e Web graphic design Anno scolastico 2006/2007 Prof. ALDO GORLA PRINCIPI DI PROGETTAZIONE DI UN SITO WEB Progettare in base

Dettagli

Lettura targhe con telecamere MOBOTIX

Lettura targhe con telecamere MOBOTIX Lettura targhe con telecamere MOBOTIX Premessa Le telecamere MOBOTIX non hanno a bordo un software in grado di effettuare la lettura dei caratteri della targa (OCR Optical Character Recognition) ma possono

Dettagli

Leica Application Suite

Leica Application Suite Leica Application Suite Macro Editor e Macro Runner Personalizzato e automatizzato A scelta, le istruzioni possono essere messe in attesa nel caso in cui la routine viene eseguita per interagire con le

Dettagli

Ausili informatici per disabilità motorie

Ausili informatici per disabilità motorie Ausili informatici per disabilità motorie SOMMARIO 1. INTRODUZIONE 2. AUSILI INFORMATICI COMUNI 3. SOFTWARE DI SUPPORTO AGLI AUSILI 4.AUSILI INFORMATICI AD ALTA TECNOLOGIA Studio di Consulenza Stefano

Dettagli

Che cos'è la profondità di colore

Che cos'è la profondità di colore Che cos'è la profondità di colore 1 Vediamo che cos'è la Profondità di Bit e di Colore di una immagine o di un filmato video; vediamo inoltre cosa sono Gamma dinamica e Gamma di densità. La profondità

Dettagli

SISTEMI SCADA DMS PER LA SUPERVISIONE E TELCONTROLLO DELLA RETE MT/BT DELLE CITTA DI BRESCIA E VERONA

SISTEMI SCADA DMS PER LA SUPERVISIONE E TELCONTROLLO DELLA RETE MT/BT DELLE CITTA DI BRESCIA E VERONA SISTEMI SCADA DMS PER LA SUPERVISIONE E TELCONTROLLO DELLA RETE MT/BT DELLE CITTA DI BRESCIA E VERONA s.d.i. automazione industriale ha realizzato i sistemi di telecontrollo e automazione della rete di

Dettagli

Corso SIRI 2014. Dott. Ing. Stefano Tonello

Corso SIRI 2014. Dott. Ing. Stefano Tonello Corso SIRI 2014 Dott. Ing. Stefano Tonello IT+Robotics Spin-off dell Università di Padova fondata nel 2005 IAS-LAB (Intelligent and Autonomous Systems Laboratory) Attiva nei campi della robotica e visione

Dettagli

Risorsa per l'apprendimento del software SMART Notebook

Risorsa per l'apprendimento del software SMART Notebook Risorsa per l'apprendimento del software SMART Notebook Software SMART Notebook Versione 10 Per sistema operativo Windows SMART Technologies ULC Corporate Headquarters 3636 Research Road NW Calgary, AB

Dettagli

La parola microscopio è stata coniata dai membri dell Accademia dei Lincei di cui faceva parte anche Galileo Galilei

La parola microscopio è stata coniata dai membri dell Accademia dei Lincei di cui faceva parte anche Galileo Galilei La parola microscopio è stata coniata dai membri dell Accademia dei Lincei di cui faceva parte anche Galileo Galilei La microscopia ottica è una tecnica di osservazione capace di produrre immagini ingrandite

Dettagli

1.4c: Hardware(Periferiche di Input 1)

1.4c: Hardware(Periferiche di Input 1) 1.4c: Hardware(Periferiche di Input 1) 2 28 nov 2011 Bibliografia Curtin, Foley, Sen, Morin Informatica di base, Mc Graw Hill Ediz. Fino alla III : cap. 4.1, 4.2, 4.6 IV ediz.: cap. 3.1, 3.2, 3.6 Questi

Dettagli

Guida per l utente dello Scanner

Guida per l utente dello Scanner Guida per l utente dello Scanner Capitolo 1: Esercitazione di scansione Capitolo 2: La finestra di dialogo TWAIN Appendice Indice 2 Esercitazione di scansione Attivazione (Acquisizione) ed utilizzo della

Dettagli

È l ora della videosorveglianza basata su FPGA

È l ora della videosorveglianza basata su FPGA È l ora della videosorveglianza basata su FPGA Kambiz Khalilian, Strategic marketing manager Lattice Semiconductor Le preoccupazioni crescenti per la sicurezza hanno costretto i governi e le istituzioni

Dettagli

Autostereoscopy as a Representation Criteria for Distributed Simulation

Autostereoscopy as a Representation Criteria for Distributed Simulation Autostereoscopy as a Representation Criteria for Distributed Simulation Conferenza DSIMday 11 Marzo 2011 Università di Tor Vergata Giovanni Saggio, Valerio Selis, Carlo Alberto Pinto, Remy Verbanez, Franco

Dettagli

Cosa è la Iper-Realtà?

Cosa è la Iper-Realtà? Cosa è la Iper-Realtà? E' andare oltre i confini del mondo reale; Sovrapporre informazioni utili all'essenza naturale delle cose; Permette agli elementi di diventare trampolini verso un mondo di informazioni

Dettagli

Memoria secondaria. Memoria secondaria

Memoria secondaria. Memoria secondaria Memoria secondaria La CPU opera su programmi e dati presenti nella RAM, ma questa da sola non basta a contenere tutti i programmi e i dati presenti sull elaboratore. Per questo motivo i dati e i programmi

Dettagli

I principali vantaggi economici di un sistema Mobotix

I principali vantaggi economici di un sistema Mobotix I principali vantaggi economici di un sistema Mobotix Meno videocamere grazie alla risoluzione più elevata I sensori a 1536 linee e ad alta definizione offrono una panoramica migliore e consentono di monitorare

Dettagli

Minipiattaforme volanti per il controllo del territorio: ambienti di simulazione

Minipiattaforme volanti per il controllo del territorio: ambienti di simulazione Minipiattaforme volanti per il controllo del territorio: ambienti di simulazione Claudio Demartini Politecnico di Torino - DAUIN claudio.demartini@polito.it Barbara Pralio Politecnico di Torino - DIASP

Dettagli

PointCloud 7.0 Anno 2011

PointCloud 7.0 Anno 2011 PointCloud 7.0 Anno 2011 Compatibilità con AutoCAD 2007-2012 ed AutoCAD 2007-2012 Supporto del formato nativo delle nuvole di punti di AutoCAD (PCG) e miglioramento delle performance riguardo la velocità

Dettagli

Uso del software RDF per la produzione del fotopiano di una facciata edilizia

Uso del software RDF per la produzione del fotopiano di una facciata edilizia UNIVERSITÀ DI CAGLIARI FACOLTÀ DI INGEGNERIA E ARCHITETTURA CORSO DI LAUREA MAGISTRALE IN ARCHITETTURA A.A. 2014-15 LABORATORIO INTEGRATO DI RILIEVO E RESTAURO MODULO RILIEVO DOCENTE PROF: VINCENZO BAGNOLO

Dettagli

805 Photo Printer. Guida del driver della stampante

805 Photo Printer. Guida del driver della stampante 805 Photo Printer Guida del driver della stampante Sommario Guida del driver della stampante Informazioni sul driver della stampante Funzioni del driver della stampante Informazioni sulla guida online

Dettagli

Indice. Indice vi- III. Unità 1 Il personal computer, 1. Unità 2 AutoCAD, 9

Indice. Indice vi- III. Unità 1 Il personal computer, 1. Unità 2 AutoCAD, 9 Percezione Costruzioni e comunicazione geometriche Indice vi- III Indice Unità 1 Il personal computer, 1 1.1 Struttura del personal computer, 2 1.2 Il software, 5 1.3 I dispositivi informatici di stampa,

Dettagli

Panoramica sulla tecnologia di stampa a colori utilizzata per la serie HP LaserJet Pro

Panoramica sulla tecnologia di stampa a colori utilizzata per la serie HP LaserJet Pro Documentazione tecnica Panoramica sulla tecnologia di stampa a colori utilizzata per la serie HP LaserJet Pro Come la tecnologia HP Image Resolution garantisce una qualità di stampa senza confronti Sommario

Dettagli

Esperienza 1: Luce e Colori della luce

Esperienza 1: Luce e Colori della luce 1 Introduzione 1 Esperienza 1: Luce e Colori della luce 1 Introduzione Il colore è la percezione visiva generata dai segnali nervosi che i fotorecettori della retina mandano al cervello quando assorbono

Dettagli

WEB SERVER EMBEDDED PER APPLICAZIONI DI DOMOTICA. Fig. 1 - Architettura di un web server embedded

WEB SERVER EMBEDDED PER APPLICAZIONI DI DOMOTICA. Fig. 1 - Architettura di un web server embedded WEB SERVER EMBEDDED PER APPLICAZIONI DI Cristian Randieri Per far fronte alle esigenze di sviluppatori che intendono gestire applicazioni professionali per la domotica e la home building automation sfruttando

Dettagli

PROTEZIONE PERIMETRALE COLLAUDATA. NUOVO FUNZIONAMENTO SU PIATTAFORMA COMUNE.

PROTEZIONE PERIMETRALE COLLAUDATA. NUOVO FUNZIONAMENTO SU PIATTAFORMA COMUNE. SISTEMI DI RILEVAZIONE PERIMETRALE INTELLIGENTE MicroPoint II Sistemi di rilevazione su recinzione MicroTrack II Sistemi di rilevazione a cavo interrato MicroWave 330 Barriere digitali a microonde PROTEZIONE

Dettagli

Alimentazione. Compatibilità

Alimentazione. Compatibilità Configurazione Lo scanner Z+F IMAGER 5006h garantisce la massima mobilità. Costruito secondo i criteri di operatività stand-alone, lo scanner è dotato di un display, di batteria ricaricabile, di un hard

Dettagli

PROGETTARE UNA PAGINA WEB

PROGETTARE UNA PAGINA WEB PROGETTARE UNA PAGINA WEB Che differenza c è tra una grafica cartacea e una grafica per web? Nella maggior parte dei casi, quando parliamo di grafica cartacea parliamo di cartellonistica volantini, manifesti

Dettagli

www.informarsi.net MODULO 6 ECDL - EIPASS STRUMENTI DI PRESENTAZIONE - PRESENTATIONS Microsoft PowerPoint http://www.informarsi.net/ecdl/powerpoint/

www.informarsi.net MODULO 6 ECDL - EIPASS STRUMENTI DI PRESENTAZIONE - PRESENTATIONS Microsoft PowerPoint http://www.informarsi.net/ecdl/powerpoint/ MODULO 6 ECDL - EIPASS STRUMENTI DI PRESENTAZIONE - PRESENTATIONS Microsoft PowerPoint http:///ecdl/powerpoint/ INTERFACCIA UTENTE TIPICA DI UN SOFTWARE DI PRESENTAZIONE APERTURA E SALVATAGGIO DI UNA PRESENTAZIONE

Dettagli

Sistemi robotizzati, i diversi utilizzi di nuove tecnologie

Sistemi robotizzati, i diversi utilizzi di nuove tecnologie Sistemi robotizzati, i diversi utilizzi di nuove tecnologie di Federica Masserotti L'aumento del costo della manodopera e gli errori che può commettere un operatore umano, hanno indotto le maggiori aziende

Dettagli

a.a. 2005/2006 Laurea Specialistica in Fisica Corso di Fisica Medica 1 La vista 28/3/2006

a.a. 2005/2006 Laurea Specialistica in Fisica Corso di Fisica Medica 1 La vista 28/3/2006 a.a. 2005/2006 Laurea Specialistica in Fisica Corso di Fisica Medica 1 La vista 28/3/2006 Visione della luce La luce è una forma di energia elettromagnetica siamo soliti definire "luce visibile" una radiazione

Dettagli

MRC: Nuova Architettura

MRC: Nuova Architettura MRC: Nuova Architettura Release: 1.0 16 febbraio 2014 Autore: Andrea Gualducci MRC: Nuova Architettura Pag. 1 di 12 SOMMARIO MRC: Nuova Architettura... 1 Introduzione...3 Efficienza...3 Deployement...3

Dettagli

Il campionamento. La digitalizzazione. Teoria e pratica. La rappresentazione digitale delle immagini. La rappresentazione digitale delle immagini

Il campionamento. La digitalizzazione. Teoria e pratica. La rappresentazione digitale delle immagini. La rappresentazione digitale delle immagini ACQUISIZIONE ED ELABORAZIONE DELLE IMMAGINI Teoria e pratica La digitalizzazione La digitalizzazione di oggetti legati a fenomeni di tipo analogico, avviene attraverso due parametri fondamentali: Il numero

Dettagli

Un applicazione client per la localizzazione via Bluetooth e Wi-Fi di dispositivi Smartphone Anno Accademico 2005/2006

Un applicazione client per la localizzazione via Bluetooth e Wi-Fi di dispositivi Smartphone Anno Accademico 2005/2006 tesi di laurea Un applicazione client per la localizzazione via Bluetooth e Wi-Fi di dispositivi Anno Accademico 2005/2006 relatore Ch.mo prof. Stefano Russo correlatore Ing. Massimo Ficco candidato Giorgio

Dettagli

Sistema di Refertazione Remota per Esami ECG

Sistema di Refertazione Remota per Esami ECG Sistema di Refertazione Remota per Esami ECG Referti Referti Centro di Refertazione ECG Internet ECG Il sistema ha lo scopo di consentire la refertazione remota di esami ECG acquisiti dalle unità periferiche

Dettagli

Panasonic Super Dynamic Tecnology

Panasonic Super Dynamic Tecnology Milano, Settembre 2011 Panasonic Super Dynamic Tecnology Panasonic System Network Europe 1 Panasonic Italia S.p.a. - via delle'innovazione, 3-20126 Milano Indice Introduzione... pag. 3 1. Cosa si intende

Dettagli

RILEVAMENTO LASER SCANNER - Monitoraggio Ambientale e del Costruito

RILEVAMENTO LASER SCANNER - Monitoraggio Ambientale e del Costruito RILEVAMENTO LASER SCANNER - Monitoraggio Ambientale e del Costruito Introduzione 2 Perché usare il laser scanner: Caratteristiche della tecnologia: Tempi di stazionamento rapidi (pochi minuti); Elevata

Dettagli

Canon stabilisce nuovi standard nei proiettori da installazione con XEED WUX4000

Canon stabilisce nuovi standard nei proiettori da installazione con XEED WUX4000 Comunicazioni alla stampa you can Canon stabilisce nuovi standard nei proiettori da installazione con XEED WUX4000 Canon presenta il nuovo modello di punta della sua gamma di proiettori ad alte prestazioni

Dettagli

Publishing & Editing Immagini

Publishing & Editing Immagini Publishing & Editing Immagini Un'immagine digitale è la rappresentazione numerica di una immagine bidimensionale. La rappresentazione può essere di tipo vettoriale oppure raster (altrimenti detta bitmap);

Dettagli

Il cervello umano ha bisogno di organi come occhi, orecchie, ecc, per interfacciarsi, cioè scambiare informazioni con il mondo esterno

Il cervello umano ha bisogno di organi come occhi, orecchie, ecc, per interfacciarsi, cioè scambiare informazioni con il mondo esterno Il cervello umano ha bisogno di organi come occhi, orecchie, ecc, per interfacciarsi, cioè scambiare informazioni con il mondo esterno Nell esempio dell occhio il cervello riceve informazioni dall esterno:

Dettagli

ARCHITETTURA. Rubrica Infografica

ARCHITETTURA. Rubrica Infografica RICOSTRUZIONE/Empler 26-07-2007 13:06 Pagina 47 PROGETTARE ARCHITETTURA Tommaso Empler* Rubrica Infografica Ricostruzione infografica di una situazione ambientale urbana Dopo aver illustrato le procedure

Dettagli