I-DROID01
  Hardware   Software     Modifiche   Problemi e soluzioni 

Questa pagina era stata creata da CHICCOW e faceva parte del sito "Le pagine di Chiccow" sito non più on-line

 

Hardware

 

"COSTRUISCI IL TUO PERSONAL ROBOT I-D01"

I-Droid01 è stato progettato e realizzato dalla RoboTech, una società fondata da due membri dell'Advanced Robotics Technology and System Laboratory (ARTS Lab) della Scuola Superiore Sant'Anna di Pisa. Nel corso di un progetto di ricerca lungo un anno, la RoboTech ha sviluppato dispositivi e software che rendono I-Droid01 capace di vedere, sentire e rispondere agli essere umani. Il robot è stato distribuito in Italia con l'opera a dispense settimanali "Costruisci il tuo personal robot I-D01, vede, sente, parla, si muove come vuoi tu" della casa editrice DeAgostini in due edizioni uguali di 90 fascicoli a partire da agosto 2005 (I ediz.) e agosto 2006 (II ediz.). La stessa collezione è stata successivamente tradotta e distribuita all'estero in vari paesi.

Alcuni siti che si occupano di I-D01:
  • RoboTech                  (sito dei progettisti)
  • K-Flash                     (programma open source)
  • AdriRobot                          
  • PinoRobot                          

  • Blog di fermino     
 SCHEDA TECNICA

Dimensioni (alt. x larg. x prof.): 41cm (in piedi) x 26cm x 33cm (circa)

Peso: 2kg circa

Batterie: 8 batterie AA (alcaline o ricaricabili)

Durata delle batterie: 4 ore circa (in uso continuo)

Velocità: 1,5Km/h ca. max (secondo la superficie)

Motori: 7 motori DC con encoder relativi

Gradi di libertà: 7

Sensori di prossimità: 5 (2 emettitori e 3 ricevitori)

Sensori di sfioramento: 1 (sulla testa)

Sensori di luce: 2
Sensori di temperatura: 1

LED: 30

Display: 1

Memoria Flash: 16MB
Memoria RAM: 16MB

Capacità di registrazione sonora: 150 secondi circa

Risoluzione massima CMOS: minimo 0.3magapixkel (640x480)

Hand tool: pinza, torcia e vassoio

Porte esterne: USB e RS232

Requisiti di sistema: Windows 98, 2000, XP

Raggio d'azione Bluetooth: 10 metri ca. (dipende dall'ambiente)







Funzioni generali
  • Movimento in ogni direzione con diverse velocità con o senza regolatore PID
  • Rilevamento ostacoli tramite sensori ad ultrasuoni
  • Controllo remoto bluetooth; il robot può essere controllato da PC che dispongono di tecnologia bluetooth; se non ce l'hanno, si può usare una chiavetta BT di classe 2 (data in omaggio agli abbonati dell'opera). Il robot può essere controllato anche da telefoni cellulari in grado di eseguire applicazioni Java e dotati di tecnologia bluetooth che supportano JAVA MIDP 2.0 (mobile information device profile 2.0) e la API (application programming interface) bluetooth JSR-82.
  • Controllo remoto via internet: il robot può essere controllato da un qualunque PC connesso via internet ad un altro PC a sua volta connesso via bluetooth al robot.
  • Controllo remoto tramite segnali ad infrarossi
  • Sensore CMOS per la visione: permette al robot di vedere, scattare foto, e riconoscere la presenza di una persona, nel suo campo visivo, sulla base del e della pelle; ciò che vede il sensore CMOS viene trasmesso via bluetooth al PC o al cellulare; tramite il sensore di CMOS, il robot può essere programmato per seguire persone e oggetti in movimenti, per riconoscere gli oggetti sulla base del e.
  • Sintesi e riconoscimento vocale: il robot è in grado di pronunciare e riconoscere un centinanio di parole
  • Registrazione messaggi vocali e suoni e riproduzione a comando
  • Programmazione a bordo in c-like, oppure dal PC in Java.
  • Password biometrica: questa funzione permette al robot di attivarsi solo dopo aver riconosciuto la voce del suo proprietario. 
  • Sound follower: riconoscimento provenienza dei suoni 
  • Rete neurale: fornisce al robot una 'personalità' che si evolve nel tempo sulla base dell'interazione con la persona; le frasi pronunciate dal robot dipendono anche dal suo 'umore'. Ad esempio, quando gli viene chiesto di iniziare una nuova attività, I-D01 risponde con "Ok, mi piace questo gioco" se 'felice', ma anche con "Non voglio giocare con te" se 'arrabbiato'.
  • Pinza di tipo on/off
 
 SCHEDA HEAD CONTROLLER
 
  • Microcontrollore MC68HC908AP8a 8 bit, della Freescale
  • 8 KB di memoria Flash
  • 1 KB di memoria RAM
Il modulo Head Controller gestisce:
  • i motori PAN e TILT della testa
  • tre microfoni, tramite i quali realizza la funzione Sound Follower
  • i led della testa
  • i segnali del sensore di sfioramento, tramite una piccola schedina
Inoltre ospita:
  • la CMOS-CAM che è gestita dalla scheda Brain&Vision    

In alto da sinistra a destra

- microfono destro (Right)
- microfono posteriore (Rear)
- alimentazione (Vin)
- motore alto/basso (Tilt)
- collegamento con pulse (Touch)
- motore destra/sinistra (Pan)
 
 
A sinistra dall'alto in basso

- microfono sinistro (Mic Left)
- encoder alto/basso (Enc Tilt)
- encoder destra/sinistra (Enc Pan).
 
 
In basso da sinistra a destra

- bus di comunicazione (bus)
- led orecchio destro (Right)
- led orecchio sinistro (Left)
- collegamento con power (Vout)
- led occhio destro (Right)
- led occhio sinistro (Left)


Reset iniziale e segnalazioni d'errore. La prima operazione svolta quando il modulo è alimentato è un test di funzionamento, o meglio, un'attività di reset, che consiste nell'eseguire in successione alcuni movimenti verticali e orizzontali della testa: il robot alza la testa fino al raggiungimento del fine corsa e la abbassa di due step; ruota la testa a sinistra fino al raggiungimento del fine corsa e la sposta a destra di 6 step. Durante il primo movimento orizzontale e il primo verticale non vengono contati gli step dei dischi encoder, perché la Head Controller non può conoscere la posizione iniziale della testa: il movimento prosegue (teoricamente all'infinito) finché non viene fornito il segnale di file corsa che non è altro che un segnale prolungato di "assenza di step". Se si verificano errori durante il reset si accendono i led degli occhi con questo criterio:
  • Giallo intermittente: problema nel movimento su/giù. 
  • Rosso intermittente: problema nel movimento destra/sinistra. 
Sound follower. Si tratta di una funzione implementata dal modulo Head Controller che ha il compito di elaborare i segnali provenienti dai tre microfoni della testa, allo scopo di determinare la provenienza dei suoni. La procedura seguita per riconoscere la fonte sonora è piuttosto semplice: quando un suono raggiunge la testa di I-D01, un circuito elettronico controlla se esso è arrivato prima al microfono posteriore o a quelli anteriori. Nel primo caso vuol dire che il suono arriva da dietro I-D01. Altrimenti, il circuito elettronico verifica quale è stato il primo microfono anteriore (destro o sinistro) a percepire il suono e dopo quanto tempo quest'ultimo è pervenuto all'altro. In base a questi calcoli il 'Sound Follower' può stimare da quale direzione proviene il suono. Il sistema è in grado di localizzare suoni secchi e forti, come ad esempio un battito di mani o uno schiocco di dita, o il battito del cacciavite sul tavolo. La Sound Follower non si occupa di riconoscere suoni vocali, che invece sono di competenza del Modulo Vocale.

I led della testa. Il modulo Head Controller comanda l'accensione e lo spegnimenti di tutti i led che si trovano nella testa ('occhi' e 'orecchie'), rendendoli utilizzabili anche da tutti gli altri moduli collegati al bus. Ogni e codifica una determinata attività: gli occhi rossi (gialli) lampeggianti sono sintomo di problemi nella rotazione destra/sinistra (alto/basso); gli occhi diventano verdi quando è attiva la Sound Folloer; le orecchie si accendono di blu quando è attivo il modulo vocale.

Gestione da tastiera e display. Tramite il tastierino si possono accedere a queste funzioni della scheda head:
  • Diagnostic --> Head: serve per effettuare il reset (riavvio) dalla scheda; si fa ad esempio quando si 'impalla' per un qualunque motivo.
  • Test --> Head: serve per testare il funzionamento dei motori della testa: il test effettua movimenti su/giù/destra/sinistra e nel frattempo visualizza sul display il movimento eseguito.  
  • Test --> LED: serve per testare il funzionamento dei led della testa: vengono accesi velocemente uno dopo l'altro.
  • Test --> SF: test relativo alla funzione Sound Follower
