Robot Minisumo di Domenico

Nome: HULK

(agosto-novembre 2003)


Ecco finalmente il mio minisumo (il secondo robot costruito all' interno di questo gruppo).
Costruito con profilati in alluminio ad elle e basette millefori come base. Usa due motori con scatola di demoltiplica
della Solarbotics comandati da un mucchietto di neuroni interconnessi tra loro. Il circuito parte da quello progettato
da Wilf Rigter, poi stravolto fino all'inverosimile quando mi sono accorto che i relè assorbivano troppo per
essere comandati direttamente dai sensori ad infrarosso o dall'uscita di un buffer di tipo AC (i più potenti
come corrente di uscita). Anche io ovviamente ho sostituito i sensori meccanici con sensori ad infrarosso,
ma di tipo QRB1134.




  bot top


Calabritto, Mercoledì 13 Agosto 2003






Minisumo Beam Programmabile

( Domenco Mancini d.mancini@tiscali.it )




Table of Contents

1.Schema elettrico 2

2. Descrizione 3

3. Programmazione sinaptica 4

3.1 La matrice di programmazione 4

3.2 Il neurone temporizzatore 8

3.3 Varianti 9

4. Appendice 10

5. Copyright under GNU Free Documentations License 11



Prefazione

Non ho niente da dire a mia discolpa. Anche questo secondo attimo di pazzia (come il superneurone) è stato deliberatamente voluto.
Buon lavoro e buon divertimento.

Domenico



  1. Schema elettrico

SCHEMA ELETTRICO


fig.1 Schema elettrico del minisumo beam con programmazione sinaptica.




2. Descrizione

Il minisumo di cui si vede sopra lo schema elettrico è stato progettato secondo i dettami della filosofia beam,
cercando di innovare questa con una concezione meno “spinale” e più “cerebrale”.

Cosa intendo con questo ?

Un classico robot beam è il walker. Il walker è formato da due o più motori montati sul corpo e collegati
meccanicamente alle gambe. Questi motori vengono comandati da un microcore, formato da quattro
neuroni Nv collegati ad anello in cui circola un impulso. Questo impulso fa si che i motori vengano comandati
alternativamente ed in sequenza così da far avere al walker l'andamento tipico di un insetto.

Il microcore può essere quindi considerato come un midollo spinale dove viaggia un impulso nervoso.
L'impulso nervoso dà ai motori il comando del movimento secondo dei canoni prestabiliti e non modificabili
senza una pesante modifica a livello hardware. Non c'è quindi un potere decisionale che governa il robot.
Anche nel walker con sensori di contatto che permettono allo stesso di evitare gli ostacoli con cui viene in
contatto, viene cambiato solamente il percorso dell'impulso per un tempo prestabilito.

Il minisumo ovviamente viaggia su ruote, quindi non è applicabile il concetto di midollo spinale come serie
chiusa o aperta di neuroni. Si può però applicare il concetto di arco riflesso per cui ad un impulso in
ingresso ai neuroni corrisponde una risposta specifica. Questo è il concetto che ho usato in questo progetto,
non limitandolo però ad una architettura rigida e non modificabile.

Il circuito elettrico può essere suddiviso in quattro parti disposte verticalmente a strati sovrapposti.

Il primo strato, quello più in alto, è la parte di potenza. Il circuito è formato dai motori, dai rispettivi relè
di comando e dallo stabilizzatore a 5 volt che alimenta sia i motori sia l'integrato della parte sensori. A destra
è visibile il circuito di ritardo che alimenta i motori dopo 5 secondi dall'avvio. I motori sono stati alimentati a
5 volt con la stessa tensione dei micrologici perchè essendo la loro tensione nominale 3.5Vcc non avrebbero
retto ad una tensione superiore.

Sotto a questo c'è la parte di controllo formata da otto neuroni concatenati tra loro per formare due stadi,
uno sinistro e uno destro che comandano i rispettivi motori. Descriviamo quindi solo una sezione, quella di sinistra.

