Home    About me    Publications    Blog    Photo gallery
Some other old good stuff

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

Vittoria!

Ebbene si’. Dopo tre giorni di lotta sono finalmente riuscito a compilare il mio simulatore per girare sotto Windows. Successo pieno. Tutto sembra funzionare alla perfezione: sia l’engine evolutivo, sia il viewer.

Screenshot of Microsoft Visual C++ 2008 Express Edition while compiling my 3D MAVs evolutionary engine

Pochissime le modifiche che ho dovuto apportare al codice. I path vengono infatti gestiti bene dalle Qt (l’unica avvertenza consiste nel fatto che, nel file di configurazione che uso e, quindi, all’interno del codice, occorre specificare i percorsi utilizzando il carattere / al posto di \ anche quando si compila/esegue l’applicazione su Windows) e per quelle poche parti dei sorgenti per le quali si e’ reso necessario scrivere istruzioni diverse a seconda del sistema operativo in uso ho potuto fare ricorso alle macro Qt per il preprocessore Q_WS_WIN e Q_WS_MAC.

My MAVs 3D evolutionary engine running on the Windows command prompt (VC++ 2008 EE)

Preso dall’euforia ho pure preparato un piccolo package del viewer che, in teoria, dovrebbe essere in grado di girare su qualunque macchina Windows, anche in assenza delle varie librerie richieste per la compilazione. Tutto cio’ MOLTO in teoria. Nella realta’ sono abbastanza scettico che il tutto possa funzionare cosi’ al primo colpo, ma non si sa mai. Se qualcuno di voi volesse fare un tentativo e darmi qualche feedback, il pacchetto e’ scaricabile da qui sotto. Una volta scompattato l’archivio, l’eseguibile lo trovate nella directory bin, mentre un controller di esempio e’ contenuto nella cartella nn.

Nel caso l’applicazione non volesse saperne di avviarsi, vi lascio comunque con uno screenshot che mostra quello che vi siete persi (se ve lo state chiedendo, l’immagine e’ tagliata in quanto la dimensione verticale della finestra di Irrlicht e’ troppo grande in confronto alla risoluzione del mio netbook, che pure e’ di tutto rispetto).

MAVs 3D simulator (screenshot of the viewer captured on Windows)

Ok, lo ammetto. Non e’ che vi siate persi un granche’. Ma dato tutto il tempo che ci ho speso sopra, fate almeno finta di essere piacevolmente colpiti, dai…

iCub&UoP@CurrentTv

Un po’ in ritardo, ma mi giunge la notizia che l’intervista condotta qualche tempo fa, qui nel nostro laboratorio, dalla troupe italiana di Current TV (un particolare canale televisivo creato da Al Gore nel 2005) e’ stata infine montata, trasmessa ed anche resa disponibile on line.

Il contribuito plymouthiano potete trovarlo all’interno del File #9 (Intelligenza Artificiale) dei cosiddetti Geek Files, nonche’ embeddato qui sotto. Nel dettaglio potete trovare il buon Davide Marocco parlare dal minuto 4:45, mentre Martin Peniak mostra l’iCub, all’opera con la sua classica demo, a partire dal minuto 10:55.

Incremental evolution

Negli ultimi giorni ho lavorato in maniera abbastanza intensa sul codice del mio simulatore di MAVs, con l’intento di implementare una forma, seppur basilare, di evoluzione incrementale per i diversi scenari studiati finora con il modello 3D. La necessita’ nasce dal fatto che ancora faticano ad evolvere comportamenti di navigazione cooperativa all’interno di un’ambiente tridimensionale, con i MAVs dotati della possibilita’ di ruotare su tutte e tre le loro assi (yaw, pitch e roll).

Finalmente sono riuscito a rendere il mio codice funzionante. I grafici che trovate qui sotto mostrano le differenze in termini di performance tra una popolazione evoluta da zero (primo grafico) ed una invece gia’ evoluta (secondo grafico) nello scenario di base (navigazione 3D in un ambiente sgombro di ostacoli per il raggiungimento di un’area target statica), entrambe alle prese con un task cooperativo (ancora target statico ed ambiente privo di ostruzioni, ma necessita’ di raggiungere il target con almeno due MAVs contemporaneamente).

MAVs 3D simulator - results after 100 generations of evolution, without using incremental evolution

MAVs 3D simulator - results after 100 generations of evolution, using incremental evolution

