Home    About me    Publications    Blog    Undergrad memories

Fabio Ruini's blog

'cause Italians blog better

Archivio per luglio, 2007

A neural network-based controller for MAVs swarms: final roadmap

Ormai ci siamo. Mancano gli ultimi ritocchi, poi potrò anche io andarmene un pochino in ferie, lasciando che sia il computer a lavorare al posto mio. La simulazione, ormai, è ultimata. Di cose serie manca soltanto l’implementazione del sensore di distanza dei MAVs, che tuttavia presumo (mi tocco, nel dubbio…) non mi porti via più di una mezza giornata. Dopo, un sacco di ritocchini vari da apportare qua e là, ma nessun intervento strutturale da fare. Se non una qualche limatina alla formula di fitness, per ora soltanto abbozzata (in maniera che però mi pare plausibile).

A neural network-based controller system for MAVs swarms: live image

Comunque sia, la mia to-do list per la prossima settimana:

  • implementare il sensore di distanza;
  • impostare il bias;
  • rendere random, entro un certo margine, l’orientamento di partenza dei MAVs;
  • debuggare in maniera seria l’algoritmo evolutivo (anche se al momento sembra che funzioni bene);
  • aggiungere la possibilità di scegliere tramite GUI la funzione di trasferimento per i neuroni dell’hidden layer;
  • sistemare lo slot chiamato quando si tenta di stoppare la simulazione o di uscire dal programma mentre la simulazione è in corso;
  • aggiornare i valori della statusbar durante il movimento del MAV selezionato (nonchè aggiungere la percezione attuale proveniente dai vari sensori);
  • aggiungere uno slider per la velocità alla quale visualizzare la simulazione;
  • far creare in automatico un file di testo contenente il riepilogo della condizione sperimentale;
  • aggiustare la forma dei MAVs (la coda è sproporzionata);
  • sistemare la gestione dei bottoni quando si mette in pausa / in stop la simulazione.
Share

Ad imperitura memoria

Un appunto veloce. Per me. Perchè mi si fissi nella memoria, spero per sempre. Dopo una decina di ore spese ad imprecare di fronte al computer, con accanto un bloc-notes ed una matita attraverso i quali annotavo tutto ciò che il Mac mi sparava fuori, ho scoperto l’errore. Veramente idiota. Come tutti gli errori di programmazione che ti fanno perdere ore su ore.

Per il signor C++, se io faccio un’operazione di questo tipo:

// Calculate the average statistics of the swarm for the 4 tests
pct_target_destroyed = total_target_destroyed / 4;
av_fitness_value = total_fitness / 4;
av_energy_remained = (total_energy_remained / 4) / 4;
av_mavs_detonated = total_MAVs_detonated / 4;
av_mavs_collided = total_MAVs_collided / 4;
av_mavs_alive = total_MAVs_alive / 4;
av_out_of_bounds = total_MAVs_oub / 4;
av_speed_crash = total_MAVs_too_slow / 4;
av_autonomy_finished = total_MAVs_out_of_energy / 4;

dove pct_target_destroyed, av_fitness_value, av_energy_remained, av_mavs_detonated, av_mavs_collided, av_mavs_alive, av_out_of_bounds, av_speed_crash, av_autonomy_finished sono variabili di tipo float, mentre total_target_destroyed, total_fitness, total_energy_remained, total_MAVs_detonated, total_MAVs_collided, total_MAVs_alive, total_MAVS_oub, total_MAVs_too_slow, total_MAVs_out_of_energy sono variabili di tipo integer, il risultato non è un valore float come mi sarei aspettato, ma bensì un numero intero.

Questo mi faceva sballare tutte le statistiche. A mie spese, ho scoperto che la maniera corretta di scrivere il codice di cui sopra per ottenere un risultato della divisione di tipo float è la seguente:

// Calculate the average statistics of the swarm for the 4 tests
pct_target_destroyed = total_target_destroyed / 4.0;
av_fitness_value = total_fitness / 4.0;
av_energy_remained = (total_energy_remained / 4) / 4.0;
av_mavs_detonated = total_MAVs_detonated / 4.0;
av_mavs_collided = total_MAVs_collided / 4.0;
av_mavs_alive = total_MAVs_alive / 4.0;
av_out_of_bounds = total_MAVs_oub / 4.0;
av_speed_crash = total_MAVs_too_slow / 4.0;
av_autonomy_finished = total_MAVs_out_of_energy / 4.0;

Sbagliando si impara, dicevano i saggi? Per me è certo. Così come è sicuro che sbagliando, almeno per come sono caratterialmente io, non ci si guadagna il paradiso…

Share

What about to teach in English?

