app

SLAMCam: Tracciamento della posizione tramite immagini

Laboratorio didattico di Ingegneria dell'Informazione

Studenti: Eros Reato, Leonardo Vianello, Massimiliano Biason





Descrizione del progetto

Lo scopo di questo progetto è di realizzare un sistema di tracciamento della propria posizione (relativa ad un punto di partenza) mediante la continua aquisizione di immagini provenienti da un dispositivo dotato di videocamera.
Il progetto è parte del corso Laboratorio didattico di Ingegneria dell'Informazione della Laurea Magistrale in Ingegneria Elettronica, tenuto dal professor Bernardini presso l'Università degli studi di Udine.
Lo scopo del corso è quello di far confrontare gli studenti con la realizzazione di un intero progetto, dalla definizione delle specifiche ai test finali.
Per questo fine, all'interno del gruppo sono state sviluppate capacità relazionali in ambito lavorativo e soprattutto capacità nell'utilizzo di ausili allo sviluppo software in team, come Git e Bitbucket. Ciascun membro del team ha inoltre sviluppato importanti abilità di problem solving e fast learning, venendo a contatto con temi e argomenti poco affrontati in sede universitaria, come lo sviluppo di applicazioni Android o lo sfruttamento dell'ambiente Linux.

intro_percorso


Strumenti e Architettura

Dopo un'analisi dei dispositivi disponibili, si è deciso di usare uno smartphone con sistema operativo Android, poiché è un prodotto di larghissima diffusione, personale e dotato di fotocamera. E' subito apparso evidente che un sistema di elaborazione immagini come quello previsto, richiedesse una capacità computazionale di gran lunga superiore a quella offerta da uno smartphone.
In conclusione si è deciso di sfruttare un'altra fondamentale caratteristica del dispositivo Android: la connettività wireless. Si è quindi pensato di delegare gran parte dell'onere computazionale ad un server e far quindi agire lo smartphone da client, il quale mandasse uno stream di immagini e si aspettasse in ritorno i punti delle posizioni calcolati.

flowchart


Per implementare questo tipo di comunicazione è stata fatta un'analisi dei protocolli di rete disponibili giungendo alle seguenti conclusioni: connessione tramite socket UDP per lo streaming di immagini e tramite socket TCP per l'invio da parte del server delle posizioni.
Per lo sviluppo di questo sistema sono stati presi dei codici open source già esistenti da usare come punto di partenza per lo sviluppo: IpCamera per la parte client e il Kitti Dataset di ORB SLAM 2 per la parte server, il cui utilizzo e modifiche apportate verrà illustrato in seguito.