SlideShare a Scribd company logo
1 of 57
Download to read offline
Universit`a degli Studi di Trieste
Dipartimento di Ingegneria e Architettura
Corso di Studi in Ingegneria Elettronica ed Informatica
Tesi di Laurea Magistrale
Promuovere e misurare la biodiversit`a nei
soft robot modulari evolvendo corpo e
controllore
Laureando:
Marco ROCHELLI
Relatore:
prof. Eric MEDVET
Anno Accademico 2020/2021
Alla mia mamma Elena e al mio pap`a Paolo
Indice
1 Introduzione 3
2 Background 4
2.1 Voxel-Based soft robots . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Voxel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.2 VSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.3 Controllore . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.4 Sensori . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.5 Compito . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.6 Simulazione . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 CMA-ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.1 Principio di massima probabilit`a . . . . . . . . . . . . 8
2.2.2 Percorsi evolutivi . . . . . . . . . . . . . . . . . . . . . 8
2.2.3 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Terminologia . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Rappresentazione 12
3.1 Corpo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.1 Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.2 Gaussiana . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Controllore . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2.1 Omogeneo . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2.2 Eterogeneo . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Sensori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.1 Velocit`a . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.2 Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.3 Tocco . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.4 Posizione . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4 Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4 Esperimenti e risultati 17
4.1 Note implementative . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Fase esplorativa . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2.1 Risultati fase esplorativa . . . . . . . . . . . . . . . . . 20
4.2.2 Video . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1
4.2.3 Conclusioni fase esplorativa . . . . . . . . . . . . . . . 25
4.3 Fase finale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.3.1 Resistenza ai danni . . . . . . . . . . . . . . . . . . . . 27
4.3.2 Biodiversit`a . . . . . . . . . . . . . . . . . . . . . . . . 27
4.3.3 Risultati fitness . . . . . . . . . . . . . . . . . . . . . . 30
4.3.4 Risultati resistenza ai danni . . . . . . . . . . . . . . . 39
4.3.5 Conclusioni fitness e resistenza ai danni . . . . . . . . . 43
4.3.6 Risultati biodiversit`a . . . . . . . . . . . . . . . . . . . 43
4.3.7 Conclusioni biodiversit`a . . . . . . . . . . . . . . . . . 51
5 Conclusioni 53
Riferimenti bibliografici 54
2
1 Introduzione
In molti ambienti naturali sono presenti esseri viventi che svolgono compiti
con successo, pur essendo diversi per forma e comportamento. Questa bio-
diversit`a `e ci`o che ha reso la vita nella sua interezza qualcosa in grado di
adattarsi a cambiamenti imprevisti e distruttivi.
Essere in grado di riprodurre la biodiversit`a in agenti non biologici, pur
ottimizzandoli per un dato compito, pu`o migliorare la loro applicabilit`a in
scenari dove l’intervento umano in risposta a cambiamenti inaspettati non `e
possibile.
In questa tesi consideriamo i soft robot modulari chiamati in inglese
Voxel-based Soft Robot (VSR). Questi rappresentano una tipologia di robot
composti da materiali morbidi che permette una grande libert`a nel design
del corpo e del controllore dei robot. Questo `e molto promettente per quello
che riguarda la biodiversit`a delle soluzioni. Purtroppo per`o questa grande
libert`a porta ad una maggiore complessit`a in fase di design.
In questo lavoro proponiamo e confrontiamo pi`u rappresentazioni per il
genotipo dei robot che permettono, attraverso un algoritmo evolutivo, di ot-
timizzare contemporaneamente il corpo e il controllore dei VSR. Nonostante
lo spazio di ricerca sia molto grande `e possibile ottenere soluzioni in grado
di svolgere con successo il compito della locomozione.
Inoltre proponiamo un modo per caratterizzare in maniera sistematica i
robot ed i loro comportamenti in termini di postura e tipologia di andatura
applicandolo alle soluzioni ottenute.
Infine mostriamo che, utilizzando una delle rappresentazioni da noi pro-
poste, l’evoluzione `e in grado di trovare pi`u soluzioni efficaci e diverse tra di
loro per il compito della locomozione. Ci`o equivale a scoprire e caratterizzare
la biodiversit`a nei VSR.
3
2 Background
2.1 Voxel-Based soft robots
La Soft robotics [1][2] `e un campo della robotica che studia robot composti
da materiali morbidi. I Soft robot possono eseguire compiti difficili da com-
pletare per i robot tradizionali [3]. Questo `e possibile grazie alla loro natura
flessibile che dona loro “Infiniti gradi di libert`a” [4]. Questo potenziale per`o
si ottiene al costo di una maggiore complessit`a in fase di design.
Un tipo di soft robots particolarmente interessante `e quello dei Voxel-
based soft robot (VSR)[5]. I VSR sono composti da diversi blocchi morbidi,
chiamati voxel, che possono cambiare il loro volume. Il modo in cui i voxel
sono assemblati tra di loro definisce il corpo del VSR, mentre la legge con cui
i voxel cambiano il loro volume nel corso del tempo definisce il controllore.
I VSR sono particolarmente interessanti dal punto di vista dell’ottimizza-
zione [6]. Purtroppo per`o pu`o essere difficile studiare i diversi comportamenti
che possono nascere dal simultaneo comportamento di diversi blocchi. La lo-
ro natura modulare per`o permette di affrontare i problemi di ottimizzazione
da diversi punti di vista e a diversi livelli di complessit`a. Ci`o rappresenta un
chiaro vantaggio.
Per questa tesi `e stato usato un software in grado di simulare uno o pi`u
VSR chiamato 2D-VSR-Sim [7] sviluppato presso l’Universit`a degli Studi
di Trieste. Questo software permette di simulare versioni bidimensionali
dei robot. La simulazione `e discreta nel tempo e continua nello spazio, la
posizione di ogni voxel costituente il VSR `e aggiornata ad ogni intervallo di
tempo secondo il modello meccanico ed il controllore del VSR. Il modo in
cui le componenti di un VSR vengono modellate e simulate viene spiegato di
seguito.
2.1.1 Voxel
Un voxel `e un blocco bidimensionale morbido modellato con:
• Quattro corpi rigidi posti ai quattro angoli del blocco.
• Delle molle collegate tra i corpi rigidi che costituiscono un’impalcatura.
• Dei cavi che collegano tra di loro i corpi rigidi.
4
La massa del voxel `e suddivisa tra i quattro corpi rigidi mentre molle e cavi
hanno massa nulla. I cavi fungono da limite massimo per la distanza che
due corpi possono avere. La maggior parte delle propriet`a del voxel possono
essere configurate per via programmatica.
`E possibile selezionare la lunghezza del lato del voxel come anche le di-
mensioni dei quattro corpi rigidi. L’utente pu`o anche specificare il tipo di
impalcatura, scegliendo tra un insieme predefinito di possibilit`a, e pu`o sce-
gliere se le cime congiungenti le masse devono essere presenti o meno. Inol-
tre `e possibile variare il valore dei parametri fisici usati dal simulatore come
coefficiente d’attrito e coefficiente di restituzione.
Scegliendo opportunamente il valore dei parametri `e possibile impattare
sulle caratteristiche del materiale costituente i voxel.
La Figura 1 mostra come viene modellato un voxel:
Figura 1: modello del voxel
In grigio sono rappresentati i quattro corpi rigidi. Il nero rappresenta i
cavi mentre le molle costituenti l’impalcatura sono in blu, verde, arancione e
rosso.
2.1.2 VSR
Un VSR `e modellato come una collezione di voxel organizzati in una griglia
bidimensionale.
Ogni voxel `e rigidamente collegato ai voxel sopra, sotto, a destra e a si-
nistra. La connessione tra due voxel `e modellata con due giunti rigidi che
5
connettono i centri delle masse sul lato adiacente. Il giunto non permette ro-
tazioni delle masse attorno ai punti di connessione n´e variazioni della distanza
tra i centri delle masse (`e come se i due voxel fossero saldati assieme).
La Figura 2 mostra il modello meccanico di un VSR:
Figura 2: modello del VSR
Le masse, le molle e le cime sono di colore grigio, le saldature rigide che
connettono tra di loro i voxel sono di colore rosso.
Il VSR pu`o essere composto da voxel aventi settaggi dei parametri diversi,
il che equivale a dire che pu`o essere composto da voxel fatti di materiali
diversi.
2.1.3 Controllore
Il modo in cui un VSR si comporta `e determinato da un controllore. Quando
`e invocato il controllore determina per ogni voxel i il valore di controllo da
applicare fi ∈ [−1, 1]. Il valore di controllo `e applicato dal simulatore fisico
e causa una variazione dell’area dei voxel e di conseguenza un cambiamento
nella forma del VSR. Un controllore pu`o avere accesso a diversi sensori per
ogni voxel dando al VSR la capacit`a di percepire il suo stato e l’ambiente
circostante.
Il controllore pu`o essere implementato dall’utilizzatore con grande libert`a
per rispondere a diverse esigenze. Per esempio i controllori realizzabili spa-
ziano da quelli in cui fi dipende solo dall’istante di tempo corrente a quelli
in cui fi `e il risultato di un’elaborazione non banale di stato corrente e stati
6
passati del VSR e dell’ambiente. Un esempio del secondo caso pu`o essere un
controllore basato su una rete neurale con architettura definita dall’utente
che ad ogni invocazione calcola l’output a partire da degli input.
2.1.4 Sensori
La configurazione di sensori di un VSR permette al robot di percepire se
stesso e l’ambiente circostante [10]. L’output della percezione pu`o influire
sul comportamento del VSR in quanto viene utilizzato dal controllore per
determinare i valori di controllo. La configurazione di sensori consiste in 0
o pi`u sensori per ognuno dei voxel che compongono il corpo del VSR. Ogni
sensore `e di un tipo e ogni voxel pu`o avere solo un sensore di quel tipo. Ogni
sensore produce ad ogni intervallo di simulazione una lettura s ∈ D ⊆ Rp
con D il dominio del sensore e p la dimensionalit`a del tipo di sensore.
2.1.5 Compito
Nel corso della simulazione i VSR devono risolvere un compito loro assegnato.
In generale un compito `e una funzione che processa un input e restituisce un
output. In questo caso l’input `e rappresentato dal robot e l’output `e una
misura di quanto quel robot abbia completato quel compito.
In 2D-VSR-Sim `e gi`a implementato un compito, la locomozione, in cui
l’obbiettivo del robot `e quello di avanzare il pi`u possibile. Questo `e un
compito su cui la maggior parte degli studi precedenti si sono concentrati
[7][10].
Diversi aspetti del compito possono essere configurati tra cui: la durata
della simulazione, la forma del terreno e il metodo di misura dell’avanzamen-
to. Questo ultimo parametro permette di rendere l’ottimizzazione del VSR
un problema multi-obbiettivo. Esempi di misure che possono essere usate so-
no la velocit`a del robot, la velocit`a relativa (una misura che tiene conto anche
delle dimensioni effettive del VSR) e la media della somma del quadrato dei
segnali di controllo dei voxel.
2.1.6 Simulazione
2D-VSR-Sim utilizza dyn4j, un motore fisico gi`a esistente, per risolvere il
modello meccanico composto dal VSR. Il VSR `e soggetto alle forze generate
dall’attuazione determinata dal suo controllore e dall’interazione con altri
corpi (il terreno).
7
Il motore fisico pu`o essere configurato in vari aspetti tra cui il pi`u im-
portante `e forse l’intervallo di tempo ∆t usato per risolvere numericamen-
te il modello. Per evitare instabilit`a numeriche `e importante scegliere ∆t
sufficientemente piccolo. Il valore di default di ∆t `e di 1/60 s.
Le performance della simulazione, definite come il numero di passi che
possono essere simulati in un istante di tempo, sono influenzate quasi esclu-
sivamente dal numero di voxel da simulare. Il tempo necessario per effettuare
una simulazione infatti aumenta linearmente con il numero di voxel.
2.2 CMA-ES
L’ottimizzazione numerica `e una branca della matematica applicata che stu-
dia teoria e metodi per la ricerca dei punti di massimo e minimo di una
funzione matematica all’interno di un dominio specificato.
Nel corso degli esperimenti `e stato usato un particolare metodo di ottimiz-
zazione numerica chiamato Covariance matrix adaptation evolution strategy
(CMA-ES) [8].
Questo algoritmo sfrutta due elementi fondamentali per trovare la solu-
zione ottima nello spazio di ricerca: il principio di massima probabilit`a e i
percorsi evolutivi.
2.2.1 Principio di massima probabilit`a
Il principio di massima probabilit`a punta ad aumentare la probabilit`a di
successo delle soluzioni candidate Sk ad ogni passo.
La media delle soluzioni candidate mk `e aggiornata in maniera tale che
la probabilit`a di ottenere nuove Sk di successo sia massimizzata.
La matrice di covarianza C della distribuzione invece `e aggiornata per
massimizzare la probabilit`a di effettuare i passi di ricerca successivi nella
direzione corretta.
Questi aggiornamenti possono essere interpretabili come uno spostamento
nella direzione del gradiente massimo.
2.2.2 Percorsi evolutivi
Nel corso dell’evoluzione vengono salvati due percorsi calcolati a partire dalla
media mk. Questi percorsi contengono informazioni sulla correlazione tra
8
passi successivi nel corso dell’evoluzione. Per esempio, se due passi successivi
sono condotti nella stessa direzione, il percorso evolutivo si allunga.
Un percorso pc `e usato per l’adattamento della matrice delle covarianze e
serve a facilitare una convergenza pi`u rapida dell’algoritmo.
Il secondo percorso pσ `e usato per effettuare un controllo sulla dimensione
dei passi e serve a prevenire una convergenza prematura dell’algoritmo ad un
massimo locale.
2.2.3 Algoritmo
Di seguito viene illustrato l’algoritmo di CMA-ES.
Algorithm 1: CMA-ES
set λ;
initialize m, σ, C = I, pσ = 0, pc = 0;
while not terminate do
// sample λ solutions and evaluate them
for i in 1 . . . λ do
xi = sample multivariate normal (mean = m, covariance
matrix = σ2
C);
fi = fitness (xi)
// sort solutions
x1...λ ← xs(1)...s(λ) with s(i) = argsort(f1...λ, i)
m
′
= m
// move mean to better solutions
m ← update m(x1, . . . , xλ)
// update isotropic evolution path
pσ ← update pσ (pσ, σ−1
C−1/2
(m − m
′
)
// update anisotropic evolution path
pc ← update pc (pc, σ−1
(m − m
′
, ∥pσ∥)
// update covariance matrix
C← update C (C, pc, (x1 − m
′
)/σ, . . . , (xλ − m
′
)/σ)
// update step size using isotropic path length
σ ← update σ (σ, ∥pσ∥)
return m or x1
L’ordine delle cinque assegnazioni `e importante per il corretto funziona-
mento dell’algoritmo; m deve essere aggiornato per primo, pσ e pc devono
essere aggiornati prima di C, σ deve essere aggiornato per ultimo.
9
Dato uno spazio di ricerca di dimensione n e la k-esima iterazione le
cinque variabili di stato sono:
• mk ∈ Rn
`e la media della distribuzione e la attuale soluzione favorita
al problema di ottimizzazione.
• σk > 0 la dimensione del passo.
• Ck una matrice delle covarianze simmetrica definita positiva di dimen-
sione n × n con C0 = I.
• pσ e pc i due percorsi evolutivi inizializzati a zero.
L’iterazione comincia campionando λ > 1 soluzioni candidate xi ∈ Rn
prese da una distribuzione normale multi-variata. Successivamente le solu-
zioni candidate vengono valutate secondo la funzione obbiettivo f : Rn
→ R
e ordinate in base alla loro fitness. La nuova media viene calcolata come
una media pesata delle soluzioni candidate. Il peso dipende dalla posizione
della soluzione candidata nell’ordinamento secondo la fitness. Un esempio
pu`o essere di calcolare la media usando solo la migliore met`a delle soluzioni
candidate ponendo a zero i pesi delle rimanenti. Successivamente vengono
aggiornati i percorsi evolutivi tenendo in considerazione la nuova media otte-
nuta. Per ultimi vengono aggiornati C e σ tenendo in considerazione i valori
appena ottenuti di pc e pσ. Il valore di σk `e incrementato se ∥pσ∥ supera un
valore atteso, decrementato altrimenti. Il numero di soluzioni candidate λ di
ogni iterazione non `e determinato a priori e pu`o variare in un range molto
ampio cambiando da un’iterazione all’altra.
Una particolarit`a di questo algoritmo `e che non garantisce la monotonicit`a
crescente del valore della fitness. Questo diventer`a evidente osservando i
grafici della fitness mostrati in seguito.
2.3 Terminologia
Al fine di comprendere quello che verr`a presentato nei seguenti capitoli `e
necessario conoscere il significato attribuito ad alcuni termini. Ecco una breve
lista di vocaboli con relative definizioni che verranno utilizzati in seguito:
• Genotipo: una struttura dati a partire dalla quale `e possibile costruire
il fenotipo.
10
• Rappresentazione del genotipo: come `e composto internamente il ge-
notipo e come ogni sua parte trasporta l’informazione necessaria a
costruire il fenotipo.
• Mappatura: come `e stato scelto di trasformare il genotipo nel fenotipo.
• Fenotipo: una soluzione candidata per il problema preso in considera-
zione. Nel nostro caso il fenotipo `e rappresentato da un VSR.
• Fitness: una misura di quanto il fenotipo `e in grado di risolvere un
determinato compito.
11
3 Rappresentazione
Nel corso della tesi sono state usate diverse rappresentazioni per il genotipo
dei VSR. `E importante conoscerle per comprendere appieno gli esperimenti
svolti. In tutti i casi il genotipo era composto da una lista di double la cui
parte iniziale conteneva le informazioni sulla forma del robot e la parte finale
le informazioni sul controllore. Sono state usate due diverse rappresentazioni
per il corpo e due diverse rappresentazioni per il controllore del VSR. En-
trambe le rappresentazioni presentavano un certo grado di ridondanza [9].
Ci`o significa che esistono zone nello spazio del genotipo dove genotipi diversi
corrispondono allo stesso fenotipo. Inoltre abbiamo utilizzato diversi tipi di
sensori e abbiamo variato un parametro che influisce sulla capacit`a dei voxel
di comunicare tra di loro. Il tutto viene spiegato di seguito.
3.1 Corpo
Per il corpo sono state usate due rappresentazioni diverse: quella a bit e quella
gaussiana. La prima `e basata su una griglia di valori reali che definiscono la
presenza o no di un voxel in quella posizione della griglia, la seconda si basa
su cinque gaussiane bi-variate la cui somma calcolata in ogni cella della griglia
determinava la presenza o no del voxel in quella posizione. In entrambe le
rappresentazioni la dimensione della griglia `e fissata a priori. Chiamiamo
w ed h rispettivamente la sua larghezza e la sua altezza. Questi due valori
definiscono le dimensioni massime che il VSR pu`o avere.
3.1.1 Bit
Nella rappresentazione a bit i primi n valori del genotipo, (con n = w × h)
possono assumere valori double compresi tra −1 e 1. Questi valori vengono
usati per creare una matrice di dimensioni pari alla massima dimensione del
robot. La matrice viene generata a partire dalla sequenza nel seguente modo:
• dati g0, g1, . . . , gn i valori del genotipo
• posta M una matrice di dimensioni w × h
Mi,j = gi+(j·w)
Dopo essere stata creata, la matrice M viene trasformata nel seguente
modo: per ogni elemento della matrice, se il suo valore `e positivo diventa
12
1, altrimenti diventa 0. Successivamente viene trovata la pi`u grande isola di
elementi con valore 1 4-connessi tra di loro all’interno di M e vengono posti
a zero tutti gli elementi della matrice non appartenenti a quell’isola. Questo
passaggio `e necessario per ottenere robot composti da un unico gruppo di
voxel collegati tra di loro. Il corpo del VSR viene creato a partire dalla
matrice cos`ı ottenuta nel seguente modo: se il valore nella corrispondente
posizione della matrice `e 0 il voxel non `e presente, se il valore `e 1 invece il
voxel c’`e.
3.1.2 Gaussiana
Nella rappresentazione gaussiana i primi venticinque valori del genotipo sono
i parametri di cinque gaussiane bi-variate. Ogni gaussiana `e rappresentata
dai seguenti parametri:
• w ∈ [−1, 1] = peso della gaussiana
• µx ∈ [0, 1] = media lungo l’asse x
• µy ∈ [0, 1] = media lungo l’asse y
• σx ∈ [0, 1] = deviazione standard lungo l’asse x
• σy ∈ [0, 1] = deviazione standard lungo l’asse y
Queste cinque gaussiane vengono usate per costruire una matrice M di di-
mensioni w × h. La matrice viene costruita nel seguente modo: vengo-
no calcolati i valori normalizzati di ogni gaussiana utilizzando la seguente
formula:
f(i, j) =
1
2πσiσj
· e
−1
2
·
⎛
⎝
(︃ i
w −µi
σi
)︃2
+
(︄
j
h
−µj
σj
)︄2
⎞
⎠
Con i e j = coordinate della cella della matrice.
I cinque valori ottenuti vengono poi sommati tra di loro e si ottiene un
numero reale pi,j. La matrice M viene riempita nel seguente modo Mi,j = pi,j.
Anche in questo caso viene trovata la pi`u grande isola di elementi con valore
1 4-connessi all’interno di M e vengono posti a zero tutti gli elementi della
matrice non appartenenti a quell’isola. Questo passaggio `e necessario per
ottenere robot composti da un unico gruppo di voxel collegati tra di loro. Il
corpo del VSR viene costruito a partire da questa matrice, se il valore `e 1 il
voxel nella corrispondente posizione `e presente, altrimenti no.
13
3.2 Controllore
Il controllore, basato su una rete neurale, calcola ad ogni invocazione l’out-
put della rete. Ogni voxel `e dotato della propria rete neurale come in [10].
L’architettura delle reti neurali `e sempre la stessa per ogni voxel. Tutti gli
esperimenti sono stati svolti usando reti neurali con zero strati interni. Il
numero di input, quello di output e il conseguente numero di pesi della re-
te `e definito implicitamente dalla configurazione sensoristica e dal numero
di signals, un parametro che determina la capacit`a dei voxel di comunicare
tra di loro. Entrambi sono passati come parametri in fase di creazione del
controllore. Il valore di ogni singolo peso invece viene definito dal processo
evolutivo da parte di CMA-ES. Nel corso degli esperimenti sono stati usati
due tipi di controllore diverso chiamati omogeneo ed eterogeneo. Di seguito
spiego le differenze tra i due.
3.2.1 Omogeneo
Nel controllore omogeneo ogni rete neurale ha gli stessi pesi delle altre. Que-
sto equivale ad addestrare una singola rete neurale e copiarla dentro a tutti
i voxel. La lunghezza del genotipo del robot in questo caso `e data dai valori
per la rappresentazione del corpo pi`u p numeri reali (con p pari al numero di
pesi della rete neurale).
dimensioneGenotipo = w · h + p
3.2.2 Eterogeneo
Nel controllore eterogeneo ogni rete neurale ha i suoi pesi. Questi possono
essere uguali o diversi da quelli delle altre reti neurali appartenenti ad altri
voxel. La lunghezza del genotipo del robot per il controllore eterogeneo `e
data dai valori per la rappresentazione del corpo pi`u un numero p di pesi
della rete neurale moltiplicato per il numero massimo di voxel da cui pu`o
essere composto il robot.
dimensioneGenotipo = w · h + p · w · h
Il genotipo nel caso di controllore eterogeneo quindi `e considerevolmente pi`u
grande di quello a controllore omogeneo.
14
3.3 Sensori
I voxel possono essere creati scegliendo una configurazione di sensori che
deve essere uguale per ogni voxel del VSR. I sensori possono essere scelti
da un insieme di sensori gi`a disponibili all’interno di 2D-VSR-Sim o possono
essere implementati permettendone la personalizzazione in base alle esigenze.
I sensori gi`a disponibili utilizzati nel corso degli esperimenti sono velocit`a,
area e tocco.
Abbiamo poi implementato un nuovo sensore quello di posizione. Ab-
biamo scelto di implementare questo nuovo sensore per poterlo utilizzare in
VSR dotati di controllore omogeneo. Il motivo `e il seguente. Se il controllore
`e eterogeneo ogni voxel ha implicitamente la capacit`a di comportarsi in ma-
niera diversa in base alla sua posizione all’interno del robot. Questo accade
perch´e ogni voxel ha una rete neurale diversa che si `e evoluta proprio per
quella posizione. Ci`o non accade se il controllore `e omogeneo. Dotando per`o
i voxel dei VSR con controllore omogeneo di un sensore di posizione `e possi-
bile colmare questa disparit`a. Con questo sensore infatti la rete neurale pu`o
processare in maniera diversa gli input al variare della posizione del voxel
all’interno del robot.
3.3.1 Velocit`a
Quando invocato, il sensore di velocit`a restituisce la velocit`a del centro di
massa del voxel scomposta lungo gli assi x e y solidali al voxel (cio`e gli assi
ruotano se ruota il voxel). Il centro di massa di ogni voxel `e calcolato come
centro di massa delle quattro masse poste ai vertici del voxel.
3.3.2 Area
Il sensore di area restituisce un valore che `e il rapporto tra l’area del voxel
all’istante in cui il sensore viene invocato e la sua area a riposo.
3.3.3 Tocco
Il sensore di tocco ritorna un valore pari a uno se il voxel `e in contatto
con altri corpi non appartenenti al robot, come per esempio il terreno, zero
altrimenti.
15
3.3.4 Posizione
Il sensore di posizione ha come output due valori che rimangono costanti
dall’inizio alla fine della simulazione. I valori ritornati sono le coordinate i e
j del voxel nella griglia del corpo del VSR. Questi valori sono normalizzati
rispetto alle dimensioni massime del VSR.
3.4 Signals
Ogni voxel pu`o comunicare con i voxel adiacenti inviandogli zero o pi`u segnali.
Ogni segnale `e un numero reale che i voxel possono scambiarsi tra di loro ad
ogni invocazione del controllore. Un segnale viene generato come output di
una rete neurale e alla seguente invocazione del controllore diventa un input
della rete neurale adiacente a quel lato del voxel. Il numero di signals si
riferisce al numero di segnali per ogni lato del voxel che le reti neurali possono
scambiarsi tra di loro ad ogni invocazione del controllore. Ci`o permette, nel
caso i signals siano uno o pi`u, di avere un sistema retro-azionato. Nel caso i
signals siano zero invece i voxel non sono in grado di comunicare tra di loro.
Sono stati condotti esperimenti con zero, uno, due e tre signals.
16
4 Esperimenti e risultati
Le domande a cui volevamo inizialmente rispondere erano:
• `E possibile evolvere contemporaneamente corpo e controllore di un VSR
per completare con successo il compito della locomozione?
• Rappresentazione, controllore e configurazione di sensori in che modo
influiscono sulla fitness delle soluzioni?
• Che impatto hanno rappresentazione, controllore e configurazione di
sensori sulla resistenza ai danni o alle modifiche che i VSR potrebbero
subire?
Per rispondere a questi interrogativi abbiamo condotto 2 cicli di esperimenti
per un totale di 46 esperimenti. Questi cicli di esperimenti sono strettamente
legati alle due fasi in cui pu`o essere divisa questa ricerca: quella esplorativa
e quella finale.
All’interno di ogni esperimento la configurazione di sensori, come anche
le propriet`a fisiche, erano le stesse per tutti i voxel. Tutti gli esperimenti
sono stati fatti usando un terreno piatto all’interno della simulazione.
4.1 Note implementative
Per la preparazione degli esperimenti `e stato utilizzato il linguaggio Java
e l’IDE intellijIDEA. Sono stati usati due progetti, il simulatore di VSR
2D-VSR-Sim e il framework evolutivo Jgea, creati rispettivamente presso i
laboratori Evolutionary Robotics and Artificial Life Lab1
e Machine Lear-
ning Lab2
dell’Universit`a degli Studi di Trieste. Questi sono stati integrati
all’interno di un terzo progetto chiamato VSREvolution utilizzando Maven.
Per il controllo di versione sono stati usati Git e GitHub. Le versioni di
VSREvolution utilizzate per svolgere questi esperimenti sono disponibili a:
https://github.com/MarcoRochelli/Co-evolution.git
All’ interno di VSREvolution scrivevo le classi per il mapping tra genotipo
e fenotipo del robot e tutto il necessario per lanciare gli esperimenti. Di
seguito gli esperimenti venivano lanciati da linea di comando con comandi
Slurm ed eseguiti in parallelo grazie a quest’ultimo su un cluster di nodi. I
1
https://erallab.inginf.units.it
2
https://machinelearning.inginf.units.it
17
parametri per l’esperimento venivano passati attraverso un file sh caricato
precedentemente sul super-computer. Due sono i sistemi utilizzati nel corso
di questa tesi: il Bura e il Galileo. Senza la possibilit`a di usarli questo lavoro
non sarebbe stato possibile.
Il Bura `e un cluster di nodi con sede a Fiume costruito dalla Bull. Il
supercomputer `e costituito da 288 nodi di computazione ognuno dei quali
dotato di due Intel Xeon E5-2690v3 da 12 core per un totale di 24 core
per nodo e 6912 core complessivi. Ogni nodo dispone di 64 GB di RAM e
320 GB di spazio su disco per un totale di 18 TB di RAM e 95 TB di spazio su
disco. Sono anche disponibili 4 nodi GPGPU dotati di due nVidia Tesla K40
ciascuno e 2 nodi SMP con 256 core e 12 TB di RAM. I nodi sono connessi
tra di loro con connessioni ad alta velocit`a e bassa latenza InfiniBand FDR.
L’accesso avviene attraverso due nodi usati anche per compilare e installare
il software. Sul cluster gira Red Hat Enterprise Linux 7 e il workload manger
Slurm.
Il Galileo invece si trova a Bologna ed `e una partizione del cluster CINE-
CA HPC gestito dal CINECA. Attualmente il sistema, realizzato da IBM,
dispone di 1022 nodi di computazione ognuno dotato di due Intel Xeon E5-
2697 v4 da 18 core ciascuno per un totale di 36 core per nodo e 26 572 core
totali. Ogni nodo dispone di 128 GB di memoria RAM. Sono poi disponibili
60 nodi dotati di due gpu nVidia k80 ciascuno e 2 nodi dotati di due nVidia
K100 ciascuno. Il login avviene attraverso 8 nodi, come anche le operazioni
di compilazione e installazione del software. Il cluster usa Linux ed i nodi
sono connessi tra di loro con connessioni Intel OmniPath OPAv10.6 dotate
di 100 Gbit s−1
di banda.
A partire da ogni simulazione venivano generati due file csv: quello delle
statistiche e quello con la versione serializzata del robot. Il file delle statistiche
conteneva informazioni sull’esperimento come rappresentazione, controllore,
dimensioni massime, configurazione sensoristica, numero del run, tempo tra-
scorso dall’inizio dell’esperimento e iterazioni di CMA-ES. Erano poi presenti
informazioni riguardo la dimensione del genotipo dei robot, la fitness e altre
metriche ad essa legate e le dimensioni effettive del VSR. Ad ogni iterazio-
ne di CMA-ES veniva scritta una nuova riga contenente le informazioni sul
miglior robot tra quelli simulati in quella generazione.
Il file con la serializzazione del robot conteneva solo un piccolo sottoin-
sieme dei dati presenti nel file delle statistiche e una versione serializzata
del miglior robot della generazione appena simulata per ogni riga. A partire
da questo file era possibile creare un video dei robot sfruttando una classe
18
presente in 2D-VSR-Sim.
Una volta conclusi gli esperimenti e scaricati i risultati conducevo le ana-
lisi dei dati prodotti utilizzando RStudio e il linguaggio R per creare i grafici
e le tabelle mostrate in seguito. Sono state usate diverse librerie aggiuntive
all’interno di RStudio tra cui dplyr, ggplot2, tidyr e purrr.
4.2 Fase esplorativa
Nella fase esplorativa abbiamo fatto degli esperimenti con lo scopo di verifi-
care la fattibilit`a di futuri esperimenti e per individuare le possibili proble-
matiche fino ad allora ignote.
Le domande a cui questi esperimenti volevano rispondere sono:
1. `E possibile evolvere in contemporanea corpo e controllore di un VSR?
2. Come la rappresentazione del corpo influisce sulla fitness e le soluzioni
trovate?
3. Il controllore influisce sulla fitness e le soluzioni trovate?
4. Quanto `e importante la configurazione sensoristica e come impatta sulla
fitness e lo spazio delle soluzioni?
5. Dotando i voxel dei VSR con controllore omogeneo di sensori di posi-
zione la fitness migliora?
Per rispondere a queste domande abbiamo condotto un totale di 24 esperi-
menti per esplorare tutte le combinazioni dei seguenti parametri:
• Rappresentazione: gaussiana e bit.
• Dimensione massima robot: 5 × 5 e 10 × 10.
• Controllore: omogeneo, eterogeneo e omogeneo con sensori di posizione.
• Sensori: velocit`a+area e velocit`a+area+tocco.
• Signals: uno.
19
Ognuno di questi esperimenti `e stato lanciato 10 volte, chiamate run.
Ogni volta che l’esperimento veniva ripetuto i VSR erano inizializzati in
maniera pseudo-casuale, cos`ı facendo ciascuna iterazione era diversa dalle
precedenti.
In seguito l’algoritmo di CMA-ES ottimizzava la fitness per un totale
di 10 000 valutazioni della fitness, d’ora in poi chiamate nascite. La fitness
utilizzata era la distanza relativa, definita come la distanza percorsa dal robot
divisa per il massimo tra la sua effettiva altezza e larghezza. La durata della
simulazione era fissata a 30 secondi.
L’approccio nel corso di tutti gli esperimenti era di creare un video con-
tenente il robot in tre fasi della sua evoluzione: iniziale, a met`a evoluzione
e finale, divise per riga. Questi video si sono rivelati fondamentali per ca-
pire ci`o che avveniva nel corso dell’evoluzione e per trarre informazioni sul
comportamento dei robot, suscitando domande a cui rispondiamo con gli
esperimenti finali.
4.2.1 Risultati fase esplorativa
In questa sezione vengono spiegati i risultati della fase esplorativa attraverso
dei grafici ricavati dai file delle statistiche.
Per ognuno dei 24 esperimenti `e stata calcolata la mediana della fitness
nel corso dell’evoluzione sui 10 run eseguiti, d’ora in poi quando ci si riferisce
alla fitness si intende questo valore.
Di seguito vengono mostrati i grafici della fitness nel corso dell’evoluzione
per ognuno dei 24 esperimenti:
20
Figura 3: Grafici fitness fase esplorativa
La Figura 3 `e composta da 4 grafici: sulla prima riga sono presenti i
risultati degli esperimenti con dimensione massima del robot 10 × 10, sulla
seconda quelli con dimensione massima 5 × 5. La prima colonna contiene i
risultati degli esperimenti con sensori di velocit`a e area la seconda quelli con
sensori di velocit`a, area e tocco.
All’interno di ogni grafico il tipo di controllore `e rappresentato con un
colore diverso: rosso per l’eterogeneo, verde per l’omogeneo e blu per l’omo-
geneo con sensore di posizione. Il tipo di rappresentazione viene indicato dal
tipo di linea: continua per quella a bit, a tratteggio per quella gaussiana.
Per ogni grafico abbiamo lungo l’asse x il numero di nascite, pi`u si va a de-
stra quindi pi`u `e andata avanti l’evoluzione. Lungo l’asse y invece abbiamo
21
il valore della fitness. Tutti i 4 grafici hanno la stessa scala e sono quindi
confrontabili.
Osservando la figura `e possibile fare le seguenti osservazioni:
• In quasi tutti i casi la fitness aumenta nel corso dell’evoluzione. Ci`o
significa che nonostante lo spazio di ricerca molto grande `e possibile
evolvere in contemporanea corpo e controllore dei VSR!
• Non emerge un chiaro vincitore per quanto riguarda il tipo di rappre-
sentazione. Osservando i grafici 10 × 10 infatti sembra essere migliore
la rappresentazione gaussiana indifferentemente dal tipo di controllore
o dalla configurazione di sensori; la situazione per`o si inverte o non `e
ben definita per quello che riguarda gli esperimenti 5 × 5.
• Per quello che riguarda il tipo di controllore invece i due approcci, omo-
geneo ed eterogeneo, sembrano essere pressoch´e equivalenti dal punto
di vista della fitness. Considerando solo la rappresentazione gaussiana
i due tipi di controllore risultano pressoch´e equivalenti con i sensori
di velocit`a ed area, indifferentemente dalla dimensione del robot. La
situazione `e analoga se si aggiunge il sensore di tocco in cui risulta mi-
gliore il controllore eterogeneo per VSR grandi e l’omogeneo per quelli
piccoli. Prendendo in considerazione solo la rappresentazione a bit in-
vece si notano prestazioni lievemente maggiori ottenute dal controllore
omogeneo se i robot simulati hanno dimensione massima pari a 10×10.
Nel caso 5 × 5 con sensori di velocit`a ed area il controllore omogeneo
`e nettamente migliore. La situazione si ribalta anche se con margini
minori se si aggiunge il sensore di tocco.
• Dare ai VSR la possibilit`a di percepire il contatto con il suolo, dotando
i voxel del sensore di tocco, non sembra impattare sulla fitness. Questo
pu`o essere visto confrontando tra di loro i grafici riga per riga.
• L’aggiunta del sensore di posizione nei VSR con controllore omogeneo
non ha migliorato la fitness come sperato. Si nota anzi che la fitness
`e significativamente peggiore se i robot sono grandi e comunque sotto
la media se i robot simulati sono piccoli. Questo comportamento per
certi versi inaspettato `e stato chiarito in seguito durante la fase di
osservazione dei video.
22
• Osservando gli andamenti della fitness inoltre si osserva che alcune
linee avevano ancora un andamento crescente quando l’evoluzione `e
stata terminata. Questo ci ha suggerito che il limite imposto di 10 000
nascite possa non essere sufficiente in certi casi. Abbiamo pertanto
deciso di aumentare il numero di nascite a 30 000 negli esperimenti
successivi.
4.2.2 Video
Oltre all’analisi dei risultati tramite i dati salvati nel file delle statistiche
ho condotto un’analisi visuale di ci`o che accadeva nel corso dell’evoluzione
guardando i video generati a partire dalla versione serializzata del robot.
Per farlo sono stati realizzati due gruppi di video, uno per la rappre-
sentazione a bit e uno per la rappresentazione gaussiana. Ogni gruppo era
composto da 40 video e diviso in 4 sottogruppi da 10 video ciascuno, uno per
run. I sottogruppi rispecchiavano la divisione per dimensione e configurazio-
ne di sensori vista nella Figura 3. Ogni video mostrava il comportamento
durante la simulazione di 9 VSR divisi nel seguente modo:
• Tre colonne, una per tipo di controllore: omogeneo, eterogeneo, omo-
geneo con sensori di posizione.
• Tre righe che mostravano il robot in tre fasi della sua evoluzione:
iniziale, intermedia e finale.
Guardare i video ha aiutato a comprendere ci`o che avveniva nel corso
dell’evoluzione. Hanno inoltre risposto a molte domande che non ci eravamo
neppure posti e si sono rivelati fondamentali per la formulazione di nuovi
quesiti. In particolare `e stato possibile osservare che:
• La rappresentazione a bit genera una variet`a di forme nettamente su-
periore rispetto a quella gaussiana. Nella prima infatti i VSR avevano
forme complesse e irregolari, utilizzando la seconda rappresentazione
invece i risultati erano molto pi`u regolari. Molto spesso infatti i VSR
avevano la forma di quadrati di dimensione pari alla massima specifi-
cata (5 × 5 o 10 × 10) o erano composti da un unico voxel. Questo `e
chiaramente visibile per mezzo della Figura 4:
23
Figura 4: Istogrammi della dimensione dei robot
La Figura 4 `e composta da due grafici divisi per dimensione massima
del robot 10 × 10 o 5 × 5. All’interno di ogni grafico sono presenti due
istogrammi della dimensione effettiva dei VSR al termine della evolu-
zione. Il tipo di rappresentazione viene evidenziata utilizzando colori
diversi: rosso per quella a bit, blu per quella gaussiana. Sull’asse x
abbiamo il numero di voxel componenti il robot, cio`e la sua dimensione
effettiva, sull asse y il numero di volte che quella dimensione `e presente.
`E possibile vedere come in entrambi i grafici la rappresentazione gaus-
siana tende a generare robot di dimensione pari a uno o pari a quella
massima.
• I comportamenti sono molto pi`u diversificati se la rappresentazione `e a
bit. In questo caso infatti erano presenti robot in grado di saltare, cam-
minare, correre, strisciare e vibrare. Nella rappresentazione gaussiana
invece quasi tutti i VSR vibravano per avanzare.
• In generale la quantit`a di comportamenti diversi che si generano va-
ria a seconda del controllore. I VSR con controllore omogeneo infat-
ti mostravano dei comportamenti molto pi`u vari rispetto a quelli con
controllore eterogeneo o omogeneo con sensore di posizione. Gli ultimi
due controllori infatti tendevano a generare robot che vibravano per
avanzare.
24
• I robot con controllore omogeneo e sensore di posizione subiscono una
pressione evolutiva che li porta nelle fasi iniziali dell’evoluzione a gene-
rare forme alte e sbilanciate, che ribaltandosi, spostano il baricentro in
avanti per migliorare la fitness. Nelle fasi finali dell’evoluzione emerge
un comportamento che li porta ad avanzare vibrando.
• La configurazione di sensori influisce seppur di poco sulla variet`a di
comportamenti ottenuti e in maniera non percepibile sulle forme dei
VSR. I robot che disponevano anche del sensore di tocco sembravano
migliori degli altri in tal senso.
Guardando i video quindi ci siamo resi conto di quanto impattino il tipo di
controllore e la rappresentazione su quelli che sono i comportamenti sviluppa-
ti dai VSR nel corso dell’evoluzione. Purtroppo per`o non disponevamo dati
al di fuori dei video in grado di provare queste osservazioni. Da qui `e nata la
necessit`a di nuovi strumenti in grado di classificare o misurare la biodiversit`a
delle soluzioni ottenute. Questa necessit`a ha portato alla progettazione e alla
implementazione di nuovi metodi che sono stati poi utilizzati nella fase finale
degli esperimenti.
4.2.3 Conclusioni fase esplorativa
Questi primi esperimenti sono stati in grado di rispondere alle domande che
ci eravamo posti. `E possibile evolvere contemporaneamente corpo e control-
lore dei VSR. Rappresentazione, controllore e configurazione dei sensori non
impattano in maniera significativa sulla fitness delle soluzioni ottenute. Una
eccezione `e rappresentata dal controllore omogeneo con sensori di posizione
che si `e dimostrato peggiore degli altri.
La visione dei video dei VSR simulati ha rivelato che controllore e rap-
presentazione influiscono sulla biodiversit`a dei VSR e ha evidenziato la grave
mancanza di strumenti in grado di provare queste affermazioni.
In seguito a queste analisi abbiamo deciso di:
• Sviluppare nuovi strumenti in grado di caratterizzare i VSR in base
alla loro forma e comportamento.
• Applicare queste nuove tecniche per approfondire lo studio sulla biodi-
versit`a delle soluzioni.
25
• Scartare la rappresentazione gaussiana in quanto equivalente a quella a
bit per quanto riguarda la fitness e decisamente peggiore se si considera
la variet`a di forme e comportamenti ottenuti.
• Scartare una delle due configurazioni di sensori, scelta ricaduta su quel-
la con velocit`a ed area, in quanto equivalenti per fitness e biodiversit`a
delle soluzioni.
Queste decisioni hanno reso necessario un altro ciclo di esperimenti.
4.3 Fase finale
Nella fase finale sono stati svolti esperimenti con l’intento di rispondere alle
domande sorte durante l’analisi dati e la visualizzazione dei video della fase
esplorativa e ad altre domande scaturite durante la progettazione e l’imple-
mentazione dei metodi di misura della biodiversit`a. Le domande a cui dare
risposta erano:
1. Il tipo controllore influisce sulla robustezza ai danni che i VSR potreb-
bero subire?
2. Come influisce il numero di signals sulla fitness e sul comportamento
dei robot?
3. Il controllore influisce, e se s`ı, come sulla biodiversit`a delle soluzioni
trovate?
4. Cosa `e, e come misurare la biodiversit`a delle soluzioni?
Per dare risposta a queste domande abbiamo innanzitutto modificato i soft-
ware utilizzati introducendo nuove funzionalit`a e successivamente abbiamo
svolto altri 22 esperimenti.
Le modifiche al software hanno toccato tutti e tre i progetti utilizzati
(Jgea, 2D-VSR-Sim e VSREvolution) e possono essere divise in due categorie:
quelle per misurare la biodiversit`a e quelle per misurare la resistenza ad
eventuali danni o modifiche strutturali che i VSR potrebbero subire.
26
4.3.1 Resistenza ai danni
Le modifiche per misurare la resistenza ai danni sono state fatte per rispon-
dere alla domanda “Il tipo di controllore influisce sulla robustezza ai danni
che i VSR potrebbero subire?” A tal fine abbiamo esteso il codice esistente
per simulare un danno ai VSR al termine della loro evoluzione e rimisurar-
ne la fitness per verificarne la robustezza. Il procedimento per simulare un
danno al robot `e il seguente:
1. Prendere il robot.
2. Scegliere se togliere o aggiungere un voxel con probabilit`a 50 e 50.
3. Se bisogna aggiungere, trovare le posizioni della griglia dove `e possibile
aggiungere un voxel (devono essere vuote ed adiacenti ad una con voxel)
e aggiungerlo scegliendo a caso tra una di queste.
4. Se bisogna togliere, provare a togliere un voxel a caso tra quelli presenti.
Se questo spezza a met`a il robot provare con un altro voxel. Se non
`e possibile togliere alcun voxel (come nel caso di VSR composti da un
unico voxel) allora aggiungerne uno.
Questi passaggi venivano effettuati per un numero di volte dipendente dalla
dimensione del VSR. Al termine di ogni run il risultato finale dell’evoluzione
veniva sottoposto alla verifica di resistenza ai danni. Il procedimento di
simulazione del danno veniva ripetuto un numero di volte pari al 10%, 20%
e 30% dei voxel effettivi del robot. Si ottenevano cos`ı 3 nuovi VSR uno per
grado di danneggiamento e la fitness veniva ricalcolata ottenendo tre misure.
Il tutto veniva ripetuto dieci volte per run, per un totale di trenta misure
che venivano salvate in un file a parte, assieme ad altre informazioni base
riguardanti il tipo di esperimento.
4.3.2 Biodiversit`a
Per misurare la biodiversit`a delle soluzioni ottenute abbiamo deciso di rica-
vare e salvare numerosi altri dati tratti dalla simulazione dei VSR. Abbiamo
deciso di considerare due aspetti: la forma e il comportamento dei robot,
raccogliendone le relative informazioni.
I dati sulla forma sono la lunghezza e l’altezza effettive del robot, l’eccen-
tricit`a definita come max(w, h)/ min(w, h), una
27
stringa che rappresenta la sua forma statica e una stringa che rappresenta la
sua forma dinamica.
La forma statica `e una stringa ricavata dalla griglia del corpo del robot
ritagliata in base all’altezza e lunghezza effettiva del robot.
La forma dinamica invece `e una stringa ricavata da una matrice 16x16.
Questa matrice, ritagliata per aderire alle dimensioni effettive del robot, pu`o
essere vista come una foto a lunga esposizione del VSR nel corso di tutta la
simulazione. Spiego meglio il significato e la necessit`a di questo dato con un
esempio. Supponiamo di avere un VSR alto e stretto che parte in piedi e
poi si ribalta e passa la maggior parte della simulazione “disteso”. La forma
dinamica mostrer`a il robot in posizione orizzontale quella statica in posizione
verticale. Le informazioni catturate sono quindi diverse.
I dati sul comportamento hanno lo scopo di caratterizzare il comporta-
mento dei VSR. Il comportamento `e qualcosa di difficile da definire e clas-
sificare. Per cercare di caratterizzare i robot in base al loro comportamento
abbiamo deciso di salvare dati relativi alle loro frequenze e dati relativi alle
loro impronte.
Per ogni VSR `e stato registrato l’andamento nel tempo del suo centro di
massa nel corso della simulazione. Il segnale cos`ı ottenuto `e stato scomposto
nella sua componente lungo l’asse x e quella lungo l’asse y ottenendo due se-
gnali nel tempo. Per ognuno di questi segnali `e stata calcolata la trasformata
di Fourier. Dalle due trasformate cos`ı ottenute sono stati trovati i cinque va-
lori pi`u grandi presenti nello spettro e sono stati salvati i relativi valori di
modulo e frequenza. I valori salvati sono quindi venti; dieci per l’asse x e
dieci per l’asse y.
I dati relativi alle impronte invece sono stati ricavati attraverso un pro-
cesso da noi ideato che ora spiego:
1. Divido la simulazione in n intervalli della durata di 0.5 s ciascuno. Do-
podich´e ∀ intervallo k ∈ n e ∀ voxel i che tocca il terreno salvo gli
estremi del range in cui il voxel i tocca il terreno definiti max xi(k) e
min xi(k). Cos`ı facendo si ottiene un insieme di range per ogni intervallo
di 0.5 s.
2. Questi valori vanno poi normalizzati in [0, 1] e successivamente quan-
tizzati in 1 . . . n con n = 8. Dai valori quantizzati si ottiene quindi una
sequenza di bit b(k) lunga 8 bit per ogni intervallo di 0.5 s. Essendo k
il numero di intervalli si ottengono quindi k sequenze di bit da ora in
28
poi chiamate impronte per non generare confusione con ci`o che sto per
spiegare.
3. Il numero di impronte diverse possibili `e 28
. Scrivo in ordine di ap-
parizione tutte le impronte una dopo l’altra numerandole da 0 a k −
1
4. Trovo tutte le possibili sequenze di impronte di lunghezza compresa tra
2 e 5. Questi valori sono stati scelti in maniera empirica.
5. Per ogni sequenza di impronte, d’ora in poi chiamata gait, segno l’indice
dell’ordine di apparizione della prima impronta della sequenza e quello
dell’ultima. Ottengo cos`ı pi`u sequenze di coppie di indici.
6. Per ogni sequenza di coppie di indici calcolo la differenza tra l’indice
di inizio della n-esimo gait e l’indice di inizio del n − 1-esimo. Cos`ı
facendo si ottiene per ogni sequenza di coppie di indici una sequenza
di differenze.
7. Calcolo la moda di ogni sequenza di differenze. Ottengo cos`ı una lista
di mode.
8. Calcolo la moda della lista di mode e ottengo un unico numero.
9. Scarto tutti i gait che compaiono una sola volta e quelli che hanno
moda diversa dalla moda ottenuta prima.
10. Per ogni gait rimasto, moltiplico la lunghezza della sequenza per il
numero di volte che compare. Ottengo cos`ı quella che chiamiamo la
durata dei gait.
Il main gait `e quello con la durata maggiore e viene salvato in una colonna
nel file delle statistiche sotto forma di una stringa. Una volta trovato il main
gait vengono calcolati altri 6 valori salvati in altrettante nuove colonne.
• Gait mode interval `e il periodo del main gait.
• Gait average touch area `e calcolata nel seguente modo: una impronta `e
rappresentata da 8 bit, sommando gli uni e dividendoli per 8 si ottiene
la touch area di quella impronta. La gait average touch area `e la media
di questo valore calcolata su tutte le impronte.
29
• Gait coverage `e calcolata come la lunghezza della sequenza di impronte
del main gait divisa per la moda dei periodi della sequenza.
• Gait purity `e la percentuale di ripetizioni di un gait che hanno il periodo
uguale alla moda dei periodi.
• Gait number of unique footprints `e il numero di impronte uniche nella
sequenza del main gait.
• Gait number of footprints `e il numero di impronte da cui `e composto
il main gait.
4.3.3 Risultati fitness
Ora che abbiamo chiarito questi nuovi concetti passiamo alla fase di analisi
dei risultati. Abbiamo condotto un totale di 22 esperimenti per esplorare
tutte le combinazioni di parametri di seguito elencate.
• Rappresentazione: bit.
• Dimensione massima robot: 5 × 5 e 10 × 10.
• Controllore: omogeneo, eterogeneo e omogeneo con sensori di posizione.
• Sensori: velocit`a+area+tocco.
• Signals: 0, 1, 2 (solo per i 5 × 5) e 3 (solo per i 5 × 5).
Non abbiamo condotto esperimenti con controllore eterogeneo con signals
2 e 3 per i VSR di dimensione 10 × 10. Questo perch´e gli esperimenti han-
no una durata massima sul cluster e questi due esperimenti sarebbero stati
troncati troppo presto per poter trarre conclusioni utili.
Per ognuno di questi esperimenti sono stati lanciati 20 run all’interno
dei quali all’inizio dell’evoluzione i robot venivano inizializzati in maniera
pseudo-casuale. In seguito l’algoritmo di CMA-ES ottimizzava la fitness per
un totale di 30 000 nascite. La fitness utilizzata era la velocit`a definita come
la distanza percorsa dal robot al termine della simulazione divisa per la sua
durata pari a 30 secondi.
Di seguito vengono mostrati i grafici della fitness nel corso dell’evoluzione:
30
Figura 5: fitness fase finale
La Figura 5 `e composta da 8 grafici. Sopra ogni grafico vengono indicati
31
la dimensione massima del VSR ed il numero di signals. All’interno di ogni
grafico il tipo di controllore `e rappresentato con un colore diverso: verde
per l’eterogeneo, blu per l’omogeneo e rosso per l’omogeneo con sensore di
posizione. Per ogni grafico abbiamo lungo l’asse x il numero di nascite che
cresce andando verso destra. Lungo l’asse y invece abbiamo il valore della
fitness con lo zero in basso e valori via via crescenti pi`u si sale. Tutti i grafici
hanno la stessa scala e sono quindi confrontabili. Il valore disegnato `e la
mediana della fitness nel corso dell’evoluzione calcolata sui 20 run eseguiti.
Gli esperimenti con controllore eterogeneo, tre signals e dimensione 5 × 5
e quelli con controllore eterogeneo, un signal e dimensione 10 × 10 sono
stati troncati perch´e avevano raggiunto il tempo massimo per la durata di
un esperimento sul cluster, di conseguenza le linee verdi dei corrispondenti
grafici risultano incomplete.
Osservando la figura `e possibile trarre le seguenti conclusioni:
• Se la dimensione massima del VSR `e di 5×5 all’aumentare del numero
di signals la fitness migliora fino a un valore di signals pari a due per poi
cominciare a peggiorare. Anche per VSR pi`u grandi la fitness migliora
all’aumentare del numero di signals.
• Il controllore con sensori di posizione non `e in grado di trovare soluzioni
efficaci se i signals sono zero.
• Nessun controllore `e migliore degli altri per quello che riguarda la fitness
nel caso 5x5.
• Se i VSR hanno dimensione massima pari a 10×10 il controllore omoge-
neo sembra essere migliore di quello omogeneo con sensori di posizione
per tutti e 4 i valori di signals.
La Figura 6 invece mostra sempre la fitness delle soluzioni ma attraverso
dei violin plot cos`ı da evidenziarne la distribuzione, informazione assente
nella precedente figura.
32
Figura 6: violin plot fitness VSR fase finale
La Figura 6 mostra attraverso dei violin plot la distribuzione dei valori
33
della fitness delle soluzioni ottenute. I numeri sopra ogni grafico indicano la
dimensione massima del VSR e il numero di signals. I tre tipi di controllore
sono rappresentati con colori diversi mantenendo le colorazioni della prece-
dente figura mentre sull’asse y sono indicati i valori della fitness. I grafici
hanno tutti la stessa scala quindi sono confrontabili.
In generale `e possibile trarre le stesse conclusioni ricavabili osservando
la Figura 5. Inoltre `e possibile osservare che nessuna distribuzione appare
eccessivamente bimodale e che in generale i valori delle fitness ottenute sono
molto distribuiti, questo `e un sintomo della presenza di biodiversit`a.
Si pu`o trarre un altro indizio sulla presenza di biodiversit`a nelle soluzioni
dalla Figura 7:
34
Figura 7: dimensione effettiva dei VSR
La Figura 7 rappresenta attraverso dei violin plot la distribuzione delle
35
dimensioni effettive dei VSR al termine della loro evoluzione. I numeri sopra
ogni grafico indicano la dimensione massima del VSR e il numero di signals.
I tre tipi di controllore sono rappresentati con colori diversi mentre sull’asse
y viene indicato il numero di voxel da cui erano composti i VSR. Le scale
sono diverse tra i grafici con dimensione massima 5x5 e quelli con dimensione
massima 10x10. In nessuno degli 8 grafici si notano distribuzioni fortemente
sbilanciate verso un dato valore n´e andamenti bimodali. Ci`o significa che i
VSR al termine dell’evoluzione hanno grandezze diverse e le loro dimensioni
sono abbastanza equidistribuite tra i valori possibili. Anche questo `e un
chiaro segnale di biodiversit`a. Questo argomento verr`a approfondito meglio
in seguito.
Passiamo ora ad analizzare altri dati ricavati dalle simulazioni che repu-
tiamo importanti.
Le Tabella 1 e la Tabella 2 indicano la dimensione del genotipo dei VSR
per tutte le combinazioni di controllore e signals utilizzate.
5 × 5 5 × 5 5 × 5 5 × 5
signals 0 signals 1 signals 2 signals 3
omogeneo 30 70 142 246
eterogeneo 150 1150 2950 5550
posizione 32 80 160 272
Tabella 1: dimensione genotipo 5 × 5
10 × 10 10 × 10 10 × 10 10 × 10
signals 0 signals 1 signals 2 signals 3
omogeneo 105 145 217 321
eterogeneo 600 4600
posizione 107 155 235 347
Tabella 2: dimensione genotipo 10 × 10
Appare evidente che i VSR con controllore omogeneo o omogeneo con
sensori di posizione abbiano un genotipo molto pi`u piccolo di quelli con con-
trollore eterogeneo. I VSR con controllore omogeneo con sensore di posizione
di fatto sono uguali a quelli con controllore omogeneo con l’aggiunta di un
sensore che restituisce due valori. Il loro genotipo infatti `e leggermente pi`u
36
grande di quello dei VSR con controllore omogeneo. Nel corso degli esperi-
menti abbiamo potuto osservare che la dimensione del genotipo influisce sul
tempo necessario ad evolvere i robot. Il tempo necessario a completare le
evoluzioni `e mostrato nella Figura 8:
37
Figura 8: tempo di esecuzione
La suddivisione dei grafici di Figura 8 ed i colori sono quelli visti in
38
precedenza. L’asse delle x mostra il numero di nascite avvenute. L’asse y
il tempo trascorso dall’inizio dell’evoluzione. I valori mostrati sono le medie
calcolate sui tempi dei 20 run. I tempi erano comunque molto simili tra di
loro tra un run e l’altro.
Appare evidente come i VSR con controllore eterogeneo richiedano mol-
tissimo pi`u tempo rispetto agli altri per terminare l’evoluzione. Questo `e un
chiaro svantaggio per il controllore eterogeneo.
Il tempo richiesto per completare una evoluzione `e dato dalla somma
del tempo per eseguire la simulazione dei VSR ed il tempo per eseguire
l’evoluzione tra una generazione e l’altra.
Il tempo necessario ad eseguire la simulazione `e direttamente proporzio-
nale alla quantit`a di voxel simulati. Un VSR composto da 20 voxel quindi
richiede circa il doppio del tempo che uno composto da 10 voxel. Questa
prima componente del tempo quindi non dipende dal controllore usato ma
dalle dimensioni massime del VSR.
Il tempo che serve per evolvere i VSR invece `e il tempo che serve a JGEA
per evolvere il genotipo dei robot moltiplicato per il numero di generazioni
necessarie. Il processo di evoluzione richiede diversi calcoli matriciali tra cui
la diagonalizzazione di una matrice quadrata di lato pari alla lunghezza del
genotipo del robot. La quantit`a di valori delle matrici quindi ha una crescita
quadratica rispetto alla lunghezza del genotipo.
Questi calcoli si basano su algoritmi indipendenti dalla nostra implemen-
tazione di CMA-ES. Questi algoritmi e le loro implementazioni hanno una
complessit`a non lineare e di conseguenza sono sensibili a matrici in input di
dimensioni molto grandi. Essendo il genotipo dei VSR con controllore etero-
geneo molto pi`u grande rispetto agli altri, come visto in Tabella 1 e Tabella 2,
il tempo necessario per la sua evoluzione `e molto grande. Questo spiega la
grande differenza nei tempi di esecuzione.
4.3.4 Risultati resistenza ai danni
Passiamo ora ad analizzare i risultati della validazione. A partire dalle se-
guenti figure potremo rispondere alla domanda ”Il tipo controllore influisce
sulla robustezza ai danni che i VSR potrebbero subire?” che ci siamo posti
in precedenza.
La Figura 9 mostra i risultati della validazione per VSR di dimensione
massima 5x5.
39
Figura 9: risultati validazione 5x5
La Figura 9 `e composta da 12 grafici. Ogni colonna corrisponde ad un
40
tipo di controllore diverso. I quattro numeri a sinistra di ogni riga invece
stanno ad indicare il numero di signals con cui potevano comunicare tra
di loro i voxel. Ogni grafico contiene al suo interno quattro box plot (ad
eccezione dell’eterogeneo con tre signals che `e stato troncato). I box plot
sono organizzati all’interno di ogni grafico come indicato di seguito. Alla
base di ogni colonna sono presenti quattro numeri da 0 a 3. Il numero
moltiplicato per 10 indica la percentuale di voxel aggiunti o rimossi dal VSR
originale. All’interno di ogni grafico abbiamo, andando da sinistra a destra,
lo 0%, il 10%, il 20% ed il 30% dei voxel del VSR modificati. Ogni box
plot indica la fitness dei VSR per quella combinazione di controllore, numero
di signals e grado di danneggiamento. Per rendere i grafici pi`u facilmente
leggibili sono stati rimossi gli outlier dalla rappresentazione grafica. Tutti
i grafici hanno la stessa scala e sono quindi confrontabili. Prima di trarre
conclusioni osserviamo anche la seguente figura.
La Figura 10 mostra i risultati della validazione per VSR di dimensione
massima 10x10.
41
Figura 10: risultati validazione 10x10
Anche la Figura 10 `e composta da 12 grafici ricavati come quelli della
42
figura precedente. I risultati della validazione per il controllore eterogeneo
con signals 1, 2 e 3 non sono disponibili in quanto gli esperimenti non sono
stati completati o lanciati.
Osservando le due figure precedenti `e possibile trarre le seguenti conclu-
sioni:
• Come era logico aspettarsi all’aumentare del danno le prestazioni dei
VSR peggiorano.
• Gi`a per piccoli danni le prestazioni dei VSR calano notevolmente.
• Il controllore eterogeneo `e leggermente meglio degli altri per quanto
riguarda la resistenza ai danni. Una possibile spiegazione pu`o essere la
seguente. Se nel corso dell’evoluzione un voxel viene aggiunto al corpo
di un VSR con controllore eterogeneo, la sua rete neurale viene adde-
strata fino a che il voxel `e presente. Se in seguito il voxel viene rimosso,
la sua rete neurale mantiene il grado di addestramento raggiunto. Se
quel voxel viene infine nuovamente aggiunto, si partirebbe con una rete
neurale gi`a almeno parzialmente addestrata. Questo potrebbe conferire
un vantaggio al controllore eterogeneo nel caso nella fase di simulazione
danno vengano aggiunti voxel.
• Il numero di signals non mitiga la perdita di prestazioni.
4.3.5 Conclusioni fitness e resistenza ai danni
I risultati di fitness e resistenza ai danni ci permettono di rispondere ad
alcune delle domande che ci eravamo posti all’inizio della fase finale. All’au-
mentare del numero di signals la fitness delle soluzioni migliora. Il tipo di
controllore invece sembra avere un effetto minimo sulla resistenza ai danni e
alle modifiche che i voxel potrebbero subire.
4.3.6 Risultati biodiversit`a
Abbiamo condotto analisi sulla biodiversit`a dei VSR prendendo in conside-
razione solo i robot con dimensione massima pari a 5 × 5. Questo perch´e
disponevamo di dati incompleti per i VSR con dimensione massima di 10x10
essendo mancanti o incompleti la gran parte degli esperimenti con controllore
eterogeneo.
43
Per studiare la biodiversit`a abbiamo utilizzato i nuovi dati a partire dai
quali abbiamo provato a dividere i VSR in gruppi. I gruppi venivano creati in
modo che i VSR fossero il pi`u possibile simili tra di loro, se presi dallo stesso
gruppo, e pi`u diversi possibile tra di loro, se presi da due gruppi diversi. Cos`ı
facendo `e possibile osservare la biodiversit`a risultante dall’utilizzo dei diversi
controllori. Nel caso un controllore generi una quantit`a di gruppi superiore
agli altri, o una loro distribuzione pi`u omogenea, `e possibile affermare che la
biodiversit`a generata `e superiore a quella generata dagli altri controllori.
Abbiamo deciso di dividere i 240 VSR ottenuti dai 20 run e le 12 com-
binazioni di controllore e numero di signals in gruppi, prima prendendo in
considerazione la loro forma, e poi in base al loro comportamento.
Per raggruppare i robot in base alla loro forma abbiamo usato i dati
relativi alla forma statica e alla postura dinamica. Di seguito mostriamo
queste forme e queste posture in maniera ordinata. Esse servono a dare una
dimostrazione visiva che la biodiversit`a nelle forme `e presente ed osservabile
sia dalle forme statiche, sia dalla postura dinamica, inoltre rappresentano il
punto di partenza da cui cominciare la ricerca dei gruppi.
La Figura 11 mostra le forme statiche dei robot di dimensione massima
pari a 5 × 5 al termine dell’evoluzione.
Figura 11: forme statiche 5 × 5
44
La Figura 11 `e divisa in 20 colonne e 12 righe. `E presente una colonna
per run, il numero del run `e indicato con i numeri da 0 a 19. Le righe sono
una per ogni combinazione di controllore e numero di signals. Le didascalie
sulla destra indicano a quale combinazione la riga si riferisce. Le forme che
riempiono la figura sono le forme statiche del corpo dei VSR che sono risultati
migliori al termine di quel run e quella combinazione di controllore e signals.
`E importante ricordare che nel corso della simulazione il VSR pu`o girarsi o
ribaltarsi.
Dalla figura `e possibile vedere che le forme statiche sono tendenzialmente
a sviluppo verticale e in diversi casi molto diverse tra di loro. Questo `e un
segno di biodiversit`a.
Le forme dinamiche dei robot di dimensione massima pari a 5 × 5 al
termine dell’evoluzione sono mostrate in Figura 12.
Figura 12: forme dinamiche 5 × 5
Anche la Figura 12 contiene 240 forme organizzate come quelle della figura
precedente. Le forme mostrate per`o sono la postura dinamica nel corso della
simulazione del miglior VSR per run e per quella combinazione di controllore
e signals. Queste forme sono state ottenute come spiegato in precedenza.
45
Anche da questa figura `e possibile osservare come le posture dinamiche
siano molto varie e in certi casi molto diverse le une dalle altre.
`E importante familiarizzare con i due grafici precedenti perch´e i risultati
sulla biodiversit`a saranno presentati a partire da queste due figure.
Abbiamo eseguito i raggruppamenti prendendo in considerazione prima
le forme statiche e poi quelle dinamiche. Per creare i gruppi abbiamo provato
ad usare due metodi : K-means e il clustering gerarchico. In entrambi i casi
abbiamo settato i parametri in maniera da ottenere 3 gruppi di VSR. Per il
clustering gerarchico sono stati provati tre tipi di linkage: single, average e
complete.
Poich´e la forma dinamica del robot era salvata sotto forma di una stringa
di + e − `e stato necessario fare una trasformazione per poter eseguire i
raggruppamenti. La stringa contenente la forma dinamica conteneva 16 × 16
caratteri pertanto sono state create 256 nuove colonne riempite in maniera
ordinata nel seguente modo: 1 se il corrispondente valore nella stringa era
+, 0 altrimenti. La distanza utilizzata `e quella euclidea calcolata a partire
dalle colonne precedentemente create.
Per quanto riguarda le forme statica e dinamica i risultati che sembrano
avere pi`u senso dal punto di vista umano sono stati ottenuti con K-means
impostando il numero di seed a 40. Questi sono i gruppi trovati basandosi
sulle forme statiche:
46
Figura 13: gruppi forme statiche
La Figura 13 mostra i gruppi trovati a partire dalle forme statiche dei VSR
usando K-means per la creazione dei gruppi. I tre gruppi sono evidenziati
colorando le forme dei robot con colori diversi.
Osservando i gruppi `e possibile notare che:
• I VSR colorati di verde in generale hanno forme pi`u semplici e tenden-
zialmente allungate.
• Quelli rossi hanno forme molto complesse con diverse protuberanze.
• I robot colorati di blu sono una via di mezzo tra i precedenti due gruppi.
La Tabella 3 mostra la suddivisione per gruppo delle forme statiche
generate da i tre tipi di controllore.
controllore verdi blu rossi
posizione 27 30 23
eterogeneo 35 26 19
omogeneo 26 30 24
Tabella 3: suddivisione forme statiche
47
Anche se di poco il controllore omogeneo genera pi`u VSR del gruppo
rosso. Questa differenza `e comunque minima e possiamo affermare che per
quello che riguarda la biodiversit`a delle forme statiche i tre controllori si
equivalgano.
Questi invece sono i gruppi trovati osservando le forme dinamiche:
Figura 14: gruppi forme dinamiche
La Figura 14 mostra i gruppi trovati a partire dalle forme dinamiche dei
VSR utilizzando K-means. Anche qui i tre gruppi sono evidenziati colorando
le forme dei robot con colori diversi. Osservando i raggruppamenti `e possibile
fare le seguenti osservazioni:
• I VSR colorati di rosso in generale hanno forme pi`u semplici e tenden-
zialmente allungate lungo l’asse orizzontale.
• Quelli blu hanno forme molto complesse con diverse protuberanze e a
volte buchi e tendono ad avere una postura eretta.
• I robot colorati di verde tendono ad avere forme pi`u rotondeggianti
rispetto a quelli rossi e una base di appoggio pi`u ampia ed uniforme
rispetto a quelli blu. Sono in genere pi`u alti e complessi di quelli rossi.
48
La Tabella 4 mostra la suddivisione per gruppo delle forme dinamiche
generate da i tre tipi di controllore.
controllore verdi blu rossi
posizione 45 15 20
eterogeneo 36 15 29
omogeneo 26 31 23
Tabella 4: suddivisione forme dinamiche
La postura dinamica raccoglie, oltre ad informazioni sulla forma. anche
alcune informazioni sul comportamento dei VSR nel corso della simulazione.
Pu`o quindi essere considerata una via di mezzo tra lo studio della forma e
quello del comportamento dei robot. Osservando la Tabella 4 appare evidente
come il controllore omogeneo abbia generato VSR meglio distribuiti tra i tre
gruppi rispetto agli altri due controllori. Questo equivale a dire che `e stato
il grado di generare soluzioni dotate di una biodiversit`a maggiore.
Per quanto riguarda il comportamento abbiamo provato a raggruppare i
VSR utilizzando i dati sulle frequenze, quelli sui gait ed entrambi. Abbiamo
scelto di dividere i robot in 4 gruppi perch´e osservando i video 4 erano le ti-
pologie di comportamento prevalenti: vibra, striscia, cammina, e corre/salta.
Le definizioni dei precedenti 4 termini sono le seguenti:
• vibra: il VSR vibra, chiaramente.
• striscia: una parte del robot tocca sempre il terreno e nell’avanzamento
non si stacca mai dal suolo.
• cammina: il VSR sembra avere due arti che toccano in maniera alter-
nata il suolo.
• corre/salta: come cammina solo che in certi momenti il VSR `e comple-
tamente staccato dal suolo.
I due metodi di raggruppamento utilizzati sono k-means ed il clustering
gerarchico.
Per quanto riguarda le frequenze la distanza usata era la distanza eucli-
dea tra i 20 numeri a nostra disposizione. Per i gait `e stato prima necessario
trasformare la stringa del main gait in una stringa binaria riscrivendo (toc-
ca) come 1 e . (non tocca) come 0. Per farlo `e stato usato il seguente
procedimento:
49
1. `E stata trovata la stringa del main gait pi`u lunga ed `e stata calcolata
la sua lunghezza l.
2. Sono state generate l nuove colonne e sono state riempite in maniera
ordinata con i valori binari appena trovati.
3. Se non erano pi`u disponibili valori, il valore inserito era 9.
Per i raggruppamenti sui gait `e stata usata la distanza euclidea calcolata a
partire dalle 6 colonne dei dati numerici dei gait a cui sono state concatenate
le nuove colonne appena create. I raggruppamenti che prendevano in consi-
derazione sia le frequenze sia i gait, invece, sono stati ricavati utilizzando la
distanza euclidea calcolata a partire dalle colonne con i dati delle frequenze
e le colonne dei dati sui gait.
Prendendo in considerazione solo i dati sulle frequenze si ottengono i
raggruppamenti che hanno pi`u senso dal punto di vista umano. Quelli cio`e
che tendono a dividere i VSR secondo i 4 gruppi precedentemente descritti.
La Figura 15 mostra i gruppi trovati a partire dai dati sulle frequenze.
Figura 15: gruppi comportamento
I gruppi mostrati in Figura 15, evidenziati utilizzando colori diversi, sono
stati ricavati usando il clustering gerarchico con linkage complete.
50
I VSR sono divisi in 4 gruppi in base al loro comportamento ma questo
`e apprezzabile solo osservando i video. Questa figura va quindi interpre-
tata come una mappa attraverso la quale osservare i video corrispondenti.
Osservando i video si notano somiglianze nel comportamento dei VSR che
appartengono allo stesso gruppo.
La Tabella 5 mostra la suddivisione per gruppo in base al comportamento
generato dai tre tipi di controllore.
controllore gialli blu verdi rossi
posizione 33 15 0 32
eterogeneo 20 3 22 35
omogeneo 13 13 26 28
Tabella 5: suddivisione comportamenti
Guardando la Tabella 5 e la Figura 15 si pu`o osservare che:
• Il controllore omogeneo con sensore di posizione `e in grado di generare
solo VSR del gruppo giallo se i signals sono 0 e non genera nemmeno
un robot del gruppo verde.
• Il controllore eterogeneo genera solo tre VSR appartenenti al gruppo
blu.
• Il controllore omogeneo `e in grado di generare robot appartenenti a
tutti e 4 i raggruppamenti in percentuali molto pi`u equilibrate rispetto
agli altri 2 controllori.
In generale dalla Tabella 5 e la Figura 15 si pu`o osservare che il control-
lore omogeneo `e in grado di generare pi`u biodiversit`a rispetto agli altri due.
Queste conclusioni sono dipendenti dal raggruppamento utilizzato e dal giu-
dizio soggettivo di somiglianza che ogni persona ha. `E curioso per`o il fatto
che, provando a creare i gruppi in maniera diversa, il controllore omogeneo
generava quasi sempre risultati pi`u bilanciati tra i quattro gruppi rispetto
agli altri due. Questo `e vero anche quando i gruppi generati sembravano non
avere senso dal punto di vista umano.
4.3.7 Conclusioni biodiversit`a
I risultati sulla biodiversit`a ci permettono di rispondere alle rimanenti do-
mande che ci eravamo posti all’inizio della fase finale.
51
Siamo riusciti a trovare degli strumenti e dei metodi in grado di caratte-
rizzare i VSR sulla base della loro forma e comportamento! Dopo aver ap-
plicato questi nuovi strumenti alle soluzioni ottenute abbiamo potuto trarre
le seguenti conclusioni:
• Non sembrano esserci grandi differenze tra i tre tipi di controllore per
quello che riguarda la biodiversit`a delle forme.
• Per quello che riguarda i comportamenti invece il controllore omogeneo
sembra generare comportamenti pi`u vari rispetto agli altri due.
52
5 Conclusioni
Nel corso di questa tesi abbiamo studiato i Voxel-based Soft Robot (VSR).
Questi sono una tipologia di robot composti da materiali morbidi che per-
mette una grande libert`a nel design del corpo e del controllore del robot.
Abbiamo usato dei software di simulazione per effettuare esperimenti di
evolutionary robotics provando ad evolvere in contemporanea il corpo e il con-
trollore di tali robot utilizzando un particolare algoritmo evolutivo: CMA-ES.
Testando diverse rappresentazioni, combinazioni di sensori e tipi di control-
lore, abbiamo ottenuto le prove che, nonostante lo spazio di ricerca molto
grande, `e possibile evolvere corpo e controllore dei robot allo stesso tempo.
Osservando i video generati dalle simulazioni ci siamo resi conto del-
la notevole biodiversit`a risultante al termine dell’evoluzione nel caso di un
particolare tipo di rappresentazione: quella a bit. Poich´e non disponeva-
mo degli strumenti per confermare le nostre affermazioni abbiamo ideato
un procedimento per caratterizzare i robot in base alla loro forma e al lo-
ro comportamento e lo abbiamo utilizzato sulle soluzioni trovate. Questo
ci ha permesso di ottenere una prova oggettiva della presenza di quella che
chiamiamo biodiversit`a nei risultati ottenuti.
Abbiamo inoltre scoperto che un tipo di controllore, quello omogeneo, `e
in grado di promuovere, meglio degli altri, soluzioni tra loro biodiversificate.
Questo risultato viene ottenuto pur mantenendo lo stesso grado di efficacia
delle soluzioni e una robustezza ai danni simile a quella degli altri controllo-
ri. Un altro vantaggio del controllore omogeneo `e che richiede meno tempo
rispetto agli altri per completare l’evoluzione.
Questi risultati possono essere molto importanti in quanto possono mi-
gliorare le possibilit`a di utilizzo di questi robot in ambienti in cui l’intervento
umano in risposta a cambiamenti improvvisi non `e possibile.
53
Riferimenti bibliografici
[1] Rus, Daniela, and Michael T. Tolley. ”Design, fabrication and control of
soft robots.” Nature 521.7553 (2015): 467-475.
[2] Kim, Sangbae, Cecilia Laschi, and Barry Trimmer. ”Soft robotics: a
bioinspired evolution in robotics.” Trends in biotechnology 31.5 (2013):
287-294.
[3] Cheney, Nick, Josh Bongard, and Hod Lipson. ”Evolving soft robots in
tight spaces.” Proceedings of the 2015 annual conference on Genetic and
Evolutionary Computation. 2015.
[4] Chen, Ang, et al. ”Soft robotics: Definition and research issues.” 2017
24th international conference on mechatronics and machine vision in
practice (M2VIP). IEEE, 2017.
[5] Cheney, Nick, et al. ”Unshackling evolution: evolving soft robots with
multiple materials and a powerful generative encoding.” Proceedings of
the 15th annual conference on Genetic and evolutionary computation.
2013.
[6] Hiller, Jonathan, and Hod Lipson. ”Automatic design and manufacture
of soft robots.” IEEE Transactions on Robotics 28.2 (2011): 457-466.
[7] Medvet, Eric, et al. ”2D-VSR-Sim: A simulation tool for the optimization
of 2-D voxel-based soft robots.” SoftwareX 12 (2020): 100573.
[8] Hansen, Nikolaus, and Andreas Ostermeier. ”Completely derandomized
self-adaptation in evolution strategies.” Evolutionary computation 9.2
(2001): 159-195.
[9] Rothlauf, Franz, and David E. Goldberg. ”Redundant representations
in evolutionary computation.” Evolutionary Computation 11.4 (2003):
381-415.
[10] Talamini, Jacopo, et al. ”Evolutionary Synthesis of Sensing Controllers
for Voxel-based Soft Robots.” Artificial Life Conference Proceedings. One
Rogers Street, Cambridge, MA 02142-1209 USA journals-info@ mit. edu:
MIT Press, 2019.
54

More Related Content

What's hot (6)

Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
 
My Thesis
My ThesisMy Thesis
My Thesis
 
Andrea_Gangemi_tesi
Andrea_Gangemi_tesiAndrea_Gangemi_tesi
Andrea_Gangemi_tesi
 
Monitoraggio di applicazioni software mediante modelli di Markov
Monitoraggio di applicazioni software mediante modelli di MarkovMonitoraggio di applicazioni software mediante modelli di Markov
Monitoraggio di applicazioni software mediante modelli di Markov
 
Tesi_laurea_in Fisca_Marco_Tannino_2010
Tesi_laurea_in Fisca_Marco_Tannino_2010Tesi_laurea_in Fisca_Marco_Tannino_2010
Tesi_laurea_in Fisca_Marco_Tannino_2010
 
Sviluppo di un sistema per la stabilizzazione dinamica di un processo intrins...
Sviluppo di un sistema per la stabilizzazione dinamica di un processo intrins...Sviluppo di un sistema per la stabilizzazione dinamica di un processo intrins...
Sviluppo di un sistema per la stabilizzazione dinamica di un processo intrins...
 

Similar to Promuovere e misurare la biodiversità nei soft robot modulari evolvendo corpo e controllore

Extended Summary of "Engineered Self-Organization for Resilient Robot Self-As...
Extended Summary of "Engineered Self-Organization for Resilient Robot Self-As...Extended Summary of "Engineered Self-Organization for Resilient Robot Self-As...
Extended Summary of "Engineered Self-Organization for Resilient Robot Self-As...
SergioMilo1
 
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
GabrieleGandossi
 
Validation and analysis of mobility models
Validation and analysis of mobility modelsValidation and analysis of mobility models
Validation and analysis of mobility models
Umberto Griffo
 
Simulazione e verifica sperimentale di un sistema di condizionamento per sens...
Simulazione e verifica sperimentale di un sistema di condizionamento per sens...Simulazione e verifica sperimentale di un sistema di condizionamento per sens...
Simulazione e verifica sperimentale di un sistema di condizionamento per sens...
louiswilson15
 
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di...
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di...Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di...
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di...
Andrea Bidinost
 

Similar to Promuovere e misurare la biodiversità nei soft robot modulari evolvendo corpo e controllore (20)

Tesi De Franceschi Daniel
Tesi De Franceschi DanielTesi De Franceschi Daniel
Tesi De Franceschi Daniel
 
Extended Summary of "Engineered Self-Organization for Resilient Robot Self-As...
Extended Summary of "Engineered Self-Organization for Resilient Robot Self-As...Extended Summary of "Engineered Self-Organization for Resilient Robot Self-As...
Extended Summary of "Engineered Self-Organization for Resilient Robot Self-As...
 
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
Telecontrollo di un sistema cartesiano a 2 g.d.l. mediante interfaccia aptica...
 
Validation and analysis of mobility models
Validation and analysis of mobility modelsValidation and analysis of mobility models
Validation and analysis of mobility models
 
a4_centrata
a4_centrataa4_centrata
a4_centrata
 
Simulazione e verifica sperimentale di un sistema di condizionamento per sens...
Simulazione e verifica sperimentale di un sistema di condizionamento per sens...Simulazione e verifica sperimentale di un sistema di condizionamento per sens...
Simulazione e verifica sperimentale di un sistema di condizionamento per sens...
 
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di...
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di...Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di...
Sviluppo e studio di un algoritmo genetico per la ricerca di un intervallo di...
 
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”
Extended Summary of “Co-Learning of Task and Sensor Placement for Soft Robotics”
 
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
 
PROGETTAZIONE ED IMPLEMENTAZIONE DI STRUMENTI PER LA VALUTAZIONE DI RETI COMP...
PROGETTAZIONE ED IMPLEMENTAZIONE DI STRUMENTI PER LA VALUTAZIONE DI RETI COMP...PROGETTAZIONE ED IMPLEMENTAZIONE DI STRUMENTI PER LA VALUTAZIONE DI RETI COMP...
PROGETTAZIONE ED IMPLEMENTAZIONE DI STRUMENTI PER LA VALUTAZIONE DI RETI COMP...
 
Publish/Subscribe EDI with Content-Based Routing
Publish/Subscribe EDI with Content-Based RoutingPublish/Subscribe EDI with Content-Based Routing
Publish/Subscribe EDI with Content-Based Routing
 
Extended Summary of "EvoCraft: A New Challenge for Open-Endedness"
Extended Summary of "EvoCraft: A New Challenge for Open-Endedness"Extended Summary of "EvoCraft: A New Challenge for Open-Endedness"
Extended Summary of "EvoCraft: A New Challenge for Open-Endedness"
 
Cancellatori_d_Eco_per_Dispositivi_di_Allarmistica_ed_Emergenza.pdf
Cancellatori_d_Eco_per_Dispositivi_di_Allarmistica_ed_Emergenza.pdfCancellatori_d_Eco_per_Dispositivi_di_Allarmistica_ed_Emergenza.pdf
Cancellatori_d_Eco_per_Dispositivi_di_Allarmistica_ed_Emergenza.pdf
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiore
 
REALIZZAZIONE HARDWARE E SOFTWARE DI UN ROBOT MOBILE DI SERVIZIO - Tesi
REALIZZAZIONE HARDWARE E SOFTWARE DI UN ROBOT MOBILE DI SERVIZIO - TesiREALIZZAZIONE HARDWARE E SOFTWARE DI UN ROBOT MOBILE DI SERVIZIO - Tesi
REALIZZAZIONE HARDWARE E SOFTWARE DI UN ROBOT MOBILE DI SERVIZIO - Tesi
 
Mech Eng Thesis
Mech Eng ThesisMech Eng Thesis
Mech Eng Thesis
 
Montalti - "Interactive Musical Agents" (2010, paper ITA)
Montalti - "Interactive Musical Agents" (2010, paper ITA)Montalti - "Interactive Musical Agents" (2010, paper ITA)
Montalti - "Interactive Musical Agents" (2010, paper ITA)
 
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
 
Pattern Recognition Lecture Notes
Pattern Recognition Lecture NotesPattern Recognition Lecture Notes
Pattern Recognition Lecture Notes
 
[Thesis] IBSS: Intelligent Brake Support System
[Thesis] IBSS: Intelligent Brake Support System [Thesis] IBSS: Intelligent Brake Support System
[Thesis] IBSS: Intelligent Brake Support System
 

Recently uploaded

Recently uploaded (9)

GIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA RobertoGIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA Roberto
 
GIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO RaffaeleGIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO Raffaele
 
Presentzione Matematica similitudini circonferenze e omotetie.pptx
Presentzione  Matematica similitudini circonferenze e omotetie.pptxPresentzione  Matematica similitudini circonferenze e omotetie.pptx
Presentzione Matematica similitudini circonferenze e omotetie.pptx
 
Descrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptxDescrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptx
 
GIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI MassimoGIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
 
GIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI AlessandroGIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI Alessandro
 
GIORNATA TECNICA 18/04 | DE LEO Antonio
GIORNATA TECNICA 18/04  | DE LEO AntonioGIORNATA TECNICA 18/04  | DE LEO Antonio
GIORNATA TECNICA 18/04 | DE LEO Antonio
 
GIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO SerenaGIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
 
GIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA SimoneGIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
 

Promuovere e misurare la biodiversità nei soft robot modulari evolvendo corpo e controllore

  • 1. Universit`a degli Studi di Trieste Dipartimento di Ingegneria e Architettura Corso di Studi in Ingegneria Elettronica ed Informatica Tesi di Laurea Magistrale Promuovere e misurare la biodiversit`a nei soft robot modulari evolvendo corpo e controllore Laureando: Marco ROCHELLI Relatore: prof. Eric MEDVET Anno Accademico 2020/2021
  • 2.
  • 3. Alla mia mamma Elena e al mio pap`a Paolo
  • 4. Indice 1 Introduzione 3 2 Background 4 2.1 Voxel-Based soft robots . . . . . . . . . . . . . . . . . . . . . . 4 2.1.1 Voxel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1.2 VSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.3 Controllore . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.4 Sensori . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.5 Compito . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.6 Simulazione . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 CMA-ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.1 Principio di massima probabilit`a . . . . . . . . . . . . 8 2.2.2 Percorsi evolutivi . . . . . . . . . . . . . . . . . . . . . 8 2.2.3 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3 Terminologia . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3 Rappresentazione 12 3.1 Corpo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.1.1 Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.1.2 Gaussiana . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2 Controllore . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2.1 Omogeneo . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2.2 Eterogeneo . . . . . . . . . . . . . . . . . . . . . . . . 14 3.3 Sensori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3.1 Velocit`a . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3.2 Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3.3 Tocco . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3.4 Posizione . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.4 Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4 Esperimenti e risultati 17 4.1 Note implementative . . . . . . . . . . . . . . . . . . . . . . . 17 4.2 Fase esplorativa . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.2.1 Risultati fase esplorativa . . . . . . . . . . . . . . . . . 20 4.2.2 Video . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1
  • 5. 4.2.3 Conclusioni fase esplorativa . . . . . . . . . . . . . . . 25 4.3 Fase finale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.3.1 Resistenza ai danni . . . . . . . . . . . . . . . . . . . . 27 4.3.2 Biodiversit`a . . . . . . . . . . . . . . . . . . . . . . . . 27 4.3.3 Risultati fitness . . . . . . . . . . . . . . . . . . . . . . 30 4.3.4 Risultati resistenza ai danni . . . . . . . . . . . . . . . 39 4.3.5 Conclusioni fitness e resistenza ai danni . . . . . . . . . 43 4.3.6 Risultati biodiversit`a . . . . . . . . . . . . . . . . . . . 43 4.3.7 Conclusioni biodiversit`a . . . . . . . . . . . . . . . . . 51 5 Conclusioni 53 Riferimenti bibliografici 54 2
  • 6. 1 Introduzione In molti ambienti naturali sono presenti esseri viventi che svolgono compiti con successo, pur essendo diversi per forma e comportamento. Questa bio- diversit`a `e ci`o che ha reso la vita nella sua interezza qualcosa in grado di adattarsi a cambiamenti imprevisti e distruttivi. Essere in grado di riprodurre la biodiversit`a in agenti non biologici, pur ottimizzandoli per un dato compito, pu`o migliorare la loro applicabilit`a in scenari dove l’intervento umano in risposta a cambiamenti inaspettati non `e possibile. In questa tesi consideriamo i soft robot modulari chiamati in inglese Voxel-based Soft Robot (VSR). Questi rappresentano una tipologia di robot composti da materiali morbidi che permette una grande libert`a nel design del corpo e del controllore dei robot. Questo `e molto promettente per quello che riguarda la biodiversit`a delle soluzioni. Purtroppo per`o questa grande libert`a porta ad una maggiore complessit`a in fase di design. In questo lavoro proponiamo e confrontiamo pi`u rappresentazioni per il genotipo dei robot che permettono, attraverso un algoritmo evolutivo, di ot- timizzare contemporaneamente il corpo e il controllore dei VSR. Nonostante lo spazio di ricerca sia molto grande `e possibile ottenere soluzioni in grado di svolgere con successo il compito della locomozione. Inoltre proponiamo un modo per caratterizzare in maniera sistematica i robot ed i loro comportamenti in termini di postura e tipologia di andatura applicandolo alle soluzioni ottenute. Infine mostriamo che, utilizzando una delle rappresentazioni da noi pro- poste, l’evoluzione `e in grado di trovare pi`u soluzioni efficaci e diverse tra di loro per il compito della locomozione. Ci`o equivale a scoprire e caratterizzare la biodiversit`a nei VSR. 3
  • 7. 2 Background 2.1 Voxel-Based soft robots La Soft robotics [1][2] `e un campo della robotica che studia robot composti da materiali morbidi. I Soft robot possono eseguire compiti difficili da com- pletare per i robot tradizionali [3]. Questo `e possibile grazie alla loro natura flessibile che dona loro “Infiniti gradi di libert`a” [4]. Questo potenziale per`o si ottiene al costo di una maggiore complessit`a in fase di design. Un tipo di soft robots particolarmente interessante `e quello dei Voxel- based soft robot (VSR)[5]. I VSR sono composti da diversi blocchi morbidi, chiamati voxel, che possono cambiare il loro volume. Il modo in cui i voxel sono assemblati tra di loro definisce il corpo del VSR, mentre la legge con cui i voxel cambiano il loro volume nel corso del tempo definisce il controllore. I VSR sono particolarmente interessanti dal punto di vista dell’ottimizza- zione [6]. Purtroppo per`o pu`o essere difficile studiare i diversi comportamenti che possono nascere dal simultaneo comportamento di diversi blocchi. La lo- ro natura modulare per`o permette di affrontare i problemi di ottimizzazione da diversi punti di vista e a diversi livelli di complessit`a. Ci`o rappresenta un chiaro vantaggio. Per questa tesi `e stato usato un software in grado di simulare uno o pi`u VSR chiamato 2D-VSR-Sim [7] sviluppato presso l’Universit`a degli Studi di Trieste. Questo software permette di simulare versioni bidimensionali dei robot. La simulazione `e discreta nel tempo e continua nello spazio, la posizione di ogni voxel costituente il VSR `e aggiornata ad ogni intervallo di tempo secondo il modello meccanico ed il controllore del VSR. Il modo in cui le componenti di un VSR vengono modellate e simulate viene spiegato di seguito. 2.1.1 Voxel Un voxel `e un blocco bidimensionale morbido modellato con: • Quattro corpi rigidi posti ai quattro angoli del blocco. • Delle molle collegate tra i corpi rigidi che costituiscono un’impalcatura. • Dei cavi che collegano tra di loro i corpi rigidi. 4
  • 8. La massa del voxel `e suddivisa tra i quattro corpi rigidi mentre molle e cavi hanno massa nulla. I cavi fungono da limite massimo per la distanza che due corpi possono avere. La maggior parte delle propriet`a del voxel possono essere configurate per via programmatica. `E possibile selezionare la lunghezza del lato del voxel come anche le di- mensioni dei quattro corpi rigidi. L’utente pu`o anche specificare il tipo di impalcatura, scegliendo tra un insieme predefinito di possibilit`a, e pu`o sce- gliere se le cime congiungenti le masse devono essere presenti o meno. Inol- tre `e possibile variare il valore dei parametri fisici usati dal simulatore come coefficiente d’attrito e coefficiente di restituzione. Scegliendo opportunamente il valore dei parametri `e possibile impattare sulle caratteristiche del materiale costituente i voxel. La Figura 1 mostra come viene modellato un voxel: Figura 1: modello del voxel In grigio sono rappresentati i quattro corpi rigidi. Il nero rappresenta i cavi mentre le molle costituenti l’impalcatura sono in blu, verde, arancione e rosso. 2.1.2 VSR Un VSR `e modellato come una collezione di voxel organizzati in una griglia bidimensionale. Ogni voxel `e rigidamente collegato ai voxel sopra, sotto, a destra e a si- nistra. La connessione tra due voxel `e modellata con due giunti rigidi che 5
  • 9. connettono i centri delle masse sul lato adiacente. Il giunto non permette ro- tazioni delle masse attorno ai punti di connessione n´e variazioni della distanza tra i centri delle masse (`e come se i due voxel fossero saldati assieme). La Figura 2 mostra il modello meccanico di un VSR: Figura 2: modello del VSR Le masse, le molle e le cime sono di colore grigio, le saldature rigide che connettono tra di loro i voxel sono di colore rosso. Il VSR pu`o essere composto da voxel aventi settaggi dei parametri diversi, il che equivale a dire che pu`o essere composto da voxel fatti di materiali diversi. 2.1.3 Controllore Il modo in cui un VSR si comporta `e determinato da un controllore. Quando `e invocato il controllore determina per ogni voxel i il valore di controllo da applicare fi ∈ [−1, 1]. Il valore di controllo `e applicato dal simulatore fisico e causa una variazione dell’area dei voxel e di conseguenza un cambiamento nella forma del VSR. Un controllore pu`o avere accesso a diversi sensori per ogni voxel dando al VSR la capacit`a di percepire il suo stato e l’ambiente circostante. Il controllore pu`o essere implementato dall’utilizzatore con grande libert`a per rispondere a diverse esigenze. Per esempio i controllori realizzabili spa- ziano da quelli in cui fi dipende solo dall’istante di tempo corrente a quelli in cui fi `e il risultato di un’elaborazione non banale di stato corrente e stati 6
  • 10. passati del VSR e dell’ambiente. Un esempio del secondo caso pu`o essere un controllore basato su una rete neurale con architettura definita dall’utente che ad ogni invocazione calcola l’output a partire da degli input. 2.1.4 Sensori La configurazione di sensori di un VSR permette al robot di percepire se stesso e l’ambiente circostante [10]. L’output della percezione pu`o influire sul comportamento del VSR in quanto viene utilizzato dal controllore per determinare i valori di controllo. La configurazione di sensori consiste in 0 o pi`u sensori per ognuno dei voxel che compongono il corpo del VSR. Ogni sensore `e di un tipo e ogni voxel pu`o avere solo un sensore di quel tipo. Ogni sensore produce ad ogni intervallo di simulazione una lettura s ∈ D ⊆ Rp con D il dominio del sensore e p la dimensionalit`a del tipo di sensore. 2.1.5 Compito Nel corso della simulazione i VSR devono risolvere un compito loro assegnato. In generale un compito `e una funzione che processa un input e restituisce un output. In questo caso l’input `e rappresentato dal robot e l’output `e una misura di quanto quel robot abbia completato quel compito. In 2D-VSR-Sim `e gi`a implementato un compito, la locomozione, in cui l’obbiettivo del robot `e quello di avanzare il pi`u possibile. Questo `e un compito su cui la maggior parte degli studi precedenti si sono concentrati [7][10]. Diversi aspetti del compito possono essere configurati tra cui: la durata della simulazione, la forma del terreno e il metodo di misura dell’avanzamen- to. Questo ultimo parametro permette di rendere l’ottimizzazione del VSR un problema multi-obbiettivo. Esempi di misure che possono essere usate so- no la velocit`a del robot, la velocit`a relativa (una misura che tiene conto anche delle dimensioni effettive del VSR) e la media della somma del quadrato dei segnali di controllo dei voxel. 2.1.6 Simulazione 2D-VSR-Sim utilizza dyn4j, un motore fisico gi`a esistente, per risolvere il modello meccanico composto dal VSR. Il VSR `e soggetto alle forze generate dall’attuazione determinata dal suo controllore e dall’interazione con altri corpi (il terreno). 7
  • 11. Il motore fisico pu`o essere configurato in vari aspetti tra cui il pi`u im- portante `e forse l’intervallo di tempo ∆t usato per risolvere numericamen- te il modello. Per evitare instabilit`a numeriche `e importante scegliere ∆t sufficientemente piccolo. Il valore di default di ∆t `e di 1/60 s. Le performance della simulazione, definite come il numero di passi che possono essere simulati in un istante di tempo, sono influenzate quasi esclu- sivamente dal numero di voxel da simulare. Il tempo necessario per effettuare una simulazione infatti aumenta linearmente con il numero di voxel. 2.2 CMA-ES L’ottimizzazione numerica `e una branca della matematica applicata che stu- dia teoria e metodi per la ricerca dei punti di massimo e minimo di una funzione matematica all’interno di un dominio specificato. Nel corso degli esperimenti `e stato usato un particolare metodo di ottimiz- zazione numerica chiamato Covariance matrix adaptation evolution strategy (CMA-ES) [8]. Questo algoritmo sfrutta due elementi fondamentali per trovare la solu- zione ottima nello spazio di ricerca: il principio di massima probabilit`a e i percorsi evolutivi. 2.2.1 Principio di massima probabilit`a Il principio di massima probabilit`a punta ad aumentare la probabilit`a di successo delle soluzioni candidate Sk ad ogni passo. La media delle soluzioni candidate mk `e aggiornata in maniera tale che la probabilit`a di ottenere nuove Sk di successo sia massimizzata. La matrice di covarianza C della distribuzione invece `e aggiornata per massimizzare la probabilit`a di effettuare i passi di ricerca successivi nella direzione corretta. Questi aggiornamenti possono essere interpretabili come uno spostamento nella direzione del gradiente massimo. 2.2.2 Percorsi evolutivi Nel corso dell’evoluzione vengono salvati due percorsi calcolati a partire dalla media mk. Questi percorsi contengono informazioni sulla correlazione tra 8
  • 12. passi successivi nel corso dell’evoluzione. Per esempio, se due passi successivi sono condotti nella stessa direzione, il percorso evolutivo si allunga. Un percorso pc `e usato per l’adattamento della matrice delle covarianze e serve a facilitare una convergenza pi`u rapida dell’algoritmo. Il secondo percorso pσ `e usato per effettuare un controllo sulla dimensione dei passi e serve a prevenire una convergenza prematura dell’algoritmo ad un massimo locale. 2.2.3 Algoritmo Di seguito viene illustrato l’algoritmo di CMA-ES. Algorithm 1: CMA-ES set λ; initialize m, σ, C = I, pσ = 0, pc = 0; while not terminate do // sample λ solutions and evaluate them for i in 1 . . . λ do xi = sample multivariate normal (mean = m, covariance matrix = σ2 C); fi = fitness (xi) // sort solutions x1...λ ← xs(1)...s(λ) with s(i) = argsort(f1...λ, i) m ′ = m // move mean to better solutions m ← update m(x1, . . . , xλ) // update isotropic evolution path pσ ← update pσ (pσ, σ−1 C−1/2 (m − m ′ ) // update anisotropic evolution path pc ← update pc (pc, σ−1 (m − m ′ , ∥pσ∥) // update covariance matrix C← update C (C, pc, (x1 − m ′ )/σ, . . . , (xλ − m ′ )/σ) // update step size using isotropic path length σ ← update σ (σ, ∥pσ∥) return m or x1 L’ordine delle cinque assegnazioni `e importante per il corretto funziona- mento dell’algoritmo; m deve essere aggiornato per primo, pσ e pc devono essere aggiornati prima di C, σ deve essere aggiornato per ultimo. 9
  • 13. Dato uno spazio di ricerca di dimensione n e la k-esima iterazione le cinque variabili di stato sono: • mk ∈ Rn `e la media della distribuzione e la attuale soluzione favorita al problema di ottimizzazione. • σk > 0 la dimensione del passo. • Ck una matrice delle covarianze simmetrica definita positiva di dimen- sione n × n con C0 = I. • pσ e pc i due percorsi evolutivi inizializzati a zero. L’iterazione comincia campionando λ > 1 soluzioni candidate xi ∈ Rn prese da una distribuzione normale multi-variata. Successivamente le solu- zioni candidate vengono valutate secondo la funzione obbiettivo f : Rn → R e ordinate in base alla loro fitness. La nuova media viene calcolata come una media pesata delle soluzioni candidate. Il peso dipende dalla posizione della soluzione candidata nell’ordinamento secondo la fitness. Un esempio pu`o essere di calcolare la media usando solo la migliore met`a delle soluzioni candidate ponendo a zero i pesi delle rimanenti. Successivamente vengono aggiornati i percorsi evolutivi tenendo in considerazione la nuova media otte- nuta. Per ultimi vengono aggiornati C e σ tenendo in considerazione i valori appena ottenuti di pc e pσ. Il valore di σk `e incrementato se ∥pσ∥ supera un valore atteso, decrementato altrimenti. Il numero di soluzioni candidate λ di ogni iterazione non `e determinato a priori e pu`o variare in un range molto ampio cambiando da un’iterazione all’altra. Una particolarit`a di questo algoritmo `e che non garantisce la monotonicit`a crescente del valore della fitness. Questo diventer`a evidente osservando i grafici della fitness mostrati in seguito. 2.3 Terminologia Al fine di comprendere quello che verr`a presentato nei seguenti capitoli `e necessario conoscere il significato attribuito ad alcuni termini. Ecco una breve lista di vocaboli con relative definizioni che verranno utilizzati in seguito: • Genotipo: una struttura dati a partire dalla quale `e possibile costruire il fenotipo. 10
  • 14. • Rappresentazione del genotipo: come `e composto internamente il ge- notipo e come ogni sua parte trasporta l’informazione necessaria a costruire il fenotipo. • Mappatura: come `e stato scelto di trasformare il genotipo nel fenotipo. • Fenotipo: una soluzione candidata per il problema preso in considera- zione. Nel nostro caso il fenotipo `e rappresentato da un VSR. • Fitness: una misura di quanto il fenotipo `e in grado di risolvere un determinato compito. 11
  • 15. 3 Rappresentazione Nel corso della tesi sono state usate diverse rappresentazioni per il genotipo dei VSR. `E importante conoscerle per comprendere appieno gli esperimenti svolti. In tutti i casi il genotipo era composto da una lista di double la cui parte iniziale conteneva le informazioni sulla forma del robot e la parte finale le informazioni sul controllore. Sono state usate due diverse rappresentazioni per il corpo e due diverse rappresentazioni per il controllore del VSR. En- trambe le rappresentazioni presentavano un certo grado di ridondanza [9]. Ci`o significa che esistono zone nello spazio del genotipo dove genotipi diversi corrispondono allo stesso fenotipo. Inoltre abbiamo utilizzato diversi tipi di sensori e abbiamo variato un parametro che influisce sulla capacit`a dei voxel di comunicare tra di loro. Il tutto viene spiegato di seguito. 3.1 Corpo Per il corpo sono state usate due rappresentazioni diverse: quella a bit e quella gaussiana. La prima `e basata su una griglia di valori reali che definiscono la presenza o no di un voxel in quella posizione della griglia, la seconda si basa su cinque gaussiane bi-variate la cui somma calcolata in ogni cella della griglia determinava la presenza o no del voxel in quella posizione. In entrambe le rappresentazioni la dimensione della griglia `e fissata a priori. Chiamiamo w ed h rispettivamente la sua larghezza e la sua altezza. Questi due valori definiscono le dimensioni massime che il VSR pu`o avere. 3.1.1 Bit Nella rappresentazione a bit i primi n valori del genotipo, (con n = w × h) possono assumere valori double compresi tra −1 e 1. Questi valori vengono usati per creare una matrice di dimensioni pari alla massima dimensione del robot. La matrice viene generata a partire dalla sequenza nel seguente modo: • dati g0, g1, . . . , gn i valori del genotipo • posta M una matrice di dimensioni w × h Mi,j = gi+(j·w) Dopo essere stata creata, la matrice M viene trasformata nel seguente modo: per ogni elemento della matrice, se il suo valore `e positivo diventa 12
  • 16. 1, altrimenti diventa 0. Successivamente viene trovata la pi`u grande isola di elementi con valore 1 4-connessi tra di loro all’interno di M e vengono posti a zero tutti gli elementi della matrice non appartenenti a quell’isola. Questo passaggio `e necessario per ottenere robot composti da un unico gruppo di voxel collegati tra di loro. Il corpo del VSR viene creato a partire dalla matrice cos`ı ottenuta nel seguente modo: se il valore nella corrispondente posizione della matrice `e 0 il voxel non `e presente, se il valore `e 1 invece il voxel c’`e. 3.1.2 Gaussiana Nella rappresentazione gaussiana i primi venticinque valori del genotipo sono i parametri di cinque gaussiane bi-variate. Ogni gaussiana `e rappresentata dai seguenti parametri: • w ∈ [−1, 1] = peso della gaussiana • µx ∈ [0, 1] = media lungo l’asse x • µy ∈ [0, 1] = media lungo l’asse y • σx ∈ [0, 1] = deviazione standard lungo l’asse x • σy ∈ [0, 1] = deviazione standard lungo l’asse y Queste cinque gaussiane vengono usate per costruire una matrice M di di- mensioni w × h. La matrice viene costruita nel seguente modo: vengo- no calcolati i valori normalizzati di ogni gaussiana utilizzando la seguente formula: f(i, j) = 1 2πσiσj · e −1 2 · ⎛ ⎝ (︃ i w −µi σi )︃2 + (︄ j h −µj σj )︄2 ⎞ ⎠ Con i e j = coordinate della cella della matrice. I cinque valori ottenuti vengono poi sommati tra di loro e si ottiene un numero reale pi,j. La matrice M viene riempita nel seguente modo Mi,j = pi,j. Anche in questo caso viene trovata la pi`u grande isola di elementi con valore 1 4-connessi all’interno di M e vengono posti a zero tutti gli elementi della matrice non appartenenti a quell’isola. Questo passaggio `e necessario per ottenere robot composti da un unico gruppo di voxel collegati tra di loro. Il corpo del VSR viene costruito a partire da questa matrice, se il valore `e 1 il voxel nella corrispondente posizione `e presente, altrimenti no. 13
  • 17. 3.2 Controllore Il controllore, basato su una rete neurale, calcola ad ogni invocazione l’out- put della rete. Ogni voxel `e dotato della propria rete neurale come in [10]. L’architettura delle reti neurali `e sempre la stessa per ogni voxel. Tutti gli esperimenti sono stati svolti usando reti neurali con zero strati interni. Il numero di input, quello di output e il conseguente numero di pesi della re- te `e definito implicitamente dalla configurazione sensoristica e dal numero di signals, un parametro che determina la capacit`a dei voxel di comunicare tra di loro. Entrambi sono passati come parametri in fase di creazione del controllore. Il valore di ogni singolo peso invece viene definito dal processo evolutivo da parte di CMA-ES. Nel corso degli esperimenti sono stati usati due tipi di controllore diverso chiamati omogeneo ed eterogeneo. Di seguito spiego le differenze tra i due. 3.2.1 Omogeneo Nel controllore omogeneo ogni rete neurale ha gli stessi pesi delle altre. Que- sto equivale ad addestrare una singola rete neurale e copiarla dentro a tutti i voxel. La lunghezza del genotipo del robot in questo caso `e data dai valori per la rappresentazione del corpo pi`u p numeri reali (con p pari al numero di pesi della rete neurale). dimensioneGenotipo = w · h + p 3.2.2 Eterogeneo Nel controllore eterogeneo ogni rete neurale ha i suoi pesi. Questi possono essere uguali o diversi da quelli delle altre reti neurali appartenenti ad altri voxel. La lunghezza del genotipo del robot per il controllore eterogeneo `e data dai valori per la rappresentazione del corpo pi`u un numero p di pesi della rete neurale moltiplicato per il numero massimo di voxel da cui pu`o essere composto il robot. dimensioneGenotipo = w · h + p · w · h Il genotipo nel caso di controllore eterogeneo quindi `e considerevolmente pi`u grande di quello a controllore omogeneo. 14
  • 18. 3.3 Sensori I voxel possono essere creati scegliendo una configurazione di sensori che deve essere uguale per ogni voxel del VSR. I sensori possono essere scelti da un insieme di sensori gi`a disponibili all’interno di 2D-VSR-Sim o possono essere implementati permettendone la personalizzazione in base alle esigenze. I sensori gi`a disponibili utilizzati nel corso degli esperimenti sono velocit`a, area e tocco. Abbiamo poi implementato un nuovo sensore quello di posizione. Ab- biamo scelto di implementare questo nuovo sensore per poterlo utilizzare in VSR dotati di controllore omogeneo. Il motivo `e il seguente. Se il controllore `e eterogeneo ogni voxel ha implicitamente la capacit`a di comportarsi in ma- niera diversa in base alla sua posizione all’interno del robot. Questo accade perch´e ogni voxel ha una rete neurale diversa che si `e evoluta proprio per quella posizione. Ci`o non accade se il controllore `e omogeneo. Dotando per`o i voxel dei VSR con controllore omogeneo di un sensore di posizione `e possi- bile colmare questa disparit`a. Con questo sensore infatti la rete neurale pu`o processare in maniera diversa gli input al variare della posizione del voxel all’interno del robot. 3.3.1 Velocit`a Quando invocato, il sensore di velocit`a restituisce la velocit`a del centro di massa del voxel scomposta lungo gli assi x e y solidali al voxel (cio`e gli assi ruotano se ruota il voxel). Il centro di massa di ogni voxel `e calcolato come centro di massa delle quattro masse poste ai vertici del voxel. 3.3.2 Area Il sensore di area restituisce un valore che `e il rapporto tra l’area del voxel all’istante in cui il sensore viene invocato e la sua area a riposo. 3.3.3 Tocco Il sensore di tocco ritorna un valore pari a uno se il voxel `e in contatto con altri corpi non appartenenti al robot, come per esempio il terreno, zero altrimenti. 15
  • 19. 3.3.4 Posizione Il sensore di posizione ha come output due valori che rimangono costanti dall’inizio alla fine della simulazione. I valori ritornati sono le coordinate i e j del voxel nella griglia del corpo del VSR. Questi valori sono normalizzati rispetto alle dimensioni massime del VSR. 3.4 Signals Ogni voxel pu`o comunicare con i voxel adiacenti inviandogli zero o pi`u segnali. Ogni segnale `e un numero reale che i voxel possono scambiarsi tra di loro ad ogni invocazione del controllore. Un segnale viene generato come output di una rete neurale e alla seguente invocazione del controllore diventa un input della rete neurale adiacente a quel lato del voxel. Il numero di signals si riferisce al numero di segnali per ogni lato del voxel che le reti neurali possono scambiarsi tra di loro ad ogni invocazione del controllore. Ci`o permette, nel caso i signals siano uno o pi`u, di avere un sistema retro-azionato. Nel caso i signals siano zero invece i voxel non sono in grado di comunicare tra di loro. Sono stati condotti esperimenti con zero, uno, due e tre signals. 16
  • 20. 4 Esperimenti e risultati Le domande a cui volevamo inizialmente rispondere erano: • `E possibile evolvere contemporaneamente corpo e controllore di un VSR per completare con successo il compito della locomozione? • Rappresentazione, controllore e configurazione di sensori in che modo influiscono sulla fitness delle soluzioni? • Che impatto hanno rappresentazione, controllore e configurazione di sensori sulla resistenza ai danni o alle modifiche che i VSR potrebbero subire? Per rispondere a questi interrogativi abbiamo condotto 2 cicli di esperimenti per un totale di 46 esperimenti. Questi cicli di esperimenti sono strettamente legati alle due fasi in cui pu`o essere divisa questa ricerca: quella esplorativa e quella finale. All’interno di ogni esperimento la configurazione di sensori, come anche le propriet`a fisiche, erano le stesse per tutti i voxel. Tutti gli esperimenti sono stati fatti usando un terreno piatto all’interno della simulazione. 4.1 Note implementative Per la preparazione degli esperimenti `e stato utilizzato il linguaggio Java e l’IDE intellijIDEA. Sono stati usati due progetti, il simulatore di VSR 2D-VSR-Sim e il framework evolutivo Jgea, creati rispettivamente presso i laboratori Evolutionary Robotics and Artificial Life Lab1 e Machine Lear- ning Lab2 dell’Universit`a degli Studi di Trieste. Questi sono stati integrati all’interno di un terzo progetto chiamato VSREvolution utilizzando Maven. Per il controllo di versione sono stati usati Git e GitHub. Le versioni di VSREvolution utilizzate per svolgere questi esperimenti sono disponibili a: https://github.com/MarcoRochelli/Co-evolution.git All’ interno di VSREvolution scrivevo le classi per il mapping tra genotipo e fenotipo del robot e tutto il necessario per lanciare gli esperimenti. Di seguito gli esperimenti venivano lanciati da linea di comando con comandi Slurm ed eseguiti in parallelo grazie a quest’ultimo su un cluster di nodi. I 1 https://erallab.inginf.units.it 2 https://machinelearning.inginf.units.it 17
  • 21. parametri per l’esperimento venivano passati attraverso un file sh caricato precedentemente sul super-computer. Due sono i sistemi utilizzati nel corso di questa tesi: il Bura e il Galileo. Senza la possibilit`a di usarli questo lavoro non sarebbe stato possibile. Il Bura `e un cluster di nodi con sede a Fiume costruito dalla Bull. Il supercomputer `e costituito da 288 nodi di computazione ognuno dei quali dotato di due Intel Xeon E5-2690v3 da 12 core per un totale di 24 core per nodo e 6912 core complessivi. Ogni nodo dispone di 64 GB di RAM e 320 GB di spazio su disco per un totale di 18 TB di RAM e 95 TB di spazio su disco. Sono anche disponibili 4 nodi GPGPU dotati di due nVidia Tesla K40 ciascuno e 2 nodi SMP con 256 core e 12 TB di RAM. I nodi sono connessi tra di loro con connessioni ad alta velocit`a e bassa latenza InfiniBand FDR. L’accesso avviene attraverso due nodi usati anche per compilare e installare il software. Sul cluster gira Red Hat Enterprise Linux 7 e il workload manger Slurm. Il Galileo invece si trova a Bologna ed `e una partizione del cluster CINE- CA HPC gestito dal CINECA. Attualmente il sistema, realizzato da IBM, dispone di 1022 nodi di computazione ognuno dotato di due Intel Xeon E5- 2697 v4 da 18 core ciascuno per un totale di 36 core per nodo e 26 572 core totali. Ogni nodo dispone di 128 GB di memoria RAM. Sono poi disponibili 60 nodi dotati di due gpu nVidia k80 ciascuno e 2 nodi dotati di due nVidia K100 ciascuno. Il login avviene attraverso 8 nodi, come anche le operazioni di compilazione e installazione del software. Il cluster usa Linux ed i nodi sono connessi tra di loro con connessioni Intel OmniPath OPAv10.6 dotate di 100 Gbit s−1 di banda. A partire da ogni simulazione venivano generati due file csv: quello delle statistiche e quello con la versione serializzata del robot. Il file delle statistiche conteneva informazioni sull’esperimento come rappresentazione, controllore, dimensioni massime, configurazione sensoristica, numero del run, tempo tra- scorso dall’inizio dell’esperimento e iterazioni di CMA-ES. Erano poi presenti informazioni riguardo la dimensione del genotipo dei robot, la fitness e altre metriche ad essa legate e le dimensioni effettive del VSR. Ad ogni iterazio- ne di CMA-ES veniva scritta una nuova riga contenente le informazioni sul miglior robot tra quelli simulati in quella generazione. Il file con la serializzazione del robot conteneva solo un piccolo sottoin- sieme dei dati presenti nel file delle statistiche e una versione serializzata del miglior robot della generazione appena simulata per ogni riga. A partire da questo file era possibile creare un video dei robot sfruttando una classe 18
  • 22. presente in 2D-VSR-Sim. Una volta conclusi gli esperimenti e scaricati i risultati conducevo le ana- lisi dei dati prodotti utilizzando RStudio e il linguaggio R per creare i grafici e le tabelle mostrate in seguito. Sono state usate diverse librerie aggiuntive all’interno di RStudio tra cui dplyr, ggplot2, tidyr e purrr. 4.2 Fase esplorativa Nella fase esplorativa abbiamo fatto degli esperimenti con lo scopo di verifi- care la fattibilit`a di futuri esperimenti e per individuare le possibili proble- matiche fino ad allora ignote. Le domande a cui questi esperimenti volevano rispondere sono: 1. `E possibile evolvere in contemporanea corpo e controllore di un VSR? 2. Come la rappresentazione del corpo influisce sulla fitness e le soluzioni trovate? 3. Il controllore influisce sulla fitness e le soluzioni trovate? 4. Quanto `e importante la configurazione sensoristica e come impatta sulla fitness e lo spazio delle soluzioni? 5. Dotando i voxel dei VSR con controllore omogeneo di sensori di posi- zione la fitness migliora? Per rispondere a queste domande abbiamo condotto un totale di 24 esperi- menti per esplorare tutte le combinazioni dei seguenti parametri: • Rappresentazione: gaussiana e bit. • Dimensione massima robot: 5 × 5 e 10 × 10. • Controllore: omogeneo, eterogeneo e omogeneo con sensori di posizione. • Sensori: velocit`a+area e velocit`a+area+tocco. • Signals: uno. 19
  • 23. Ognuno di questi esperimenti `e stato lanciato 10 volte, chiamate run. Ogni volta che l’esperimento veniva ripetuto i VSR erano inizializzati in maniera pseudo-casuale, cos`ı facendo ciascuna iterazione era diversa dalle precedenti. In seguito l’algoritmo di CMA-ES ottimizzava la fitness per un totale di 10 000 valutazioni della fitness, d’ora in poi chiamate nascite. La fitness utilizzata era la distanza relativa, definita come la distanza percorsa dal robot divisa per il massimo tra la sua effettiva altezza e larghezza. La durata della simulazione era fissata a 30 secondi. L’approccio nel corso di tutti gli esperimenti era di creare un video con- tenente il robot in tre fasi della sua evoluzione: iniziale, a met`a evoluzione e finale, divise per riga. Questi video si sono rivelati fondamentali per ca- pire ci`o che avveniva nel corso dell’evoluzione e per trarre informazioni sul comportamento dei robot, suscitando domande a cui rispondiamo con gli esperimenti finali. 4.2.1 Risultati fase esplorativa In questa sezione vengono spiegati i risultati della fase esplorativa attraverso dei grafici ricavati dai file delle statistiche. Per ognuno dei 24 esperimenti `e stata calcolata la mediana della fitness nel corso dell’evoluzione sui 10 run eseguiti, d’ora in poi quando ci si riferisce alla fitness si intende questo valore. Di seguito vengono mostrati i grafici della fitness nel corso dell’evoluzione per ognuno dei 24 esperimenti: 20
  • 24. Figura 3: Grafici fitness fase esplorativa La Figura 3 `e composta da 4 grafici: sulla prima riga sono presenti i risultati degli esperimenti con dimensione massima del robot 10 × 10, sulla seconda quelli con dimensione massima 5 × 5. La prima colonna contiene i risultati degli esperimenti con sensori di velocit`a e area la seconda quelli con sensori di velocit`a, area e tocco. All’interno di ogni grafico il tipo di controllore `e rappresentato con un colore diverso: rosso per l’eterogeneo, verde per l’omogeneo e blu per l’omo- geneo con sensore di posizione. Il tipo di rappresentazione viene indicato dal tipo di linea: continua per quella a bit, a tratteggio per quella gaussiana. Per ogni grafico abbiamo lungo l’asse x il numero di nascite, pi`u si va a de- stra quindi pi`u `e andata avanti l’evoluzione. Lungo l’asse y invece abbiamo 21
  • 25. il valore della fitness. Tutti i 4 grafici hanno la stessa scala e sono quindi confrontabili. Osservando la figura `e possibile fare le seguenti osservazioni: • In quasi tutti i casi la fitness aumenta nel corso dell’evoluzione. Ci`o significa che nonostante lo spazio di ricerca molto grande `e possibile evolvere in contemporanea corpo e controllore dei VSR! • Non emerge un chiaro vincitore per quanto riguarda il tipo di rappre- sentazione. Osservando i grafici 10 × 10 infatti sembra essere migliore la rappresentazione gaussiana indifferentemente dal tipo di controllore o dalla configurazione di sensori; la situazione per`o si inverte o non `e ben definita per quello che riguarda gli esperimenti 5 × 5. • Per quello che riguarda il tipo di controllore invece i due approcci, omo- geneo ed eterogeneo, sembrano essere pressoch´e equivalenti dal punto di vista della fitness. Considerando solo la rappresentazione gaussiana i due tipi di controllore risultano pressoch´e equivalenti con i sensori di velocit`a ed area, indifferentemente dalla dimensione del robot. La situazione `e analoga se si aggiunge il sensore di tocco in cui risulta mi- gliore il controllore eterogeneo per VSR grandi e l’omogeneo per quelli piccoli. Prendendo in considerazione solo la rappresentazione a bit in- vece si notano prestazioni lievemente maggiori ottenute dal controllore omogeneo se i robot simulati hanno dimensione massima pari a 10×10. Nel caso 5 × 5 con sensori di velocit`a ed area il controllore omogeneo `e nettamente migliore. La situazione si ribalta anche se con margini minori se si aggiunge il sensore di tocco. • Dare ai VSR la possibilit`a di percepire il contatto con il suolo, dotando i voxel del sensore di tocco, non sembra impattare sulla fitness. Questo pu`o essere visto confrontando tra di loro i grafici riga per riga. • L’aggiunta del sensore di posizione nei VSR con controllore omogeneo non ha migliorato la fitness come sperato. Si nota anzi che la fitness `e significativamente peggiore se i robot sono grandi e comunque sotto la media se i robot simulati sono piccoli. Questo comportamento per certi versi inaspettato `e stato chiarito in seguito durante la fase di osservazione dei video. 22
  • 26. • Osservando gli andamenti della fitness inoltre si osserva che alcune linee avevano ancora un andamento crescente quando l’evoluzione `e stata terminata. Questo ci ha suggerito che il limite imposto di 10 000 nascite possa non essere sufficiente in certi casi. Abbiamo pertanto deciso di aumentare il numero di nascite a 30 000 negli esperimenti successivi. 4.2.2 Video Oltre all’analisi dei risultati tramite i dati salvati nel file delle statistiche ho condotto un’analisi visuale di ci`o che accadeva nel corso dell’evoluzione guardando i video generati a partire dalla versione serializzata del robot. Per farlo sono stati realizzati due gruppi di video, uno per la rappre- sentazione a bit e uno per la rappresentazione gaussiana. Ogni gruppo era composto da 40 video e diviso in 4 sottogruppi da 10 video ciascuno, uno per run. I sottogruppi rispecchiavano la divisione per dimensione e configurazio- ne di sensori vista nella Figura 3. Ogni video mostrava il comportamento durante la simulazione di 9 VSR divisi nel seguente modo: • Tre colonne, una per tipo di controllore: omogeneo, eterogeneo, omo- geneo con sensori di posizione. • Tre righe che mostravano il robot in tre fasi della sua evoluzione: iniziale, intermedia e finale. Guardare i video ha aiutato a comprendere ci`o che avveniva nel corso dell’evoluzione. Hanno inoltre risposto a molte domande che non ci eravamo neppure posti e si sono rivelati fondamentali per la formulazione di nuovi quesiti. In particolare `e stato possibile osservare che: • La rappresentazione a bit genera una variet`a di forme nettamente su- periore rispetto a quella gaussiana. Nella prima infatti i VSR avevano forme complesse e irregolari, utilizzando la seconda rappresentazione invece i risultati erano molto pi`u regolari. Molto spesso infatti i VSR avevano la forma di quadrati di dimensione pari alla massima specifi- cata (5 × 5 o 10 × 10) o erano composti da un unico voxel. Questo `e chiaramente visibile per mezzo della Figura 4: 23
  • 27. Figura 4: Istogrammi della dimensione dei robot La Figura 4 `e composta da due grafici divisi per dimensione massima del robot 10 × 10 o 5 × 5. All’interno di ogni grafico sono presenti due istogrammi della dimensione effettiva dei VSR al termine della evolu- zione. Il tipo di rappresentazione viene evidenziata utilizzando colori diversi: rosso per quella a bit, blu per quella gaussiana. Sull’asse x abbiamo il numero di voxel componenti il robot, cio`e la sua dimensione effettiva, sull asse y il numero di volte che quella dimensione `e presente. `E possibile vedere come in entrambi i grafici la rappresentazione gaus- siana tende a generare robot di dimensione pari a uno o pari a quella massima. • I comportamenti sono molto pi`u diversificati se la rappresentazione `e a bit. In questo caso infatti erano presenti robot in grado di saltare, cam- minare, correre, strisciare e vibrare. Nella rappresentazione gaussiana invece quasi tutti i VSR vibravano per avanzare. • In generale la quantit`a di comportamenti diversi che si generano va- ria a seconda del controllore. I VSR con controllore omogeneo infat- ti mostravano dei comportamenti molto pi`u vari rispetto a quelli con controllore eterogeneo o omogeneo con sensore di posizione. Gli ultimi due controllori infatti tendevano a generare robot che vibravano per avanzare. 24
  • 28. • I robot con controllore omogeneo e sensore di posizione subiscono una pressione evolutiva che li porta nelle fasi iniziali dell’evoluzione a gene- rare forme alte e sbilanciate, che ribaltandosi, spostano il baricentro in avanti per migliorare la fitness. Nelle fasi finali dell’evoluzione emerge un comportamento che li porta ad avanzare vibrando. • La configurazione di sensori influisce seppur di poco sulla variet`a di comportamenti ottenuti e in maniera non percepibile sulle forme dei VSR. I robot che disponevano anche del sensore di tocco sembravano migliori degli altri in tal senso. Guardando i video quindi ci siamo resi conto di quanto impattino il tipo di controllore e la rappresentazione su quelli che sono i comportamenti sviluppa- ti dai VSR nel corso dell’evoluzione. Purtroppo per`o non disponevamo dati al di fuori dei video in grado di provare queste osservazioni. Da qui `e nata la necessit`a di nuovi strumenti in grado di classificare o misurare la biodiversit`a delle soluzioni ottenute. Questa necessit`a ha portato alla progettazione e alla implementazione di nuovi metodi che sono stati poi utilizzati nella fase finale degli esperimenti. 4.2.3 Conclusioni fase esplorativa Questi primi esperimenti sono stati in grado di rispondere alle domande che ci eravamo posti. `E possibile evolvere contemporaneamente corpo e control- lore dei VSR. Rappresentazione, controllore e configurazione dei sensori non impattano in maniera significativa sulla fitness delle soluzioni ottenute. Una eccezione `e rappresentata dal controllore omogeneo con sensori di posizione che si `e dimostrato peggiore degli altri. La visione dei video dei VSR simulati ha rivelato che controllore e rap- presentazione influiscono sulla biodiversit`a dei VSR e ha evidenziato la grave mancanza di strumenti in grado di provare queste affermazioni. In seguito a queste analisi abbiamo deciso di: • Sviluppare nuovi strumenti in grado di caratterizzare i VSR in base alla loro forma e comportamento. • Applicare queste nuove tecniche per approfondire lo studio sulla biodi- versit`a delle soluzioni. 25
  • 29. • Scartare la rappresentazione gaussiana in quanto equivalente a quella a bit per quanto riguarda la fitness e decisamente peggiore se si considera la variet`a di forme e comportamenti ottenuti. • Scartare una delle due configurazioni di sensori, scelta ricaduta su quel- la con velocit`a ed area, in quanto equivalenti per fitness e biodiversit`a delle soluzioni. Queste decisioni hanno reso necessario un altro ciclo di esperimenti. 4.3 Fase finale Nella fase finale sono stati svolti esperimenti con l’intento di rispondere alle domande sorte durante l’analisi dati e la visualizzazione dei video della fase esplorativa e ad altre domande scaturite durante la progettazione e l’imple- mentazione dei metodi di misura della biodiversit`a. Le domande a cui dare risposta erano: 1. Il tipo controllore influisce sulla robustezza ai danni che i VSR potreb- bero subire? 2. Come influisce il numero di signals sulla fitness e sul comportamento dei robot? 3. Il controllore influisce, e se s`ı, come sulla biodiversit`a delle soluzioni trovate? 4. Cosa `e, e come misurare la biodiversit`a delle soluzioni? Per dare risposta a queste domande abbiamo innanzitutto modificato i soft- ware utilizzati introducendo nuove funzionalit`a e successivamente abbiamo svolto altri 22 esperimenti. Le modifiche al software hanno toccato tutti e tre i progetti utilizzati (Jgea, 2D-VSR-Sim e VSREvolution) e possono essere divise in due categorie: quelle per misurare la biodiversit`a e quelle per misurare la resistenza ad eventuali danni o modifiche strutturali che i VSR potrebbero subire. 26
  • 30. 4.3.1 Resistenza ai danni Le modifiche per misurare la resistenza ai danni sono state fatte per rispon- dere alla domanda “Il tipo di controllore influisce sulla robustezza ai danni che i VSR potrebbero subire?” A tal fine abbiamo esteso il codice esistente per simulare un danno ai VSR al termine della loro evoluzione e rimisurar- ne la fitness per verificarne la robustezza. Il procedimento per simulare un danno al robot `e il seguente: 1. Prendere il robot. 2. Scegliere se togliere o aggiungere un voxel con probabilit`a 50 e 50. 3. Se bisogna aggiungere, trovare le posizioni della griglia dove `e possibile aggiungere un voxel (devono essere vuote ed adiacenti ad una con voxel) e aggiungerlo scegliendo a caso tra una di queste. 4. Se bisogna togliere, provare a togliere un voxel a caso tra quelli presenti. Se questo spezza a met`a il robot provare con un altro voxel. Se non `e possibile togliere alcun voxel (come nel caso di VSR composti da un unico voxel) allora aggiungerne uno. Questi passaggi venivano effettuati per un numero di volte dipendente dalla dimensione del VSR. Al termine di ogni run il risultato finale dell’evoluzione veniva sottoposto alla verifica di resistenza ai danni. Il procedimento di simulazione del danno veniva ripetuto un numero di volte pari al 10%, 20% e 30% dei voxel effettivi del robot. Si ottenevano cos`ı 3 nuovi VSR uno per grado di danneggiamento e la fitness veniva ricalcolata ottenendo tre misure. Il tutto veniva ripetuto dieci volte per run, per un totale di trenta misure che venivano salvate in un file a parte, assieme ad altre informazioni base riguardanti il tipo di esperimento. 4.3.2 Biodiversit`a Per misurare la biodiversit`a delle soluzioni ottenute abbiamo deciso di rica- vare e salvare numerosi altri dati tratti dalla simulazione dei VSR. Abbiamo deciso di considerare due aspetti: la forma e il comportamento dei robot, raccogliendone le relative informazioni. I dati sulla forma sono la lunghezza e l’altezza effettive del robot, l’eccen- tricit`a definita come max(w, h)/ min(w, h), una 27
  • 31. stringa che rappresenta la sua forma statica e una stringa che rappresenta la sua forma dinamica. La forma statica `e una stringa ricavata dalla griglia del corpo del robot ritagliata in base all’altezza e lunghezza effettiva del robot. La forma dinamica invece `e una stringa ricavata da una matrice 16x16. Questa matrice, ritagliata per aderire alle dimensioni effettive del robot, pu`o essere vista come una foto a lunga esposizione del VSR nel corso di tutta la simulazione. Spiego meglio il significato e la necessit`a di questo dato con un esempio. Supponiamo di avere un VSR alto e stretto che parte in piedi e poi si ribalta e passa la maggior parte della simulazione “disteso”. La forma dinamica mostrer`a il robot in posizione orizzontale quella statica in posizione verticale. Le informazioni catturate sono quindi diverse. I dati sul comportamento hanno lo scopo di caratterizzare il comporta- mento dei VSR. Il comportamento `e qualcosa di difficile da definire e clas- sificare. Per cercare di caratterizzare i robot in base al loro comportamento abbiamo deciso di salvare dati relativi alle loro frequenze e dati relativi alle loro impronte. Per ogni VSR `e stato registrato l’andamento nel tempo del suo centro di massa nel corso della simulazione. Il segnale cos`ı ottenuto `e stato scomposto nella sua componente lungo l’asse x e quella lungo l’asse y ottenendo due se- gnali nel tempo. Per ognuno di questi segnali `e stata calcolata la trasformata di Fourier. Dalle due trasformate cos`ı ottenute sono stati trovati i cinque va- lori pi`u grandi presenti nello spettro e sono stati salvati i relativi valori di modulo e frequenza. I valori salvati sono quindi venti; dieci per l’asse x e dieci per l’asse y. I dati relativi alle impronte invece sono stati ricavati attraverso un pro- cesso da noi ideato che ora spiego: 1. Divido la simulazione in n intervalli della durata di 0.5 s ciascuno. Do- podich´e ∀ intervallo k ∈ n e ∀ voxel i che tocca il terreno salvo gli estremi del range in cui il voxel i tocca il terreno definiti max xi(k) e min xi(k). Cos`ı facendo si ottiene un insieme di range per ogni intervallo di 0.5 s. 2. Questi valori vanno poi normalizzati in [0, 1] e successivamente quan- tizzati in 1 . . . n con n = 8. Dai valori quantizzati si ottiene quindi una sequenza di bit b(k) lunga 8 bit per ogni intervallo di 0.5 s. Essendo k il numero di intervalli si ottengono quindi k sequenze di bit da ora in 28
  • 32. poi chiamate impronte per non generare confusione con ci`o che sto per spiegare. 3. Il numero di impronte diverse possibili `e 28 . Scrivo in ordine di ap- parizione tutte le impronte una dopo l’altra numerandole da 0 a k − 1 4. Trovo tutte le possibili sequenze di impronte di lunghezza compresa tra 2 e 5. Questi valori sono stati scelti in maniera empirica. 5. Per ogni sequenza di impronte, d’ora in poi chiamata gait, segno l’indice dell’ordine di apparizione della prima impronta della sequenza e quello dell’ultima. Ottengo cos`ı pi`u sequenze di coppie di indici. 6. Per ogni sequenza di coppie di indici calcolo la differenza tra l’indice di inizio della n-esimo gait e l’indice di inizio del n − 1-esimo. Cos`ı facendo si ottiene per ogni sequenza di coppie di indici una sequenza di differenze. 7. Calcolo la moda di ogni sequenza di differenze. Ottengo cos`ı una lista di mode. 8. Calcolo la moda della lista di mode e ottengo un unico numero. 9. Scarto tutti i gait che compaiono una sola volta e quelli che hanno moda diversa dalla moda ottenuta prima. 10. Per ogni gait rimasto, moltiplico la lunghezza della sequenza per il numero di volte che compare. Ottengo cos`ı quella che chiamiamo la durata dei gait. Il main gait `e quello con la durata maggiore e viene salvato in una colonna nel file delle statistiche sotto forma di una stringa. Una volta trovato il main gait vengono calcolati altri 6 valori salvati in altrettante nuove colonne. • Gait mode interval `e il periodo del main gait. • Gait average touch area `e calcolata nel seguente modo: una impronta `e rappresentata da 8 bit, sommando gli uni e dividendoli per 8 si ottiene la touch area di quella impronta. La gait average touch area `e la media di questo valore calcolata su tutte le impronte. 29
  • 33. • Gait coverage `e calcolata come la lunghezza della sequenza di impronte del main gait divisa per la moda dei periodi della sequenza. • Gait purity `e la percentuale di ripetizioni di un gait che hanno il periodo uguale alla moda dei periodi. • Gait number of unique footprints `e il numero di impronte uniche nella sequenza del main gait. • Gait number of footprints `e il numero di impronte da cui `e composto il main gait. 4.3.3 Risultati fitness Ora che abbiamo chiarito questi nuovi concetti passiamo alla fase di analisi dei risultati. Abbiamo condotto un totale di 22 esperimenti per esplorare tutte le combinazioni di parametri di seguito elencate. • Rappresentazione: bit. • Dimensione massima robot: 5 × 5 e 10 × 10. • Controllore: omogeneo, eterogeneo e omogeneo con sensori di posizione. • Sensori: velocit`a+area+tocco. • Signals: 0, 1, 2 (solo per i 5 × 5) e 3 (solo per i 5 × 5). Non abbiamo condotto esperimenti con controllore eterogeneo con signals 2 e 3 per i VSR di dimensione 10 × 10. Questo perch´e gli esperimenti han- no una durata massima sul cluster e questi due esperimenti sarebbero stati troncati troppo presto per poter trarre conclusioni utili. Per ognuno di questi esperimenti sono stati lanciati 20 run all’interno dei quali all’inizio dell’evoluzione i robot venivano inizializzati in maniera pseudo-casuale. In seguito l’algoritmo di CMA-ES ottimizzava la fitness per un totale di 30 000 nascite. La fitness utilizzata era la velocit`a definita come la distanza percorsa dal robot al termine della simulazione divisa per la sua durata pari a 30 secondi. Di seguito vengono mostrati i grafici della fitness nel corso dell’evoluzione: 30
  • 34. Figura 5: fitness fase finale La Figura 5 `e composta da 8 grafici. Sopra ogni grafico vengono indicati 31
  • 35. la dimensione massima del VSR ed il numero di signals. All’interno di ogni grafico il tipo di controllore `e rappresentato con un colore diverso: verde per l’eterogeneo, blu per l’omogeneo e rosso per l’omogeneo con sensore di posizione. Per ogni grafico abbiamo lungo l’asse x il numero di nascite che cresce andando verso destra. Lungo l’asse y invece abbiamo il valore della fitness con lo zero in basso e valori via via crescenti pi`u si sale. Tutti i grafici hanno la stessa scala e sono quindi confrontabili. Il valore disegnato `e la mediana della fitness nel corso dell’evoluzione calcolata sui 20 run eseguiti. Gli esperimenti con controllore eterogeneo, tre signals e dimensione 5 × 5 e quelli con controllore eterogeneo, un signal e dimensione 10 × 10 sono stati troncati perch´e avevano raggiunto il tempo massimo per la durata di un esperimento sul cluster, di conseguenza le linee verdi dei corrispondenti grafici risultano incomplete. Osservando la figura `e possibile trarre le seguenti conclusioni: • Se la dimensione massima del VSR `e di 5×5 all’aumentare del numero di signals la fitness migliora fino a un valore di signals pari a due per poi cominciare a peggiorare. Anche per VSR pi`u grandi la fitness migliora all’aumentare del numero di signals. • Il controllore con sensori di posizione non `e in grado di trovare soluzioni efficaci se i signals sono zero. • Nessun controllore `e migliore degli altri per quello che riguarda la fitness nel caso 5x5. • Se i VSR hanno dimensione massima pari a 10×10 il controllore omoge- neo sembra essere migliore di quello omogeneo con sensori di posizione per tutti e 4 i valori di signals. La Figura 6 invece mostra sempre la fitness delle soluzioni ma attraverso dei violin plot cos`ı da evidenziarne la distribuzione, informazione assente nella precedente figura. 32
  • 36. Figura 6: violin plot fitness VSR fase finale La Figura 6 mostra attraverso dei violin plot la distribuzione dei valori 33
  • 37. della fitness delle soluzioni ottenute. I numeri sopra ogni grafico indicano la dimensione massima del VSR e il numero di signals. I tre tipi di controllore sono rappresentati con colori diversi mantenendo le colorazioni della prece- dente figura mentre sull’asse y sono indicati i valori della fitness. I grafici hanno tutti la stessa scala quindi sono confrontabili. In generale `e possibile trarre le stesse conclusioni ricavabili osservando la Figura 5. Inoltre `e possibile osservare che nessuna distribuzione appare eccessivamente bimodale e che in generale i valori delle fitness ottenute sono molto distribuiti, questo `e un sintomo della presenza di biodiversit`a. Si pu`o trarre un altro indizio sulla presenza di biodiversit`a nelle soluzioni dalla Figura 7: 34
  • 38. Figura 7: dimensione effettiva dei VSR La Figura 7 rappresenta attraverso dei violin plot la distribuzione delle 35
  • 39. dimensioni effettive dei VSR al termine della loro evoluzione. I numeri sopra ogni grafico indicano la dimensione massima del VSR e il numero di signals. I tre tipi di controllore sono rappresentati con colori diversi mentre sull’asse y viene indicato il numero di voxel da cui erano composti i VSR. Le scale sono diverse tra i grafici con dimensione massima 5x5 e quelli con dimensione massima 10x10. In nessuno degli 8 grafici si notano distribuzioni fortemente sbilanciate verso un dato valore n´e andamenti bimodali. Ci`o significa che i VSR al termine dell’evoluzione hanno grandezze diverse e le loro dimensioni sono abbastanza equidistribuite tra i valori possibili. Anche questo `e un chiaro segnale di biodiversit`a. Questo argomento verr`a approfondito meglio in seguito. Passiamo ora ad analizzare altri dati ricavati dalle simulazioni che repu- tiamo importanti. Le Tabella 1 e la Tabella 2 indicano la dimensione del genotipo dei VSR per tutte le combinazioni di controllore e signals utilizzate. 5 × 5 5 × 5 5 × 5 5 × 5 signals 0 signals 1 signals 2 signals 3 omogeneo 30 70 142 246 eterogeneo 150 1150 2950 5550 posizione 32 80 160 272 Tabella 1: dimensione genotipo 5 × 5 10 × 10 10 × 10 10 × 10 10 × 10 signals 0 signals 1 signals 2 signals 3 omogeneo 105 145 217 321 eterogeneo 600 4600 posizione 107 155 235 347 Tabella 2: dimensione genotipo 10 × 10 Appare evidente che i VSR con controllore omogeneo o omogeneo con sensori di posizione abbiano un genotipo molto pi`u piccolo di quelli con con- trollore eterogeneo. I VSR con controllore omogeneo con sensore di posizione di fatto sono uguali a quelli con controllore omogeneo con l’aggiunta di un sensore che restituisce due valori. Il loro genotipo infatti `e leggermente pi`u 36
  • 40. grande di quello dei VSR con controllore omogeneo. Nel corso degli esperi- menti abbiamo potuto osservare che la dimensione del genotipo influisce sul tempo necessario ad evolvere i robot. Il tempo necessario a completare le evoluzioni `e mostrato nella Figura 8: 37
  • 41. Figura 8: tempo di esecuzione La suddivisione dei grafici di Figura 8 ed i colori sono quelli visti in 38
  • 42. precedenza. L’asse delle x mostra il numero di nascite avvenute. L’asse y il tempo trascorso dall’inizio dell’evoluzione. I valori mostrati sono le medie calcolate sui tempi dei 20 run. I tempi erano comunque molto simili tra di loro tra un run e l’altro. Appare evidente come i VSR con controllore eterogeneo richiedano mol- tissimo pi`u tempo rispetto agli altri per terminare l’evoluzione. Questo `e un chiaro svantaggio per il controllore eterogeneo. Il tempo richiesto per completare una evoluzione `e dato dalla somma del tempo per eseguire la simulazione dei VSR ed il tempo per eseguire l’evoluzione tra una generazione e l’altra. Il tempo necessario ad eseguire la simulazione `e direttamente proporzio- nale alla quantit`a di voxel simulati. Un VSR composto da 20 voxel quindi richiede circa il doppio del tempo che uno composto da 10 voxel. Questa prima componente del tempo quindi non dipende dal controllore usato ma dalle dimensioni massime del VSR. Il tempo che serve per evolvere i VSR invece `e il tempo che serve a JGEA per evolvere il genotipo dei robot moltiplicato per il numero di generazioni necessarie. Il processo di evoluzione richiede diversi calcoli matriciali tra cui la diagonalizzazione di una matrice quadrata di lato pari alla lunghezza del genotipo del robot. La quantit`a di valori delle matrici quindi ha una crescita quadratica rispetto alla lunghezza del genotipo. Questi calcoli si basano su algoritmi indipendenti dalla nostra implemen- tazione di CMA-ES. Questi algoritmi e le loro implementazioni hanno una complessit`a non lineare e di conseguenza sono sensibili a matrici in input di dimensioni molto grandi. Essendo il genotipo dei VSR con controllore etero- geneo molto pi`u grande rispetto agli altri, come visto in Tabella 1 e Tabella 2, il tempo necessario per la sua evoluzione `e molto grande. Questo spiega la grande differenza nei tempi di esecuzione. 4.3.4 Risultati resistenza ai danni Passiamo ora ad analizzare i risultati della validazione. A partire dalle se- guenti figure potremo rispondere alla domanda ”Il tipo controllore influisce sulla robustezza ai danni che i VSR potrebbero subire?” che ci siamo posti in precedenza. La Figura 9 mostra i risultati della validazione per VSR di dimensione massima 5x5. 39
  • 43. Figura 9: risultati validazione 5x5 La Figura 9 `e composta da 12 grafici. Ogni colonna corrisponde ad un 40
  • 44. tipo di controllore diverso. I quattro numeri a sinistra di ogni riga invece stanno ad indicare il numero di signals con cui potevano comunicare tra di loro i voxel. Ogni grafico contiene al suo interno quattro box plot (ad eccezione dell’eterogeneo con tre signals che `e stato troncato). I box plot sono organizzati all’interno di ogni grafico come indicato di seguito. Alla base di ogni colonna sono presenti quattro numeri da 0 a 3. Il numero moltiplicato per 10 indica la percentuale di voxel aggiunti o rimossi dal VSR originale. All’interno di ogni grafico abbiamo, andando da sinistra a destra, lo 0%, il 10%, il 20% ed il 30% dei voxel del VSR modificati. Ogni box plot indica la fitness dei VSR per quella combinazione di controllore, numero di signals e grado di danneggiamento. Per rendere i grafici pi`u facilmente leggibili sono stati rimossi gli outlier dalla rappresentazione grafica. Tutti i grafici hanno la stessa scala e sono quindi confrontabili. Prima di trarre conclusioni osserviamo anche la seguente figura. La Figura 10 mostra i risultati della validazione per VSR di dimensione massima 10x10. 41
  • 45. Figura 10: risultati validazione 10x10 Anche la Figura 10 `e composta da 12 grafici ricavati come quelli della 42
  • 46. figura precedente. I risultati della validazione per il controllore eterogeneo con signals 1, 2 e 3 non sono disponibili in quanto gli esperimenti non sono stati completati o lanciati. Osservando le due figure precedenti `e possibile trarre le seguenti conclu- sioni: • Come era logico aspettarsi all’aumentare del danno le prestazioni dei VSR peggiorano. • Gi`a per piccoli danni le prestazioni dei VSR calano notevolmente. • Il controllore eterogeneo `e leggermente meglio degli altri per quanto riguarda la resistenza ai danni. Una possibile spiegazione pu`o essere la seguente. Se nel corso dell’evoluzione un voxel viene aggiunto al corpo di un VSR con controllore eterogeneo, la sua rete neurale viene adde- strata fino a che il voxel `e presente. Se in seguito il voxel viene rimosso, la sua rete neurale mantiene il grado di addestramento raggiunto. Se quel voxel viene infine nuovamente aggiunto, si partirebbe con una rete neurale gi`a almeno parzialmente addestrata. Questo potrebbe conferire un vantaggio al controllore eterogeneo nel caso nella fase di simulazione danno vengano aggiunti voxel. • Il numero di signals non mitiga la perdita di prestazioni. 4.3.5 Conclusioni fitness e resistenza ai danni I risultati di fitness e resistenza ai danni ci permettono di rispondere ad alcune delle domande che ci eravamo posti all’inizio della fase finale. All’au- mentare del numero di signals la fitness delle soluzioni migliora. Il tipo di controllore invece sembra avere un effetto minimo sulla resistenza ai danni e alle modifiche che i voxel potrebbero subire. 4.3.6 Risultati biodiversit`a Abbiamo condotto analisi sulla biodiversit`a dei VSR prendendo in conside- razione solo i robot con dimensione massima pari a 5 × 5. Questo perch´e disponevamo di dati incompleti per i VSR con dimensione massima di 10x10 essendo mancanti o incompleti la gran parte degli esperimenti con controllore eterogeneo. 43
  • 47. Per studiare la biodiversit`a abbiamo utilizzato i nuovi dati a partire dai quali abbiamo provato a dividere i VSR in gruppi. I gruppi venivano creati in modo che i VSR fossero il pi`u possibile simili tra di loro, se presi dallo stesso gruppo, e pi`u diversi possibile tra di loro, se presi da due gruppi diversi. Cos`ı facendo `e possibile osservare la biodiversit`a risultante dall’utilizzo dei diversi controllori. Nel caso un controllore generi una quantit`a di gruppi superiore agli altri, o una loro distribuzione pi`u omogenea, `e possibile affermare che la biodiversit`a generata `e superiore a quella generata dagli altri controllori. Abbiamo deciso di dividere i 240 VSR ottenuti dai 20 run e le 12 com- binazioni di controllore e numero di signals in gruppi, prima prendendo in considerazione la loro forma, e poi in base al loro comportamento. Per raggruppare i robot in base alla loro forma abbiamo usato i dati relativi alla forma statica e alla postura dinamica. Di seguito mostriamo queste forme e queste posture in maniera ordinata. Esse servono a dare una dimostrazione visiva che la biodiversit`a nelle forme `e presente ed osservabile sia dalle forme statiche, sia dalla postura dinamica, inoltre rappresentano il punto di partenza da cui cominciare la ricerca dei gruppi. La Figura 11 mostra le forme statiche dei robot di dimensione massima pari a 5 × 5 al termine dell’evoluzione. Figura 11: forme statiche 5 × 5 44
  • 48. La Figura 11 `e divisa in 20 colonne e 12 righe. `E presente una colonna per run, il numero del run `e indicato con i numeri da 0 a 19. Le righe sono una per ogni combinazione di controllore e numero di signals. Le didascalie sulla destra indicano a quale combinazione la riga si riferisce. Le forme che riempiono la figura sono le forme statiche del corpo dei VSR che sono risultati migliori al termine di quel run e quella combinazione di controllore e signals. `E importante ricordare che nel corso della simulazione il VSR pu`o girarsi o ribaltarsi. Dalla figura `e possibile vedere che le forme statiche sono tendenzialmente a sviluppo verticale e in diversi casi molto diverse tra di loro. Questo `e un segno di biodiversit`a. Le forme dinamiche dei robot di dimensione massima pari a 5 × 5 al termine dell’evoluzione sono mostrate in Figura 12. Figura 12: forme dinamiche 5 × 5 Anche la Figura 12 contiene 240 forme organizzate come quelle della figura precedente. Le forme mostrate per`o sono la postura dinamica nel corso della simulazione del miglior VSR per run e per quella combinazione di controllore e signals. Queste forme sono state ottenute come spiegato in precedenza. 45
  • 49. Anche da questa figura `e possibile osservare come le posture dinamiche siano molto varie e in certi casi molto diverse le une dalle altre. `E importante familiarizzare con i due grafici precedenti perch´e i risultati sulla biodiversit`a saranno presentati a partire da queste due figure. Abbiamo eseguito i raggruppamenti prendendo in considerazione prima le forme statiche e poi quelle dinamiche. Per creare i gruppi abbiamo provato ad usare due metodi : K-means e il clustering gerarchico. In entrambi i casi abbiamo settato i parametri in maniera da ottenere 3 gruppi di VSR. Per il clustering gerarchico sono stati provati tre tipi di linkage: single, average e complete. Poich´e la forma dinamica del robot era salvata sotto forma di una stringa di + e − `e stato necessario fare una trasformazione per poter eseguire i raggruppamenti. La stringa contenente la forma dinamica conteneva 16 × 16 caratteri pertanto sono state create 256 nuove colonne riempite in maniera ordinata nel seguente modo: 1 se il corrispondente valore nella stringa era +, 0 altrimenti. La distanza utilizzata `e quella euclidea calcolata a partire dalle colonne precedentemente create. Per quanto riguarda le forme statica e dinamica i risultati che sembrano avere pi`u senso dal punto di vista umano sono stati ottenuti con K-means impostando il numero di seed a 40. Questi sono i gruppi trovati basandosi sulle forme statiche: 46
  • 50. Figura 13: gruppi forme statiche La Figura 13 mostra i gruppi trovati a partire dalle forme statiche dei VSR usando K-means per la creazione dei gruppi. I tre gruppi sono evidenziati colorando le forme dei robot con colori diversi. Osservando i gruppi `e possibile notare che: • I VSR colorati di verde in generale hanno forme pi`u semplici e tenden- zialmente allungate. • Quelli rossi hanno forme molto complesse con diverse protuberanze. • I robot colorati di blu sono una via di mezzo tra i precedenti due gruppi. La Tabella 3 mostra la suddivisione per gruppo delle forme statiche generate da i tre tipi di controllore. controllore verdi blu rossi posizione 27 30 23 eterogeneo 35 26 19 omogeneo 26 30 24 Tabella 3: suddivisione forme statiche 47
  • 51. Anche se di poco il controllore omogeneo genera pi`u VSR del gruppo rosso. Questa differenza `e comunque minima e possiamo affermare che per quello che riguarda la biodiversit`a delle forme statiche i tre controllori si equivalgano. Questi invece sono i gruppi trovati osservando le forme dinamiche: Figura 14: gruppi forme dinamiche La Figura 14 mostra i gruppi trovati a partire dalle forme dinamiche dei VSR utilizzando K-means. Anche qui i tre gruppi sono evidenziati colorando le forme dei robot con colori diversi. Osservando i raggruppamenti `e possibile fare le seguenti osservazioni: • I VSR colorati di rosso in generale hanno forme pi`u semplici e tenden- zialmente allungate lungo l’asse orizzontale. • Quelli blu hanno forme molto complesse con diverse protuberanze e a volte buchi e tendono ad avere una postura eretta. • I robot colorati di verde tendono ad avere forme pi`u rotondeggianti rispetto a quelli rossi e una base di appoggio pi`u ampia ed uniforme rispetto a quelli blu. Sono in genere pi`u alti e complessi di quelli rossi. 48
  • 52. La Tabella 4 mostra la suddivisione per gruppo delle forme dinamiche generate da i tre tipi di controllore. controllore verdi blu rossi posizione 45 15 20 eterogeneo 36 15 29 omogeneo 26 31 23 Tabella 4: suddivisione forme dinamiche La postura dinamica raccoglie, oltre ad informazioni sulla forma. anche alcune informazioni sul comportamento dei VSR nel corso della simulazione. Pu`o quindi essere considerata una via di mezzo tra lo studio della forma e quello del comportamento dei robot. Osservando la Tabella 4 appare evidente come il controllore omogeneo abbia generato VSR meglio distribuiti tra i tre gruppi rispetto agli altri due controllori. Questo equivale a dire che `e stato il grado di generare soluzioni dotate di una biodiversit`a maggiore. Per quanto riguarda il comportamento abbiamo provato a raggruppare i VSR utilizzando i dati sulle frequenze, quelli sui gait ed entrambi. Abbiamo scelto di dividere i robot in 4 gruppi perch´e osservando i video 4 erano le ti- pologie di comportamento prevalenti: vibra, striscia, cammina, e corre/salta. Le definizioni dei precedenti 4 termini sono le seguenti: • vibra: il VSR vibra, chiaramente. • striscia: una parte del robot tocca sempre il terreno e nell’avanzamento non si stacca mai dal suolo. • cammina: il VSR sembra avere due arti che toccano in maniera alter- nata il suolo. • corre/salta: come cammina solo che in certi momenti il VSR `e comple- tamente staccato dal suolo. I due metodi di raggruppamento utilizzati sono k-means ed il clustering gerarchico. Per quanto riguarda le frequenze la distanza usata era la distanza eucli- dea tra i 20 numeri a nostra disposizione. Per i gait `e stato prima necessario trasformare la stringa del main gait in una stringa binaria riscrivendo (toc- ca) come 1 e . (non tocca) come 0. Per farlo `e stato usato il seguente procedimento: 49
  • 53. 1. `E stata trovata la stringa del main gait pi`u lunga ed `e stata calcolata la sua lunghezza l. 2. Sono state generate l nuove colonne e sono state riempite in maniera ordinata con i valori binari appena trovati. 3. Se non erano pi`u disponibili valori, il valore inserito era 9. Per i raggruppamenti sui gait `e stata usata la distanza euclidea calcolata a partire dalle 6 colonne dei dati numerici dei gait a cui sono state concatenate le nuove colonne appena create. I raggruppamenti che prendevano in consi- derazione sia le frequenze sia i gait, invece, sono stati ricavati utilizzando la distanza euclidea calcolata a partire dalle colonne con i dati delle frequenze e le colonne dei dati sui gait. Prendendo in considerazione solo i dati sulle frequenze si ottengono i raggruppamenti che hanno pi`u senso dal punto di vista umano. Quelli cio`e che tendono a dividere i VSR secondo i 4 gruppi precedentemente descritti. La Figura 15 mostra i gruppi trovati a partire dai dati sulle frequenze. Figura 15: gruppi comportamento I gruppi mostrati in Figura 15, evidenziati utilizzando colori diversi, sono stati ricavati usando il clustering gerarchico con linkage complete. 50
  • 54. I VSR sono divisi in 4 gruppi in base al loro comportamento ma questo `e apprezzabile solo osservando i video. Questa figura va quindi interpre- tata come una mappa attraverso la quale osservare i video corrispondenti. Osservando i video si notano somiglianze nel comportamento dei VSR che appartengono allo stesso gruppo. La Tabella 5 mostra la suddivisione per gruppo in base al comportamento generato dai tre tipi di controllore. controllore gialli blu verdi rossi posizione 33 15 0 32 eterogeneo 20 3 22 35 omogeneo 13 13 26 28 Tabella 5: suddivisione comportamenti Guardando la Tabella 5 e la Figura 15 si pu`o osservare che: • Il controllore omogeneo con sensore di posizione `e in grado di generare solo VSR del gruppo giallo se i signals sono 0 e non genera nemmeno un robot del gruppo verde. • Il controllore eterogeneo genera solo tre VSR appartenenti al gruppo blu. • Il controllore omogeneo `e in grado di generare robot appartenenti a tutti e 4 i raggruppamenti in percentuali molto pi`u equilibrate rispetto agli altri 2 controllori. In generale dalla Tabella 5 e la Figura 15 si pu`o osservare che il control- lore omogeneo `e in grado di generare pi`u biodiversit`a rispetto agli altri due. Queste conclusioni sono dipendenti dal raggruppamento utilizzato e dal giu- dizio soggettivo di somiglianza che ogni persona ha. `E curioso per`o il fatto che, provando a creare i gruppi in maniera diversa, il controllore omogeneo generava quasi sempre risultati pi`u bilanciati tra i quattro gruppi rispetto agli altri due. Questo `e vero anche quando i gruppi generati sembravano non avere senso dal punto di vista umano. 4.3.7 Conclusioni biodiversit`a I risultati sulla biodiversit`a ci permettono di rispondere alle rimanenti do- mande che ci eravamo posti all’inizio della fase finale. 51
  • 55. Siamo riusciti a trovare degli strumenti e dei metodi in grado di caratte- rizzare i VSR sulla base della loro forma e comportamento! Dopo aver ap- plicato questi nuovi strumenti alle soluzioni ottenute abbiamo potuto trarre le seguenti conclusioni: • Non sembrano esserci grandi differenze tra i tre tipi di controllore per quello che riguarda la biodiversit`a delle forme. • Per quello che riguarda i comportamenti invece il controllore omogeneo sembra generare comportamenti pi`u vari rispetto agli altri due. 52
  • 56. 5 Conclusioni Nel corso di questa tesi abbiamo studiato i Voxel-based Soft Robot (VSR). Questi sono una tipologia di robot composti da materiali morbidi che per- mette una grande libert`a nel design del corpo e del controllore del robot. Abbiamo usato dei software di simulazione per effettuare esperimenti di evolutionary robotics provando ad evolvere in contemporanea il corpo e il con- trollore di tali robot utilizzando un particolare algoritmo evolutivo: CMA-ES. Testando diverse rappresentazioni, combinazioni di sensori e tipi di control- lore, abbiamo ottenuto le prove che, nonostante lo spazio di ricerca molto grande, `e possibile evolvere corpo e controllore dei robot allo stesso tempo. Osservando i video generati dalle simulazioni ci siamo resi conto del- la notevole biodiversit`a risultante al termine dell’evoluzione nel caso di un particolare tipo di rappresentazione: quella a bit. Poich´e non disponeva- mo degli strumenti per confermare le nostre affermazioni abbiamo ideato un procedimento per caratterizzare i robot in base alla loro forma e al lo- ro comportamento e lo abbiamo utilizzato sulle soluzioni trovate. Questo ci ha permesso di ottenere una prova oggettiva della presenza di quella che chiamiamo biodiversit`a nei risultati ottenuti. Abbiamo inoltre scoperto che un tipo di controllore, quello omogeneo, `e in grado di promuovere, meglio degli altri, soluzioni tra loro biodiversificate. Questo risultato viene ottenuto pur mantenendo lo stesso grado di efficacia delle soluzioni e una robustezza ai danni simile a quella degli altri controllo- ri. Un altro vantaggio del controllore omogeneo `e che richiede meno tempo rispetto agli altri per completare l’evoluzione. Questi risultati possono essere molto importanti in quanto possono mi- gliorare le possibilit`a di utilizzo di questi robot in ambienti in cui l’intervento umano in risposta a cambiamenti improvvisi non `e possibile. 53
  • 57. Riferimenti bibliografici [1] Rus, Daniela, and Michael T. Tolley. ”Design, fabrication and control of soft robots.” Nature 521.7553 (2015): 467-475. [2] Kim, Sangbae, Cecilia Laschi, and Barry Trimmer. ”Soft robotics: a bioinspired evolution in robotics.” Trends in biotechnology 31.5 (2013): 287-294. [3] Cheney, Nick, Josh Bongard, and Hod Lipson. ”Evolving soft robots in tight spaces.” Proceedings of the 2015 annual conference on Genetic and Evolutionary Computation. 2015. [4] Chen, Ang, et al. ”Soft robotics: Definition and research issues.” 2017 24th international conference on mechatronics and machine vision in practice (M2VIP). IEEE, 2017. [5] Cheney, Nick, et al. ”Unshackling evolution: evolving soft robots with multiple materials and a powerful generative encoding.” Proceedings of the 15th annual conference on Genetic and evolutionary computation. 2013. [6] Hiller, Jonathan, and Hod Lipson. ”Automatic design and manufacture of soft robots.” IEEE Transactions on Robotics 28.2 (2011): 457-466. [7] Medvet, Eric, et al. ”2D-VSR-Sim: A simulation tool for the optimization of 2-D voxel-based soft robots.” SoftwareX 12 (2020): 100573. [8] Hansen, Nikolaus, and Andreas Ostermeier. ”Completely derandomized self-adaptation in evolution strategies.” Evolutionary computation 9.2 (2001): 159-195. [9] Rothlauf, Franz, and David E. Goldberg. ”Redundant representations in evolutionary computation.” Evolutionary Computation 11.4 (2003): 381-415. [10] Talamini, Jacopo, et al. ”Evolutionary Synthesis of Sensing Controllers for Voxel-based Soft Robots.” Artificial Life Conference Proceedings. One Rogers Street, Cambridge, MA 02142-1209 USA journals-info@ mit. edu: MIT Press, 2019. 54