La proposta che non ti aspetti. Sapevo, per averlo letto nel bando della mia borsa, che questa era “integrabile” con un certo numero di ore da impegnare nella didattica. Quello che non mi aspettavo, piuttosto, è che mi proponessero già ora di iniziare a lavorare. Anche se in effetti c’era da aspettarselo, visto e considerato che è questo il periodo in cui si stanno programmando le varie attività del prossimo anno accademico, che avrà inizio a settembre.

Nello specifico, mi hanno proposto di tenere le lezioni di laboratorio di un corso di informatica del primo anno. Una lezione a settimana, ripetuta tre volte (data la numerosità, gli studenti sono divisi in tre gruppi). Il linguaggio di programmazione di riferimento, al solito, non lo conosco (sarebbe troppo facile d’altronde se lo conoscessi, no?). Trattasi di Java. Quello che mi ha piacevolmente sorpreso, però, è che tutto il materiale didattico è già stato preparato dal docente di riferimento. Così posso già iniziare a studiarmelo. Rimane il “piccolissimo” scoglio della lingua. Devo capire se si aspettano che io spieghi anche qualcosa (cosa che mi sarebbe quantomeno ardua), oppure che mi limiti a supervisionare e dare assistenza agli studenti mentre svolgono i loro esercizi (cosa decisamente più fattibile). Lunedì ne saprò di più.

Teacher and student at the blackboard

Tra parentesi sto trattando proprio in questi giorni con Reggio per continuare a fare le mie lezioni di Laboratorio di Informatica. Il prossimo anno accademico saranno attivi sia il corso di Laboratorio I (per il quale abbiamo già pronto tutto il materiale), sia quello di Laboratorio II (per il quale, invece, manca ancora tutto). Presumibilmente ci prenderemo un corso a testa io ed Ale. Quel che è certo è che, dopo cinque anni di onorato servizio, finalmente posso defilarmi dall’atroce attività di Web Staff. Mi hanno chiesto di operare lo stesso, almeno per quest’anno, come “supervisor” dei nuovi che subentreranno e probabilmente accetterò. Sicuramente, niente più nottate insonni passate a sistemare Powerpoint come un’automa e masterizzare centinaia di CD…

Sto facendo due conti, da un punto di vista meramente finanziario, e devo ammettere che la mia situazione non è mai stata così brillante come ora. I miei due conti correnti sono in discreta salute e mi permettono assoluta tranquillità durante lo svolgimento della vita quotidiana. La borsa per il PhD, che inizierà a venirmi pagata ad ottobre, è di 12600 sterline annue nette, a cui si dovrebbero aggiungere un 5000 euro circa da Reggio ed a grandi linee altre 600 sterline per le lezioni di cui ho parlato in questo post. Per un totale di circa 24000 euro netti annui. Se dovesse andare in porto con la casettina al Barbican (circa 330 sterline al mese, tutto incluso… a proposito, domenica mattina vado a vederla), significherebbe 18000 euro in tasca puliti ogni anno, giusto per campare. Non male, decisamente. Perchè va bene lavorare per il curriculum e per la gloria. Ma se c’è anche qualche gratificazione economica tanto meglio…

Share

Il calzone siciliano

Arrivo giusto ora da una (delle tantissime) cena a casa di Angelo. Nella quale ho tristemente maturato la consapevolezza che riesco a comprendere molto il meglio il siciliano che non l’inglese. Va beh, cose che capitano. Angelo, per la cronaca, è un ottimo chef. E per festeggiare la venuta del fratellino, giunto a trovarlo, con rispettiva consorte, in quel di Plymouth, si è esibito nella preparazione del “calzone siciliano”. Uno spettacolo, davvero. Al punto che in questo post mi ero ripromesso di presentarlo un po’ a chi, come me, fino ad oggi ignorava l’esistenza di tale prelibatezza. Peccato che ora sto cercando un po’ su Internet e non riesco a tirar fuori niente di niente.

L’unica cosa che risponde allo stesso nome è questo, ma sia ad osservare l’immagine, sia a leggere la ricetta, in comune con quello che ho mangiato io questa sera dovrebbe avere giusto la sostanza dell’involucro (manco la forma, tanto per intenderci). Comunque sia, si sa mai che abbia trovato un’altra cosa meravigliosa. Se qualcuno si volesse cimentare, questa è la ricetta (brutalmente copia-incollata dal sito linkato poche righe fa).

Miscateddri (?)

This recipe is one of my mothers. I hope you enjoy them. Now I can pass the recipe onto my friends as they have always asked me for it but never got around to write it down.

