Introduzione a SymAware
Sono sempre più convinto che nella vita le occasioni più interessanti sbuchino fuori dal nulla, quando meno ce lo si aspetta.
Questo almeno è ciò che accade a me fin troppo spesso.
Forse perché, piuttosto che essere alla ricerca di qualcosa di specifico, mi piace farmi trasportare dalla corrente e collezionare quante più esperienze possibile.
Un po’ come una spugna che, senza nemmeno muoversi, cerca di catturare quanto più nutrimento possibile.
Magari in futuro dovrò cambiare il mio approccio, ma finora ha funzionato fin troppo bene.
È infatti questo il modo in cui sono venuto a conoscenza del progetto SymAware, uno sforzo congiunto di molteplici realtà accademiche ed industriali finanziato dall’Unione Europea.
In un banale Martedì, il mio supervisor, Sadegh, mi ha messo al corrente di questa possibilità, chiedendomi di collaborare con il ruolo che potremmo definire di “lead software developer”.
Un titolo altisonante, ma proprio per questo, piuttosto impegnato.
Il problema di fondo è che la maggior parte della gente coinvolta, per quanto possa vantare eccellenti capacità e competenze nell’ambito della ricerca accademica, non ha mai veramente dovuto avere a che fare con un software della complessità del tool che mi è stato detto di sviluppare.
In altre parole, avevano bisogno di un programmatore in grado di sopperire alle loro mancanze.
Immagino che qualcun altro al mio posto avrebbe avuto qualche remore in più, ma al solo immaginare all’architettura e alle sfide che un progetto di questo tipo avrebbe comportato è stato più che sufficiente a convincermi immediatamente.
Lavoro su SymAware
L’idea che ha guidato il mio sviluppo è stata quella di realizzare un software estremamente modulare, flessibile, facile da estendere ed utilizzare.
Obiettivi piuttosto comuni a qualsiasi progetto ben pensato, ma che assumono un’importanza ancora maggiore vista la richiesta dei vari team ad avere la possibilità di lavorare in autonomia e persino in segreto, per poter essere i primi a pubblicare un qualche paper.
Si tratta di un approccio che cozza parecchio con il mio modo di fare le cose, ma a cui sto iniziando ad abituarmi.
Basandomi sullo schema fornitomi, ho realizzato una serie di classi che rappresentano i blocchi di cui è composto un agente, il quale contiene anche un suo stato interno.
Utilizzando queste informazioni, i componenti si specializzano per aggiornare lo stato dell’agente, osservando l’ambiente circostante, ricevendo comunicazioni da altri agenti e computando chi il valore di rischio, chi l’incertezza, chi il control input.
Quest’ultimo viene poi affidato ad un modello, generalmente legato ad un simulatore o un motore fisico, che aggiorna lo stato dell’agente nell’ambiente, e il ciclo ricomincia.
Uno degli aspetti di cui sono più fiero è l’essere riuscito ad integrare anche delle funzionalità asincrone, permettendo a tutti i componenti e all’ambiente di agire a frequenze diverse o persino in risposta a degli eventi, migliorando di parecchio il realismo della simulazione al costo di una complessità maggiore.
Per quanto riguarda la distribuzione, l’idea è quella di creare un namespace che racchiuderà al suo interno il package di base, che è ciò a cui ho lavorato in questi mesi, assieme ad un paio di interfacce che aggiungono un comodissimo livello di astrazione nell’interazione dell’agente all’interno del framework e il simulatore scelto.
A questo proposito sono particolarmente fiero del lavoro fatto su Prescan, poiché sono riuscito ad interfacciarmi direttamente con la loro API di simulazione in C++ realizzando dei python bindings niente male.
A tutto questo, però, si dovranno affiancare tutti i moduli sviluppati dagli altri team, anche se finora non se n’è vista nemmeno l’ombra.
Giorno zero
Il viaggio è stato piuttosto tranquillo.
Sveglia, treno, per Edimburgo, tram, aereo, atterraggio a Stoccolma, Arlanda Express e camminata fino all’albergo.
Con l’eccezione di un fastidiosissimo mal di orecchi che mi ha accompagnato per diverse ore dopo l’atterraggio, non ho davvero nulla da segnalare.
Ho sistemato le cose e, non sentendomi per nulla stanco, ci siamo organizzati rapidamente con Stefano per fare un giretto per le vie di Stoccolma.
Per prima cosa abbiamo mangiato una pizza Napoletana da Meno Male.
Poi, camminando a zonzo, abbiamo visitato Gamla stan, siamo passati di fronte al palazzo reale e al parlamento e visto tantissimi belli scorci, palazzi e viuzze che Stoccolma ha da offrire.
In alcuni casi, queste ultime, mi hanno ricordato parecchio Taormina e il suo fascino.
Abbiamo speso diverse ore parlando, rimembrando eventi passati, dai più piacevoli a quelli più curiosi.
Mi ha fatto parecchio piacere incontrare un volto noto dopo tutto questo tempo.
Primo giorno
Il luogo prestabilito per il meeting del primo giorno era l’edificio Teknikringen del KTH.
COn l’eccezione di Sadegh, questa è stata la prima volta che ho incontrato di presenza i membri del progetto che avevo avuto modo di conoscere, chi più chi meno, solo attraverso le chiamate Zoom.
All’inizio mi sono limitato a sedermi un po’ in disparte senza dare troppo nell’occhio,
Alle 09:15 circa, le presentazioni hanno avuto inizio, seguendo la scaletta che ci era stata resa nota con largo anticipo.
Tutti i team hanno mostrato i progressi ottenuti nell’anno successivo al primo incontro.
Purtroppo sento sempre la mia carenza in basi teoriche in questo ambito, perché per quanto mi sia sforzato, ho perso fin troppo spesso il filo del discorso.
A mia discolpa, ero anche alle prese con degli strani problemi di connettività del mio povero laptop.
Dopo una mattinata piena, siamo stati invitati a pranzo nel ristorante del campus. Li ci hanno serviti un semplice piatto con hamburger e verdura, unito ad un dessert. È stata anche un’ottima occasione per scambiare due chiacchiere con i presenti. Gregorio è stato spesso il bersaglio della discussione, che vertevano spesso e suo malgrado sulle sue origini Bolognesi e abitudini salutari giornaliere. Avere questo primo contatto molto umano con i presenti mi ha anche permesso di rilassarmi non poco in vista della mia presentazione, che sarebbe stata la prima del pomeriggio.
Tornati al punto di partenza ho subito provveduto a connettermi e avviare la condivisione schermo per dare il via allo show. La presentazione è andata anche meglio del previsto. Non mi sono impappinato e ho detto tutto quello che mi ero prefissato, cercando di essere più chiaro possibile. Ho anche percepito un certo interesse, sicuramente maggiore di quello che mi sarei aspettato, in particolare da parte di Sofie, che a dir la verità è stata sempre quella a fare più domande in ogni occasione. Ad essere ottimista, penso di essere davvero riuscito a trasmettere loro, almeno in minima parte, l’importanza e la tipologia del lavoro che devono svolgere.
Il meeting è andato avanti fino alle 17, con le presentazioni dei team rimanenti. Dopo di che ci è stato mostrato il laboratorio di robotica spaziale del KTH, ovviamente nulla a che vedere con quello a nostra disposizione a Catania.
Mentre gli altri si dirigevano insieme da qualche parte, io ho deciso di fare compagnia a Sofie, che si stava dirigendo al suo albergo, accompagnandola per il tragitto.
Abbiamo discusso un po’ delle problematiche che loro stanno affrontando con i robot che hanno a disposizione, obbligati ad eseguire versioni preistoriche di vari software.
Mi è anche stato chiesto qualcosa anche su cosa mi occupassi per il mio PhD, e è venuta fuori anche qualche idea bellina da mettere alla prova.
Avendo raggiunto la nostra destinazione e con un po’ di tempo da spendere, sono tornato al KTH per cercare il resto del gruppo, ma non riuscendo a trovarli mi sono limitato ad aspettare l’orario stabilito prima di raggiungere il ristorante.
La cena è stata molto più tradizionale, con carne di renna e simpatico dessert.
Fra l’altro mi sento in dovere di segnalare che, per qualche motivo, il bagno aveva uno speaker che riproduceva musica.
Un servizio che non ho mai visto da nessuna altra parte.
Anche la cena è stata un’ottima occasione per socializzare.
Seduto accanto a Dimos, abbiamo speso la maggior parte del tempo a parlare, con una scioltezza che io stesso non pensavo di avere.
A quanto pare i greci sono davvero simpatici come pensavo.
Presentazioni interessanti
- KTH: Leader-follow control inputs
- UU: Fairness in generative AI (data bias, model bias, implementation bias)
- UU: Measuring how drones impact the behaviour of people
- TU/e: Risk awareness
- MPI: ACL description of knowledge
- Siemens: test cases using Prescan and real machine
- nrl: Risk in drones
- TU/e: demo on their implementation between Prescan and a real robot
- La mia presentazione
Secondo giorno
Il secondo giorno siamo stati ospitati al dipartimento di ricerca per Control Systems.
La stanza era molto più piccola della precedente, appena sufficiente ad ospitarci.
Il primo punto all’ordine del giorno è stata una breve demo che avevo preparato per mostrare il framework che ho sviluppato all’opera, connettendomi a Prescan.
Sebbene non sia riuscito a compilare il pacchetto sul computer di uno dei dipendenti della Siemens là presente, collegandomi tramite RDP al computer in MPI ho comunque mostrato a tutti i presenti gli esempi che avevo testato e migliorato fino alla notte precedente.
Mi sono sembrati piuttosto soddisfatti.
Successivamente ci siamo divisi per team e abbiamo iniziato dei confronti a tu per tu con gli altri team, talvolta più teorici, come quello con KTH e UU, talvolta più interessanti come quello con Siemens e NRL.
Durante uno degli ultimi meeting per discutere il futuro del progetto, ho anche preparato al volo un particolare esempio che mi era stato richiesto che include un pedone controllabile in tempo reale tramite tastiera.
Buona parte dei partecipanti ha iniziato a dirigersi in aeroporto per tornare a casa, lasciando me e pochi altri a godersi la cena offerta dall’organizzazione.
Prima di ciò, però, ho approfittato del momento di distensione per parlare un po’ a tu per tu con Gregorio e farmi fare un brevissimo tour guidato della parte vecchia del campus, scoprendo anche l’esistenza di una targhetta posizionata sopra il bagno in cui ha defecato Obama una decina di anni fa.
Infine ci siamo salutati e, dopo una brevissima sosta in hotel, sono corso al ristorante francese che era stato scelto.
La cena non era male, anche se è curioso che, dopo una vita senza mai aver mangiato la cucina di quella terra, ho avuto due incontri ravvicinati con questo tipo di cibo nel giro di un paio di settimane.
Io mi sono azzardato ad ordinare una sogliola, ma temo che il mio stomaco non abbia apprezzato particolarmente l’idea.
Infine ho speso l’ultima serata a Stoccolma uscendo nuovamente con Stefano. Ci siamo incontrati di fronte al ristorante e abbiamo ripetuto la piacevolissima esperienza del giorno precedente girando per la città, scalando palazzi a cui in teoria avevamo accesso, mangiando un gelato e, in generale, parlando del più e del meno per tutto il tempo, condividendo pensieri e progetti futuri.
Presentazioni interessanti
- La mia demo
- KTH: utilizzo di spazi a più dimensioni per ottenere una closed form
- Siemens: idee su come integrare il controllo umano all’interno della simulazione
- NRL: discussione sul progresso fatto da Andrea per il controller dei droni
- UU: definizione del loro contributo all’interno del progetto
Giorno finale
Con l’evento concluso e la stanchezza che, con un ritardo ben studiato, mi assale tutta in una volta, l’ultimo giorno della mia permanenza a Stoccolma inizia con una certa, meritata, pigrizia.
Nonostante questo, ho fatto qualche programma per l’itinerario della mattinata e sono partito all’attacco.
La mia prima tappa era un bancomat dal quale ritirare qualche banconota da portare a mio padre.
Ma i miei piani sono cambiati quando mi sono imbattuto nel Paradox Museum.
Un rapido sguardo all’offerta mi ha convinto ad entrare.
Nonostante sia chiaramente pensato per un gruppo più numeroso, non me ne sono pentito assolutamente.
E, alla fine dei conti, un compagno per le foto ce lo avevo…
Dopo ciò sono andato all’AVICII experience, ma non trovando nessuno me ne sono andato dopo aver comprato una maglietta nel negozio accanto e ritirato un paio di banconote di piccola taglia.
Parlando con Enzo, però, ho deciso di dare un’altra occhiata, scoprendo che mi era sfuggito il piano inferiore.
Non sono comunque entrato, ma potrebbe tranquillamente essere una meta per un prossimo viaggio da organizzare con i ragazzi.
Infine ho fatto un salto per la “piccola” IKEA di Stoccolma, dove ho comprato un BLÅHAJ.
Perché si.
Soddisfatto ma con le gambe a pezzi, mi sono diretto alla T-Centralen per prendere il bus per l’aeroporto, concludendo così la mia avventura a Stoccolma.
Risorse
Diario di viaggio
-
14/05/2024
- 06:30 Sveglia
- 07:50 Uscita da casa
- 08:20 Arrivo in stazione
- 08:47 Partenza Treno
- 10:35 Arrivo Haymarket
- 11:10 Arrivo all’aeroporto di Edimburgo
- 13:20 Decollo aereo
- 16:20 Atterraggio aereo
- 17:15 Arrivo a Stoccolma
- 17:30 Arrivo in albergo
- 20:00 Uscita con Stefano
- 23:10 Ritorno in albergo
-
15/05/2024
- 07:00 Sveglia
- 08:10 Uscita da casa
- 08:50 Arrivo a KTH
- 09:10 Inizio meeting
- 12:30 Pranzo
- 14:00 Mia presentazione
- 17:00 Fine meeting
- 19:00 Cena
- 23:00 Ritorno in albergo
-
16/05/2024
- 07:00 Sveglia
- 08:00 Uscita da casa
- 08:50 Arrivo a KTH
- 09:00 Inizio meeting con la mia demo
- 10:00 Suddivisone in break-out rooms
- 12:30 Pranzo
- 13:30 Continuazione meeting
- 15:30 Fine meeting e visita KTH
- 18:00 Cena
- 21:00 Uscita con Stefano
- 23:10 Ritorno in albergo
-
17/05/2024
- 09:00 Sveglia
- 10:00 Uscita da casa
- 11:30 Visita Paradox Museum
- 12:30 Visita Avicii Experience
- 13:30 Visita IKEA
- 15:00 Partenza per l’aeroporto di Stoccolma
- 16:00 Arrivo all’aeroporto di Stoccolma
- 17:50 Decollo aereo
- 19:50 Arrivo a Edimburgo
- 20:45 Partenza treno da Haymarket
- 22:40 Arrivo alla stazione di Newcastle
- 23:00 Arrivo a casa