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 giugno, 2010

Estendendo (possibilmente) il mio PhD

Mentre ancora tutto tace sul fronte ESA, un sacco di cose sembrano muoversi invece in quel di Plymouth. In primo luogo perche’ il paper che avevo sottomesso a suo tempo per TAROS 2010 e’ stato accettato, anche se soltanto per una poster presentation. Non ho di che lamentarmi dato che il paper non era obiettivamente di alta qualita’ e finira’ comunque sui proceedings. Adesso, entro un paio di settimane, dovro’ preparare la versione camera ready. In secondo luogo, un amico mi ha informato sul fatto che proprio nella ridente capitale del Devon si terra’ a breve una summer school interessante per chiunque si occupi di machine learning: ISSPR – International Summer School on Pattern Recognition. Infine, a tener ravvivata l’atmosfera e’ anche il mio supervisor che mi ha comunicato via mail come i lor signori americani che mi pagano il PhD siano disposti ad estendere la mia borsa per ulteriori sei mesi. A patto che si presenti loro un progetto relativo al lavoro da svolgere durante questi ulteriori sei mesi. Detto, fatto. Armato di carta e penna (o, meglio, Word e tastiera) oggi pomeriggio ho scritto il proposal. Nel caso potesse interessarmi, lo trovate qui sotto.

Project proposal

Project overview

Flocking, defined as ‘the collective motion of a large number of self-propelled entities’ [1] is a phenomena commonly observed in nature among birds and other animals (though it tends to be called in different ways according to the animals involved into it: swarming for insects, herding for quadrupeds, schooling for fish, etc.). Flocking behaviours are beneficial from both an individual and a group perspective. Among the most obvious advantages driving an individual to join a group of conspecifics we can mention the protection a flock (as well as a herd, or a school) offers against potential menaces (mostly predators, though someone may argue that being inside a flock increases the likelihood of being detected by a predator) [2], and the energy saving all the flock members can benefit from because of the less air resistance they will encounter during their flight [3]. Some older studies, e.g. [4], also introduced the so-called ‘many wrongs’ principle, suggesting that flying inside a flock during long migrations could improve the navigation efficiency for all the individuals (more recently proven true in [5], assuming that the size of the flock is large enough). As demonstrated for example in [6], as well as in a number of researches carried out within the relatively new field of swarm robotics, robots also can benefit from the adoption of flocking principles when involved in a collective navigation task. These properties might turn particularly useful in aerial robotics, specifically in the domain of MUAVs (Micro-Unmanned Aerial Vehicles) [7]. For this specific realm, the biggest advantages are two: energy saving (thus allowing for a longer flight duration) and easiness from a control point of view.