Makes: 18 to 24
For the starter:
1 envelope (2 1/4 teaspoons) active dry yeast
1/2 teaspoon sugar
1 cup lukewarm water
For the dough:
2 3/4 cups all-purpose flour
1 teaspoon salt
1 teaspoon plus 1/3 cup vegetable oil
For the meat filling:
2 to 3 tablespoons olive or vegetable oil
2 onions, chopped
1 pound pork
2 teaspoons salt
1 teaspoon freshly ground black pepper
For the spinach filling (optional):
1 pound spinach, or chard
salt and freshly ground black pepper
For the balance of ingredients:
Black olives
4 potatoes cut in small cubes
freshly grated black pepper
salt

  1. To make the starter for the dough, in a small bowl, dissolve the yeast and sugar in the lukewarm water. Set aside for 10 minutes until frothy.
  2. To make the dough, in a bowl, stir together the flour, salt, and the 1 teaspoon oil. Add the starter and using a stand mixer fitted with a dough hook, beat on medium speed until a soft dough forms, about 10 minutes. Turn out the dough onto a lightly floured work surface and divide into 2 balls. Place the balls in a bowl, add the 1/3 cup oil, and toss to coat the balls with the oil. Cover with a kitchen towel and let rise until almost doubled in size, about 1-1/2 hr.
  3. Meanwhile, select one of the fillings and prepare it. The meat filling you do not have to cook it, just add the salt and pepper and set aside.
  4. To prepare the spinach or chard filling, cook until wilted in the rinsing water clinging to the leaves, squeeze the spinach dry, and chop finely. Place in a bowl and add salt and pepper and mix well .
  5. To prepare the onion filling, in a pan warm the oil over medium heat. Add the onions and saute until soft and golden, about 15 minutes. Remove from the heat, place in a bowl, and let cool.
  6. Preheat the oven to 350 degrees F. Grease two cookie sheet pans with olive oil or vegetable oil.
  7. On a lightly floured work surface, with a rolling pin roll out a ball of dough into a large circle (the size of a large pizza) and about 1/5 inch thick (the thinner the dough is spread the better). Take one tablespoon of oil and spread all over the flattened dough.

Share

Looking for a house*

Sarò monotono, lo so. Ma sono ancora a parlare della borsa che ho appena vinto. Di fatto, senza accorgermene, la mia vita ha subito un bello scossone. Ma ora le prospettive, per almeno i tre anni a venire, sono di sostanziale stabilità. Dunque, occorre comportarsi di conseguenza. Prima di tutto, cercando una dimora stabile.

E’ tutto il giorno che spulcio Internet e giornali vari. Alla fine qualcosa di valido l’ho trovato. Ci sarebbe una casettina, infatti, che in realtà sarebbe un mezzo sogno. Zona Hoe/Barbican. Ergo, vista mare (o comunque davvero a due passi dall’acqua), a poca distanza dal centro e nel pieno della zona più caratteristica della città. Dalle (poche) foto che ho visto, sembra uno spettacolo. L’affitto è altino, ma più che abbordabile con la borsa che avrò.

Dimenticavo qualche foto:

Lounge

Kitchen

Bedroom

Ho mandato una mail ai proprietari ed ora aspetto una risposta. Nel caso, le visite iniziano dal prossimo lunedì. A mio vantaggio c’è il fatto che l’appartamento mi serve da subitissimo (il contratto al Pilgrim scade il 29), dunque dovrei avere la precedenza su altri eventuali studenti che inizino i corsi a settembre/ottobre. Incrocio le dita…

*: Titolo del post cambiato, o meglio corretto, su gentile segnalazione di Pina. Non mi è tuttora ben chiara la distinzione tra suoni consonantici e vocalici, ma ho realizzato che “an house” è un errore…

Share

Pointers are driving me crazy

Il discorso mi era rimasto un po’ in sospeso da, diciamo, 6/7 anni. Ero in quarta superiore, BUS-TCS, indirizzo informatico. A lezione, per la prima volta, ci vengono presentati degli oggetti misteriosi. Delle specie di variabili che però non contengono al loro interno dei valori, ma bensì dei puntatori. Che puntano a cosa? Nientepopodimeno che alla zona di memoria dove il valore “vero” è conservato. Fico, ricordo che pensai. Salvo poi realizzare, dopo poco istanti, e venirmene fuori con una domanda quanto mai lecita in quella situazione: “ma a che cazzo servono?”. Perchè non posso usare delle variabili normali?

Pointer

