WIROBO – il robot beam programmabile

Introduzione

WIROBO è l’acronimo di Wired Robot. Nella sua “dinastia robotica” è il figlio di Dobby e nipote di Hulk. E’ apparso in pubblico a Ottobre 2014 alla Maker Faire di Roma nel gruppo di stand di Officine Robotiche. Officine Robotiche è un gruppo di appassionati di robotica amatoriale a ivello nazionale. Maggiori dettagli li trovate al sito di officinerobotiche.it

wirobo 2014“Wirobo alla MFR 2014 insieme al nonno Hulk e al fratellino digitale Bluice”

Wirobo è un robot autonomo progettato con i componenti della robotica b.e.a.m. che convenzionalmente vengono chiamati “neuroni”. Questi “neuroni” trasportano impulsi che propagandosi da neurone a neurone e da neurone a motore, producono il movimento del robot. Questa propagazione è fissa e continua, tranne quando viene deviata dal suo percorso da uno o più sensori.

Wirobo, al contrario dei suoi fratelli b.e.a.m.  interpreta la filosofia b.e.a.m. che produce robot non programmabili, in modo tale da poterli programmare pur non avendo al suo interno processori di qualsiasi tipo. La programmazione avviene collegando tra di loro i “neuroni” per mezzo di collegamenti mobili che chiameremo convenzionalmente “sinapsi” e la cui disposizione è prodotta dalla compilazione di un programma scritto in un linguaggio pseudo-Basic. Il compilatore per fare questo si chiama SyGen ed è scritto in Basic Microsoft.

Vediamo come è fatto WIROBO:

Wirobo, robot beam programmabile - IMG_20141005_175523

 

Teoria del funzionamento

