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