Una spiegazione convincente ha latitato per diverso tempo. Ma ora me ne sto accorgendo da solo. Come al solito, prima di capire le cose ci devo prima sbattere il muso di mio. Per poi guardarmi indietro e pensare: “però… aveva ragione x davvero!”. Nel caso specifico, inizio ora a capire che figata siano i puntatori. Così come inizio a capire che se fossi stato un po’ più attento a lezione, all’epoca, almeno qualche concetto mi sarebbe rimasto. Pazienza. Tutti, per lo meno, concordano col fatto che i puntatori siano bestie strane e rognose da gestire. Il che mi consola. Ma non toglie il fatto che io debba imparare ad utilizzarli in maniera decente.

E dunque, via di libri e di tutorial. Tutorial come questo, oppure come questo. Buono studio a me…

Share

Quasi dimenticavo…

… arrivata giusto venerdì la comunicazione ufficiale! :-)

PhD Studentship at the University of Plymouth - Official offert

Share

Oral-B Brush Aways e RoboFootball

Oggi post decisamente multimediale. Spero soltanto che con questo eccesso di immagini e di filmati la navigazione all’interno del blog non diventi troppo lenta.

Inizio con un aggiornamento relativo al mio viaggio alla scoperta delle meraviglie del mondo inglese. Oggi, durante il mio tour settimanale da Sainsbury’s, non sono riuscito a resistere dal regalarmi l’ennesima chicca. Decisamente abbordabile, da un punto di vista economico: giusto tre pounds. Devo ammettere che smanio dalla voglia di provarla. Di che cosa sto parlando? Ta-dah…

Oral-B Brush Aways

Sì, è proprio come temete. Quando non c’è lo spazzolino, non c’è Daygum Protex come nella pubblicità. Ma ci sono queste meravigliose cose, da arrotolare intorno a un dito e con le quali lavarsi (sfregarsi) i denti. Sono schifosamente curioso di provarle, davvero…

Ma sorvolando su questa cosina disgustosa tipicamente anglosassone, volevo rendere il mondo partecipe del fatto che ho caricato su YouTube altri tre filmatini. Il soggetto che potete osservare di seguito è Joerg Wolf, tedesco, nonchè un altro dei miei innumerevoli compagni di ufficio. Uno che si diverte ancora più del sottoscritto a giocare coi robot. Io lo faccio per hobby, infatti. Lui per lavoro. Sta finendo la tesi di PhD in questi mesi ed il progetto è un robot che gioca a carte. Nel tempo libero, si diletta col RoboFootball. Con buoni risultati a quanto pare. Da non so bene quanti anni l’Università di Plymouth (questa la pagina del gruppo) è campione nazionale nella categoria Mirosoft (Micro Robot World Cup Soccer Tournament), dedicata a robot-giocatori della dimensione di quelli che potete vedere nel primo dei filmati che seguono.

Per oggi è tutto… :)

Share

Roteglia: Giochi d’Estate 2007

Post di servizio per segnalare che, dopo il bel successo dello scorso anno, a Roteglia inizia oggi l’edizione 2007 dei Giochi d’Estate. Giochi acquatici, stand gastronomici e, più in generale, una decina di giorni di baracca garantita. Per chi fosse nei paraggi, una visita è quanto meno d’obbligo. Non fosse altro, perchè l’intero incasso, così come accaduto per l’edizione precedente, verrà devoluto in beneficenza…

Nota malinconica. Mi raccomando, fate un bagnetto anche per me… :-/

Share

John L. Casti e la WebTV di Ateneo

Nel post odierno non posso esimermi dal dare una tiratina d’orecchie al CEA (Centro E-Learning d’Ateneo) della mia (ormai ex) Università di Modena e Reggio Emilia. Oggi, che era presente in facoltà nientepopodimeno che John L. Casti, nessuno ha avuto la bella pensata di broadcastare l’avvenimento sul web. E dire che questo è proprio quel genere di cose di cui il CEA, con la sua WebTV, si occupa principalmente. Sembra quasi che ogni qualvolta ci sia la possibilità di farsi un po’ di pubblicità seriamente, ci sia qualcuno che o non si rende conto dell’opportunità, oppure appositamente (per qualche motivo a me oscuro) sceglie di perseguire il basso profilo.

Adesso, con tutto il rispetto di questo mondo, credo che la conferenza di oggi fosse un pelo più interessante, per esempio, rispetto al Premio di Poesia “Antonio Delfini” 2007.

Per fortuna qualcuno ha provato a sopperire alla lacuna, ma malgrado gli sforzi (encomiabili), aver potuto seguire l’evento dal vivo sarebbe stata un’altra cosa.

Va beh. Fatto sta che mentre Casti era a Reggio a discutere di complessità, qui a Plymouth hanno cercato di ribattere. Questo il cartello trovato appeso qualche ora fa su una delle porte d’ingresso del Portland Square:

Utopian Society

Peccato aver saputo di questo convegno troppo tardi… :-D

Share

« Pagina precedentePagina successiva »