Come si puo’ vedere (e come, d’altronde, era facilmente intuibile), la seconda popolazione parte da subito su ottimi livelli di fitness, nonostante vi sia anche una differenza architetturale tra le reti neurali all’opera nei due setup. Nel nuovo scenario, infatti, i MAVs hanno alcuni neuroni di input aggiuntivi rispetto a quello di base, con le conseguenti connessioni che vengono impostate a zero nel momento in cui l’evoluzione incrementale prende le mosse.

Come di consueto, vi lascio con qualche lettura sull’argomento. Si tratta di tre articoli ben fatti e che, sebbene non siano tarati sull’approccio che ho seguito io, possono comunque risultare interessanti da addocchiare.

I misteri del serial comma

A circa un anno e mezzo di distanza dalla sottomissione, questa mattina mi e’ arrivata a sorpresa la proofs del book chapter scritto a suo tempo insieme a Domenico Parisi, Giancarlo Petrosino e Filippo Saglimbeni. Poche le cose da sistemare, anche se nel pomeriggio dovro’ scorrere le 30 pagine che compongono il contributo alla ricerca di eventuali imperfezioni. Soprattutto per quanto riguarda lo stile scelto dalla casa editrice. Che vuole sia utilizzato lo spelling inglese (fair enough, essendo io in Inghilterra e dato che si tratta di editore brittanico), le virgolette singole e, soprattutto, un misterioso serial comma.

I believe in the serial comma (badge)

Non sapendo di cosa si trattasse ho googlato un pochino a riguardo. Trovando subito aiuto nell’esaustiva pagina di Wikipedia dedicata all’argomento. La quale mi informa che the serial comma or series comma (also known as the Oxford comma or Harvard comma) is the comma used immediately before a grammatical conjunction (usually and or or, sometimes nor) preceding the final item in a list of three or more items. For example, a list of three countries can be punctuated as either “Portugal, Spain, and France” (with the serial comma) or as “Portugal, Spain and France” (without the serial comma).

Leggendo molte cose in inglese, naturalmente, mi ero gia’ incuriosito riguardo a questa abitudine (peraltro non generalizzata) di utilizzare la virgola per precedere l’and finale di frasi contenenti degli elenchi. Cosa che in italiano, a quanto ne so, e’ assolutamente scorretta da un punto di vista grammaticale. Pensavo fosse un’altra di quelle differenze tra inglese e americano, in quanto mi sembrava di vederla piu’ spesso all’interno di documenti scritti oltre oceano, piuttosto che in pubblicazioni del vecchio continente. Ma evidentemente mi sbagliavo. Il serial comma e’ qualcosa di molto piu’ serio. Quasi una religione. E da oggi anche io dovro’ decidere da che parte stare. Serial comma or not?

ICARCV 2010, 11th International Conference on Control, Automation, Robotics and Vision

Visto che e’ da un po’ di tempo che non vi tedio piu’ con qualche calls for papers, e’ giunta l’ora di rimediare. Fresco fresco (in verita’ no, ma cosi’ suona meglio) dalla mia inbox, l’invito a sottomettere un contributo per ICARCV 2010, 11th International Conference on Control, Automation, Robotics and Vision, in programma per il periodo compreso tra il 7 ed il 10 dicembre in quel di Singapore.

ICARCV 2010 (logo)

Copia/incollando dal sito della conferenza:

The topics of interest include, but are not limited to:

  • Control: Adaptive control; Robust control; Process control; Complex systems; Co-operative control; Identification and estimation; Nonlinear systems; Intelligent systems; Discrete event systems; Hybrid systems; Networked control systems; Sensor network systems; Delay systems; Neural networks; Fuzzy systems; Control of biological systems; Precision motion control; Control applications; Control engineering education.
  • Automation: Man-machine interactions; Process automation; Intelligent automation; Factory modeling and simulation; Home, laboratory and service automation; Network-based systems; Planning, scheduling and coordination; Nano-scale automation and assembly; Instrumentation systems; Biomedical instrumentation and applications.
  • Robotics: Modeling and identification; Robot control; Mobile robotics; Mobile sensor networks; Perception systems; Micro robots and micro-manipulation; Visual servoing; Search, rescue and field robotics; Robot sensing and data fusion; Localization, navigation and mapping; Dexterous manipulation; Medical robots and bio-robotics; Human centered systems; Space and underwater robots; Tele-robotics; Mechanism design and applications.
  • Vision: Image/video analysis; Feature extraction, grouping and segmentation; Scene analysis; Pattern recognition; Learning in vision; Human-computer interaction; Tracking and surveillance; Biometrics; Biomedical Image analysis; Activity/behaviour recognition; Applications.

