Robotica mobile e dintorni - LAR-DEIS

Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Robotica mobile e dintorni
panoramica sulle tecnologie hardware e software per il supporto
alla robotica mobile
Raffaele Grandi
em@il:[email protected]
www .lar .deis.unibo.it/people/rgrandi
D.E.I. - Università di Bologna
19 Aprile 2013
Raffaele Grandi
Robotica mobile e dintorni
1 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Outline
1
Introduzione
2
Applicazioni varie
3
Lego Mindstorm NXT
4
ROS: an open-source Robot Operating System
Raffaele Grandi
Robotica mobile e dintorni
2 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Approccio interdisciplinare
Occuparsi di robotica significa lavorare in un campo fortemente
interdisciplinare
La parte della robotica che studiamo è quella prettamente legata a
squadre di robot mobili.
La parola squadra suggerisce un approccio collaborativo tra i robot
Lo studio è legato fondamentalmente ad algoritmi di controllo
distribuito derivanti dalla teoria dei grafi
Spesso sono integrati con algoritmi di altra natura :
reti neurali, algoritmi di ottimizzazione, algoritmi euristici e
algoritmi esplorativi appartenenti anche al campo
dell’intelligenza artificiale
Raffaele Grandi
Robotica mobile e dintorni
3 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Strumenti di lavoro
Gli strumenti che vengono utilizzati non sono solamente quelli
teorici presentati ma anche quelli applicativi
La necessità di interagire con l’ambiente circostante spinge lo
studioso di robotica a interfacciarsi con dispositivi di
acquisizione dati e di rappresentazione ambientale
Si studiano gli algoritmi fondamentalmente in due modi
attraverso la simulazione
attraverso la realizzazione di un supporto fisico : un robot o
una sua parte
Raffaele Grandi
Robotica mobile e dintorni
4 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Simulazione
La simulazione è
generalmente un passo
obbligato nell’affrontare un
“problema robotico”
Principalmente sono tre tipi
di software che utilizziamo
per la simulazione robotica
M.U.S.E. Matlab/Simulink
J.U.S.E. - Java
Unibot Simulation
Environment
Blender/Morse
sim MUSE
Raffaele Grandi
Robotica mobile e dintorni
5 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Realizzazione pratica
Il passaggio dalla teoria alla pratica è spesso abbastanza
arduo.
Quasi sempre ciò che viene simulato deve essere modificato
nel momento in cui si scende in campo
L’interazione tra l’ambiente circostante e l’algoritmo dipende
da fattori fisici di tipo
meccanico, elettrico, elettronico, termico, luminoso ...
In ogni caso è necessario sempre fare i conti con l’entità che
elabora le informazioni : il robot
Raffaele Grandi
Robotica mobile e dintorni
6 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Realizzazione pratica
Per interagire con i robot è necessario avere nozioni di
cinque cose fondamentali :
microprocessori
attuatori
sensori
sistemi di comunicazione
sistemi di gestione dell’informazione
Le seguenti applicazioni mettono in evidenza questa
necessità
Raffaele Grandi
Robotica mobile e dintorni
7 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Unibot
Unibot è un progetto interno per la
costruzione di una flotta di robot mobili a
ruote differenziali di dimensione contenute (8
× 8 × 8 cm)
La struttura è composta da tre livelli sia
logici che fisici che comunicano tra loro
attraverso un bus verticale
livello sensori : include la scheda
sensori dotata di PIC16F877A a 20Mhz
e 8 sensori infrarossi
livello di controllo : include la scheda di
controllo dotata sempre di PIC16F877A
e modulo bluetooth per la
comunicazione
livello motori : include i motori e la
scheda di potenza
test unibot
Raffaele Grandi
Robotica mobile e dintorni
8 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Unibot-Arduino
Sviluppata una versione di Unibot che utilizza
come scheda di controllo la più economica e
versatile Arduino
una scheda Arduino consiste di un
microcontrollore RISC a 8-bit AVR 16
Mhz prodotto dalla Atmel, con
l’aggiunta di componenti
complementari che ne facilitino
l’incorporazione in altri circuiti.
Le schede Arduino ufficiali hanno usato
chip della serie megaAVR
ATmega8, ATmega168,
ATmega328, e ATmega1280
Arduino verrà integrato con una
Beagleboard-xM
A-Unibot Test
Raffaele Grandi
Robotica mobile e dintorni
9 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Beagleboard-xM
La BeagleBoard è un SBC a basso costo e bassi
consumi
Può offrire connettività e prestazioni simili ad un
portatile
Basata su un processore ARM Cortex da 1 Ghz e
512 Mb Ram
Elevate performance audio-video garantite da un
DSP a 430 Mhz e da un acceleratore grafico
2D/3D da 10 milioni di pol/sec
Numerosi connettori di espansione
Il progetto è completamente open: possibilità di
installare Linux Ubuntu di default
Raffaele Grandi
Robotica mobile e dintorni
10 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Roomba
Modificando il famoso robot per pulire i
pavimenti, Roomba, si è riusciti a creare
una buona piattaforma di robotica mobile
La scheda di controllo sostitutiva è una
Gumstix dotata di
scheda di espansione wireless
sistema operativo Linux
roomba and kinect
Raffaele Grandi
Robotica mobile e dintorni
11 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
U.A.V.
All’interno del progetto europeo
AIRobots sviluppato dall’Università
di Bologna in collaborazione con
l’Università di Napoli e altre
università europee, sono stati
progettati 2 U.A.V (Unmanned Air
Veicle) a ventola intubata
Il primo è dotato di una Gumstix
Il secondo utilizza una scheda
Arduino Mega2560
UAV test
Raffaele Grandi
Robotica mobile e dintorni
12 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Lego Mindstorm NXT
In alcune delle nostre attività di laboratorio
utilizziamo Lego Mindstorm NXT in quanto
tendono a celare l’interazione con la parte
fisica del robot
Dotato di motori e di sensori ha la necessità
di avere un core potente e versatile all’interno
del mattoncino programmabile
Mattoncino programmabile NXT è un
microcontrollore avanzato
contiene un processore a 32 bit Atmel
AT91SAM7S256 a 48 MHz (ARM7), con 256k flash
e 64k RAM
un coprocessore 8 bit Atmel ATmega48 a 8 MHz
(RISC a 8 bit), con 4k flash e 512 byte RAM
uno schermo LCD con una risoluzione di 60x100
pixel
una porta USB 2.0 e connettività Bluetooth
Raffaele Grandi
Robotica mobile e dintorni
13 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Overview
1
Introduzione
1
2
3
storia
elementi del kit base
motori e sensori
2
Microcontrollore
3
Studio del modello e utlizzo pratico
1
4
Esempi
Programmazione
1
2
Linguaggi grafici
Java - Lejos - Eclipse
Raffaele Grandi
Robotica mobile e dintorni
14 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Storia
Lego Mindstorm è una linea di prodotti della LEGO nata nel 1998 e
orientata alla progettazione e modellazione di sistemi elettromeccanici e
robotici. Nel 2006 la LEGO immette sul mercato la nuova generazione
di Lego Mindstorm (LMS) denominata NXT con maggiore capacità e
versatilità.
Figura: Kit base LMS-NXT
Raffaele Grandi
Robotica mobile e dintorni
15 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Elementi
Lego Mindstorm combina principalmente 3 tipi di elementi:
1
Lego Technic : pensati per la costruzione di strutture meccaniche
più o meno complesse, comprensive di leve, catene ed ingranaggi.
2
Mattoncini programmabili (la novità geniale della LEGO) :
mattoni integrabili fisicamente con i lego Technic “classici” che
hanno però all’interno un microcontrollore programmabile, uno
scherno LCD e delle prese sui lati dove collegare motori e sensori
appositamente studiati.
3
Motori e sensori : dispositivi integrabili con i mattoncini Technic e
collegabili al brick di controllo, che implementano determinate
capacità.
Raffaele Grandi
Robotica mobile e dintorni
16 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Motori e Sensori
Motori con controllo di
velocità e di posizione
integrato
Sensori di luce, sensori
audio, ad ultrasuoni per il
controllo della posizione,
infrarossi, tattili, di colore,
giroscopici...
Figura: NXT con sensori e motori
Raffaele Grandi
Robotica mobile e dintorni
17 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Kit Lego Mindstorm NXT
619 pezzi LEGO Technic
3 servomotori
molto più grandi dei precedenti
2 sensori tattili
Sensore di colore
Sensore audio
Sensore di prossimità a ultrasuoni
Mattoncino programmabile NXT
Figura: Esempio costruttivo
Raffaele Grandi
Robotica mobile e dintorni
18 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Mattoncino di controllo NXT
Mattoncino programmabile NXT
contiene un processore a 32 bit Atmel
AT91SAM7S256 a 48 MHz (ARM7), con
256k flash e 64k RAM
un coprocessore 8 bit Atmel ATmega48 a 8
MHz (RISC a 8 bit), con 4k flash e 512 byte
RAM
uno schermo LCD con una risoluzione di
60x100 pixel
una porta USB 2.0 e connettività Bluetooth
Raffaele Grandi
Robotica mobile e dintorni
19 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Modellizzazione
Praticamente tutti i tipi di
sistemi integrati
elettromeccanici esistenti
nella vita reale (come gli
elevatori o i robots
industriali) possono essere
modellati con Lego
Mindstorms.
Figura: Braccio robotico
Raffaele Grandi
Robotica mobile e dintorni
20 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Comportamento
Avere a disposizione questo tipo di dispositivi ci permette di
costruire robots che interagiscono con l’ambiente circostante e
che eseguono dei task operativi in base a ciò che apprendono
durante il loro funzionamento, secondo le procedure sviluppate
all’interno del programma.
Possono essere simulati comportamenti complessi tramite
apposito software
Raffaele Grandi
Robotica mobile e dintorni
21 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Esempi costruttivi 1/4
Cassaforte: uno degli
esempi più classici di
automa a stati finiti (ASF)
Figura: Cassaforte a combinazione RCX
Figura: Schema di un ASF
Raffaele Grandi
Robotica mobile e dintorni
22 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Esempi costruttivi 2/4
Robot di tipo differente che
impiegano gli algoritmi più
diversi
Figura: Robot ritrattista
Raffaele Grandi
Figura: Rubik cube solver
Robotica mobile e dintorni
23 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Esempi costruttivi 3/4
Robot che ci riguardano più
da vicino per le aree di
robotica mobile e controllo
Figura: Controllo di un pendolo
Figura: Line follower
inverso in movimento (tipo Segway)
Raffaele Grandi
Robotica mobile e dintorni
24 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Esempi costruttivi 4/4
Oppure:
algoritmi di collaborazione
distribuita
sistemi multi-agente
algoritmi di apprendimento
algoritmi di intelligenza artificiale
...
Raffaele Grandi
Robotica mobile e dintorni
25 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Metodi di programmazione
La programmazione dei LEGO è possibile utilizzando due
metodologie:
1
Programmazione grafica
2
Programmazione strutturata via codice
Raffaele Grandi
Robotica mobile e dintorni
26 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Linguaggi grafici
Forniti di default dalla Lego:
RCX Code: incluso nella versione commerciale del kit RCX e in vendita
nei negozi di giocattoli;
ROBOLAB: basato su LabVIEW e sviluppato dalla Tufts University
NXT-G: derivato da RoboLab e fornito in dotazione nella scatola NXT
Figura: Screenshot di NXT-G
Raffaele Grandi
Robotica mobile e dintorni
27 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Programmazione strutturata
Avviene tramite software di terze parti consentendo maggiore:
flessibilità
riusabilità
espandibilità
espressività
velocità di esecuzione
integrazione con applicazioni e sistemi esistenti
Raffaele Grandi
Robotica mobile e dintorni
28 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Software in uso
Linguaggi di programmazione alternativi utilizzati:
QuiteC
C and C++ sotto sistema operativo BrickOS (precedentemente
LegOS)
Visual Basic
Python
Java sotto sistema operativo LeJOS (o TinyVM)
Ognuno di questi linguaggi permette l’interfacciamento con il
microcontrollore, previa modifica del firmware
La modifica tramite LeJOS avviene attraverso un apposito
programma incluso nel pacchetto del nuovo firmware
Raffaele Grandi
Robotica mobile e dintorni
29 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
LeJOS
La scelta
LeJOS è un firmware sostitutivo per il mattone Lego Mindstorms
NXT.
Include una Java Virtual Machine, che permette di programmare i
robot LMS mediante l’utilizzo del linguaggio di programmazione
Java.
Vaste librerie di codice che supportano varie funzioni di alto livello
quali navigazione e automatismo basato algoritmi comportamentali
Al momento risulta la struttura più completa per la programmazione
dei Lego MS
OpenSource: http://lejos.sourceforge.net/
Raffaele Grandi
Robotica mobile e dintorni
30 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Cosa offre LeJOS NXJ
1
Object oriented language (Java)
2
Preemptive threads (cambio di contesto forzato)
3
Arrays, including multi-dimensional
4
Recursion
5
Synchronization
6
Exceptions
7
Java types including float, long, and String
8
Most of the java.lang, java.util and java.io classes
9
A well-documented Robotics API
Raffaele Grandi
Robotica mobile e dintorni
31 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Integrated Development Environment
IDE: Ambienti integrati per lo sviluppo del software
NetBeans
ambiente di sviluppo multi-linguaggio scritto interamente in Java (Swing)
nato nel giugno 2000.
scelto dalla Sun Microsystems come IDE ufficiale
plug-in oriented
Eclipse
ambiente di sviluppo multi-linguaggio scritto in Java (SWT)
progetto opensource sviluppato da una vasta comunità sotto la tutela
della Eclipse Foundation
plug-in oriented
Noi utilizzeremo Eclipse ma è possibile utilizzare anche NetBeans,
entrambi gli ambienti sono dotati del plug-in specifico per LeJOS
inoltre è possibile lavorare tramite linea di comando
Raffaele Grandi
Robotica mobile e dintorni
32 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Eclipse
Risorse per la programmazione
Eclipse è un ambiente di sviluppo
multipiattaforma
(Linux - Windows e Mac)
Lo si scarica gratuitamente da
www.eclipse.org/downloads
La versione a cui siamo interessati è
Eclipse Classic
viene cosı̀ installato tutto l’ambiente di
sviluppo
per chi avesse Ubuntu è disponibile
anche nel repository ufficiale
Raffaele Grandi
Figura: Eclipse Downloads site
Robotica mobile e dintorni
33 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Eclipse
L’ambiente di lavoro
Una volta installato Eclipse e caricato, l’interfaccia appare come
nella figura a fianco:
Area di lavoro
Gerarchia dello spazio di
lavoro contenente i
packages e le classi
Console di output
Menù per la gestione delle
opzioni
Figura: Eclipse Interface
Raffaele Grandi
Robotica mobile e dintorni
34 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Integrazione Java - LeJOS
API LeJOS
Le API di LeJOS sono state prodotte attraverso la compilazione
automatica utilizzando il tool javadoc e si possono trovare
all’indirizzo
http://lejos.sourceforge.net/nxt/nxj/api/index.html
help di Eclipse dopo aver installato il plug-in relativo
Raffaele Grandi
Robotica mobile e dintorni
35 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Integrazione Java - LeJOS
API LeJOS - blocchi concettuali
Osservando le API ci si accorge che i packages si dividono a grandi linee
in 3 macro blocchi concettuali:
1
Packages mutuati direttamente dal linguaggio JAVA (java.* javax.*)
2
Packages che riguardano la gestione delle piattaforma NXT-RCX
(lejos.*)
3
Packages di supporto specifici per la robotica (lejos.robotics.*)
Raffaele Grandi
Robotica mobile e dintorni
36 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Integrazione Java - LeJOS
API LeJOS - il linguaggio
Packages mutuati direttamente dal linguaggio JAVA (java.* javax.*)
1
2
3
relative al core del linguaggio (java.lang - java.io - java.util java.net)
relative alla grafica (java.awt - java.awt.geom)
relative alla comunicazione bluetooth (javax.bluetooth javax.microedition)
Raffaele Grandi
Robotica mobile e dintorni
37 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Integrazione Java - LeJOS
API LeJOS - la piattaforma
Packages che riguardano la gestione delle piattaforma NXT-RCX
(lejos.*)
1
2
relative alla gestione dei motori, sensori, batteria ... (lejos.nxt)
relative alla gestione delle comunicazioni (lejos.nxt.comm lejos.nxt.remote)
Raffaele Grandi
Robotica mobile e dintorni
38 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Integrazione Java - LeJOS
API LeJOS - la robotica
Packages di supporto specifici per la robotica (lejos.robotics.*)
1
2
3
supporto alla navigazione (lejos.robotics.navigation)
supporto alla localizzione (lejos.robotics.localization)
supporto alla “Subsumption Architecture” per la gestione dei
Behaviour (lejos.robotics.subsumption)
Raffaele Grandi
Robotica mobile e dintorni
39 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Behaviour based robotics
cenni
In LeJOS esiste una tipologia di programmazione basata sui comportamenti
che utilizza la Subsumption Architecture (SA)
SA è una architettura logica fortemente legata alla gestione dei
comportamenti nell’ambito della robotica “autonoma”. Il termine è stato
introdotto da Rodney Brooks (professore di robotica al MIT) e colleghi
nel 1986
Il concetto di sussunzione è usato nella rappresentazione della
conoscenza, per indicare una classificazione gerarchizzante, ricondurre
un concetto nell’ambito di uno più ampio che lo comprende.
Raffaele Grandi
Robotica mobile e dintorni
40 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Subsumption Architecture (SA)
SA viene quindi vista come una via per decomporre la
struttura di un comportamento complesso in una
sottostruttura di comportamenti più semplici correlati tra
loro che possono essere modellati in base ad idee generalizzate.
Ad ogni comportamento “semplice” viene associato un livello
di astrazione
Ogni livello ha un obiettivo ben preciso che l’agente deve
portare a termine
Raffaele Grandi
Robotica mobile e dintorni
41 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Subsumption Architecture
Struttura
Architettura con struttura bottom-up
sono gli eventi che si verificano agli strati inferiori
dell’architettura che offrono la possibilità a quelli superiori di
essere attivati e portati a termine
gli strati decisionali più bassi sono quelli che hanno contatto
con la struttura “fisica” del robot
ci si interfaccia con le API di controllo: l’attuatore visto come
una risorsa software
maggiore reattività: i task inferiori prendono decisioni dirette
Raffaele Grandi
Robotica mobile e dintorni
42 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Comportamento
Ogni comportamento viene visto come entità dotata di 3 caratteristiche
funzionali:
1
2
3
condizione di attivazione
attività da svolgere in fase attiva
attività da svolgere in caso di soppressione
Si utilizza un arbitro (o supervisore) che identifica la condizione di attivazione
del comportamento ed esegue la relativa azione, compresa l’eventuale
soppressione se altre condizioni si verificano con una priorità di esecuzione
maggiore
in LeJOS l’arbitro è un thread che utilizza un array di comportamenti in
ordine di priorità crescente con la posizione nell’array
Raffaele Grandi
Robotica mobile e dintorni
43 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Vantaggi, Svantaggi e Soluzioni
Vantaggi:
maggiore modularità
ogni livello lavora direttamente sulle risorse del proprio ambiente
ogni livello percepisce direttamente il proprio obiettivo
Svantaggi:
incapacità di avere più livelli contemporanei dato che gli inneschi di uno
possono interferire con quelli di un altro
difficoltà di selezione dell’azione da eseguire in sistemi altamente distribuiti
attraverso la sola capacità di inibizione/soppressione di un comportamento
Soluzioni:
eventuale programmazione mista ad esempio behaviour-planning per la
selezione di comportamenti concorrenti
Raffaele Grandi
Robotica mobile e dintorni
44 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Programmazione
behaviours - schema
Figura: Schema BumperCar
Raffaele Grandi
Robotica mobile e dintorni
45 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Fase di upload sul LEGO
Compilazione ed esecuzione
1
Una volta creato il proprio programma in Java-LeJOS sul proprio
computer è necessario inviarlo al microcontrollore NXT
2
Le fasi successive (che avvengono automaticamente) sono la
compilazione e la creazione di un file ottimizzato ad-hoc per la JVM
residente sul microcontrollore
1
2
3
nxjc: compila il programma originando un file .class
nxj: crea un file .nxj ed esegue l’upload sul microcontrollore
L’interfacciamento con il microcontrollore può essere effettuato sia
via bluetooth che via USB
Raffaele Grandi
Robotica mobile e dintorni
46 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Disaccoppiamento
I programmi che possono essere sviluppati in modo da lavorare
in locale sul robot sono programmi complessi ma comunque
sempre limitati dalle capacità di calcolo e di memoria della
piattaforma
LeJOS permette la ricezione via bluetooth di dati utilizzando
tecnologia ereditata dai cellulari (javaME) e quindi permette
di sviluppare programmi che guidano il robot da remoto.
In questo modo possono essere sviluppati programmi
particolarmente complessi disaccoppiando la parte “pensante”
da quella “esecutiva”. La prima viene seguita sul PC mentre la
seconda sul robot.
Raffaele Grandi
Robotica mobile e dintorni
47 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Obiettivi dell’attività
1
Scopo: interagire con la piattaforma Lego MS-NXT in modo
che si possa approfondire l’interazione hardware - software
2
Esercitazioni: assegnamento di task operativi che necessitano
sia della costruzione di un robot adeguato alla risoluzione del
task sia della sua programmazione
3
Lavoro di gruppo con eventuale suddivisione delle attività di
analisi del problema proposto e realizzazione della soluzione
4
Eventuale utilizzo della piattafirma per il test e lo sviluppo di
algoritmi più complessi...
esercitazioni lego
Raffaele Grandi
Robotica mobile e dintorni
48 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Linguaggi grafici
Linguaggi strutturati alternativi
Integrazione Java e LeJOS
Controllo “moderno”
Toilet flusher:
uno dei più classici esempi di
controllo automatico,
modernamente implementato
tramite l’utilizzo di Lego MS
NXT
Figura: Toilet flusher control
Raffaele Grandi
Robotica mobile e dintorni
49 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Infrastrutture di controllo
Generalmente quando ci si occupa di progetti complessi si tende a
sviluppare delle infrastrutture di controllo software ad-hoc che assista
uno o più robot durante lo svolgimento delle attività. Un esempio può
essere il framework di supporto per l’arena degli unibot
Raffaele Grandi
Robotica mobile e dintorni
50 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Infrastrutture di controllo
Unibot Tracking System
Raffaele Grandi
Robotica mobile e dintorni
51 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Infrastrutture di controllo
ROS
Negli ultimi anni dall’esigenza di un framework comune,
versatile e facilmente utilizzabile e implementabile su le più
diverse architetture hardware è nato ROS : Robot Operating
System
ROS è un framework software nato all’interno di una start-up
americana la “Willow Garage” affiliata allo Stanford Artificial
Intelligence Laboratory
Raffaele Grandi
Robotica mobile e dintorni
52 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
ROS
ROS è un meta-sistema operativo che cerca
di svincolare il programmatore di “risorse
robotiche” dall’ hardware fisico mettendo a
disposizione dati e servizi
si comporta come un middleware
L’astrazione avviene incapsulando all’interno
di opportuni wrapper software i driver di
controllo della risorsa stessa
In questo modo la risosrsa incapsulata
diventa un nodo di comunicazione/attuazione
bidirezionale a disposizione del sistema
Il sistema è gestito da un “core” software e
implementa il pattern architetturale
Publish–Subscribe
Raffaele Grandi
Robotica mobile e dintorni
53 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
ROS
Ogni nodo sottoscrive e/o pubblica qualche genere di informazione.
Il “core” è la struttura preposta a gestire l’interscambio dei messaggi all’interno
del sistema
Vantaggi
Disaccoppiamento tra chi invia e chi riceve: i nodi ignorano la struttura
del sistema
Fault-tolerance : se qualche parte si disattiva il sistema continua a
funzionare
Forte scalabilità del sistema
Possibilità di utilizzare strutture multi-core per progetti di grandi
dimensioni
Svantaggi
Disaccoppiamento : chi spedisce non ha nessuna certezza che l’ascoltatore
sia attivo
Tempistica incerta nell’interscambio dei messaggi. Risulta difficile gestire
applicazioni real-time
Raffaele Grandi
Robotica mobile e dintorni
54 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
ROS
ROS graph example
Raffaele Grandi
Robotica mobile e dintorni
55 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
ROS : applicazioni
ROS è utilizzato in una molteplice varietà di applicazioni
robotiche:
Robotica mobile
Mani robotiche
Gripper sottomarini
Visual Servoing and Visual Tracking
UAV (Unmanned Aerial Vehicle)
SLAM (Simultaneous Localization and Mapping)
LegoNXT
...
Ros 3 years
Raffaele Grandi
Robotica mobile e dintorni
56 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Algoritmi?
Ogni singolo robot si basa sulla sinergia di sistemi eterogenei e
che forniscono un supporto più o meno articolato a software
intelligenti e autonomi che in qualche modo raccolgono ed
elaborano informazioni ambientali.
Gli algoritmi che controllano uno o più robot possono
provenire da tantissimi campi diversi appartenenti all’area dei
controlli, dell’intelligenza artificiale classica o di quella
bio-inspirata
In ogni caso si tratta di campi molto vasti che necessitano
profondi studi per essere compresi e portati avanti... ma non
solo
Raffaele Grandi
Robotica mobile e dintorni
57 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
Immaginazione
“Imagination is more important than knowledge.
For knowledge is limited to all we now know
and understand, while imagination embraces the
entire world, and all there ever will be to know
and understand.” (Albert Einstein)
Raffaele Grandi
Robotica mobile e dintorni
58 / 59
Introduzione
Applicazioni varie
Lego Mindstorm NXT
Infrastrutture software
Algoritmi e Immaginazione
End
Domande?
Raffaele Grandi
Robotica mobile e dintorni
59 / 59