Comandi vocali
Azione -->  Testa ---> Destra
Testa --> Sinistra
Testa --> Alza
Testa --> Abbassa
Ancora [ripete l'ultimo comando]

Accendi --> Segui Suoni
Spegni   --> Segui Suoni


 SENSORE DI SFIORAMENTO

Ogni volta che si sfiora la parte alta della testa del robot, l'apposito sensore di sfioramento lo comunica al modulo, il quale, attraverso un bus, trasferisce l'informazione a tutti gli altri e in particolare al modulo Brain&Vision, il quale implementa la rete neurale che gestisce la 'personalità' del robot. Il sensore di sfioramento presente sulla parte superiore della testa di I-D01 è un 'sensore di prossimità di tipo capacitivo'. Tecnicamente parlando, la presenza di un oggetto comporta nel circuito del sensore una variazione di capacità. Un cambiamento di capacità, a sua volta, comporta una variazione nella frequenza di oscillazione che caratterizza alcuni componenti elettronici del sensore: è la misurazione di questa frequenza che permette al sensore di 'accorgersi' della presenza di un oggetto. La variazione della capacità dipende dall'oggetto che si trova vicino al sensore: il corpo umano, ad esempio, genera una variazione piuttosto intensa. Il sensore di I-D01 è stato tarato proprio per rilevare una variazione di capacità riconducibile alla presenza del corpo umano.

Con l'installazione della rete neurale (compresa nel sistema operativo della Brain&Vision a partire dalla versione 1.2) il sensore di sfioramento è attivo solo se la rete neurale è attiva; è comunque possibile programmare in c-like il suo funzionamento, con o senza rete neurale.


 SCHEDA MOTHERBOARD
  • Microcontrollore MC68HC908AP8a 8 bit della Freescale
  • 8 KB di memoria Flash
  • 1 KB di memoria RAM
La Motherboard svolge il seguenti compiti:
  • gestisce le funzioni del display & tastierino relative a tutti i moduli installati
  • gestisce lo 'standy by' automatico del robot
  • riceve l'alimentazione da marsupio e la rigira alle varie schede stabilizzata a 3 V
  • mette in comunicazione tra di loro tutti i moduli elettronici
 

1 - ARMS: connettore per cavo a 5 fili rossi della scheda Arms
2 - VOICE: connettore per cavo a 6 fili bianchi della scheda Voice
3 - BLUETOOTH: connettore per cavo a 6 fili blu della scheda Bluetooth
4 - BATTERY: connettore per cavo a 3 fili (rosso, nero, bianco) di alimentazione proveniente dal marsupio
5 - KEY: connettore per cavo a 4 fili (rosso, viola, blu, giallo) del tastierino
6 - HEAD: connettore per cavo a 3 fili bianchi dell'alimentazione della testa
7 - BUS: connettore per cavo a 2 fili bianchi del bus della testa
8 - LCD: connettore per cavo a 16 fili policromi del Display
9 - BASE: connettore nero a 5 socket per inserzione diretta della scheda Base
10 - B&V: connettore nero a 12 socket per inserzione diretta dalla Brain&Vision


 SCHEDA BLUETOOTH

Il modulo Bluetooth monta un microcontrollore LMX9830A della National, compatibile con le specifiche dette 'Bluetooth 1.2 Core Specification'. Si tratta di un dispositivo di classe 2: l'effettiva distanza coperta e la qualità del collegamento dipendono da molti fattori, tra cui la presenza di ostacoli o di disturbi elettromagnetici e il dispositivo utilizzato come controparte nella connessione. Solitamente la comunicazione tra dispositivi BT di classe 2 è garantita per un raggio d'azione di 10 metri, che può estendersi fino a 30 metri in campo aperto e in assenza di disturbi esterni.

Questa scheda è attualmente in commercio con la sigla "Bluetooth Serial Module RBT-001"; è l'unico modulo elettronico di I-D01 che non presenta un hardware dedicato al robot, cioé il suo funzionamento non è strettamente legato all'architettura di I-D01. Questo modulo può quindi essere utilizzato per qualunque applicazione che richieda una comunicazione wireless; i rivenditori di questa scheda mettono a disposizione anche dei programmi applicativi e degli esempi di codice scritti in C o Pbasic per imparare ad usare la scheda. 
 

 SCHEDA VOCALE
  • Microcontrollore RSC-4128 della Sensory
  • 1MB di memoria Flash esterna
  • 1KB di memoria RAM
Il modulo Voice gestisce:
  • il microfono posto sul petto (per ascoltare)
  • lo speaker (per parlare e riprodurre messaggi sonori)
  • la sintesi delle parole
  • il riconoscimento dei comandi vocali
  • l'impostazione della password biometrica
  • la registrazione e riproduzione dei messaggi sonori
  • i led delle orecchie (tramite la scheda Head Controller)


(1) VCOM: connettore per cavo a 6 fili bianchi che collegano il modulo vocale con la Motherboard
(2) SPEAKER: connettore per cavo a due fili gialli dello speaker
(3) MIC: connettore per cavo del microfono a due fili (bianco e nero) avvolti da una guaina nera

Elenco parole / suoni che il robot può pronunciare / emettere

Elenco parole che il robot può comprendere (word sets)

Accensione spegnimento. Col tasto destro alla voce Voice del menù Diagnostic è possibile accendere/spegnere il modulo vocale e impostare il livello di confidenza.

Microfono e speaker del robot. I-D01 dispone di 4 microfoni e uno speaker. Tre microfoni sono inseriti dentro la testa; servono per realizzare la funzione Sound Follower e sono gestiti dal modulo Head Controller. Il quarto microfono è posto sul lato destro del petto e serve per ascoltare la voce. Lo speaker si trova nella pancia e serve per riprodurre suoni la cui frequenza si trova nell'intervallo tipico della riproduzione vocale; è caratterizzato da un'impedenza pari a 8 ohm e da una potenza in uscita di circa 0,25 watt. Il microfono sul petto e lo speaker sono gestiti dal modulo vocale.

Comandi vocali - word sets. I comandi vocali sono costituiti da gruppi di parole, chiamati word sets, che possono essere compresi da I-D01. Servono per dare ordini vocali (ad esempio "braccio destro, abbassa"), oppure per stuzzicare lo stato emotivo implementato dalla rete neurale (ad esempio dicendo: "carino", "brutto", "noioso", ecc...). La scheda vocale contiene tutti i word sets ma ne mette a disposizione solo un numero ristretto; tutti gli altri vengono attivati dalla scheda Brain&Vision; inoltre alcuni comandi vocali che servono per far evolvere lo stato emotivo, vengono riconosciuti solo se è attiva la rete neurale ("bello", "brutto", "carino", ecc...).

Livello di confidenza - capacità uditive. Il livello di confidenza serve per impostare le 'capacità uditive' del robot. E' possibile scegliere tra 5 diversi livelli di confidenza che vanno da 0 a 4; il livello 0 è quello meno selettivo, il livello 4 è il più selettivo; impostando il livello 0 il robot riconosce più facilmente le parole ma aumenta la possibilità che riconosca parole sbagliate; il livello di default è 3. Il livello di confidenza è selezionabile con il tasto destro alla voce Voice del menù Diagnostic; il valore scelto è permanente e viene mantenuto anche a robot spento. Questa funzione è attiva a partire dalla versione 1.1 del sistema operativo linux della Brain&Vision.

Led delle orecchie - stato di ascolto. Lo stato dei LED delle orecchie è utilizzato da I-D01 per far capire se è in ascolto oppure no.

Stato led Significato
Accesi Il robot è in ascolto e pronto a ricevere comandi vocali
Lampeggianti Il robot ha sentito la prima parte di un comando e ne aspetta la seconda parte
Spenti Il robot non sta ascoltando perché sta elaborando dei comandi vocali oppure sta registrato o riproducendo messaggi sonori

Analisi di alcuni comandi vocali. Di seguito viene analizzata la logica di comprensione di alcuni word sets, quelli attivi solo con il modulo vocale; lo stesso ragionamento può essere esteso a tutti gli altri word sets. Le parole che costituiscono i comandi vocali sono raggruppate in word set collegati tra di loro come indicato in figura. Un word set è un insieme di parole che I-D01 può capire in un determinato momento; all'inizio è attivo il word set 1, cioé I-D01 può capire solo le parole AzioneAccendiSpegniPassword, MessaggiCiaoGrazieI-Droid. Se si pronuncia una di queste parole, viene attivato il word set successivo come indicato dalle frecce. Ad esempio dopo la parola Azione, segue il word set 2; dopo la parola Password segue il word set 4, dopo la parola Messaggi segue il word set 8; dopo le parole CiaoGrazieI-Droid, non segue un bel niente. I comandi vocali da impartire a I-D01 sono costituiti da 1, 2 o 3 parole. I comandi più semplici sono quelli costituiti da una sola parola come CiaoGrazieI-Droid.

- pronunciando la parola Ciao, il robot risponde Ciao
- pronunciando la parola Grazie, il robot risponde Prego
- pronunciando la parola I-droid, il robot risponde Dimmi, oppure Eccomi.

Se un comando è costituito da più parole (2 o 3) si procede così: dopo aver pronunciato la prima parola, si aspetta che I-D01 risponda OK; la successiva parola si pronuncia mentre le orecchie lampeggiano. Ad esempio per comandare I-D01 di alzare la testa, si procede così:

- pronunciare Azione
- aspettare che I-D01 dica OK
- mentre lampeggiano le orecchie, pronunciare Testa
- aspettare che I-D01 dica OK
- mentre lampeggiano le orecchie, pronunciare Alza


Il passaggio da un word set ad un altro può essere in avanti (in figura da sinistra a destra) oppure all'indietro (da destra a sinistra): i triangolini posti in cima ai word set stanno ad indicare che una volta terminato il comando si retrocede automaticamente al word set precedente. Ad esempio, dopo che è stato eseguito il comando Azione Testa Alza ci troviamo nel word set n°2: ciò significa che ora possiamo dare comandi del tipo Testa AbbassaTesta DestraTesta Sinistra, ecc.... ovviamente tutto questo nel rispetto delle regole viste in precedenza per i comandi composti da più parole. Possiamo retrocedere volontariamente, usando il comando I-D01 (in figura preceduto dal triangolino); ad esempio se ci troviamo nel word set 2 oppure 8, e vogliamo ritornare al n°1 basta dire I-droid.

Password biometrica. La parte di riconoscimento vocale è 'speaker independent', vale a dire che il robot potrà essere comandato da qualsiasi persona. È però possibile configurare e attivare una password biometrica in modo che il robot non risponda più a utenti 'estranei' finché non viene riattivato dalla persona che ha configurato la password. Questo processo viene detto 'speaker verification'. L'impostazione avviene pronunciando, partendo dal Word Set 1, 'password' -> 'imposta': I-D01 chiederà di pronunciare la password (che verrà memorizzata) e poi di ripeterla per confermarla. L'attivazione vera e propria viene effettuata con 'password' -> 'attivata': da questo momento il robot resterà in attesa di sentire la parola corretta pronunciata dalla persona giusta. Per cancellare una password impostata in precedenza basta indurre in errore la procedura di impostazione: attraverso 'password' -> 'imposta' si accede alla registrazione della password; pronunciando poi due parole diverse (una per la registrazione, l'altra per la conferma) I-D01 cancellerà qualsiasi password precedentemente memorizzata, emettendo due 'beep' per segnalarlo. La password viene impostata tramite comandi vocali; la disattivazione avviene tramite il comportamento Password Vocale On/Off del PC Control o Mobile Control.

Messaggi vocali. Il modulo voice è in grado di memorizzare fino a 10 messaggi di circa 16 secondi ciascuno. La gestione dei messaggi può essere fatta in due modi:
  • Interfaccia gestione della testa del PC Control e Mobile Control. 
  • Comandi vocali: pronunciando la parola 'messaggi' nel Word Set 1, si passerà al Word Set 8, quello di gestione dei messaggi vocali registrati. Attraverso le parole del Word Set 8, infatti, è possibile passare da un messaggio al successivo ('avanti') o al precedente ('indietro'), ascoltare il messaggio corrente ('riproduci'), cancellarlo ('cancella') o registrarlo ('registra') se vuoto (se non vuoto sarà necessario prima cancellarlo). Nel caso di errore (tentativo di riprodurre un messaggio vuoto o di registrare un messaggio non vuoto), I-D01 emetterà tre 'beep'. Per uscire dalla gestione dei messaggi è sufficiente pronunciare 'I-Droid'.

 SCHEDA BRAIN&VISION
  • Microprocessore DragonBall i.MXL (MC9328MXL) a 150MHz della Freescale
  • 16MB di memoria Flash
  • 16MB di memoria SDRAM
  • Sistema operativo: Linux 2.4
Il sistema operativo installato su questo modulo è di tipo Linux embedded, in particolare dotato di kernel Linux 2.4 con appositi ampliamenti e alcune modifiche ad-hoc. Le funzioni principali sono:
  • gestione della telecamera CMOS, grazie alla quale può ricevere ed elaborare le immagini 'viste' dal robot e riconoscere la presenza e il movimento di volti, mani o altri oggetti ati.
  • esecuzione dei programmi scritti in C-like
  • gestione del 'sistema emotivo', attraverso l'uso di una rete neurale software che evolve nel tempo in base agli input sensoriali  ricevuti
  • gestione del vocabolario esteso del modulo voice
  • gestione delle funzioni estese del display.


(A) CAMERA J7: cavo a 10 fili blu della CMOS
(B) CAMERA J8: cavo a 8 fili blu della CMOS
(C) ANALOG OUT: connettore non usato
(D) USB: cavo a tre fili (arancione rosso e marrone) per collegamento USB con scheda di connessione PC-B&V
(E) UART: cavo a sei fili (blu, verde, giallo, arancione, rosso e marrone) per collegamento seriale con scheda di connessione PC-B&V
(F) VCOM: connettore nero a 12 pin, posto sul retro della scheda per alimentazione e bus.

Microprocessore. Il processore della scheda del modulo Brain & Vision è senza dubbio quello più potente a bordo del robot. Commercializzato dalla Freescale, si tratta di un processore DragonBall i.MXL a 32 bit dalle elevate prestazioni, ma anche a basso consumo energetico. La sua alimentazione è di 3V che vengono forniti dalla Motherboard tramite il bus di comunicazione. La sua frequenza di elaborazione è pari a 150 MHz: ciò significa che il processore è in grado di eseguire fino a 150 milioni di istruzioni semplici in un secondo. Esso, inoltre, può interfacciarsi con altri dispositivi tramite vari standard di comunicazione. Per eseguire le elaborazioni a cui è chiamato, il processore fa uso di alcuni registri di memoria interni ad accesso rapido, che vengono usati per la memorizzazione dei dati su cui vengono compiuti i calcoli.

Memoria RAM. La 'memoria ad accesso casuale' (o RAM) con cui è equipaggiata la scheda elettronica B&V è prodotta dalla Samsung. Dal punto di vista strettamente elettronico, il dispositivo di memoria è costituito da quattro banchi, ciascuno dei quali può contenere fino a 1.048.576 'parole' ciascuna da 32 bit. Riassumendo e riportando a termini meno 'criptici', si può dire che la capacità totale della RAM è pari a 16 MB, equivalenti a 128 Mb. La gestione dei registri di memoria, realizzati con tecnologia CMOS, viene effettuata in modo da rendere le operazioni di lettura e scrittura dei dati le più veloci possibili. La massima frequenza di funzionamento è pari a circa 133 MHz, anche se essa dipende dalle condizioni di utilizzo. Le tolleranze in termini di temperatura di esercizio sono piuttosto ampie: la RAM può funzionare all'interno dell'intervallo compreso all'incirca tra i -25°C e i +70°C.

Memoria Flash. Anche la memoria Flash utilizzata a bordo della scheda B&V, come quella RAM, ha una capacità complessiva pari a 16 MB. Il dispositivo di memoria Flash è prodotto dalla Spansion (azienda leader nel settore delle memorie Flash e collegata ad AMD e Fujitsu). I 128 Mb (equivalenti ai sopra citati 16 MB) sono suddivisi esattamente in 8.388.608 parole da 16 bit ciascuna. I dati vengono scambiati attraverso un bus di comunicazione a 16 bit. L'affidabilità è molto elevata: i dati contenuti nei registri di memoria possono essere mantenuti in media 20 anni. Il tempo di accesso medio ai dati contenuti in memoria è di circa 100 ns, mentre la scrittura di dati avviene con un tempo medio pari a circa 240 μs ogni 16 bit. La temperatura alla quale il dispositivo di memoria Flash può funzionare è compresa tra circa -40°C e +85°C.

Transceiver USB. La scheda elettronica del modulo Brain&Vision è dotata di una porta di collegamento USB, che permetterà la programmazione della scheda stessa. Per rendere possibile la comunicazione tra i dispositivi elettronici posti all'interno della scheda e il cavo USB che sarà collegato, è presente sulla scheda stessa un dispositivo transceiver USB. La parola 'transceiver' nasce dalla contrazione dei due termini inglesi transmitter ('trasmittente') e receiver ('ricevente'). In effetti, il transceiver USB realizza una sorta di traduzione tra il 'linguaggio' proprio dei segnali del cavo USB (o Universal Serial Bus) e quello a 'livelli elettrici logici' gestito invece dal processore. Il transceiver di cui è dotata la scheda elettronica del modulo Brain & Vision permette di ricevere e trasmettere dati con una velocità pari a 12 Mb/s (megabit al secondo). Il dispositivo, inoltre, è compatibile con le Specifiche 1.1 dello standard USB e utilizza segnali digitali sia in ingresso sia in uscita. Dal punto di vista delle temperature di esercizio, anch'esso garantisce ampi margini di tranquillità, potendo operare all'incirca tra i -40°C e i +85°C.

Scheda PC-B&V. Serve per interfacciare il modulo B&V con il PC; è indispensabile per eseguire queste funzioni:
  • installazione/aggiornamento del sistema operativo della B&V
  • monitoraggio da PC delle attività della B&V
  • scaricare sul PC le foto scattate dalla CMOS


(A) Porta per cavo USB di connessione con il PC
(B) Porta per cavo seriale di connessione con il PC
(C) Cavo a 3 fili per connessione USB con la scheda B&V
(D) Cavo a 6 fili per connessione seriale con la scheda B&V

Gestione da tastierino e display. Tramite il tastierino si possono accedere a queste funzioni della scheda Brain&Vision:
  • Diagnostic --> Brain BRN 1.2IT --> Mode On/OFF: serve per attivare/disattivare la rete neurale
  • Diagnostic --> CMOS camera --> Image Processing (IP) feedback On/Off: serve per attivare/disattivare l'elaborazione video della CMOS
  • User Program --> Program X --> Start/Stop: serve per avviare/stoppare il programma n° X scritto in c-like e caricato nella memoria della Brain&Vision
Comandi vocali
Azione -->  Foto
Giochiamo --> Seguimi / Nascondino / Caccia al tesoro
Comando -- > Zero / Uno / Due / ...... Nove / Dieci
Ancora [ripete l'ultimo comando]

Accendi --> Visione
Spegni   --> Visione 
 
Sistema operativo Linux
Per quanto riguarda l'installazione e l'uso del s.o. Linux vedi pagina software.

Analisi e riutilizzo della scheda B&V. Segnalo il link ad un sito molto interessante che descrive come sviluppare e riutilizzare la scheda per applicazioni indipendenti dal robot I-D01:  http://escogito.altervista.org/arm-ita.html


 CMOS-CAM

I chip CMOS sono sensori usati per le telecamere digitali (in alternativa si impiegano anche i CCD). I chip CMOS più evoluti producono quasi la stessa qualità di immagine dei CCD ma richiedono una potenza circa 100 volte inferiore, il che consente di preservare di molto la durata delle batterie. Inoltre, un chip CMOS richiede meno circuiti elettrici di supporto. La CMOS di I-D01 si trova nella testa e viene gestita dalla Brain&Vision. Le sue funzioni sono:
  • elaborazioni video
  • scatto fotografico
La risoluzione massima della telecamera CMOS di I-D01 e' di 0.3 Mega Pixel (640x480 pixel); la risoluzione massima viene utilizzata per le foto che vengono salvate in formato jpeg nella memoria flash della B&V; il numero massimo di foto memorizzabili è 50. Con il PC Control e il Mobile Control, le immagini sono trasmesse con una risoluzione di 80x60 con un frame rate di circa 4 immagini al secondo (per riuscire a mantenere un frame rate accettabile). Nelle ultime release di PC Control e Mobile Control è possibile impostare la risoluzione fino a 160x120. Ovviamente, più la risoluzione aumenta, più il frame rate diminuisce. L'elaborazione internamente alla B&V avviene su immagini di risoluzione 160x120.

Programmi di elaborazione video. La Brain&Vision mette a disposizione alcuni programmi di prova che permettono di inseguire un oggetto o una persona sulla base del e dell'oggetto o della pelle. In assenza della scheda base sono attivi solo 2 programmi:
  • Segui colore: muove la testa inseguendo un determinato colore; il programma può essere attivato tramite comandi vocali, in tal caso I-D01 chiederà che gli venga mostrato per qualche secondo il e da inseguire. 
  • Segui visione: muove la testa inseguendo un determinato colore; il programma può essere attivato tramite comandi vocali oppure  tramite PC-Control o Mobil-Control alla voce comportamenti; I-D01 cercherà di inseguire il e della pelle (ad esempio la mano o il viso). 
Se il robot è completo i giochi saranno questi:
  • Segui visione: muove la testa inseguendo un determinato colore; il programma può essere attivato tramite comandi vocali oppure tramite PC-Control o Mobil-Control alla voce comportamenti; I-D01 cercherà di inseguire il e della pelle (ad esempio la mano o il viso). 
  • Seguimi: si muove nell'ambiente inseguendo una persona; può essere attivato tramite comandi vocali.
  • Nascondino: si muove nell'ambiente fino a quando non trova una persona; può essere attivato tramite comandi vocali
  • Caccia al tesoro: si muove nell'ambiente fino a quando non trova un oggetto con un e che gli era stato specificato all'inizio; può essere attivato tramite comandi vocali. All'inizio I-D01 chiede che gli venga mostrato il colore dell'oggetto, affinché sappia cosa cercare.
Quando viene dato il comando di inseguire un oggetto sulla base del colore, I-D01 chiede sempre che gli venga mostrato il e dell'oggetto. Ciò non avviene quando l'inseguimento è basato sul colore della pelle ('Seguimi', 'Nascondino') essendo questo già in memoria. Durante l'esecuzione dei programmi di elaborazione video, viene mostrato il feedback video nel PC-Control e Mobil-Control; per feedback video si intende il video processato (non nel senso che è andato in tribunale), cioé il 'blob' ato che sta inseguendo. La stessa cosa avviene anche durante l'esecuzione di qualunque programma utente. Il feedback video può essere disattivato tramite i comandi del tastierino, come descritto più avanti.

Foto. A partire dalla versione 1.2 del kernel linux della brain&vision, la CMOS può scattare le foto (risoluzione 640x480); le foto vengono memorizzate in formato jpeg nella memoria flash della scheda B&V e possono essere facilmente recuperate: è sufficiente collegare il robot (quando già acceso) al computer attraverso il cavo USB; in questo modo la porzione di memoria usata per le foto viene vista come un disco esterno accessibile da PC. Le foto scattate con il cavo USB collegato al PC, non vengono salvate.

Comandi vocali 
Azione -->  Giochiamo --> Seguimi / Nascondino / Caccia al tesoro
Foto
Ancora [ripete l'ultimo comando]

Accendi / Spegni --> Visione (corrisponde a Segui Visione)

Gestione da tastierino e display
Tramite il tastierino si può accedere a questa funzione della CMOS:
  • I-Droid01 Diagnostic --> CMOS camerera: premende il tasto destro è possibile selezionare il modo di invio delle immagini processate dalla Brain&Vision al PC Control e al Mobile Control durante l'attivazione del comportamento "segui visione" o l'esecuzione di un "programma utente"; "IP Feedback ON" significa che vengono inviate immagini processate, "IP feedback OFF" significa che vengono inviate immagini non processate (dove IP sta per Image Processing); di default vengono inviate immagini processate; l'impostazione del modo di invio delle immagine è permanente e viene mantenuta anche a robot spento.
Altre specifiche tecniche. Il sensore della telecamera è costituito, in pratica, da un circuito CMOS, contenente una griglia di fotoricettori costituita da 640 colonne e 480 righe, per un totale, quindi, di 307.200 pixel recettivi. Ciascun pixel ha dimensioni effettive pari a quelle di un quadrato di lato 5,2 μm (ossia 5,2 micrometri; ogni micrometro è pari a un milionesimo di metro). I valori luminosi rilevati da ogni pixel sono aggiornati in un ricambio massimo pari a 30 volte al secondo, con una frequenza di elaborazione dell'elettronica a bordo della telecamera pari al più a 27 MHz (anche se I-D01 userà il sensore con un refresh massimo di circa 26,7 fotogrammi al secondo e un'elaborazione di 24 MHz). I dati provenienti dai pixel del sensore sono pre-elaborati dall'elettronica della stessa telecamera, che converte i valori ottenuti in un file digitale tramite un convertitore a 9 bit: esso, cioè, traduce il segnale elettrico proveniente da ciascun fotoricettore in un numero binario a nove cifre. La sequenza complessiva dei numeri rappresentativi di ciascun pixel costituisce l'immagine digitale. Questa, a sua volta, viene elaborata per migliorarne le caratteristiche, tramite alcuni processi tra i quali vi sono il 'miglioramento dei contorni' (edge enhancement), la 'correzione dei colori' (color correction), il 'bilanciamento dei bianchi' (white balance) e il 'controllo dell'esposizione' (exposure control). Infine, il formato dell'immagine offerta in uscita dalla telecamera è nello standard 5:6:5 RGB: i punti dell'immagine, cioè, sono descritti da numeri binari a 16 cifre, di cui cinque per le tonalità di rosso (Red), sei per quelle di verde (Green) e cinque per quelle di blu (Blue). Lo standard RGB è uno di quelli più frequentemente impiegati per la descrizione dei colori di un'immagine, specialmente nelle applicazioni che coinvolgono processi di fotografia e di stampa.
 
 
 SCHEDA BASE CONTROLLER

  • Microcontrollore MCS08GT16 a 8 bit della Freescale
  • 16KB di memoria Flash
  • 1KB di memoria RAM
Il modulo BASE gestisce:
  • i due motori delle ruote motrici
  • il motore del bacino che permette al robot di alzarsi (di 2cm) e sedersi
  • i sensori a ultrasuoni (due trasmettitori e 3 ricevitori)
Reset iniziale e segnalazioni d'errore. Appena la scheda viene attivata esegue in automatico il reset del motore del bacino che consiste nel riportare I-D01 in posizione seduto; questa operazione avviene quindi ad ogni accensione. Se I-D01 si trova già seduto, allora la funzione di reset lo fa alzare di pochi millimetri (a volte in maniera impercettibile) per poi farlo abbassare; se invece si trova parzialmente alzato, lo solleva del tutto e quindi lo fa sedere; in questa ultima circostanza può scattare la frizione del motore. Se si verifica qualche problema durate la fase di reset, i motori della base vengono bloccati e sul display compare la scritta "Base Stalled"; in questa situazione  occorre riavviare la scheda usando i tasti del petto e selezionando la voce Diagnostic --> Base.


Controllore PID. Il punto di forza del firmware è l'implementazione del PID, ovvero di un sistema di controllo che monitorizza le velocità. Per "controllo" si intende, in generale, l'azione svolta per portare e mantenere ad un valore prefissato un parametro fisico di un impianto o di un processo - ad esempio la temperatura di un forno, il livello di un fluido in un serbatoio, la velocità di rotazione di un motore, ecc. Il controllo di tipo PID è caratterizzato dall'utilizzo combinato di tre funzioni di tipo Proporzionale, Integrale e Derivativo - da cui l'acronimo PID. Lo scopo del controllo PID in I-D01 è di far girare le ruote a determinate velocità, indipendentemente dal variare delle condizioni (diffente assemblaggio, tolleranze sulla meccanica, quantità di grasso sugli ingranaggi, tipo di pile, peso del robot, ecc...).  Nei casi specifici in cui viene richiesto di procedere in linea retta (avanti o indietro), lo scopo del PID è quello di eguagliare le velocità dei motori; ciò avviene riducendo la velocità più alta a quella più bassa; questo avviene solo se la differenza tra le due velocità non è superiore al 20%. E' importante quindi non avere particolari attriti tra gli ingranaggi per permettere al PID di esplicare la sua azione senza penalizzare troppo la velocità di locomozione.

Velocità delle ruote motrici. Le ruote possono procedere con diversi gradi di velocità che vanno all'incirca da 13.5cm/s a 20cm/s con controllo PID e fino a 30cm/s senza controllo. Il programmi applicativi forniti con il software di I-D01 utilizzano solo la velocità controllata che per default è quella minima (13.5cm/s); con i programmi di telecontrollo è possibile passare a 20cm/s. Con i comandi vocali, I-D01 si muove solamente con la velocità minima e per un tot di secondi (non esiste il comando vocale che arresta il movimento delle ruote). Tramite programmazione, agendo sui comandi I2C, è possibile escludere l'azione del PID e quindi portare la velocità di locomozione fino a 30cm/s; ma in tal caso non vi è alcun controllo sulla velocità. Per variare la velocità, i motori delle ruote sono alimentati in PWM, ovvero le tensioni sono modulate ad ampiezza di impulso.  La risultate della modulazione è una tensione media di circa 3,4V.
 
Sistemi di protezione. Il firmware della scheda base implementa due sistemi di protezione:
  • protezione basata sugli assorbimenti: se per caso viene rilevato un elevato assorbimento di corrente da parte dei motori, questi vengono bloccati automaticamente e sul display compare la scritta 'Based stalled'; a questo punto occorre riavviare la scheda base resettandola tramite i comandi del tastierino: Diagnostic --> Base.  Se non funziona, allora bisogna spegnere e riaccendere il robot.
  • protezione basata sugli encoder: se per caso non vengono rilevati i segnali di un encoder delle ruote (ad esempio perché l'encoder non funziona oppure perché una ruota non gira), allora dopo qualche secondo tutte le ruote motrici vengono fermate. In questo caso non c'è bisogno di resettare la scheda base.   
Gestione da tastierino e display. Tramite il tastierino si possono accedere a queste funzioni della scheda base:
  • Diagnostic --> Base: per riavviare la scheda base, ad esempio in seguito ad un blocco del sistema
  • Test --> Test US: per controllare il funzionamento dei sensori ad ultrausoni: vengono mostrati dei numeri sul display che variano a seconda se percepiscono o meno ostacoli nelle varie direzioni.
  • Test --> Test Base: per eseguire il test di funzionamento della scheda base; vengono eseguiti un insieme di movimenti in sequenza (movimenti delle ruote motrici e del bacino)
Comandi vocali 
Azione -->  Base ---> Avanti
Base --> Indietro
Base --> Sinistra
Base --> Destra
Base --> Alza
Base --> Abbassa
Ancora [ripete l'ultimo comando].

Accendi --> Evita Ostacoli
Spegni   --> Evita Ostacoli

Tramite comandi vocali I-D01 si muove solo alla velocità minima e per 50cm alla volta.


 SCHEDA ARMS CONTROLLER

  • Microcontrollore MC68HC908AP8a 8 bit, della Freescale
  • 8 KB di memoria Flash
  • 1 KB di memoria RAM
Il modulo Arms Controller gestisce:
  • i motori delle braccia
  • le porte d'espansione delle braccia
  • le porte d'espansione del marsupio
  • i led di posizione della base
  • il sensore di temperatura
  • la torcia
  • la pinza
  • il telecomando universale
(1) L-TOOL: connettore per cavo a 5 fili giallo per l'espansione del braccio sinistro
(2) VIN-BUS: connettore per cavo a 5 fili rossi per l'alimentazione e il bus
(3) L-ARM: connettore per cavo a 3 fili (rosso, giallo, blu) dell'encoder del braccio sinistro
(4) R-ARM: connettore per cavo a 3 fili (rosso, giallo, marrone) dell'encoder del braccio destro
(5) GPIO: connettore per cavo a 10 fili policromatici delle uscite del marsupio
(6) TEMP: connettore per cavo a tre fili (nero, giallo e arancione) del sensore di temperatura
(7) LED: connettore per cavo a due fili (bianco rosso) dei ledi di posizione
(8) L-MOT: connettore per cavo a due fili (bianco giallo) del motore del braccio sinistro
(9) R-MOT: connettore per cavo a due fili (bianco marrone) del motore del braccio destro
(10) R-TOOL: connettore per cavo a 5 fili arancione per l'espansione del braccio destro

Test iniziale e segnalazioni d'errore. La prima operazione svolta quando il modulo è alimentato è un test di funzionamento, o meglio, un'attività di reset, che consiste nell'eseguire in successione alcuni movimenti delle braccia: alza un po' il braccio sinistro e lo abbassa fino a fine corsa; poi esegue la stessa cosa per il braccio destro. Se su un braccio è applicato un eventuale tool, come ad esempio la torcia, il test inizia accendendo e spegnendo velocemente il tool e successivamente esegue il movimento del braccio. Se il modulo Arms rileva un problema, tale informazione viene fornita dal robot tramite una scritta sul display e il lampeggio delle luci di posizione, secondo la casistica seguente.
  • In caso di due lampeggi brevi e una pausa lunga, il problema rilevato è relativo al braccio sinistro.
  • In caso di tre lampeggi brevi seguiti da una pausa lunga, il problema riguarda il braccio destro.
  • In caso di lampeggio continuo, il problema è di natura generale (stallo dei motori delle braccia).
Solitamente il problema che si presenta è "ARMS STALLED" che è dovuto ad un elevato assorbimento di corrente dai motori, causato a sua volta da attrito tra gli ingranaggi. In questa circostanza le braccia si fermano e compare la scritta sul display.  Tramite le funzioni del tastierino è possibile resettare la scheda arms riavviando il suo firmware.

Sistema di protezione. Il firmware della scheda arms implementa un sistema di protezione basato sugli assorbimenti: se per caso viene rilevato un elevato assorbimento di corrente da parte dei motori, questi vengono bloccati automaticamente e sul display compare la scritta 'Arms stalled'; a questo punto occorre riavviare la scheda arms resettandola tramite i comandi del tastierino: Diagnostic --> Arms. Se non funziona, allora bisogna spegnere e riaccendere il robot.
 
 
 PORTE D'ESPANSIONE

I-D01 dispone di tre porte d'espansione controllate dalla scheda ARMS. La porta più 'potente' si trova sul marsupio e serve per realizzare circuiti d'espansione da montare sulla breadboard. Le altre due porte sono collegate sulle braccia e servono per gestire eventuali accessori come la pinza, la torcia, e il telecomando universale.    


 BRACCIA

Ogni braccio presenta 3 gradi di mobilità di cui 2 nella spalla e 1 nel gomito; un solo grado è attuato ed è quello che permette al braccio di alzarsi e abbassarsi frontalmente. A mano è possibile alzare lateralmente le braccia e fissare l'angolo del gomito. I movimenti attuati avvengono tramite due scatole motore collocate all'interno del torso e controllate dalla scheda ARMS. Ogni braccio termina con una cavità a forma di croce e un pulsante laterale che permettono l'aggancio meccanico di eventuali accessori, e una mini porta USB per il loro collegamento elettronico.

     
 
Gestione da tastierino e display
Tramite il tastierino si può accedere a queste funzioni della scheda arms:
  • I-droid Ready --> scorrendo le voci di questo menù compare la temperatura.
  • Diagnostic --> Arms: serve per effettuare il reset (riavvio) dalla scheda; si fa ad esempio quando le braccia si bloccano e compare il messaggio "ARMS STALLED".
  • Test --> Arms:serve per testare il funzionamento dei motori delle braccia: ogni braccia esegue tre movimenti: su, giù, e su fino in posizione intermedia.
  • Test --> GPIO: test delle uscite Input/Oput General Purpose del marsupio.
Comandi vocali
Azione -->  Braccio destro ---> Alza / Abbassa / Accendi / Spegni
Braccio sinistro ---> Alza / Abbassa / Accendi / Spegni
Temperatura
Ancora [ripete l'ultimo comando]

Accendi --> Tool sinistro / Tool destro  [corrisponde ad Azione-->Braccio dx/sn --> Accendi]
Spegni   --> Tool sinistro / Tool destro  [corrisponde ad Azione-->Braccio dx/sn --> Spegni]
Accendi --> Luci
Spegni   --> Luci


 PORTE D'ESPANSIONE DELLE BRACCIA

Le porte di espansione delle braccia si trovano sulla parte superiore degli avambracci; si presentano come connettori mini USB, ma utilizzano i pin in modo diverso dai dispositivi basati su tale standard, con i quali, perciò, non sono compatibili. Ogni mini porta presenta cinque socket, che servono per l'alimentazione degli accessori e per lo scambio di informazioni. Gli accessori che sfruttano queste porte sono la torcia e il telecomando universale che si collegano utilizzando un cavetto maschio mini USB. La torcia può essere collegata indifferentemente sul braccio sinistro o destro; il telecomando solo sul braccio sinistro. Nell'ultima fase di costruzione del robot, l'avambraccio destro viene completamente sostituito con la pinza; la configurazione finale è pertanto questa:
  • braccio destro: pinza
  • braccio sinistro: torcia / telecomando universale / vassoio
  1 = Vmotori
2 = SDA (I2C)
3 = SCL (I2C)
4 = 3V (Vlogica)
5 = 0V (GND)
Schedina con porta mini USB
 

  
Porta mini USB montata sull'avambraccio               Segnali della porta
 

Spinotto mini USB della torcia e del telecomando   Segnali dello spinotto

 

 VASSOIO

E' l'accessorio più semplice in quanto non presenta alcun funzionamento elettrico; serve per trasportare oggetti che ovviamente devono essere messi a mano. Presenta un perno a forma di croce che gli permette di agganciarsi indifferentemente al braccio sinistro o destro. Il vassoio può interferire con l'attività dei sensori ad ultrasuoni che lo rilevano come possibile ostacolo; pertanto quando sono attivi gli ultrasuoni e meglio alzare un po' il braccio col vassoio.

 
 TORCIA

Si tratta di un led ad elevata luminosità incapsulato all'interno di una scatola che, similmente al vassoio, presenta un perno a forma di croce per agganciarsi indifferentemente al braccio sinistro o destro (fintantoché questo non è sostituito dalla pinza). Il diodo led è attaccato su una basetta e collegato ad un cavetto che termina con uno spinotto mini USB. Lo spinotto si attacca sulla presa USB dell'avambraccio. La torcia viene controllata dalla scheda ARMS; tutte le volte che la scheda si avvia, viene inviato un breve impulso di corrente alla torcia che si accende e si spegne velocemente. La torcia ha un funzionamento di tipo on/off e viene gestito da due soli segnali della porta USB che sono:
  • segnale n°4 (3V) che corrisponde all'anodo del led (filo rosso del led)
  • segnale n°5 (0V) che corrisponde al catodo del led (filo nero del led)

Comandi vocali:
  • Azione -->  Braccio destro/sinistro ---> Accendi/Spegni 
  • Accendi/Spegni --> Tool destro/sinistro

 

 TELECOMANDO UNIVERSALE (REMOTE CONTROL)

Si tratta di un dispositivo che permette al robot di ricevere e trasmettere comandi ad infrarossi; è sufficiente 'addestrare' il telecomando, programmandolo a inviare segnali a infrarossi alle frequenze adatte per cambiare il canale del televisore, alzare il volume dell'Hi-Fi, gestire il lettore DVD, l'impianto di condizionamento, ecc... L'addestramento può avvenire tramite comandi vocali (fino a 10 segnali) oppure tramite i programmi di controllo (fino a 250). I segnali appresi sono memorizzati nel modulo B&V. Il telecomando può essere collegato solo al braccio sinistro perché è progettato per comunicare con le sue porte. Inoltre occorrono le versioni più recenti dei programmi:
  • Kernel linux della B&V 1.5 (per gestire e memorizzare i segnali ad infrarossi)
  • PC-Control 1.5.4 (per addestrare il telecomando)
  • Visual C-like 1.2.0 (per programmare il telecomando e caricare sulla B&V alcuni segnali standard preimpostati)


Il telecomando è costituito da due schedine; la prima contiene un trasmettitore TSOP32238 ed un ricevitore ad infrarossi (probabilmente della serie TSAL6200); la seconda contiene l'elettronica per elaborare i segnali. La schedina trasmittente/ricevente è collegata alla seconda tramite un cavetto a quattro fili i cui segnali sono indicati in figura. La seconda schedina si collega a sua volta al cavetto USB dal quale preleva quattro segnali come indicato di seguito:
  • filo bianco (lato schedina) = linea SCL (n°3) lato porta
  • filo verde (lato schedina) = linea SDA (n°2) lato porta
  • filo nero (lato schedina) = linea 0V (n°5) lato porta
  • filo rosso (lato schedina) = linea 3V (n°4) lato porta

Schedina trasmittente ricevente

Il trasmettitore TSOP viene fatto funzionare a frequenza tra i 30 e i 56 kHz, a secondo della procedura di apprendimento e dei dispositivi da comandare. Nella parte frontale della scatola, davanti al circuito trasmettitore / ricevitore, è presente un tappo circolare fatto di materiale opaco che lascia passare solo i raggi infrarossi, in modo da evitare interferenze con altre sorgenti luminose.





PINZA

La pinza è costituita da tre dita di cui due fisse e una opponibile movimentata da un motore elettrico, che consente di afferrare piccoli oggetti. L'apertura massima è di circa 5cm; il dito opponibile può muoversi fino a chiudere completamente la pinza. A differenza degli altri accessori, la pinza sostituisce completamente l'avambraccio destro ed è progettate per funzionare solo a destra; non si può quindi montarla sul braccio sinistro. La pinza è controllata da un scheda interna al braccio, chiamata scheda Hand che utilizza tutte le linee della porta USB sinistra, che quindi non può essere più utilizzata da altri dispositivi. La forza con cui la pinza chiude può essere impostata tra sei diversi livelli, utilizzando i pulsanti del tastierino. Per gestire la pinza è necessaria la versione 1.5 del Kernel linux della B&V.

Comandi vocali: 
Azione             -->  Braccio destro ---> Accendi/Spegni                 
Accendi/Spegni --> Tool destro  

Gestione da tastierino e display:
  • Diagnostic --> Hand: serve per impostare uno dei sei livelli di forza
  • Test --> Hand: serve per testare il funzionamento della pinza  
Quando il braccio e l'avambraccio di I-D01 sono nella posizione più bassa, la pinza tocca la ruota anteriore. Per ovviare a questo basta agire sul giunto del gomito alzando l'avambraccio.


 SENSORE DI TEMPERATURA
 
Il sensore di temperatura è gestito dalla scheda ARMS e  fornisce in uscita un segnale elettrico analogico che indica la misura della temperatura rilevata. La scheda elettronica Arms provvede ad effettuare una conversione in digitale del segnale elettrico, in modo da rendere il dato elaborabile. Il modulo B&V, a sua volta, rileva il valore elaborato dall'ARMS circa 10 volte al secondo e tramite il bus I2C lo mette a disposizione a tutte le altre schede; il valore temperatura viene ad esempio acquisito dalla scheda madre che lo rende visibile sul display, dal modulo Bluetooth che lo invia al PC Control e Mobile Control, e dal modulo voice in modo che I-D01 lo possa pronunciare. Il sensore di temperatura è costituito dall'integrato LM35 (modello DZ). Produce una tensione in uscita che è direttamente proporzionale alla temperatura in gradi celsius, secondo questa relazione: Vout = 10mV/C° x T°



Il suo cavetto a tre fili è collegato ai piedini nel seguente modo:
- filo arancione --> VS (tensione di alimentazione)
- filo giallo --> Vout (segnale di uscita)
- filo nero --> GND (massa)

L'integrato LM35 richiede una alimentazione compresa tra 4V e 20V; pertanto non viene alimentata dalla logica della scheda ARMS che è di 3V, ma riceve la stessa tensione che alimenta i motori.

Lettura da display. Tramite il tastierino si può leggere la temperatura: 
  • I-droid Ready --> scorrendo le voci di questo menù compare la temperatura.
Comandi vocali 
Azione --> Temperatura Ancora [ripete l'ultimo comando]

 
 SENSORI AD ULTRASUONI

Il sistema di rilevamento ostacoli a ultrasuoni di cui è dotato I-D01 è composto da tre elementi riceventi e due trasmittenti, posizionati in modo alternato nella parte anteriore del marsupio del robot. Pur avendo funzioni diverse, ricevitori ed emettitori hanno un aspetto esterno del tutto simile, dato da un elemento cilindrico la cui base superiore presenta una fitta rete, che protegge i dispositivi interni. Anche in tali elementi interni non vi sono grandi differenze tra emettitori e ricevitori: il principio di funzionamento è sostanzialmente lo stesso, anche se i primi sono ottimizzati per trasmettere onde ultrasoniche a una frequenza di 40 kHz, mentre i secondi lo sono per captare eventuali segnali di quello stesso tipo, sintomo della presenza di ostacoli nelle vicinanze. La frequenza più alta udibile dall'orecchio umano è di circa 20KHz.

              
Ricevitore sinistro (cavo bianco rosso)               Scheda emettitore - ricevitore - emettitore           Ricevitore destro (cavo blu e arancione)

La sensibilità dei ricevitori dipende dall'angolo con cui essi sono 'investiti' dalle onde acustiche: la capacità di ricezione è massima per onde che si trovano all'interno di un cono 'di visione' ampio circa 60°. Gli elementi del sistema a ultrasuoni di I-D01 vengono posti nella parte frontale del marsupio, a formare la sequenza ricevitore, emettitore, ricevitore, emettitore, ricevitore: in questo modo si massimizza la capacità di ricezione delle onde acustiche riflesse da eventuali ostacoli e, quindi, si rende più efficace l'individuazione di ostacoli posti di fronte al robot.

           
I dispositivi sensoriali a ultrasuoni con cui I-D01 è equipaggiato sono stati studiati per essere impiegati in una gamma di applicazioni piuttosto ampia, che va anche al di là della robotica: dalla costruzione di telecomandi 'ultrasonici' per elettrodomestici a quella di interruttori 'a vicinanza', dalla realizzazione di sistemi di misurazione del livello dei liquidi nei contenitori a quella di dispositivi di ausilio al parcheggio nelle automobili.

Gestione da tastierino e display. Tramite il tastierino si può accedere a queste funzioni relative agli ultrasuoni:
  • Test --> Test US: test di funzionamento dei sensori ad ultrasuoni; premendo il tasto destro si vedono dei numerini il cui valore dipende dalla presenzest di funzionamento dei sensori ad ultrasuoni; premendo il tasto destro si vedono dei numerini il cui valore dipende dalla presenza/assenza/distanza di oggetti posti davanti al marsupio. 
Il vassoio può disturbare il funzionamento dei sensori a ultrasuoni di I-D01? In parte sì. Se l'arto a cui è collegato si trova in posizione 'bassa', il vassoio può impedire la 'visuale' dei sensori a ultrasuoni dal lato su cui è montato. Per ovviare al problema è sufficiente alzare il relativo braccio.
 

 MARSUPIO

Il marsupio svolge tre funzioni:
  1. alimentazione del robot: contiene un vano che ospita 8 pile AA (ricaricabili o non) suddivise funzionalmente in due gruppi da 5 pile per i motori e 3 pile per la logica. La tensione per i motori è quindi di 7.5V se si usano pile usa e getta, o 6V se si usano batterie. La tensione per la logica è 4.5V se si usano pile usa e getta o 3,6V se si usano batterie. Nella parte laterale del marsupio trova posto l'interruttore principale per l'accensione e lo spegnimento di I-D01. L'alimentazione viene erogata dal connettore vicino al bordo sinistro: su questo connettore si collega un cavo a tre fili (massa, logica, motori) che trasporta l'alimentazione al resto del robot arrivando direttamente alla scheda Motherboard. La Motherboard stabilizza la tensione logica a 3V e ridistribuisce questa tensione e quella dei motori alle altre schede. Solo durante la seconda fase, il cavo di alimentazione arriva direttamente alla scheda Head Controller (dal momento che manca ancora la Motherboard).
  2. ospita i sensori ad ultrasuoni che sono alloggiati in corrispondenza dei cinque fori circolari frontali; questi sensori sono gestiti dalla scheda Base Controller per rilevare ostacoli durante il movimento
  3. ospita un connettore con le porte d'espansione GPIO fornite dalla scheda Arms Controller; inoltre sopra il coperchio del marsupio si attacca la Breadboard che serve per realizzare circuiti d'espansione, tra cui i sensori di luce e i sensori ad infrarosso.
Connettori del marsupio:
  • le due boccole in alto a sinistra sono direttamente collegate ai circuiti tensione dei motori e tensione della logica; pertanto possono essere utilizzate per alimentare I-D01 con un alimentatore da banco (vedi alcune soluzione più avanti), oppure per caricare le batterie. La boccola in alto è collegata al circuito tensione dei motori (6V-7.5V), la boccola in basso al circuito tensione della logica (3V - 4,5V). In entrambe le boccole il positivo è posto all'interno e il negativo (massa) all'esterno. 
  • il connettore rettangolare in basso a sinistra è quello su cui si collega il cavo che trasporta l'alimentazione al resto del robot; questo connettore presenta tre pin che corrispondono, dal basso verso l'alto, a massa, logica, motori.
  • il connettore nero che si trova a destra è l'insieme delle porte GPIO d'espansione
  • il connettore posto sul retro permette alle porte d'espansione GPIO ed ai sensori ad ultrasuoni di comunicare rispettivamente con la scheda Arms Controller e Base Controller

 LE PORTE DEL MARSUPIO

Sul lato destro del marsupio si colloca un altro insieme di porte anch'esse messe a disposizione dalla scheda ARMS. Queste porte servono per gestire i circuiti posti sulla breadbord (ad esempio i sensori di luce e i sensori laterali ad infrarossi). Il collegamento tra marsupio e scheda arms avviene tramite un connettore posto sul retro.
 
    
  • Analog IN 1 - Analog IN 2. I due ingressi analogici convertono tensioni analogiche comprese tra 0V e 3V in un valore digitale compreso tra 0 e 255 che può essere letto e testato tramite le istruzioni c-like del gruppo Language e Test.
  • GND - VCC. Massa e alimentazione (3V).
  • Digital I/O (GPIO).  Le quattro porte digitali possono leggere e scrivere valori logici alto (3V) e basso (0V). Per default sono impostate in output (come uscite) a valore logico basso. Le porte possono essere settate in c-like con l'istruzione Single Output del blocco istruzioni Output, specificando l'indice dell'uscita digitale che si vuol impostare e il valore, agendo sulle proprietà Pin e Value. La proprietà Pin specifica il GPIO che viene impostato, mentre la proprietà Value specifica il valore impostato che può essere basso 0V (Low) o alto 3V (High).  I quattro GPIO digitali possono essere riconfigurati come ingressi tramite l'istruzione Digital I/O del gruppo istruzioni Configuration. Questa istruzione permette di configurare ciascun GPIO separatamente come ingresso o uscita agendo sulle proprietà Pin e Direction. La proprietà Pin specifica il GPIO che viene configurato, mentre la proprietà Direction specifica come viene impostato, ovvero come ingresso (Input) o uscita (Output). Il valore di una uscita digitale può essere modificato anche tramite i comandi vocali del wordset 1 "Accendi" o "Spegni" seguiti da una delle parole "uscita1", "uscita2", "uscita3", "uscita4". Accendi corrisponde ad impostare il valore ad alto, mentre Spegni a basso. Nota: se un GPIO è configurato come ingresso digitale e su di esso viene eseguita una istruzione Single Output l'istruzione non ha effetto.
  • I2C-SCL, I2C-SDA.  Porte per interfacciare I-D01 con una scheda che richieda comunicazione I2C. 
Gestione da tastierino e display. Test --> GPIO: il display mostra una sequenza di cifre: le prime quattro sono relative alle informazioni provenienti dai GPIO digitali (possono perciò essere pari a 0 nel caso di valore 'basso' o pari a 1 in caso di valore 'alto'); il resto della sequenza, invece, si riferisce agli ingressi analogici e mostra due numeri (uno per l'input 1 e l'altro per l'input 2). Essi possono variare da 0 a 255 e rappresentano il valore fornito dagli ingressi analogici.

Comandi vocali. Accendi/Spegni --> Uscita uno/due/tre/quattro: setta al valore logico 1/0 la porta corrispondente
 
Caratteristiche elettriche delle porte. Di seguito sono riportate le caratteristiche elettriche degli ingressi/uscite digitali. Sono prima riportati i valori massimi assoluti che non danneggiano l'elettronica ma che non garantiscono il corretto funzionamento. Successivamente sono indicati i valori che vanno rispettati per assicurare un corretto funzionamento del modulo elettronico ARMS a cui i GPIO sono collegati.

Valori massimi Simbolo Valore
Massima corrente per pin I -/+25mA
Massima tensione su tutti i pin VIN da -0.3V a 3.3V

Caratteristiche a 3V Simbolo Valore
Output high voltage
(ILOAD = -4mA)
VOH 2.6V --- 3V
Output low voltage
(ILOAD = +4ma)
VOL 0V --- 0.4V
Input high voltage VIH 2.1V --- 3V
Input low voltage VIL 0V --- 0.9V


 BREADBOARD

La breadboard è una scheda ad inserzione rapida che permette di montare e smontare facilmente i circuiti d'espansione: è dotata di 60 righe di socket organizzate in due colonne. Ogni riga presenta 5 socket collegati tra di loro. Ai lati sono presenti 20 gruppi da 5 soket per l'alimentazione e la massa. La breadboard presenta, nella sua parte posteriore, un adesivo, che permette di farla aderire al coperchio del vano delle batterie.

     


 ALCUNI COMPONENTI PER REALIZZARE CIRCUITI

Per iniziare a fare qualche esperimento, oltre alla breadboard, sono stati forniti i seguenti componenti nel corso dell'opera:
  • un pacco di ponticelli per realizzare i collegamenti
  • kit per realizzare il circuito sensore di luce che comprende
    • due sensori di luce (fotodiodi)
    • due resistenze da 10Kohm
  • kit per realizzare il circuito rilevatore di ostacoli laterali che comprende
    • due trasmettitori a raggi infrarossi (TSOP 32238) con relativi cappucci
    • due ricevitori ad infrarossi
    • due condensatori da 4.7microF
    • due resistenze da 100ohm
    • due resistenze da 390ohm
 
Fotodiodi, resistenze e ponticelli

Trasmettitori (a sinistra) e ricevitori (a destra) infrarossi Piedinatura del ricevitore

I trasmettitori e ricevitori ad infrarossi sono gli stessi di quelli usati per la schedina ricevitore/trasmettitore del telecomando ad infrarossi; la differenza sta nel loro utilizzo: i trasmettitori per la breadboard sono utilizzati per rilevare ostacoli laterali e per questo tipo di applicazione è sufficiente trasmettere segnali a una frequenza fissata a priori, che in questo caso è settata a 38 kHz. Invece il trasmettitore del telecomando viene fatto funzionare a frequenze che variano tra 30 e i 56 kHz, a seconda della procedura di apprendimento e dei dispositivi da  comandare.
 
 
SENSORI INFRAROSSI PER RILEVARE OSTACOLI LATERALI

Questo è il circuito proposto nel fascicolo n°83 di I-D01 da montare sulla breadboard; serve per rilevare ostacoli laterali utilizzando sensori ad infrarossi. Il circuito è costituito complessivamente da due parti uguali e simmetriche; guardando la breadboard frontalmente, sul lato sinistro (rispetto a chi guarda) si monta il circuito destro, e sul lato destro quello sinistro.

Circuito del sensore IR destro Circuito del sensore IR sinistro

 

I componenti principali di un sensore a raggi infrarossi sono il trasmettitore e ricevitore.


Il trasmettitore è un diodo della serie TSAL6200 che genera luce infrarossa e viene pilotato da un segnale oscillante (uscite breadboard GPIO3 e GPIO4); se la luce infrarossa colpisce un oggetto abbastanza vicino, rimbalza, torna indietro e viene rilevato dal ricevitore. Il ricevitore (TSOP32238) è un circuito integrato sensibile solo alla luce infrarossa (altrimenti sarebbe influenzato da qualunque tipo di luce); in stato di riposo genera un segnale alto che diventa basso solo quando viene colpito da un raggio infrarosso. I segnali prodotti dai ricevitori vengono acquisiti dalle porte GPIO1 e GPIO2 della breadboard.


 
 
 SENSORI DI LUCE

Questo è il circuito proposto nel fascicolo n°67 di I-D01 da montare sulla breadboard; è costituito da due parti simmetriche, ognuna con un fotodiodo e una resistenza da 10Kohm. Il fotodiodo è un componente sensibile alla luce; la corrente che lo attraversa aumenta linearmente all'aumentare della luce incidente (tra 0 e 200lux, per valori maggiore il sensore perdere sensibilità). Con l'aumentare della corrente che attraversa il fotodiodo, aumenta anche la caduta di tensione sulla resistenza; le tensioni delle resistenze dei due semi-circuiti rappresentano i segnali letti dalla porte Analog 1 e Analog 2.  Facendo il test GPIO sul display è possibile osservare come variano i due segnali al variare della luce incidente. I fotodiodi forniti con il kit esibiscono un comportamento lineare. Questo circuito può essere usato in vari modi, ad esempio per inseguire una sorgente luminosa o per assumere un determinato comportamento in funzione della luce o del buio. La disposizione dei componenti sulla breadboard illustrata nel fascicolo n°67 di I-D01 non è adatta per far convivere i sensori di luce con gli infrarossi, perché utilizzano dei socket in comune. Qui di seguito viene mostrato come spostare i sensori di luce per lasciare spazio ai sensori IR. 

 
  
 
 DISPLAY E TASTIERINO

Il display permette al robot di mostrare dati relativi al suo stato, di eseguire test diagnostici, di attivare e disattivare varie funzioni. Le voci visualizzate sul display sono organizzate in 3 o 4 menù a seconda dei componenti hardware montati sul robot. I tre tasti posti sotto il display permettono di scorrere i menù, e di attivare/disattivare le varie funzioni.
  

Le funzioni a cui si può accedere tramite il tastierino sono organizzate in quatto menù:
  • il primo serve per visualizzare informazioni dello stato interno del robot come ad esempio la tensione della logica, dei motori, e la temperatura rilevata
  • il secondo menù contiene funzioni di Diagnostica che servono per riavviare (resettare) le varie schede e per visualizzare la versione dei rispettivi firmware
  • il terzo menù contiene funzioni di test sulle varie schede
  • il quarto menù permette di mandare in esecuzione i programmi c-like residenti nella memoria della Brain&Vision
Premendo il tasto  sinistra si passa da un menù all'altro
Premendo il tasto centrale si fanno scorrere le vari voci interne al menù selezionato
Premendo il tasto destro si dà la conferma per eseguire la funziona selezionata

La motherboard mette a disposizione un numero finito di funzioni; tutte le altre vengono integrate dal modulo Brain&Vision e aumentano con l'aumentare della versione del sistema operativo Linux.

Menù comandi del display (breve)
Menù comandi del display (approfondito)

 
 CONNETTORI DI ALIMENTAZIONE DELLE SCHEDE

Utilizzando il tester ho ricavato le tensioni di vari connettori; può essere utile per fare i controlli.
  • G = Ground
  • L = Tensione logica
  • M = Tensioni motori


MAINBOARD
Connettore in basso per ricevere
 l'alimentazione dal marsupio

MAINBOARD
Connettore centrale

per la Brain&Vision

MAINBOARD
Connettore in alto per
la Head Controller


HEAD CONTROLLER

 

BLUETOOTH


 
 GLI ENCODER DEL ROBOT

Ogni motore di I-D01 presenta un encoder che serve per controllare il movimento. Il dispositivo encoder è costituito da:
  • un emettitore (diodo ad infrarossi)
  • un ricevitore (fotosensore)
  • un disco forato.
Principio di funzionamento. L'emettitore e il ricevitore sono due capsule inserire sulla stessa schedina. L'emettitore invia un segnale al ricevitore che viene rilevato solo quando tra questi due si frappone un foro del disco; il disco gira insieme agli ingranaggi del motore, di conseguenza il ricevitore raccoglie un segnale di tipo: luce -  buio - luce - buio - luce - buio, ecc.... Questo meccanismo permette di stabilire l'ampiezza di rotazione del motore; ad esempio il comando di far ruotare il motore di 2 step corrisponde ad azionarlo fino a quando l'encoder non ha rilevato 2 segnali luce.

Step. Il numero di step (fori sul disco) rappresenta il numero di piccoli movimenti che può eseguire un motorino; ad esempio il disco del collo presenta 12 fori: quindi la testa può girare da destra a sinistra (e viceversa) compiendo al massimo 12 piccole rotazioni. Il disco della testa presenta 4 fori: quindi la testa può alzarsi/abbassarsi compiendo al massimo 4 piccole rotazioni.

Fine corsa. Il fine corsa è la parte del disco che non presenta fori; corrisponde al segnale 'buio prolungato'; quando l'encoder rileva il segnale 'buio prolungato', la scheda di controllo blocca la rotazione del motore perché ha raggiunto il massimo dell'escursione.

Tutti gli encoder di I-D01 sono di tipo 'relativo',  cioé non sono in grado di sapere a priori in quale posizione angolare si trova il motore. Le schede che gestiscono i motori sono programmate per misurare lo spostamento angolare a partire da una posizione nota che corrisponde ad un fine corsa. Questo spiega il motivo per cui, all'accensione del robot, i motori vengono resettati cioé vengono azionati fino al raggiungimento di un fine corsa (destro o sinistro, alto o basso) da cui far partire il conteggio degli step. Ad esempio le braccia e il bacino vengono completamente abbassati; la testa viene azionata per raggiungere il fine corsa alto e poi quello sinistro e successivamente viene riportata al centro. Ogni scheda ha in memoria il numero massimo di step che può essere percorso da un motore; superato questo valore, la scheda impedisce al motore di proseguire la sua corsa; se l'encoder non dovesse funzionare, la scheda non sarebbe più in grado di bloccare il motore e pertanto entrerebbe in gioco il blocco meccanico degli ingranaggi che farebbe scattare la frizione (clak clak!). I motori delle ruote sono gli unici che presentano encoder relativi senza fine corsa. Le ruote infatti devono essere libere di poter compiere infiniti giri di 360° e pertanto la posizione angolare viene misurata a partire da qualunque punto si trovi l'encoder al momento dell'accensione.