La call for papers completa la si puo’ scaricare a questo link. Buon lavoro a tutti!

Ups…

Quasi dimenticavo. Dopo un weekend di fuoco, domenica pomeriggio (naturalmente l’ultimo giorno utile) sono riuscito a sottomettere il mio paper per WCCI 2010.

Cat fallen asleep on a computer keyboard

Avendo dormito praticamente nulla durante gli ultimi giorni prima della consegna non posso garantire la perfezione dell’articolo, ne’ da un punto di vista tecnico, ne’ tantomeno linguistico. Ma d’altronde l’idea dietro una bozza e’ che non si tratti di una versione perfetta, no? Va beh, bando alle ciance. I piu’ curiosi, intrepidi e temerari di voi lettori possono scaricare il frutto dei miei sforzi direttamente dal link qui sotto.

Nel frattempo ho anche provveduto ad aggiornare l’area Publications del sito, nonche’ la versione web del mio CV, che potete trovare dispersa all’interno di un’altra sezione, piu’ precisamente About me.

PS: se qualcuno avesse la benche’ minima idea di come convincere il mio compilatore LaTeX a non mettere quelle due orribili figure in ultima pagina a meta’ della sezione Acknowledgment, ma bensi’ tutte dentro ad Appendix, sappia fin d’ora che un giorno avra’ un caffe’ pagato…

Robot Swarms on BBC Focus

L’articolo di copertina dell’edizione di BBC Focus di Marzo 2010 va a toccare un tema a me piuttosto familiare. E lo fa con il consueto stile dell’edizione inglese del magazine. Semplice, comprensibile, ma senza per questo scadere nel banale, nel sensazionalismo o nei luoghi comuni (come troppo spesso, per non dire sempre, pare fare invece la sua controparte italiana). Il pezzo in questione, a firma di Ian Taylor, riguarda la swarm robotics.

Swarm of e-puck robots

Sfruttando anche il commento di Alan Winfied, della University of West England at Bristol, l’articolo va a descrivere i motivi principali (facendolo invero in una maniera non particolarmente convincente) per i quali un sistema distribuito sia migliore rispetto ad uno basato su un controller centralizzato. Diversi esempi vengono presentati, tra i quali il progetto SensorFly guidato da Pei Zhang ed il progetto MAST, che puo’ vantare la collaborazione da parte dell’US Army Research Laboratory. Immancabile poi un accenno all’impressionante Symbrion Replicator project.

Symbrion Replicator

Menzione viene fatta anche ad un’applicazione robotica, non propriamente di swarm, che personalmente non conoscevo. Ho scoperto infatti che la Kiva Systems, azienda americana basata in Massachusetts, produce un robot per magazzino piuttosto interessante. Fondamentalmente fa da carrellista. Abbinato al software di controllo di un negozio on-line, puo’ muoversi automaticamente tra lo stock di prodotti nel momento in cui un cliente effettua un ordine via Internet e, basandosi su codici a barre o RFID, andare a recuperare tutto il materiale richiesto.

Come introduzione direi che puo’ bastare. Qui sotto potete trovare l’intero articolo, che ho provveduto a scannerizzare ed accorpare in un singolo file PDF.

Climbing Pikes Peak with a robot

Guardate il video qui sotto. Non male, vero?

Sono immagini tratte da una delle ultime edizioni della PPIHC, acronimo che sta ad indicare la Pikes Peak International Hill Climb, altresi’ detta Race to the clouds. 12,42 miglia da percorrere, con 156 tornanti, per scalare la Pikes Peak, in Colorado, dai 9,300 piedi (circa 2,800 metri) della partenza, fino ai 14,110 (circa 4,300) del traguardo. Un’impresa spettacolare, anche per il fatto che sono tantissimi i tratti del circuito privi di guard-rail o qualsivoglia tipo di protezione, con i piloti che al minimo errore rischiano di volare nel vuoto con le loro vetture.

A prendere parte all’88esima edizione della gara, in programma per il prossimo 27 giugno, ci sara’ un concorrente particolare. Un’Audi TT senza nessun pilota a bordo. A guidare la vettura lungo il tortuoso percorso ci sara’ una serie di algoritmi sviluppati da un gruppo di ricercatori del CARS, The Center for Automotive Research at Stanford.

