Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
- MiniRobot 2008
- Il campo da gioco
- La nostra soluzione
- Lego Mindstorms
- Programmare l’NXT
- Programmazione concorrente
- Multi-thread
- Il Bluetooth
- Cut The Cables!
- Trasmissione seriale
- Standard di interfaccia seriale RS 232-C
- Robot industriali
- La società del benessere in Italia
- Eugenio Montale
- l'ultimo Montale: quale attualità?
- é ancora possibile la poesia?
Introduzione
Automa, operatore automatico meccanico controllato da un cervello elettronico, con particolare riferimento agli apparecchi programmabili usati in alcuni settori dell’industria e della ricerca scientifica per sostituire l’uomo in attività manuali faticose, pericolose o troppo costose dal punto di vista del profitto. Così è com’è definito un robot dai dizionari: una macchina in grado di sostituire l’uomo. È davvero corretto però che l’uomo trovi un sostituto per l’attività che più delle altre lo rende “umano”, ovvero il lavoro?
L’interesse della scienza per tutto ciò che è inerente alla robotica è elevato per diversi motivi. La robotica (branca dell’ingegneria) è una scienza che abbraccia molte discipline scientifiche, tra cui: automazione, elettronica, fisica, informatica, matematica, meccanica ma anche umanistiche come biologia, fisiologia, linguistica e psicologia. Inoltre l’uomo è sempre stato affascinato dall’idea di una macchina simile all’uomo come nel caso dei cosiddetti “androidi”, una parola che deriva dal greco e significa “simile all’uomo”, poiché sono costruiti con materiali simili ai tessuti umani e possiedono qualche forma di pensiero cosciente o persino capacità emotiva.
Bisogna però stare attenti a non cadere in visioni fantascientifiche di questi robot come spesso siamo portati a fare da una serie illimitata di produzioni cinematografiche che stuzzicano fin dal lontano 1897 (data del primo film in cui si parla di robot – Gugusse et l’automation) la fantasia delle persone.
Ai nostri giorni la parola “robot” è identificabile nell’ambito dell’industria moderna che, attraverso l’uso di queste particolari macchine, è riuscita a ridurre il tempo e le difficoltà fisiche per la creazione di tutti quei beni che per l’uomo odierno sono indispensabili: automobili, lavatrici, frigoriferi e tutti gli elettrodomestici e le comodità che ci circondano. Sull’utilità di questi prodotti ormai è difficile dubitare, ma bisogna analizzare attentamente sia gli aspetti positivi senza tralasciare quelli negativi, che sono riscontrabili nella storia dai non troppo lontani anni ’50, gli anni che sono caratterizzati dalla ricostruzione post bellica.
La voglia di approfondire questo tema è nata dalla partecipazione al progetto MiniRobot 2008 che si è svolto durante l’anno scolastico. Il MiniRobot è una competizione organizzata dalla residenza universitaria Alcantara di Catania in collaborazione con il DIEES (Dipartimento di Ingegneria Elettrica, Elettronica e dei Sistemi), “che mira a suscitare e sviluppare l’interesse del grande pubblico verso la robotica e avvicinare i giovani al mondo della scienza e della tecnologia”.
Scrivanie
Queste erano sempre realizzate in legno, dipinte in colore rosso o blu con le dimensioni 7 x 25 x 15cm
La nostra soluzione
La strategia da noi formulata prevedeva la costruzione di un robot in
grado di: orientarsi all’interno dei tre labirinti, afferrare un libro, portarlo
indietro e alzarlo in prossimità della scrivania per collocarlo sopra di essa.
Sensore di tattile,
Sensore di segnala il
movimento e momento in cui la
distanza ad pinza arriva
all’altezza
Motore che
permette
Pinza, per tramite un
afferrare i libri, sistema a
azionata da due puleggia di far
motori collegati in salire e
parallelo scendere la
pinza
Uno dei due
motori per le
ruote motrici
Il “cervello”: è il mattoncino programmabile
che gestisce i motori e i sensori del robot
attraverso tre porte di uscita per i motori e 4
per i sensori.
7
Inoltre tra le due ruote motrici si trova un sensore di luminosità, puntato
verso il piano del campo da gioco, in grado di riconoscere il passaggio
sulle linee nere del campo che delimitavano le sue tre parti (partenza con
scrivanie, labirinto con ostacoli, arrivo con i libri da portare indietro).
Lego Mindstorms
Lego Mindstorms è una linea di prodotti LEGO che combinano mattoncini
programmabili con motori elettrici, sensori, mattoncini LEGO, pezzi di
LEGO Technic (come ingranaggi, assi e parti pneumatiche) per costruire
robot e altri sistemi automatici e/o interattivi.
È stato distribuito commercialmente come "RIS" (Robotic Invention
System - "Sistema di Invenzione Robotico"). È stato anche venduto ed
utilizzato come sistema educativo, originalmente attraverso una
partnership con il MIT .
1
LEGO Mindstorms può essere usato per costruire un modello di sistema
integrato con parti elettromeccaniche controllate da computer. In pratica
tutti i tipi di sistemi integrati elettromeccanici esistenti nella vita reale
(come gli elevatori o i robot industriali) possono essere modellati con i
Mindstorms.
C'è una grande e ben sviluppata comunità di professionisti e amatori di
ogni età coinvolti nella condivisione di progetti, tecniche di
programmazione e altre idee riguardanti LEGO Mindstorms.
L'RCX Originale dei Mindstorms è stato rilasciato nel 1998. Nel 2006
LEGO è stato immesso sul mercato un sistema di nuova generazione
chiamato NXT, centrato su di un nuovo mattoncino programmabile. Il
LEGO Mindstorms NXT è Open Source .
2
Il nuovo prodotto Mindstorms è l’ NXT, che è stato rilasciato ad agosto
2006. Il kit comprende tre servomotori, un sensore tattile, un sensore
luminoso, un nuovo sensore sonoro, un sensore di prossimità (a
ultrasuoni) e un nuovo mattoncino intelligente NXT.
Il mattoncino intelligente NXT ha un processore a 32 bit a 48 MHz, con
256k flash memory e 64k RAM, un coprocessore 8 bit a 8 MHz, con 4k
1 Massachusetts Insitute of Technology: una delle più importanti università di ricerca al mondo
con sede a Cambridge.
2 Il software viene rilasciato con un tipo di licenza per la quale il codice sorgente è lasciato alla
disponibilità degli sviluppatori 8
flash e 512 byte RAM uno schermo LCD con una risoluzione di 60x100
pixel, una porta USB 2.0 e connettività Bluetooth. Il Mindstorms NXT
possiede quattro porte d’ingresso e tre di uscita, ma avendo delle
connessioni digitali, sarà possibile aumentarne il numero con dei moduli
esterni. I connettori non sono gli stessi del RCX e utilizzano porte simili a
un connettore RJ-11. Integrato nel mattoncino c'è un altoparlante da 8
kHz.
Programmare l’NXT
Questi “mattoncini” NXT della Lego sono quindi i cervelli di tutte quelle
creazioni possibili per il kit Mindstorms. Esso infatti da la possibilità di
memorizzare un software prima creato e compilato da una piattaforma
sul PC e di eseguirlo ogni qual volta si vuole senza l’ausilio di
un’apparecchiatura esterna quale il computer. Una volta avviato il
programma sull’NXT, la nostra creatura eseguirà tutto ciò da noi
“dettato” in modo autonomo.
Per lo sviluppo di questi programmi eseguibili dai nostri robot la Lego
mette a disposizione un sistema di programmazione visuale basato sulla
GUI labVIEW, che permette tramite l’uso di blocchi, di azioni di azione o
3
controllo, di indicare quali operazioni svolgere.
Oltre questo tipo di programmazione che ha un approccio più ludico,
esistono molti altri tipi di programmazione più professionali che sfruttano
graphical user interface
3 L'interfaccia grafica (in inglese abbreviato GUI) è un paradigma di
sviluppo che mira a consentire all'utente di interagire col computer manipolando graficamente
degli oggetti, svincolandolo dall'obbligo di imparare una serie di comandi da impartire con la
command line interface
tastiera come invece avviene con le interfacce testuali (CLI).
9
le potenzialità di linguaggi noti come il C++, java, visual basic, che
danno la possibilità di avvicinarsi di più a quella che potrebbe essere la
programmazione di un robot industriale. Proprio con un linguaggio
testuale si ha la possibilità di sfruttare tutte le potenzialità offerte
dall’NXT perché permette di gestire al meglio tutti i sensori ed avere un
maggiore controllo sulle azioni del robot. Una tra le più importanti
peculiarità di questo tipo di programmazione è la possibilità di
suddividere il programma di unità di codice indipendenti. Stiamo
parlando della programmazione concorrente che da la possibilità di
sfruttare un programma come un insieme di attività che vengono
eseguite in parallelo con flussi di controllo separati.
Programmazione concorrente
In informatica la concorrenza è una caratteristica dei sistemi nei quali
può verificarsi che un insieme di processi computazionali sia in
esecuzione nello stesso istante. Tale sistema è appunto chiamato
sistema a concorrenza o sistema concorrente. L'esecuzione
parallela può condurre a interazione tra processi quando è coinvolta una
risorsa condivisa.
Il concetto di concorrenza è contrapposto a quello di sequenzialità. In un
sistema sequenziale i processi vengono eseguiti uno per volta e non si
verifica alcuna forma di interazione tra essi durante l'esecuzione. In un
sistema concorrente i processi interagiscono scambiando messaggi tra di
loro. 10
P1 P2 P3 P4 P5
sequenzialità
P3 P6
Scambio
P1 P2 P8
P5
messaggi P7
P4
concorrenza
Si può parlare di concorrenza nel caso di:
parallelismo reale di esecuzione (nel caso di sistemi
multiprocessore dove si possono eseguire parallelamente un
numero di processi pari al numero di processori)
parallelismo virtuale di esecuzione (come nel caso del
pipelining).
Multi-thread
Nel caso specifico della programmazione dell’NXT si parla di una tecnica
di programmazione multi-thread che permette di avere più flussi di
(thread)
esecuzione contemporanei di uno stesso programma, in
esecuzione su CPU differenti o sulla stessa.
In pratica, i threads sono processi dotati di un proprio stack, ma che
possono condividere variabili globali, essendo stati collegati nell'ambito
della stessa operazione di linking .
4
4 Il Linking (collegamento) è il procedimento di integrazione dei vari moduli a cui un
programma fa riferimento (i quali possono essere sottoprogrammi o librerie), per creare una
11
Il multithreading permette di suddividere il lavoro a più processori in
modo efficiente, ma introduce una notevole complessità che può essere
sincronizzazione
spesso difficile da gestire. Il problema maggiore è la tra i
vari thread: spesso un thread ha bisogno dei risultati di un altro, oppure
deve sovrascrivere i dati di un altro ma non prima di un dato momento.
I sistemi operativi moderni permettono l'esecuzione contemporanea
(quasi!!) di più applicazioni e per questo vengono detti Multitask. Una
applicazione può quindi essere eseguita contemporaneamente ad
un'altra (per esempio quando navighiamo su internet e
contemporaneamente controlliamo la posta, oppure ricerchiamo un file
sul disco). Durante la sua esecuzione, una applicazione deve bloccare
completamente l'esecuzione quando aspetta che terminino processi lenti
come l'accesso ai dischi o la comunicazione con altri computer. Molte
volte le applicazioni possono essere organizzate in maniera tale da
ovviare a questi colli di bottiglia o in maniera da suddividere la loro
esecuzione in più processi, magari ripartiti su più processori in sistemi
multiprocessore. Ecco che in alcuni dei moderni sistemi operativi ci
vengono in contro i Thread. In questo caso avremo a che fare con
sistemi operativi multithread. La differenza tra questi due tipi di
sistema operativo sta nel fatto che nel primo tipo, l'unità elementare di
esecuzione è il task (processo), mentre nel secondo è il thread. I task
sono processi dotati di un contesto proprio che comprende anche aree di
memoria proprie. Ogni task è ottenuto da una separata operazione di
collegamento (linking). Ogni task può consistere di più thread. La
creazione di un nuovo thread non richiede l'impiego di grandi risorse di
sistema al contrario della creazione di un nuovo task.
Per Esempio: linker link editor)
singola unità eseguibile. Il (o è un programma che prende uno o più oggetti
generati dai compilatori e li assembla in un unico programma eseguibile.
12 In questo esempio di codice NXC (not
Boolean a=0; exactly C - il linguaggio simile al C
thread muoviti() { utilizzato per la programmazione del
OnFwd(OUT_BC, 50); robot NXT) viene mostrato un esempio
} di programma multi-thread.
Il thread “muoviti” include una
thread controllosensore() { semplice istruzione che indica al robot
SetSensorLowspeed(IN_4); di utilizzare le uscite B e C dei motori
While(a==0) per andare dritto al 50% della potenza
{ massima.
If (SensorUS(IN_4)<30) Il thread “controllosensore” invece
{ imposta l’ingresso 4 per l’uso del
a=1; sensore a ultrasuoni (che rileva la
} distanza dagli oggetti) e poi, attraverso
} un ciclo while, controlla il valore di
Off(OUT_BC); ritorno del sensore (la distanza
Exit(); dall’oggetto rilevato espressa in
} centimetri) e comanda al robot di
fermarsi nel momento in cui vede un
ostacolo a distanza minore di 30 cm.
task main() {
Precedes (vaidritto, controllosensore); Nel task principale l’unica istruzione
} indica di eseguire
contemporaneamente i due thread
scritti precedentemente.
In questo esempio quindi, mentre il robot si muove eseguendo un
processo (o fa qualunque altra operazione), ne convive un altro che nello
stesso momento effettua un controllo e in caso positivo interrompe
l’esecuzione di tutto il programma. Quindi il task è il programma che
viene mandato in esecuzione, poi spetterà al processore riconoscere i
vari thread che costituiscono il task e assegnare loro un tempo di
esecuzione. 13
Come detto in precedenza una delle altre caratteristiche fondamentali
del robot NXT è quella di poter comunicare tramite Bluetooth. Questa
importanza è data dalla capacità che gli da di comunicare, oltre che con
il pc, con gli altri robot della stessa categoria (Lego Mindstorm NXT). Ciò
permette di mandare messaggi tra un robot e l’altro o di sincronizzare
due “cervelli” NXT, con un parallelismo che garantisce il doppio delle
porte disponibili da sfruttare per tutte le apparecchiature esterne.
Un’altra possibilità che da questa tecnologia è quella di controllare i
movimenti del robot remotamente attraverso un altro dispositivo
portatile dotato di Bluetooth quale uno smartphone o un palmare. La
specifica Bluetooth è stata sviluppata da Ericsson e in seguito
formalizzata dalla Bluetooth Special Interest Group (SIG). SIG, la cui
costituzione è stata formalmente annunciata il 20 maggio 1999, è
un'associazione formata da Sony Ericsson, IBM, Intel, Toshiba, Nokia e
altre società che si sono aggiunte come associate o come membri
aggiunti. Adesso, insieme a tutte la altre tecnologie Wireless, è utilizzata
moltissimo sia in ambito industriale che domestico per dare un definitivo
addio all’utilizzo di ingombranti e fastidiosi cavi.
Il Bluetooth
Lo scopo principale della nascita della tecnologia bluetooth risiede nella
capacità di far dialogare e interagire fra loro dispositivi diversi (telefoni,
stampanti, notebook, PDA, impianti HiFi, tv,computer, PC, cellulari,