Home    About me    Publications    Blog    Undergrad memories

Fabio Ruini’s blog

Because Italians do it better! What the f**k? Ehm… the blogs, I mean… obviously! :-/

Archivio per la 'Artificial Life and Autonomous Robotics' Categoria

Modular Robotics cubelets

Un bel report apparso su Macity ci porta a conoscere il mondo dei cubelets. Prodotto da Modular Robotics, cubelets e’ un “robot construction kit” per bambini che permette a questi ultimi di assemblare in maniera semplicissima un robot autonomo e metterlo alla prova nell’ambiente che preferiscono. La peculiarita’ di questo kit consiste nei suoi building blocks, dei piccoli cubetti magnetici, ciascuno dei quali svolge una funzione ben precisa, che con il semplice contatto possono assemblarsi in configurazioni più o meno complesse. Esistono tre categorie di blocchi: action (motori, luci), sense (sensori di distanza, di calore e di intensità luminosa) e think/utility (al momento solo batterie e “pass-through”).

Le FAQ di cubelets sono disponibili a questo link. Il kit e’ preordinabile da adesso ($160 + spese di spedizione). Per ingannare l’attesa un bel video introduttivo, tratto da YouTube, lo si puo’ vedere qui sotto.

VALUE project – final meeting in Plymouth

Era da un po’ che non capitava un inizio anno così intenso. Tra i principali responsabili vi e’ il meeting finale del progetto VALUE, in programma per domani qui a Plymouth, che mi ha costretto ad accelerare i tempi per quanto riguarda il mio lavoro, nonché a preparare una presentazione per mostrare ai partner quanto fatto fino ad ora. Presentazione che ho esportato in modalità video ed appoggiato su YouTube. Il risultato potete vederlo qui di seguito.

James the Robot

Natale si avvicina e con esso arriva a temporanea sospensione anche la regolare sessione di seminari che si tengono nel nostro centro. A chiudere l’anno e’ stato oggi pomeriggio Lorenzo Jamone, ex-IIT ed ora post-doc alla Waseda University presso il Takanishi Lab. Il talk e’ stato dedicato a James the Robot, robot (ma va?) umanoide che sotto diversi punti di vista puo’ essere considerato un antenato del piu’ moderno iCub.

Peculiarita’ di James e’ senz’altro il suo sistema di controllo “tendon-driven”, al tempo stesso croce e delizia di quanti, nel corso degli anni (il robot e’ nato del 2003 ed e’ stato utilizzato regolarmente fino al 2010) si sono succeduti nello sviluppo di sistemi di controllo. Sforzi che non sono stati vani, dato che il robot e’ stato in grado di esibire comportamenti interessanti, come ad esempio quello di reaching all’interno di un ambiente tridimensionale che e’ possibile vedere nel video che segue.

Concludo, come abitudine, linkando un paio di paper a cui i piu’ interessati possono attingere per ottenere qualche informazione in piu’ sull’argomento.

Un paio di video robotici

Nel post di oggi propongo un paio di video dedicati alla robotica. Il primo, decisamente leggero, e’ apparso nei giorni scorsi su SlateV.com ed e’ intitolato I’m Afraid They Can’t Do That. Tema del filmato una delle solite comparazioni tra i robot per come ci sono stati presentati fino ad oggi dalla cinematografia e come sono invece quelli utilizzati nowadays nel mondo industriale e della ricerca. Una differenza, manco a dirlo, abbastanza evidente. Che non dice nulla di nuovo a chi lavora nel campo, se non rinfrescarli la memoria riguardo a quello che “le persone normali” si stanno aspettando.

Il secondo filmato, apparso sull’ottimo DigInfo.tv, e’ invece un pelino piu’ serio. Il titolo e’ Robot that Can Learn, Think and Act by Itself ed il focus e’ su un (relativamente) nuovo sistema di apprendimento on line e non-supervisionato per robot, chiamato SOINN (Self-Organizing Incremental Neural Network) ed applicato nel caso specifico ad un robot umanoide presente all’Hasegawa Lab (qui il canale YouTube) presso il Tokyo Institute of Technology.