Il neurone di base è Q2 collegato in uscita al relè RL1 e con l'ingresso applicato direttamente alla sua uscita.
In questo modo funziona da timer, per cui all'accensione attiva il relè per il tempo dato dalla costante RC,
do R è in questo caso la giunzione BE del transistor Q2. Dopo questo tempo torna allo stato di riposo con
il condensatore C1 carico (lo stesso vale per la sezione di destra). A questo punto il robot con i relè allo stato
di riposo viaggia in avanti.

Se l'uscita del neurone Q2 viene portata a massa, questo provocherà l'attivazione del relè RL1 che invertirà
il senso di rotazione del motore corrispondente facendo girare il robot a sinistra. Questo succederà per il
tempo in cui viene posto a massa l'uscita del neurone più il tempo di carica di C1.

Questa funzione è svolta dai neuroni Q3 e Q4. La differenza tra i due è che Q3 attiva in neurone Q2 mentre
Q4 attiva sia il neurone Q2 sia il neurone Q7 facente parte della sezione di destra. Abbiamo quindi due situazioni:

° Attivazione di Q3: RL1 viene messo a massa da Q3 per il tempo in cui Q4 viene attivato, poi rimane a massa per
  il tempo dato dal condensatore C1. Questo provocherà l'inversione di rotazione del motore di sinistra per un tempo
  determinato (il robot gira a sinistra).

° Attivazione di Q4: RL1 e RL2 vengono messi a massa per il tempo in cui Q4 viene attivato, poi rimangono a massa
  per il tempo dato dai rispettivi condensatori C1 e C2. Poichè i due condensatori non vengono scaricati alla stessa
  tensione, i tempi residui di attivazione dei relè saranno differenti. Questo provocherà l'inversione di marcia di entrambi
  i motori per il tempo in cui è presente l'impulso su Q4. Poi il primo continuerà la rotazione inversa per il tempo t1 dato
  da C1, che è lungo. L'altro continuerà la rotazione inversa per il tempo t2 dato da C2, che è corto (il robot fa marcia
  indietro e poi gira a sinistra).

Le stesse situazioni valgono specularmente per la sezione di destra.

Sotto questa sezione c'è il connettore sinaptico a cui è dedicato il capitolo seguente. Esso serve per creare i
collegamenti tra i neuroni sensori, formati dal sensore vero e proprio e dal rigeneratore di segnale (tipo Nu) e i
neuroni effettori che abbiamo descrito sopra.

