User Tools

Site Tools


neurali:collegare_braccio_e_mente_2010

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
neurali:collegare_braccio_e_mente_2010 [2015/07/14 13:30] – [Gradi di libertà] profproneurali:collegare_braccio_e_mente_2010 [2020/06/08 22:20] – external edit 127.0.0.1
Line 1: Line 1:
 +======Collegare braccio e mente (2010)======
 +
 +Mentre giocano, i bambini muovono le mani fino a che un bel giorno riescono ad infilarsi una mano in bocca senza sapere come hanno fatto. Potrebbe un robot muovere casualmente dei motori per imparare a muovere il braccio?
 +
 +Questa idea è già venuta in mente a decine di ricercatori, vale la pena citare questo lavoro
 +
 +  * {{http://www.doc.ic.ac.uk/~mpsha/IJCNN10a.pdf|Training a Spiking Neural Network to Control a 4-DoF Robotic. Arm based on Spike Timing-Dependent Plasticity}} Di Bouganis e {{http://www.doc.ic.ac.uk/~mpsha/|Shanahan}}
 +
 +Utilizza un braccio con 4 gradi di libertà (senza nessuno strumento alla sua estremita) per dimostrare che è possibile, usando una rete neurale **SNN STPD**, realizzare, tramite opportuno addestramento, un **modello cinematico** che permetta di trasformare le coordinate x,y,x in movimenti motori.
 +
 +In precedenza il modello cinematico doveva essere noto a priori, analiticamente o numericamente.
 +
 +Se il modello cinematico ha molti gradi di libertà, esistono **più movimenti possibili** che portano la mano del braccio in una stessa posizione, per risolvere questo problema si pongono dei traguardi intermedi per costruire una traiettoria che permetta di raggiungere un punto nello spazio
 +
 +=====Gradi di libertà=====
 +
 +Un oggetto che si muove nello spazio x,y,x possiede anche tre angoli ({{https://en.wikipedia.org/wiki/Euler_angles#Applications}}) che permettono di specificare i movimenti relativi
 +
 +  * roll , rollio, rotazione intorno all'asse longitudinale (che esce dal naso)
 +  * pitch, beccheggio, rotazione intorno all'asse trasversale (che passa per le orecchie)
 +  * yaw, imbardata, rotazione intorno all'asse verticale
 +
 +{{neurali:jaco_rosdriver.jpg?200}}
 +
 +www.ros.org/news/2013/07/08/JACO_ROSDriver.jpg
 +
 +Considerando l'avambraccio piantato a terra, si hanno quindi immediatamente 3 gradi di liberta, a cui va aggiunto il grado di libertà del gomito. (Nel caso si desideri aggiungere anche una mano per afferrare, vanno aggiunti altri due gradi di libertà: rotazione del polso e inclinazione della mano).
 +
 +Il numero di neuroni deve aumentare in modo direttamente proporzionale al n. gradi libertà.
 +
 +
 +=====Progettazione=====
 +  * Rete SNN (FNN non RNN) STPD Fully connected con pesi sinaptici inizialmente RANDOM
 +  * Usare neuroni [[neurali:NEST modello Izhikevich]] con parametri (a, b, c, d)=(.02, .2, -65mV, 2)
 +  * Il dispositivo possiede 4 motori, quindi la rete neurale avrà 4 output
 +  * Il dispositovo possiede anche 4 sensori che restituiscono l'angolo di rotazione di ogni motore (propriocezione).
 +  * Entrano in input alla rete 7 valori: i 4 angoli di rotazione e la direzione desiderata in forma x,y,z
 +  * risoluzione dei sensori 5°, risoluzione della direzione 45°
 +  * La rete fornisce in output i comandi ai motori
 +  * Sia input che output devono essere codificati e decodificati sotto forma di inpulsi ([[neurali:iSpike]])
 +  * Per qualche motivo che non è specificato viene scelta una architettura di rete FNN  di circa 12000 neuroni
 +  * La rete ha 7 input layer e 4 output layer. Ogni input layer possiede 1200 neuroni, ogni output layer possiede 800 neuroni.
 +  * I segnali di output sono sequenze di impulsi di durata 20 ms intervallate da pause di 50 ms.
 +  * In aggiunta si somma un rumore di impulsi di 3 Hz, usato si in input che in output per indebolire i pesi delle sinapsi inutilizzate
 +
 +=====Codifica in impulsi=====
 +
 +Vedere [[neurali:ispike#codifica dei dati]] tramite iSpike
 +
 +**Population coding**: dal punto di vista biologico è stato rilevato che la frequenza media dei neuroni ha una distribuzione a campana (Gaussiana) centrata sul valore di una variabile di input.
 +
 +La finestra STDP è larga 50 ms.
 +
 +In questo progetto la finestra STDP è simmetrica e il potenziamento avviene se il tempo di ritardo dell'eccitazione o dell'attivazione è inferiore ad un valore assoluto, mentre la depressione del peso sinaptico viene depresso se supera il valore assoluto.
 +
 +
 +====Esempio====
 +
 +Voglio codificare un angolo betaxx di input (sensore angolare) (0°-360°) utilizzando il primo layer di input costituito da N=1200 neuroni.
 +
 +  * betaxx = 45°
 +
 +Normalizzando l'angolo [0; 360] -> [0; 1] . Allora betaxx=45° diventa 
 +
 +  * betaxx'= betaxx / 360 = 45 / 360 = 0.125
 +  * N = 1200
 +
 +il neurone centrale che contiene la frequenza massima della campana è f: [0; 1] -> [1; 1200]
 +
 +  * X<sub>0</sub> = (1200-1)*0.125 = 149.8 circa il 150° neurone.
 +  * sigmaxx è una deviazione standard  = valore???
 +  * F<sub>max</sub> è la freq. massima consentita = valore???
 +
 +F(X)la formula della frequenza del generico neurone X
 +
 +  * F(X) = F<sub>max</sub> · e ^ ((X-X<sub>0</sub>)^2)/2·sigmaxx^2
 +
 +
 +=====Decodifica da impulsi=====
 +
 +Una formula che arriva da un manuale del MIT... (voting scheme???)
 +
 +  * r = Σ F(X)·X / Σ F(X) 
 +
 +infine
 +
 +  * beta'= f<sup>-1</sup>%%(r)%% 
 +
 +===== Risultati =====
 +
 +I tempi di elaborazione dell'output non sono istantanei, non è real time...
  
neurali/collegare_braccio_e_mente_2010.txt · Last modified: 2023/06/09 10:55 by profpro