WIROBO – matrice sinaptica

La programmazione sinaptica

La programmazione sinaptica non è come la programmazione tradizionale, non è sequenziale. Le connessioni per loro natura sono parallele seguendo una strada che parte dal sensore fino ad arrivare in qualche modo all’effettore. I segnali possono quindi interferire tra di loro creando comportamenti non previsti che in alcuni casi potremo catalogare come “comportamenti emergenti”.

Questo lo diciamo perché è una cosa possibile e va prevista, anche perché non necessariamente un determinato comportamento emergente è positivo in termini di raggiungimento dell’obiettivo. Potremmo per esempio avere una o più situazioni in cui una condizione particolare può impedire un comportamento regolare e lecito.

Poniamo ad esempio che una fonte luminosa predisponga il robot a inseguirla in quanto segnalatrice di una fonte di ricarica delle batterie, ma questo per raggiungerla debba passare per uno stretto corridoio che stimoli i sensori tattili. Questi essendo stati programmati con priorità rispetto agli altri sensori, impediranno di fatto il raggiungimento dell’obiettivo impedendo al robot di ricaricare le batterie.

Supponiamo invece che per un motivo qualsiasi abbiamo fatto si che l’attivazione del sensore tattile destro inibisca quello sinistro e viceversa, ci ritroveremo ad avere un terzo comportamento probabilmente non previsto. All’ingresso del tunnel, i due sensori tattili si escluderanno a vicenda facendo si che il robot raggiunga comunque l’obiettivo e quindi possa ricaricarsi.

La programmazione non produce problemi in condizioni normali, ma produce un comportamento (emergente) non previsto, però positivo nella condizione particolare sopra descritta.

.

Programmazione diretta (HW)

Abbiamo detto che la programmazione avviene per mezzo di “sinapsi” che connettono il secondo strato con il quarto strato. Questa azione prevede che si conoscano bene i comportamenti di stimolo-risposta e la loro interferenza a livello hardware. Condizione non difficile con due soli strati ma comunque bisognosa di attenzione.

Per preparare i collegamenti potremo usare una matrice su carta come quella sotto riportata. Si possono vedere su tre lati le connessioni, due in input/output dei neuroni sensori e una solo in input che va ai motoneuroni.

prog-mat

Fig. A – Matrice di programmazione

Nei rettangoli ai lati sinistro e destro vanno segnati i nomi dei sensori ad essi collegati, in basso ci sono già le funzioni predetrminate del modulo funzioni.

I collegamenti vengono segnati con un punto che indica il collegamento tra ordinata e ascissa. Tale punto ha la funzione di indicare come verrà collegato il diodo-sinapsi che avrà sempre l’anodo verso i neuroni sensori e il catodo verso i motoneuroni. Questo collegamento determinerà il comportamento determinato dalla presenza di uno stimolo qualsiasi.

Agendo però sui collegamenti chiamati “Ix” (dove “I” significa inibizione e x è il numero identificativo) è possibile inibire l’azione di quel dato sensore (stimolo) in funzione di un altro sensore. Ad esempio è possibile bloccare i comandi verso le ruote qualora il sensore di ribaltamento venga azionato e contemporaneamente azionare un cicalino di allarme.

Un’altra azione potrebbe essere quella di inibire un sensore “long range” nel caso ci si trovi in un tunnel o tra pareti troppo vicine che possono essere meglio interpretate dai sensori a corto raggio.

 

matrix

Abbiamo visto un accenno su come programmare Wirobo modificando o aggiungendo “sinapsi” sulla matrice. Possiamo però semplificare in parte questa operazione usando un linguaggio di programmazione. Questo è possibile farlo tramite il compilatore Sygen.exe che però sarà oggetto di discussione in un altro articolo.


Lascia un commento