How a flock really works in nature is still unclear. An agreement has yet to be reached within the scientific community when it comes to answer some basic questions, as whether animal flocks rely on one or more ‘leaders’ (and the flock members just synchronise their movements with those of the leader) or the individuals must all be considered egalitarian peers that generate an overall flocking behaviour as the casual result emerging from the execution of a set of individually-motivated actions. Recent studies focused on pigeons homing behaviours [8] have demonstrated how these birds elect, from time to time, a different set of leaders to imitate in their navigation behaviours. The leaders tend to be those with the best skills in individual navigation. This view seems to be in contrast with the trend emerged from the research carried out in robotics/computer science, as well as in physics, during the last few decades. The studies on this field, heavily influenced by the pioneeristic work by Reynolds [9], have been looking at flocking behaviours as complex high-level phenomena emerging from the simple lower-level interactions among the single individuals composing the flock. This view is not necessarily incongruent with the fact of having a leader, but a common assumption in most of these works (see for example [10) is about all the flock/swarm members being on the same hierarchic level. To recognize that animals flocks indeed rely on the presence of individuals hierarchically higher than others opens the road for a all new set of models that can be built in order to improve our understanding of flocking behaviours.

Experiments on group behaviours are common in the literature about ground-based robots (see among others [11] and [12]), but still in their infancy for what concerns aerial robotics. One of the very few application of flocking principles on physical flying robots consists in the work described in [13], with some testing performed on real blimps, though focused on a ‘particular’ topic, which is the so-called secondary swarming.

The project we propose herein aims to further improve the results recently obtained through an innovative approach by Ruini et al. [14], who have recently been able to design and successfully test on real MUAVs an intelligent flocking algorithm. The work will be carried out in simulation, using the same computer model developed by Ruini for the original work. The simulator – written on C++ and relying on multi-platform open-source libraries – is based upon the senseFly’s swinglet MUAV [15], a lightweight fixed-wing aircraft characterised by an 80 cm wingspan, an overall weight of less than 500 g, and propelled by an electric motor which allows the robot to fly at [30;50] km/h for up to 60 minutes.

Among the number of aspects that could potentially be tackled using the software simulator, the project will mainly focus on two aspects:

  • implementation of a (neuro)evolutionary approach in order to improve some aspects of the previously developed flocking algorithm;
  • identification of new metrics for the evaluation of the flocking behaviour.

The flocking algorithm can potentially be improved in many different ways, making it more plausible from a biological point of view and, at the same time, more efficient performance-wise. In [14], for example, the MUAVs members of a certain team share among them information about their absolute position using explicit communication (through a wireless data link). This information is used to compute various statistics (i.e., the average heading of the flock, the centre of mass, etc.), employed in turn to determine the course of action to undertake. A neural network-based controller can be trained or evolved in order to extract the same information based on local readings (following the approach outlined in [16], where swarming is obtained without the use of positioning information), thus reducing the need for exchanging information and performing complex mathematical calculations not particularly plausible from a biological perspective.

Another interesting potential improvement consists in optimising (through evolutionary methodologies) the manoeuvres that implement the flocking behaviour. In [14], aspects as heading alignment, velocity matching, and convergence toward the centre of the flock are all algorithmically managed. The proposed solutions for each of these problems have demonstrated to be working, but they are not necessarily the most optimised ones. Better solutions can be identified relying on artificial evolution.

At the same time, identifying an appropriate set of metrics for evaluating flocking behaviours (since those found across the literature tends to be not of general usage, but rather specific for the purposes of the single studies) could help to identify other areas for potential improvements, as well as provide the entire field with a general purpose valuable contribute.

The project might also involve collaboration with the Laboratory of Intelligent Systems (LIS) at the Ecole Polytechnique Federale de Lausanne (EPFL), Switzerland. Relying on the fleet of MUAVs available there the investigator could potentially spend a few weeks in Lausanne testing on physical robotics platforms the controllers developed in simulation.

References

[1] O’Loan, O.J., and Evans, M.R. (1999). Alternating steady state in one-dimensional flocking. Journal of Physics A: Math. Gen., vol. 32(8), pp. L99-L105.
[2] Lebar Bajec, I., and Heppner, F.H. (2009). Organized flight in birds. Animal Behaviour, vol. 78(4), pp. 777-789.
[3] Weimerskirch, H., Martin, J., Clerquin, Y., Alexandre, P., and Jiraskova, S. (2001). Energy saving in flight formation. Nature, vol. 413, pp. 697-698.
[4] Bergman, G., and Donner, K. (1964). An analysis of the spring migration of the common scoter and the long-tailed duck in southern Finland. Acta Zoologica Fennica, vol. 105, pp. 1-59.
[5] Simons, A.M. (2004). Many wrongs: the advantage of group navigation. Trends in Ecology and Evolution, vol. 19(9), pp. 453-455.
[6] Gokce, F., and Sahin, E. (2010). The pros and cons of flocking in the long-range “migration” of mobile robot swarms. Theoretical Computer Science, vol. 411(21), pp. 2140-2154.
[7] Sullivan, J.M. (2006). Revolution or evolution? The rise of the UAVs. IEEE Technology and Society Magazine, vol. 25(3), pp. 43-49.
[8] Nagy, M., Akos, Z., Biro, D., and Vicsek, T. (2010). Hierarchical group dynamics in pigeon flocks. Nature, vol. 464(7290), pp. 890-893.
[9] Reynolds, C.W. (1987). Flocks, herds, and schools: a distributed behavioral model. In Proceedings of ACM SIGGRAPH ’87, vol. 21(4), pp. 25-34.
[10] Baldassarre, G., Parisi, D., and Nolfi, S. (2006). Distributed coordination of simulated robots based on self-organization. Artificial Life, vol. 12(3), pp. 289-311.
[11] Moeslinger, C., Schmickl, T., and Crailsheim, K. (2009). A minimalist flocking algorithm for swarm robots. Proceedings of ECAL’09, 10th European Conference on Artificial Life.
[12] Turgut, A.E., Celikkanat, H., Gokce, F., and Sahin, E. (2008). Self-organized flocking in mobile robot swarms. Swarm Intelligence, vol. 2, pp. 97-120.
[13] Melhuish, C., Welsby, J., and Greenway, P. (2002). Gradient ascent with a group of minimalist real robots: implementing secondary swarming. Proceedings of the IEEE International Conference on Systems, Man and Cybernetics, vol. 2, pp. 509-514.
[14] Ruini, F., Hauert, S., Leven, S., Zufferey, J.-C., Cangelosi, A., and Floreano, D. (in preparation). A bio-inspired flocking algorithm for MUAVs. Experiments in computer simulations and on real robots.
[15] Leven, S., Zufferey, J.-C., and Floreano, D. (2009). A minimalist control strategy for small UAVs. In Proceedings of IROS 2009, the IEEE/RSJ International Conference on Intelligent RObots and Systems, pp. 2873-2878.
[16] Hauert, S., Zufferey, J.-C., and Floreano, D. (2009). Evolved swarming without positioning information: an application in aerial communication relay. Autonomous Robots, vol. 26(1), pp. 21-32.

The best scientific paper ever written

Non so se si tratti di un hoax o meno, ma sicuramente e’ esilarante. Mi e’ appena arrivato via email il link ad un articolo dal titolo The unsuccessful self-treatment of a case of “writer’s block”, (non) scritto da tale Dennis Upper nel 1974 ed apparentemente pubblicato sul Journal of Applied Behavior Analysis (J Appl Behav Anal. 1974 Fall; 7(3): 497). Qui sotto potete vederlo in versione integrale, mentre il PDF e’ scaricabile cliccando qui.

The best scientific paper ever

Ovviamente, l’articolo in questione non poteva non essere stato citato. Come ad esempio, in questo successivo lavoro, tra i cui autori non poteva non figurare un italiano.

“Angolo medio”

E ci risiamo. Di nuovo. Puntualmente. Ancora una volta di fronte all’incubo ricorrente di ogni programmatore di simulazioni che non conosce la trigonometria, perche’ ai suoi tempi (leggasi durante le scuole superiori) non l’ha studiata come avrebbe dovuto fare. Arriva il momento in cui ci sono da fare alcune operazioni con degli angoli ed il programmatore di simulazioni in questione (alias il sottoscritto) si impantana. Miserabilmente. Sempre e comunque. Questa volta ci e’ voluto un pomeriggio intero per capire come fare a calcolare la “media” tra un certo insieme di angoli nel range [-pi;pi].

Fisher (seen from a trigonometric perspective)

Il problema non e’ infatti banale come potrebbe sembrare a prima vista, data la complicazione dettata dal wraparound. Se abbiamo per esempio due angoli (assumiamo ancora il range [-pi;pi]) rispettivamente di 179˚ e -179˚, la media aritmetica tra i due valori sarebbe 0˚, quando in realta’ l’angolo risultante dovrebbe essere di 180˚.

Wikipedia propone una paginetta dedicata al problema del calcolo delle medie di quantita’ circolari (circular quantities). Allo stesso modo, girovagando per la rete ho trovato diverse discussioni interessanti sull’argomento, come quelle pubblicate su stackoverflow (qui e poi ancora qui), The Math Forum ed allegro.cc.

La soluzione al problema e’ piu’ semplice di quanto sembri, soprattutto se si hanno a disposizione un computer ed un compilatore C++. In sostanza e’ sufficiente calcolare le sommatorie di seni e coseni di tutti gli angoli presenti nell’insieme su cui si sta lavorando e poi processare questi due totali attraverso la funzione atan2 (che quando si tratta di trigonometria, non so bene per quale motivo, viene sempre fuori). Nell’esempio qui sotto uno snippet del codice che ho scritto per effettuare l’operazione in questione.

I miei colleghi mi hanno anche illuminato sull’esistenza di un toolbox per Matlab chiamato Circular Statistics Toolbox, a cui loro ricorrono solitamente quando si trovano di fronte a problemi di questo genere. Il toolbox e’ gratuito e spulciare il codice contenuto nei suoi vari script puo’ aiutare a chiarirsi le idee.

Infine, a mo di referenza, infilo qui dentro anche il link ad una paginetta web (presumibilmente per bambini, ma la mia preparazione in materia non si discosta molto da quella di un infante) con riassunta la procedure per effettuare conversioni gradi->radianti e viceversa. Utile per tutti coloro, come il sottoscritto, che puntualmente si scordano la sintassi che si puo’ usare direttamente in Google (es. 0.2 degrees in radians).

[PhD and Postdoc positions] Intrinsically motivated RL, Developmental robotics, ICub

Mentre il sottoscritto e’ ancora in attesa di notizie provenienti dall’ESA per quanto riguarda il suo futuro, il mio sempre vigile e attento supervisor mi gira questa mattina un’email con la quale si pubblicizzano un po’ di posizioni (PhD e PostDoc) da essere ricoperte a partire da inizio 2011. Tutte queste posizioni sono in Francia, tre a Parigi ed una Bordeaux. Temi di fondo: developmental robotics, machine learning e computer vision. E la piattaforma robotica di riferimento e’ il “nostro” iCub. Nel caso in cui qualcuno di voi fosse interessato, qui di seguito trovate l’annuncio.

French flag

Dear all,

In the context of a 3 years project funded by the french research agency ANR, we are looking for highly skilled and motivated candidates for a PhD or a Postdoc in the fields of developmental robotics, machine learning and computer vision with evaluation on the iCub humanoid robot.

The global project aims at addressing 4 complementary challenges that have been identified as crucial to the development of future humanoid robotics:

* CHALLENGE 1: How can a robot learn efficient perceptual representations of its body and of external objects given initially only low-level perceptual capabilities?
* CHALLENGE 2: How can a robot learn motor representations and use them to build basic affordant reaching and manipulation skills?
* CHALLENGE 3: What guidance heuristics, based on intrinsic motivation, active learning and social guidance, should be used to explore vast sensorimotor spaces in unknown changing bodies and environments?
* CHALLENGE 4: How can mechanisms for building efficient representations/abstractions, mechanisms for learning manipulation skills, and guidance mechanisms be integrated in the same experimental robotic architecture and reused for different robots?

These 4 interrelated challenges are distributed over four partners:

ENSTA-ParisTech (Paris) will lead challenge 1. The contact is David Filliat (david.filliat@ensta.fr).
See http://cogrob.ensta.fr/

ISIR-UPMC-Paris 6 (Paris) will lead challenge 2. ISIR hosts the iCub humanoid robot on which the acheivements will be evaluated. The contacts are Olivier Sigaud and Vincent Padois (olivier.sigaud@upmc.fr). See http://www.isir.fr/

INRIA (FLOWERS team, Bordeaux) will lead Challenge 3. The contact is Pierre-Yves Oudeyer (pierre-yves.oudeyer@inria.fr).
See http://flowers.inria.fr/ and http://www.pyoudeyer.com (for this partner, postdoc applications will be preferred)

The GOSTAI company (Paris) will lead Challenge 4. The contact is Jean-Christophe Baillie (baillie@gostai.com).
See http://www.gostai.com/

The funding should be available by January 2011 or earlier. Specific schedules might be considered for specific candidates. Salaries will depend on the candidate experience and on the partner.

The applicants should send a detailed CV and statement of motivation to the partner that is most relevant given their motivation. The topics being closely related, all candidates will be considered by all partners. Applicants should have strong competences on one or more of the following topics: developmental robotics, motor control, statistical inference, reinforcement learning, optimization, computer vision.

Detailed information about this project will be provided on request.

Athletissima 2010

Nel tentativo di smaltire la delusione di questo mondiale sudafricano, ho addocchiato un bell’evento che si terra’ qui a Losanna tra un paio di settimane. Si tratta dell’edizione 2010 di Athletissima, alias “il meeting di atletica di Losanna”, parte della Samsung Diamond League e giunto ormai alla sua 35esima edizione. Tra i partecipanti alla manifestazione, anche Sua Maesta’ Usain Bolt, il giamaicano re dei 100 metri piani, che a Losanna si cimentera’ pero’ sui 200.

Stade de Lausanne - Athletissima 2007

I biglietti sono venduti a prezzi molto piu’ abbordabili di quanto pensassi, in quanto si va dai 20 franchi svizzeri per le curve, ai 100 per la tribuna centrale. Ottimo incentivo per partecipare, anche se sembra che on line i biglietti per gli ordini superiori siano gia’ esauriti. Al piu’ presto urgera’ un giro di controllo in una qualche rivendita fisica.

Athletissima 2010 - ticket orders

Ad ogni modo, per chi fosse interessato, a questo link e’ possibile trovare il programma completo della manifestazione.

Italy - South Africa 2010 World Cup - Gazzetta dello Sport "celebrating" the elimination of the 'Azzurri'

E io che mi lamentavo del pareggio con la Nuova Zelanda. Pensavo avessimo toccato il fondo. E invece, come spesso accade in questi casi, si scopre che una volta raggiunto il fondo si puo’ sempre iniziare a scavare. Dopo una sconfitta (strameritata) con la Slovacchia e la conseguente eliminazione al primo turno del Mondiale, credo che dovremmo essere comunque molto prossimi al centro della Terra. Motivo per guardare con ottimismo al futuro della nostra Nazionale.

Un About Menu personalizzato in Cocoa

Dopo aver trasformato il mio simulatore di flocking in un’applicazione Cocoa/Objective C (il che ha comportato semplicemente il creare un nuovo progetto XCode e rinominare alcuni files da .mm a .cpp), oggi ho approfittato di questo cambiamento per implementare una barra dei menu personalizzata per la mia applicazione.

Irrlicht, all’interno della distribuzione, mette molto cortesemente a disposizione un file .nib, uno dei formati utilizzati da Interface Builder, contenente una barra dei menu piuttosto standard, ma comunque piu’ che adatta ai miei scopi. Utilizzando il software di Apple sono riuscito a personalizzare questa barra in maniera molto rapida ed intuitiva, mentre per integrarla al mio software e’ stato sufficiente aggiungere il file .nib modificato nella sezione “Groups & Files” del progetto Xcode.

Ora, l’unico problema sorgeva dal fatto che la finestrella “About”, l’unica che realmente mi interessava andare a modificare, non figurava da nessuna parte. Semplicemente, utilizzando quel file .nib, viene generata in real-time attingendo dalle informazioni contenute in info.plist (icona del programma, informazioni di versione, ecc…). Dopo un po’ di googlamenti vari ho scoperto la procedura da seguire e che, contrariamente a quanto suggeriscono diversi siti, non richiede la stesura di neppure una singola riga di codice ma puo’ essere svolta interamente all’interno di Interface Builder. Tutto cio’ che e’ necessario e’ creare un nuovo “Panel” all’interno del proprio file .nib, customizzarlo a piacimento ed infine “linkarlo” alla voce di menu desiderata (nel nostro caso “About MAVs Flocking Simulator). Per farlo, e’ necessario selezionare la voce di menu voluta, aprire l’inspector di Interface Builder, attivare il tab dei link (icona blu) ed alla voce “Sent actions” trascinare il segno + verso il pannello appena creato e selezionare come azione “orderFront”. Tutto qui.

Interface Builder - example of a customised about menu

Per ottimizzare un po’ il comportamento dell’applicazione e renderlo diciamo “standard”, suggerisco di utilizzare i settaggi che trovate nell’immagine qui di sotto per quanto riguarda il pannello.

Interface Builder - settings for a customised about panel

Questo il risultato finale.

Interface Builder - example of customised about menu

Per chi volesse approfondire un po’ la questione chiudo il post con un po’ di link a riguardo:

  • la guida di Apple ad Interface Builder (invero non una delle migliori documentazioni che abbiano mai prodotto) [link];
  • implementare un semplice menu [link];
  • trafficare con le finestre [link];
  • formattare il testo nelle finestre generate automaticamente [link].

Uno sguardo in laboratorio

Nonostante ormai mi trovi in quel di Losanna da un po’ di tempo a questa parte, mi sono reso conto che le fotografie ancora latitano. Cerco di rimediare in piccolissima parte con il post odierno, dove raccolgo alcuni scatti effettuati con l’iPhone al laboratorio in cui mi trovo, approfittando della momentanea assenza di tutti i colleghi.

Iniziamo con una veduta semi-panoramica dell’ambiente di lavoro.

Mobile Photo 23 Jun 2010 01 01 20

Proseguiamo poi con il mio povero angolino, sul quale svetta il mio MacBook Pro.

Mobile Photo 23 Jun 2010 01 01 39

Vediamo poi un po’ di aeroplanini sparsi in giro. Nelle due foto qui sotto abbiamo gli Swinglet con i quali lavoro (o, meglio, dovrei fisicamente iniziare a fare a breve).

Mobile Photo 23 Jun 2010 01 01 02

Mobile Photo 23 Jun 2010 00 59 59

Seguono poi alcuni Eyebot.

Eyebot(s)

E per finire, qualcosa di non meglio identificato e che ancora non ho visto in funzione.

Mobile Photo 23 Jun 2010 01 00 42

Ok, per il momento questo e’ quanto. Non un granche’, me ne rendo conto, ma come assaggio penso possa bastare…

iOS4: ci siamo

Finalmente ci siamo. Da qualche minuto e’ disponibile per il download l’iPhone OS 4, altresi’ ribattezzato iOS4, vale a dire la nuova major release del sistema operativo per iPhone.

iTunes - iOS4 update available for download

L’update, per chi non lo sapesse, e’ gratuito per tutti i possessori di iPhone 3G e 3Gs, nonche’ gli iPod Touch di seconda e terza generazione. Le funzionalita’ introdotte con l’aggiornamento variano in funzione dell’apparecchio per il quale si effettua l’update. Una tabella riepilogativa potete trovarla a questo link. Maggiori informazioni riguardo alle funzioni introdotte potete invece ottenerli da quest’altra pagina, oppure guardando il keynote di Jobs durante la scorsa WWDC 2010 di San Francisco.

Steve Jobs presenting iOS4

Nel mio caso (iPhone 3G) il download ammonta 292.1MB e la velocita’, pur none eccelsa, sembra al momento accettabile. Nel giro di una mezzoretta dovrebbe essere tutto pronto per l’installazione. Dita rigorosamente incrociate nella speranza vada tutto bene.

UPDATE: aggiornamento decisamente lunghino, ma andato a buon fine. Purtroppo, sul mio 3G le novita’ non sono moltissime e comunque meno evidenti di quanto mi aspettassi (a questo link potete trovare un riepilogo). Ottime le folders, che permettono di mettere ordine tra le proprie apps, ma sgradevoli da un punto di vista meramente estetico. Nota piu’ che positiva, invece, per iBooks: un’applicazione che mi ha davvero stupito.

Una figura brillante…

New Zealand football team celebrating after the draw against Italy at the South Africa 2010 World Cup

Per fortuna da qualche giorno Zattoo non mi fa vedere Rai Uno. E cosi’ i commenti alle varie partite del mondiale li seguo sull’ottima RSI LA 2, unica mia piacevolissima scoperta di questo campionato del mondo. Spero solo che sull’emittente italica non ci sia qualcuno che si sta producendo in considerazioni del tipo “beh, sapete, e’ difficile giocare contro squadre molto fisiche e che si chiudono in difesa”. Per favore, almeno risparmiateci questo.

Pagina successiva »