Come in ogni essere “vivente” la capacità di sopravvivenza è data dalla possibilità di poter interagire con l’ambiente circostante attraverso organi di senso e organi motòri. Gli organi di senso percepiscono l’ambiente (esterocettori http://it.wikipedia.org/wiki/Organi_di_senso) o le proprie condizioni interne (propriocettori http://it.wikipedia.org/wiki/Propriocettore) mentre gli organi motorii permettono lo spostamento per il raggiungimento dello scopo; principalmente bisogni primari come l’alimentazione, la sopravvivenza in ambienti ostili e poi tutti gli altri.

Anche Wirobo non fa eccezione. Anche lui ha organi di senso sia esterocettori (bumper) sia propriocettori (tilt) e organi motorii, in questo caso fatti da motoriduttori con ruote data la semplicità di attuazione rispetto ad eventuali zampe. Nel mezzo ci sono due layer che permettono l’elaborazione degli stimoli che partendo dai sensori, raggiungono le ruote.

 fig1-layer Fig. 1 – Layer

Questi due strati sono formati da quelli che nella tecnologia b.e.a.m. vengono chiamati neuroni Nu (neural) e il segnale che li attraversa è formato da 1 o 0 pur non essendo propriamente un segnale digitale dato che alternativamente si trasla da segnale digitale a segnale analogico e viceversa.

Il trasferimento dei segnali (stimoli) avviene quindi in modo asincrono a differenza della logica digitale classica.

A questo punto vengono spontanee due domande:

  1. in che modo un impulso proveniente da un sensore si trasforma in azione?
  2. con quale logica un determinato stimolo diventa una precisa e ponderata azione?

Innanzitutto descriviamo la logica del robot che è fatta a strati, cinque per l’esattezza e sono i seguenti:

  1. strato organi “sensori”
  2. strato neuroni Nu (layer 1)
  3. matrice sinaptica (connection layer)
  4. strato delle funzioni (layer 2)
  5. strato organi di movimento e attuatori

Lo strato su cui si fonda tutto è il quarto, quello cioè che opportunamente comandato determina il comportamento del robot insieme alla matrice sinaptica.

Il quarto strato infatti è formato da una serie di moduli a cui corrispondono una o più funzioni precise che si trasformano in azione. Questo è lo strato che risponde alla prima domanda.

I moduli delle funzioni sono 6 in totale, tre per organo motorio ma possono essere integrati con altre funzioni a piacere. Le tre funzioni base sono:

  1. inversione motore sx/dx (rotazione)
  2. retromarcia + inversione motore sx/dx
  3. stop della retromarcia

  funzioniFig. 2 – Funzioni semplici e funzioni concatenate

Queste tre funzioni sono il minimo vitale per l’azione motoria del robot e la combinazione di queste permette la navigazione cieca del robot. Perché cieca? Perché in questa versione sono disponibili solo sensori a corto raggio che non permettono una visione di insieme dell’ambiente circostante che al momento non è il nostro scopo primario.

 

mod-funcFig. 3 – Modulo funzioni

Poi ci sono altri tre strati che qui vediamo:

Nel primo strato ci sono sensori di vario tipo come switch, sensori ottici, tilt, ecc. Tutti danno in uscita un segnale logico che può essere 0 o 1 a seconda che vengano attivati oppure no. A parte il tilt, tutti i sensori sono di tipo esterocettivo. Il tilt invece sentendo in qualche modo la posizione del robot nello spazio se pur in modo molto grezzo (ribaltamento) è un sensore propriocettivo.

Il secondo strato è formato da “neuroni Nu” e serve come condizionatore del segnale quando questo viene da un sensore (vedremo che ce ne è un altro tipo) dato che a volte come negli switch questo livello logico è “sporco”. E’ formato cioè da una serie di microimpulsi che precedono o seguono l’impulso vero. Questo perché il contatto tra le lamelle dello switch non è perfetto a causa delle inevitabili vibrazioni che ci sono all’atto dell’azionamento.

Il terzo strato chiamato anche “matrice sinaptica” è quello che permette la creazione di un determinato comportamento (behaviour) del robot associando e/o combinando gli stimoli provenienti dai sensori alle risposte determinate dai moduli delle funzioni del quarto strato. Per capire meglio come funziona potremmo fare delle analogie con le macchine di Valentino Braitenberg descritte nel suo libro di “Psicologia sintetica”. In breve, associando ad uno stimolo una reazione positiva il robot tende a inseguire la fonte degli stimoli mentre associando allo stimolo una reazione negativa il robot tende ad allontanarsi dalla fonte dello stimolo.

In questo modo cambiando semplicemente delle connessioni possiamo creare un line follower o un predatore che si avventa sull’obiettivo o un robot da labirinto e tanti altri comportamenti. Tanti di più quanto di più sono le funzioni impiantate nel quarto strato e quante di più sono i collegamenti (sinapsi) nel terzo strato.

 

matrix

Fig. 4 – Matrice sinaptica

 

Alcuni piccoli chiarimenti

Siamo arrivati fin qui con la descrizione del progetto, adesso rimane da fare una domanda:

perché programmare via hardware dato che questo ne aumenta la complessità di costruzione e ne limita lo sviluppo futuro a causa degli elevati costi e dimensioni fisiche enormi che questo implica?

La risposta non è unica ma affonda le radici nelle discussioni sorte negli anni novanta nelle mailing list beam: un robot beam può essere programmabile?

Le risposte classiche erano queste.

  • “No, non può”
  • “Si, se ci metti un layer superiore fatto con un microcontrollore”

A me queste risposte non piacevano perché non le ritenevo sufficientemente approfondite nell’analisi, anche perché prendevano ad esempio solo i circuiti storici come il microcore e il bicore. Non tenevano in considerazione le “chains” che si trovavano nello spider di Mark tilden che già loro danno la visione della programmazione cablata, ma principalmente non tenevano in considerazione (secondo me) la possibilità di “interpretare” alcuni aspetti della filosofia b.e.a.m. e cioè di parallelizzare il percorso dei segnali oltre che serializzarli e usare questi per comandare dei “moduli” che svolgessero delle funzioni semplici.

A questo punto, restava solo da mettere in pratica il tutto e ho tirato fuori nel 2003 il robot da minisumo “Hulk” con i suoi 8 neuroni differenziati per funzione. Minisumo che ha anche vinto negli anni passati diversi trofei nelle gare scolastiche che si svolgevano tra Roma e Pisa.

Ho scoperto successivamente che l’idea non era poi così campata in aria perché funzionava un po come descritto in alcuni capitoli de “La società della mente” di Marvin Minsky.

Nella programmabilità invece si possono intravedere le connessioni delle macchine descritte ne “I veicoli pensanti” di Valentino Braitenberg. Libri scoperti troppo tardi, un po’ vecchiotti ma che consiglio da leggere. Così come consiglio di leggere i libri di Rodney Brooks di cui si trovano alcune parti in rete, anche se non ho avuto ancora modo di sfogliarli.

 

Nei prossimi articoli entreremo più in dettaglio nella descrizione dei circuiti e della programmazione sinaptica.


Lascia un commento