You are on page 1of 1

Proposte di Tesi su ROS 

Introduzione 
ROS  (Robot  Operating  System)  è  un  (meta‐)sistema  operativo  per  robot  sviluppato  principalmente  da 
Willow Garage (http://www.willowgarage.com/), ma con diverse istituzioni e privati che collaborano grazie 
al suo sistema di sviluppo federativo. L'architettura modulare basata su un grafo consente di sviluppare i 
singoli  nodi  in  maniera  indipendente  e  la  comunicazione  avviene  tramite  interfacce  comuni  (topics)  di 
scambio  messaggi.  Ciò  rende  possibile  l'interazione  tra  i  singoli  nodi  e  servizi,  anche  in  ambiente 
distribuito.  

ROS  fornisce  servizi  e  librerie  di  basso  come  di  alto  livello,  ad  esempio  l'astrazione  dell'hardware  e  il 
controllo dei singoli dispositivi, ma anche l'implementazione di algoritmi di livello più elevato, per esempio 
per il mapping, la localizzazione, la visione e lo slam. Inoltre fornisce dei potenti strumenti di visualizzazione 
dei dati. Non è un sistema operativo real‐time ma può essere integrato con codice real‐time. Sebbene sia 
previsto  il  supporto  per  altri  sistemi,  al  momento  quello  meglio  supportato  ufficialmente  è  Ubuntu.  I 
linguaggi di programmazione principali sono C++ e Python, ma stanno sviluppando rapidamente librerie in 
Lisp, Octave (un pacchetto tipo Matlab, ma open source) e Java.  

ROS è organizzato in stacks e packages.  

I packages sono l'unità principale di organizzazione del software in ROS. Un package di solito contiene tutti 
gli elementi (eseguibili dei nodi, librerie, dati) che è utile organizzare logicamente insieme. Ad esempio un 
package per le immagini chiamato image_view contiene i programmi per vedere le singole immagini, per 
vedere gli stream da una telecamera mono e per vederli dalla stereo camera.  

Gli  stack  invece  sono  collezioni  di  package  che  forniscono  funzionalità  aggregate:  sempre  nel  caso  di 
image_view,  esso  è  contenuto  in  uno  stack  chiamato  image_pipeline  dove  ci  sono  altri  package 
chiamati  camera_calibration  (calibrazione  della  videocamera),  image_proc  (processing  di 
immagini mono), stereo_image_proc (processing di immagini stereo), etc. 

Obbiettivo 
L’obbiettivo  della  tesi  è  la  creazione  di  un  nostro  stack,  ad  esempio  chiamato  polito_apps  o 
labrob_apps  o  come  ci  pare  (date  un'occhiata  a http://www.ros.org/wiki/StackList,  alcuni  stack  sono 
mantenuti da gruppi di ricerca di università terze, come ad esempio ua_apps). In questo stack potremmo 
creare (utilizzando la risorsa tesisti) i package che ci consentano di fare le stesse cose che facciamo già: path 
planning,  slam  con  particle  filters,  task  allocation,  visione  omnidirezionale,  etc.,  in  modo  da  ipotizzare 
anche  di  migrare  (non  necessariamente  a  titolo  definitivo)  a  ROS.  Ciò  infatti  avrebbe  il  vantaggio  che  ci 
consentirebbe di lavorare su un software vitale e ricco di potenzialità, molto flessibile, nonché (se le cose 
funzionano bene) di acquisire una certa visibilità per il nostro gruppo. 

Per quanto riguarda le proposte di tesi, quindi, si tratterebbe di: 

ƒ individuare candidati che non si spaventino alle parole “C++” e “Linux” 
ƒ implementare un package a partire dal nostro codice già esistente: ciò consisterebbe nello studio 
degli  algoritmi  già  implementati  e  funzionanti  in  Player  (http://playerstage.sourceforge.net/)  e 
nella loro reimplementazione come package di ROS. Questo processo dovrebbe essere abbastanza 
agevole data l'affinità architetturale tra Player e ROS e il fatto che entrambi utilizzano il C++.