L'ultimo strato, quello più in basso, è lo strato dei neuroni sensori. Questi sono formati dal sensore ottico
tipo QRB1134 e da un neurone tipo Nu formato da una RC (in cui la C è la capacità di ingresso dell'inverter) e
da un inverter tipo 74AC14 o meglio 74HC14. Nel caso di segnale molto disturbato all'ingresso del neurone,
applicare un condensatore da 100nF tra l'ingresso e la massa dell'inverter.



3. Programmazione sinaptica

Come si può vedere dallo schema elettrico del minisumo, c'è una netta ed apparentemente inspiegabile
separazione tra la zona sensori ottici (in basso) ela parte minisumo vera e propria (in alto al di sotto della
zona di potenza che include relè, motori e stabilizzatore a 5Vcc).

Questo perchè si è scelto di non penalizzare il progetto fornendolo delle sole funzionalità di base (come evita
il bordo-ring, attacca l'avversario, ecc.) per mezzo di collegamenti fissi tra sensori e motori. Questo tipo di
approccio infatti, pur essendo efficace, potrebbe rivelarsi troppo rigido in eventuali combattimenti contro robot
programmabili tipo MarkIII(c).

E' stata scelta quindi una via intermedia tra la programmazione fissa e quella software, che avrebbe richiesto
un microcontrollore. La programmazione è perciò di tipo hardware per mezzo di sinapsi.

Cosa è una sinapsi? La sinapsi è il collegamento che c'è tra due neuroni e che avviene tra il dendrite del
neurone ricettore e l'assone del neurone trasmettitore.

Nel nostro caso la sinapsi tra il neurone trasmettitore (sensore ottico) ed il neurone ricettore (transistor) è
costituita da un collegamento semplice oppure un diodo se più trasmettitori vanno ad un ricettore oppure nel
caso più elaborato da una memoria RAM statica da 256 byte.



3.1 La matrice di programmazione

Il connettore sinaptico è un comune zoccolo a 16 pin, otto per gli ingressi e otto per le uscite. I segnali sono
quelli riportati nella tabella sottostante.




Tabella 1



Possiamo descrivere il connettore sinaptico come una matrice bidimensionale alla stregua si una scacchiera
o meglio la mappa della battaglia navale.

Abbiamo quindi le righe che rappresentano i sensori (i numeri da 1 a 8) e le colonne che rappresentano le
risposte preprogrammate dei neuroni effettori (le lettere da A ad H). Per collegare l'uscita del neurone sensore
e l'ingresso del neurone effettore (creare la sinapsi) dovremo unire un numero ad una lettera. La “X” nella
congiunzione della riga con la colonna rappresenta la sinapsi, il collegamento fisico che effettueremo tra i due neuroni.

Il collegamento sinaptico viene descritto come 1A oppure 5D, andando nel verso del segnale (non A1 e D5).






Tabella 2

Facendo fede alle note sullo schema elettrico possiamo vedere che la sinapsi in 2D significa che quando
verrà attivato il sensore anteriore destro il robot effettuerà la manovra di marcia indietro e svolta a sinistra
così da non fuoriuscire dal bordo del ring e rientrare in gara.

Analogamente la sinapsi 1E significa che quando verrà attivato il sensore anteriore sinistro il robot effettuerà
la manovra di marcia indietro e svolta a destra.

Dal punto di vista del collegamento fisico questo significa che bisognerà collegare con un filo elettrico il pin D
con il pin 2 del connettore sinaptico ed anche il pin E con il pin 1.

Questo vale fintanto che il collegamento e uno a uno. Nel caso di unione tra due neuroni sensori ed uno
effettore, i collegamenti vanno effettuati con un diodo (diodo sinaptico) così da non far interferire tra di loro
le due uscite dei neuroni sensori.

Vediamo l'esempio della tabella sottostante:




Tabella 3

In questa tabella abbiamo aggiunto una nuova funzionalità. Supponiamo infatti che per qualche motivo il robot
durante un disimpegno dal bordo ring faccia marcia indietro (che è temporizzata) andando di nuovo a superare
il bordo ring. Se continuasse la marcia indietro, si troverebbe butttato di nuovo fuori del ring perdendo la gara.

Le doppie sinapsi 7BG e 8BG collegando i sensori posteriori, fanno sì che l'azione di retromarcia venga inibita ed
il robot ritorni a marciare in avanti.

Se collegassimoi tre punti insieme, metteremmo in sovrapposizione i due ingressi B e G per cui se ci fosse un
altro collegamento sinaptico 6B, automaticamente porterei il segnale anche a G, cosa che non voglio. Userò
quindi dei diodi sinaptici com enello schema sottostante così da far viaggiare il segnale in una sola direzione,
da 7 a B e da 7 a G inibendo il collegamento da B a G e viceversa.

Vediamo sotto l'equivalente hardware della tabella 3.



CONNETTORE SINAPTICO



Possiamo comunque sostituire i due collegamenti diretti con due diodi.



CONNETTORE SINAPTICO



Nota: Il diodo segue il verso di conduzione diretta, Anodo-Catodo. Attenzione a non invertirne le polarità,
altrimenti non funziona. Il Catodo è evidenziato sul corpo del diodo da una fascetta nera.


Un ultimo esempio di programmazione sinaptica:



Tabella 3

In questo caso abbiamo inserito un ipotetico sensore che alla sua ativazione fa fare retromarcia al robot.
Questo per far notare la infinita programmabilità del circuito. Unico limite è l'azionamento sequenziale di più
di due risposte. Ma a questo si può rimediare tramite un sequencer che può essere facilmente implementato
tramite una catena di neuroni (chain network) opportunamente temporizzata le cui uscite vengono collegate
ai neuroni effetori tramite altre sinapsi.



    1. Il neurone temporizzatore

Qualcuno si sarà chiesto: ma a che servono i neuroni temporizzatori?

Semplice, a prolungare una azione oppure come in questo esempio ad eseguirne una dopo l'altra.
Analizziamo la tabella sinaptica:






Vediamo le connessioni partendo dallo stimolo, che in questo caso è il sensore anteriore destro “1”.

Il sensore si attiva, manda il comando su D attivando la sequenza retromarcia + svolta a Sx.

Lo stesso stimolo viene riportato indietro al neurone temporizzatore 3sec (notare la sinapsi -X che indica
il diodo montato in senso inverso e quindi in questo caso la sinapsi diventa D5). Lo stimolo viene negato
dal neurone invertitore (sinapsi 63)

Una volta negato viene inviato alla sequenza C (sinapsi 4C) che prolungherà l'inversione di marcia del motore sinistro.

Con questo stratagemma avremo due eventi (sequenza D e sequenza C) sovrapposti uno all'altro. Questo
provocherà la marcia indietro del robot e la successiva svolta, superiore a 90° della sequenza D, data dal
prolungamento della sequenza C). In questo modo potremo avere due differenti comportamenti a seconda
che venga attivato il sensore di destra o quello di sinistra.

L'attivazione del neurone temporizzatore si ottiene effettuando il ponticello tra i contatti C e T.




    1. Varianti

E' possibile, qualora non si usi il neurone temporizzatore, utilizzare lo stesso come ingresso semplice per
sensore. Per fare questo occorre spostare il ponticello dai contatti T e C ai contatti C e S , in questo modo si
escluderà il condensatore elettrolitico di temporizzazione e si inserirà il resistore di pullup.

Se si utilizza il neurone temporizzatore come ingresso sensori, si avrà a disposizione un ulteriore ingresso
bruto per i sensori ( SPARE_SENSOR ) che corrisponderà al punto “5” della matrice sinaptica. Questo ingresso
potrà essere collegato verso la +5V con un interruttore o sensore a contatti o qualsiasi altro tipo che possa
pilotare l'ingresso dei transistor ( ON = bassa resistenza, OFF = resistenza infinita ). Usando per questo
ingresso una ampolla al mercurio potremo avere un semplice misuratore di inclinazione per poter contrastare
un eventuale ribaltamento del robot con apposite manovre.

Anche il neurone invertitore può essere usato come ingresso sensori. Il suo ingresso è il Test Point TP4, mentre
l'ingesso sensori del neurone temporizzatore è il Test Point TP6.



4. Appendice





La foto vista dall'alto del robot minisumo completa con accanto sulla destra il programmatore sinaptico fuori dalla
sua sede naturale, lo zoccolo sinaptico. In questa versione si possono avere più programmatori sinaptici intercambiabili,
ognuno con le sue funzioni e quindi con il proprio schema comportamentale. In una versione successiva verrà
presentato un programmatore sinaptico con memoria RAM che permetterà una programmazione realmente “al volo”
tramite microswitch.

Sono stati evidenziati i neuroni effettori (i transistor tutti in fila), il connettore sinaptico ed i neuroni sensori
(il circuito integrato). Negli angoli in basso si intravedono i sensori ad infrarosso.





5. Copyright under GNU Free Documentations License


Copyright (c) 2003, Domenico Mancini


Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License,
Version 1.1 or any later version published by the Free Software Fundation; with the Invariant Sections being LIST THEIR TITLES,
with the Front-Cover Texts being LIST and with the Back-Cover Texts being LIST. A copy of the license is included
in the section entitled “GNU Free Documentations License”.

GNU Free Documentations License

Il documento GNU FDL, disponibile sul sito http://www.gnu.org anche in versione italiana, è parte integrante di questo documento
e ne contiene i termini di utilizzo.


minisumo.pdf Progetto.PDF
hulk.avi Filmato.DiVX


Home