Per chi volesse saperne di piu’ riguardo SOINN, oltre a dare un’occhiata alla pagina citata sopra, qui sotto e’ possibile scaricare alcuni articoli a riguardo.

Wired flocking (i.e., €œReynolds flocking in reality with fixed-wing robots: communication range vs. maximum turning rate)

E’ notizia di qualche giorno fa l’apparizione sul popolare Wired.com di un articolo che descrive il lavoro cui ho collaborato durante la mia permanenza all’EPFL e che e’ risultato in una pubblicazione presentata a fine settembre a San Francisco in occasione di IROS (IEEE/RSJ International Conference on Intelligent Robots and Systems) 2011. Come i lettori più attenti ricorderanno, il focus del lavoro era orientato all’implementazione dell’algoritmo di flocking di Reynolds su un gruppo di swinglet MAVs. Dopo le mie investigazioni preliminari, portate avanti in parte in simulazione ed in parte sulle piattaforme fisiche, utili a dimostrare come l’approccio studiato potesse funzionare anche per questo tipo di velivoli robotici, gli altri ragazzi del LIS hanno completato con successo la fase implementativa.

All’articolo apparso su Wired e’ allegato un filmato, apparso prima nella sezione news del sito EPFL e quindi caricato su YouTube. Nonche’, ovviamente, qui di seguito.

Chi avesse poi voglia di leggere l’articolo pubblicato nei proceedings di IROS, €œReynolds flocking in reality with fixed-wing robots: communication range vs. maximum turning rate, può scaricarlo dal link qui sotto.

Noel Sharkey e l’etica della robotica

Tra le varie correzioni che devo apportare alla mia tesi, mi e’ stato chiesto di approfondire un po’ la discussione riguardante i vari aspetti etici correlati al mio lavoro. Per farlo ho deciso di attingere ai lavori di quella persona che, negli ultimi anni, si e’ ritagliato un ruolo di particolare importanza (anche grazie alla sua massiccia presenza mediatica) nello studio di tali tematiche. Sto ovviamente facendo riferimento a Noel Sharkey, storico professore di AI e robotica a Sheffield.

Ho fatto una breve selezione delle sue pubblicazioni, partendo dal sottoinsieme di quelle che trattano di etica e robotica. Il risultato della mia ricerca, per chi avesse voglia di leggere qualcosa, lo trovate nell’elenco degli articoli presente qui sotto.

Aggiornamenti video

Weekend impegnato quello appena trascorso. Dopo il primo video del mio lavoro preparato sette giorni fa, ho elaborato ora una versione più aggiornata (e montata/editata in maniera più accurata), che verra’ utilizzata dai colleghi di Dundee/Potsdam per una conferenza (ECEM 2011) in programma a Marsiglia per fine mese.

Per chi volesse dare un’occhiata al risultato finale, uploadato al solito su YouTube, ecco qui sotto l’embed.

Towards a cognitive architecture for studying attention deployment

Nel caso in cui qualcuno di voi si stesse chiedendo come procede il mio lavoro, per rispondere ho realizzato un breve video dove mostro lo stato attuale dell’applicazione sulla quale sto spendendo i miei giorni. Da un punto di vista tecnico il contesto di riferimento e’ quello dell’iCub simulator sviluppato da Tikhanoff ed altri. La mia applicazione si interfaccia al simulatore tramite Yarp e mira ad implementare un’architettura cognitiva che renda in grado iCub di memorizzare/eseguire sequenze più’ o meno lunghe di istruzioni nella forma “prendi oggetto x e spostalo in posizione y”. L’ipotesi che si vuole verificare e’ se l’attention deployment, ovvero come l’attenzione (sguardo) del robot si muove durante la fase di memorizzazione, abbia un effetto sulle successive probabilità’ di riuscita del task finale (consistente nel replaying della sequenza memorizzata da parte del robot). Ancora siamo un po’ lontanucci dall’obiettivo finale (e’ poco più’ di un mese che sto lavorando full time sul progetto), ma stiamo rapidamente marciando in quella direzione.

