27 Luglio 2009
MAVs 3D viewer
Dopo una lunga latitanza in merito, approfitto di questo post per pubblicare un po’ di software scritto dal sottoscritto. Si tratta del visualizzatore 3D che permette di analizzare visivamente il comportamento degli aeroplanini evoluti nelle mie simulazioni. Il task di riferimento e’ per ora molto semplice. Team formati da un certo numero di MAVs devono navigare autonomamente all’interno di un ambiente tridimensionale (sgombro da ostacoli ed abbastanza ampio in termini di dimensioni), approcciare una certa area target (rappresentata in questo caso da una sfera) e, una volta raggiunta, “suicidarsi” esplodendovi all’interno.
I controller degli aerei (identici per tutti i membri di un certo team) sono semplici reti neurali embedded il cui funzionamento e’ regolato sia da informazioni locali (raccolte attraverso i sensori dei MAVs), sia da informazioni globali (si ipotizza una sorta di sistema satellitare in grado di comunicare in real-time con gli aeroplanini). Sto ancora testando diverse architetture in maniera tale da capire quale sia la migliore.
Detto cio’, qui sotto e’ possibile scaricare i sorgenti necessari per compilare il viewer. Tenete presente che non ho provato a compilarlo su alcuna macchina che non fosse il mio desktop del laboratorio o il mio portatile. Queste, ad ogni modo, le caratteristiche che dovrebbero essere maggiormente rilevanti: Mac OS X 10.5.7, XCode 3.1.3, Qt 4.5.1, Irrlicht 1.4.2, NNFW 1.1.5. Se qualcuno di voi avesse voglia di provare la compilazione su Windows ed eventualmente raccontarmi come e’ riuscito ad ottenerla, di sicuro non mi offenderei (all’interno del pacchetto e’ presente un file .pro di QMake che dovrebbe rendere relativamente agevole il tutto).
Nell’archivio trovate anche una directory chiamata individuals, che contiene al suo interno i files XML relativi a 7 tipi di architetture diverse gia’ evolute (Individual_00.xml e’ legato all’architettura 0, Individual_01.xml all’architettura 1, ecc…). Una rappresentazione grafica delle 7 architetture neurali testate e’ contenuta in questo file.
Per chi fosse curioso, i risultati preliminari del test tra questi controllers sono riassunti nella tabella qui sotto (i valori rappresentati sono calcolati come medie di 10 run da 5,000 generazioni ciascuno).
Il viewer crea automaticamente uno script Matlab il quale permette di visualizzare le traiettorie dei singoli MAVs (massimo 4) durante ciascuno dei test effettuati. Funzionalita’ che mi piace un sacco, devo ammetterlo! Nell’immagine qui sotto trovate un esempio, decisamente meglio riuscito rispetto a quello che avevo presentato qualche giorno fa.
Il software non e’ sicuramente immune da bug, imprecisioni, non-ottimizzazioni, ecc. Chiunque volesse spulciare il codice e segnalarmi quelle che e’ riuscito a trovare, ancora una volta, sarebbe il benvenuto.




Comments(6)



Premetto che non conosco irrlicht e non ho mai programmato per mac, mi scuso se sparo qualche cavolata ma mancano i relativi new/delete in diversi punti del codice.
Premetto qualcosa anche io, ovvero che il viewer l’ho tirato su in quattro e quattr’otto partendo dall’engine che utilizzo per l’evoluzione (quello molto curato ed ottimizzato il piu’ possibile), quindi ci saranno sicuramente erroracci sparsi un po’ ovunque. Mi pare strano possano pero’ mancare dei new, visto che l’applicazione compila e non mi ha dato ad oggi nessun tipo di problema in run-time. Puoi essere piu’ specifico a riguardo?
PS: ovviamente grazie!
Ciao, ho dato un’occhiata molto veloce al codice ieri sera, più che mancare i new mancano i relativi delete, almeno io non ne ho visto manco uno. Se ho più tempo mi guardo il codice con più calma, per la compilazione però non se ne parla visto che non uso ne irrlicht ne mac. Poi ti faccio sapere più nel dettaglio.
Irrlicht, cosi’ come tutte le altre librerie usate, sono open-source e multi-piattaforma…
Ciao, ho provato a scaricare il sorgente e a compilarlo sotto Win: per compilare compila, ma quando lancio mi dice che non trova nnfw.dll. Il percorso per le librerie NNFW è nel path, però guardando nella dir “bin”, vedo che esiste un file di libreria per singola o doppia precisione, ma non quello che cerca. Hai idea di quale possa essere il problema? Ho provato anche a fare un trick: rinominare uno dei due files in “nnfw.dll”, ma dopo ha qualche lamentela su QtCore4.dll (io uso le 4.5.0, se riesco cerco di fare l’upgrade alla microversione successiva che hai usato tu). Spero di riuscire a farlo girare, spulciando il codice e leggendo un pò sul tuo blog sembra interessante!
A presto, Andrea
Ciao Andrea. Si’, il trucco fondamentalmente e’ quello, ovvero rinominare le .lib e .dll (compilate in release mode e precisione singola) in nnfw.*.
Purtroppo non sono esperto di programmazione su Windows, ma so che le ultime versioni delle NNFW avevano qualche problema. Magari potresti provare con la versione 1.1.3, oppure scaricando i sorgenti e compilandole ex novo.