Forte dei buonissimi risultati ottenuti nel corso delle varie edizioni della DARPA Grand Challenge, il team e’ ora pronto a qualcosa di grosso:

“Our goal is to show that we can do this,” Gerdes said. “There are some sheer drops at Pikes Peak in which any sort of self-preservation kicks in and you slow down a bit. We want to go up at the speed that few normal drivers would ever think of attempting.”

Si promettono scintille!

Varie grafiche per Mac OS X e ultimo video sui miei MAVs

Nonostante oggi si concluda, ufficialmente, il mio 2009 lavorativo (domenica si parte alla volta dell’Italia, con il solito obiettivo di rientrare a Plymouth in gennaio piu’ grasso di almeno un paio di chili), continuo nella tradizione degli ultimi post e ancora una volta “parlo” (termine un po’ pomposo) di qualcosa legato al mondo Mac o comunque dell’informatica in generale.

Prima di tutto l’ennesimo “trucchetto” nel quale mi sono imbattuto e che consente di cambiare il formato delle immagini create da Mac OS X tramite la funzione integrata di cattura screenshot (leggasi cmd+shift+4). Di default, il Leopardo salva il tutto in PNG. La compressione pero’ e’ un po’ strana e distribuire file creati in quel modo puo’ risultare talvolta problematico. No worries. In questo articolo e’ spiegato come rimediare impostando un altro formato di default a piacimento.

Mac OS X, purtroppo e come ovvio, non puo’ catturare screenshot in formato EPS. Ma siccome questo e’ un formato grafico che ho scoperto da poco e che sto letteralmente iniziando ad adorare, oggi sono andato anche alla ricerca di un plug-in che mi permettesse di visualizzare le anteprime di file di questo tipo senza doverli prima renderizzare via Preview o simili. La scelta e’ infine caduta su EPSQuickLookPlugIn, prodotto free (donazioni comunque gradite) della Eternal Storms Software. Installazione semplicissima (giusto un drag&drop) e funzionamento smooth. Meglio di cosi’ non si potrebbe desiderare.

Infine, sul fronte lavorativo, ho preparato un nuovo filmato dei miei aeroplanini nell’ultimo setup sperimentale elaborato. Abbiamo MAVs in grado di muoversi all’interno di un ambiente 3D sfruttando tutte le rotazioni possibili (leggasi yaw, pitch e roll) ed un target che, se si accorge di un aereo entro una certa distanza, cerca di muoversi per scappare da esso.

Cosi’ come avevo visto nel caso del simulatore 2D, ancora una volta emerge il fatto (invero abbastanza ovvio) che al crescere della velocita’ del target diminuisce l’accuratezza dei MAVs. I grafici qui di seguito mostrano le performance ottenute dai migliori individui di ogni generazione (media di 20 seeds), rispettivamente nel caso di una semplice architettura feed-forward input-output, sia con l’aggiunta di uno strato intermedio di 10 hidden.

Success rate for the best individuals in the 3D simulation (yaw/pitch/roll) using the basic input-output neural architecture

Success rate for the best individuals in the 3D simulation (yaw/pitch/roll) using a neural network controller with a hidden layer

Nel filmato qui sotto, messo insieme con il solito iMovie e poi direttamente trasferito su YouTube, si vede il comportamento di un po’ di aerei evoluti con target che viaggiano ad un terzo della loro velocita’.

Social Interactions in HRI: The Robot View

Paper interessante quello discusso oggi durante la seconda sessione del nostro piccolo reading group universitario. Trattasi di un lavoro datato 2003 dal titolo Social Interactions in HRI: The Robot View, ad opera di Cynthia Breazeal.

Kismet robot staring at a woman

Come suggerisce il titolo, l’articolo pone il proprio focus sulla human-robot interaction (HRI). Lo fa dettando linee guida (o, meglio, visions) da seguire per il progettazione di robot in grado di interagire con le persone in una maniera human-like. Linee guida che si ispirano, pur differenziandosi in maniera sostanziale, da quelle solitamente utilizzato nel campo della human-computer interaction. Socially guided learning e’ una delle parole chiave. Tutti i dettagli nel paper che e’ possibile scaricare dal link qui sotto.

Nel contesto delle ricerche sull’HRI, il gruppo della Breazeal sta lavorando con un nuovo robot, Leonardo. Un breve video del robot in azione e’ stato prodotto nell’ambito dei podcast di Nova Science. Grazie a qualche buon anima che l’ha appoggiato su YouTube potete vederlo qui sotto.

Pagina Successiva »