Nel video qui sotto potete vedere le due diverse modalità in accordo alle quali i setup sperimentali sono ricreati nel simulatore (2D utilizzando uno schermo di proiezione posto di fronte al robot; 3D con un tavolo “vero e proprio” sul quale vengono appoggiati gli stimoli), la fase di creazione/pre-training delle SOMs che implementano il cuore dell’architettura cognitiva, la connessione al robot (che in automatico sposta le sue braccia in maniera tale che le mani non siano all’interno del suo campo visivo) con refresh automatico delle immagini provenienti dai suoi occhi all’interno della GUI dell’applicazione e di alcune statistiche legate ai colori percepiti, possibilità di controllo manuale di occhi/collo o pre-programmato/random lungo lo schermo/tavolo, ecc. Nel background, la parte interessante che non si vede, e’ l’apprendimento hebbiano in corso che provvede a creare link tra le diverse self-organizing maps.

PS: grazie agli sviluppatori di recordMyDesktop, che mi hanno indirettamente permesso di realizzare questo video.

iCub simulator – display an image on the projection screen

Niente da fare. In questa settimana che e’ coincisa con il ritorno alla vita mio e, di conseguenza, del blog, pare proprio che gli argomenti che vadano per la maggiore siano quelli di natura squisitamente tecnica. Tema del giorno e’ il codice che permette di caricare un’immagine dal proprio computer e visualizzarla all’interno dell’iCub simulator sul pannello apposito per proiezioni. Funzione che puo’ essere molto interessante quando si lavora sull’image processing ed e’ necessario effettuare sperimentazioni di vario genere.

Bando alle ciance, dopo un po’ di smanettamenti dovuti a problemi vari di puntatori e formati che non riuscivo a far coincidere sono infine arrivato alla versione definitiva della funzione che implementa tale caratteristica del simulatore. Funzione che e’, in realta’, molto molto semplice. Diciotto righe inclusi spazi e parentesi graffe. Piu’ minimalista di cosi’ si muore.

Ed ecco qui il risultato, da uno screenshot della solita applicazione di prova sulla quale sto lavorando in questi giorni.

Un nuovo Sobel filter, questa volta funzionante

Perfetto. Come avevo in qualche modo sospettato, l’implementazione del Sobel filter che avevo proposto nel post di ieri non genera esattamente i risultati attesi. Effettivamente, un processamento sull’immagine di input che appariva sensato veniva effettuato, ma mi lasciava perplesso il fatto che piu’ che edge detection sembrava che l’algoritmo lavorasse al contrario, colorando le parti all’interno dei vari contorni identificati (a mo del “colora i puntini” della Settimana Enigmista) senza evidenziare (se non indirettamente) i bordi stessi. Cancellato l’algoritmo scritto ieri, ho fatto cosi’ un nuovo tentativo basandomi sul codice pubblicato a questo link. L’algoritmo risultante ve lo propongo nello snippet che segue. L’unico problema e’ che, per poter compilare in un ambiente basato su Qt4, e’ necessario abilitare il Qt3Support module, sia con i vari include all’interno del proprio codice, sia, a fini di linkaggio, nei vari .pro/CMakeLists file utilizzati.

Questa volta i risultati sono decisamente migliori e perfettamente in linea con quanto, anche secondo Gimp, sarebbe lecito aspettarsi. Un esempio potete vederlo nell’immagine proposta qui di seguito, che mostra a sinistra uno screenshot preso dal solito iCub simulator, a destra la stessa immagine alla quale la nuova versione del filtro e’ stata applicata.

Pagina successiva »