http://ispike.sourceforge.net/pages/download.html
Si può utilizzare questa libreria C++ per scrivere un programma che trasforma un file immagine, o altri input, in una serie di impulsi da inviare ad una rete neurale (e viceversa impulsi provenienti da una rete neurale agli attuatori di un robot).
Il programma ottenuto si troverà in mezzo tra il robot e il simulatore di rete neurale. Questo programma dovrà usare anche un'altra libreria per accedere alle risorse del robot, oltre che una per accedere alla rete neurale o per simulare una rete neurale:
Per poter interagire con NeMo si può usare SpikeStream
[YARP] ↔ [programma con iSpike] ↔ [NeMo]
Espansione del precedente schema
[YARP/file] → [reader] → [input channel] → [un vector in C++] → [SpikeStream / NeMo]
[YARP/file] ← [writer] ← [output channel] ← [un vector in C++] ← [SpikeStream / NeMo]
Esempio: un oggetto AngleReader legge un angolo e lo passa ad un canale JointInputChannel che lo trasforma in modo da poterlo fornire come input ad una rete neurale.
I tempi con cui si inviano impulsi alla rete neurale devono essere sincronizzati con i passi con cui avanza temporalemente la rete neurale (ad es. passi di 1 ms)
Il numero di neuroni della rete (le dimensioni della rete) a cui sono destinati gli spike prodotti è uno dei parametri che si devono fornire alle funzioni di iSpike
dipendenze
boost (come nemo)
mkdir build cd build cmake .. -configurazione? -generazione? make make install
NOTA: modificando un sorgente ricompila solo quello compilato (devi usare make clean)
NOTA2: aggiungere un nuovo file sorgente RICHIEDE anche modificare nel file src/CMakeLists.txt la riga SET(project_SRCS)
Se si vuole trasformare un numero o un file in una serie di impulsi neurali, come fare?
iSpike adotta la tecnica population coding, vista nella codifica degli impulsi
Il protocollo di comunicazione testuale usato da iSpike per comunicare con YARP è descritto qui wiki.icub.org/yarpdoc/yarp_without_yarp.html
Usando neuroni con modello Izhikevich
Propriocezione
Devo usare due elaboratori perché non riesce ad elaborare immagini in tempo reale
ispike esempio2 con pezzo di NeMo