Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego...

59
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 :raffaele .grandi @unibo.it www .lar .deis .unibo.it /people /rgrandi D.E.I. - Universit` a di Bologna 19 Aprile 2013 Raffaele Grandi Robotica mobile e dintorni 1 / 59

Transcript of Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego...

Page 1: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Robotica mobile e dintornipanoramica 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. - Universita di Bologna

19 Aprile 2013

Raffaele Grandi Robotica mobile e dintorni 1 / 59

Page 2: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture 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

Page 3: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Approccio interdisciplinare

Occuparsi di robotica significa lavorare in un campo fortementeinterdisciplinare

La parte della robotica che studiamo e quella prettamente legata asquadre di robot mobili.

La parola squadra suggerisce un approccio collaborativo tra i robot

Lo studio e legato fondamentalmente ad algoritmi di controllodistribuito derivanti dalla teoria dei grafi

Spesso sono integrati con algoritmi di altra natura :

reti neurali, algoritmi di ottimizzazione, algoritmi euristici ealgoritmi esplorativi appartenenti anche al campodell’intelligenza artificiale

Raffaele Grandi Robotica mobile e dintorni 3 / 59

Page 4: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Strumenti di lavoro

Gli strumenti che vengono utilizzati non sono solamente quelliteorici presentati ma anche quelli applicativi

La necessita di interagire con l’ambiente circostante spinge lostudioso di robotica a interfacciarsi con dispositivi diacquisizione dati e di rappresentazione ambientale

Si studiano gli algoritmi fondamentalmente in due modi

attraverso la simulazioneattraverso la realizzazione di un supporto fisico : un robot ouna sua parte

Raffaele Grandi Robotica mobile e dintorni 4 / 59

Page 5: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Simulazione

La simulazione egeneralmente un passoobbligato nell’affrontare un“problema robotico”

Principalmente sono tre tipidi software che utilizziamoper la simulazione robotica

M.U.S.E. -Matlab/SimulinkJ.U.S.E. - JavaUnibot SimulationEnvironmentBlender/Morse

sim MUSE

Raffaele Grandi Robotica mobile e dintorni 5 / 59

Page 6: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Realizzazione pratica

Il passaggio dalla teoria alla pratica e spesso abbastanzaarduo.

Quasi sempre cio che viene simulato deve essere modificatonel momento in cui si scende in campo

L’interazione tra l’ambiente circostante e l’algoritmo dipendeda fattori fisici di tipo

meccanico, elettrico, elettronico, termico, luminoso ...

In ogni caso e necessario sempre fare i conti con l’entita che

elabora le informazioni : il robot

Raffaele Grandi Robotica mobile e dintorni 6 / 59

Page 7: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Realizzazione pratica

Per interagire con i robot e necessario avere nozioni dicinque cose fondamentali :

microprocessoriattuatorisensorisistemi di comunicazionesistemi di gestione dell’informazione

Le seguenti applicazioni mettono in evidenza questanecessita

Raffaele Grandi Robotica mobile e dintorni 7 / 59

Page 8: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Unibot

Unibot e un progetto interno per lacostruzione di una flotta di robot mobili aruote differenziali di dimensione contenute (8× 8 × 8 cm)

La struttura e composta da tre livelli sialogici che fisici che comunicano tra loroattraverso un bus verticale

livello sensori : include la schedasensori dotata di PIC16F877A a 20Mhze 8 sensori infrarossilivello di controllo : include la scheda dicontrollo dotata sempre di PIC16F877Ae modulo bluetooth per lacomunicazionelivello motori : include i motori e lascheda di potenza

test unibot

Raffaele Grandi Robotica mobile e dintorni 8 / 59

Page 9: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Unibot-Arduino

Sviluppata una versione di Unibot che utilizzacome scheda di controllo la piu economica eversatile Arduino

una scheda Arduino consiste di unmicrocontrollore RISC a 8-bit AVR 16Mhz prodotto dalla Atmel, conl’aggiunta di componenticomplementari che ne facilitinol’incorporazione in altri circuiti.Le schede Arduino ufficiali hanno usatochip della serie megaAVR

ATmega8, ATmega168,ATmega328, e ATmega1280

Arduino verra integrato con una

Beagleboard-xMA-Unibot Test

Raffaele Grandi Robotica mobile e dintorni 9 / 59

Page 10: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Beagleboard-xM

La BeagleBoard e un SBC a basso costo e bassiconsumi

Puo offrire connettivita e prestazioni simili ad unportatile

Basata su un processore ARM Cortex da 1 Ghz e512 Mb Ram

Elevate performance audio-video garantite da unDSP a 430 Mhz e da un acceleratore grafico2D/3D da 10 milioni di pol/sec

Numerosi connettori di espansione

Il progetto e completamente open: possibilita di

installare Linux Ubuntu di default

Raffaele Grandi Robotica mobile e dintorni 10 / 59

Page 11: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Roomba

Modificando il famoso robot per pulire ipavimenti, Roomba, si e riusciti a creareuna buona piattaforma di robotica mobile

La scheda di controllo sostitutiva e unaGumstix dotata di

scheda di espansione wireless

sistema operativo Linux

roomba and kinect

Raffaele Grandi Robotica mobile e dintorni 11 / 59

Page 12: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

U.A.V.

All’interno del progetto europeoAIRobots sviluppato dall’Universitadi Bologna in collaborazione conl’Universita di Napoli e altreuniversita europee, sono statiprogettati 2 U.A.V (Unmanned AirVeicle) a ventola intubata

Il primo e dotato di una Gumstix

Il secondo utilizza una schedaArduino Mega2560

UAV test

Raffaele Grandi Robotica mobile e dintorni 12 / 59

Page 13: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Lego Mindstorm NXT

In alcune delle nostre attivita di laboratorioutilizziamo Lego Mindstorm NXT in quantotendono a celare l’interazione con la partefisica del robot

Dotato di motori e di sensori ha la necessitadi avere un core potente e versatile all’internodel mattoncino programmabile

Mattoncino programmabile NXT e unmicrocontrollore avanzato

contiene un processore a 32 bit AtmelAT91SAM7S256 a 48 MHz (ARM7), con 256k flashe 64k RAMun coprocessore 8 bit Atmel ATmega48 a 8 MHz(RISC a 8 bit), con 4k flash e 512 byte RAMuno schermo LCD con una risoluzione di 60x100pixel

una porta USB 2.0 e connettivita Bluetooth

Raffaele Grandi Robotica mobile e dintorni 13 / 59

Page 14: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Overview

1 Introduzione

1 storia2 elementi del kit base3 motori e sensori

2 Microcontrollore

3 Studio del modello e utlizzo pratico

1 Esempi

4 Programmazione

1 Linguaggi grafici2 Java - Lejos - Eclipse

Raffaele Grandi Robotica mobile e dintorni 14 / 59

Page 15: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Storia

Lego Mindstorm e una linea di pro-

dotti della LEGO nata nel 1998 e

orientata alla progettazione e model-

lazione di sistemi elettromeccanici e

robotici. Nel 2006 la LEGO immet-

te sul mercato la nuova generazione

di Lego Mindstorm (LMS) denomi-

nata NXT con maggiore capacita e

versatilita.

Figura: Kit base LMS-NXT

Raffaele Grandi Robotica mobile e dintorni 15 / 59

Page 16: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Elementi

Lego Mindstorm combina principalmente 3 tipi di elementi:

1 Lego Technic : pensati per la costruzione di strutture meccanichepiu o meno complesse, comprensive di leve, catene ed ingranaggi.

2 Mattoncini programmabili (la novita geniale della LEGO) :mattoni integrabili fisicamente con i lego Technic “classici” chehanno pero all’interno un microcontrollore programmabile, unoscherno LCD e delle prese sui lati dove collegare motori e sensoriappositamente studiati.

3 Motori e sensori : dispositivi integrabili con i mattoncini Technic ecollegabili al brick di controllo, che implementano determinatecapacita.

Raffaele Grandi Robotica mobile e dintorni 16 / 59

Page 17: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Motori e Sensori

Motori con controllo divelocita e di posizioneintegrato

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

Page 18: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Kit Lego Mindstorm NXT

619 pezzi LEGO Technic

3 servomotori

molto piu grandi dei precedenti

2 sensori tattili

Sensore di colore

Sensore audio

Sensore di prossimita a ultrasuoni

Mattoncino programmabile NXT

Figura: Esempio costruttivo

Raffaele Grandi Robotica mobile e dintorni 18 / 59

Page 19: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Mattoncino di controllo NXT

Mattoncino programmabile NXT

contiene un processore a 32 bit AtmelAT91SAM7S256 a 48 MHz (ARM7), con256k flash e 64k RAMun coprocessore 8 bit Atmel ATmega48 a 8MHz (RISC a 8 bit), con 4k flash e 512 byteRAMuno schermo LCD con una risoluzione di60x100 pixel

una porta USB 2.0 e connettivita Bluetooth

Raffaele Grandi Robotica mobile e dintorni 19 / 59

Page 20: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione 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

Page 21: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Comportamento

Avere a disposizione questo tipo di dispositivi ci permette dicostruire robots che interagiscono con l’ambiente circostante eche eseguono dei task operativi in base a cio che apprendonodurante il loro funzionamento, secondo le procedure sviluppateall’interno del programma.

Possono essere simulati comportamenti complessi tramiteapposito software

Raffaele Grandi Robotica mobile e dintorni 21 / 59

Page 22: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Esempi costruttivi 1/4

Cassaforte: uno degliesempi piu classici diautoma a stati finiti (ASF)

Figura: Schema di un ASF

Figura: Cassaforte a combinazione RCX

Raffaele Grandi Robotica mobile e dintorni 22 / 59

Page 23: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Esempi costruttivi 2/4

Robot di tipo differente cheimpiegano gli algoritmi piudiversi

Figura: Robot ritrattista Figura: Rubik cube solver

Raffaele Grandi Robotica mobile e dintorni 23 / 59

Page 24: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Esempi costruttivi 3/4

Robot che ci riguardano piuda vicino per le aree dirobotica mobile e controllo

Figura: Controllo di un pendolo

inverso in movimento (tipo Segway)Figura: Line follower

Raffaele Grandi Robotica mobile e dintorni 24 / 59

Page 25: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Esempi costruttivi 4/4

Oppure:

algoritmi di collaborazionedistribuitasistemi multi-agentealgoritmi di apprendimentoalgoritmi di intelligenza artificiale...

Raffaele Grandi Robotica mobile e dintorni 25 / 59

Page 26: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Metodi di programmazione

La programmazione dei LEGO e possibile utilizzando duemetodologie:

1 Programmazione grafica

2 Programmazione strutturata via codice

Raffaele Grandi Robotica mobile e dintorni 26 / 59

Page 27: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Linguaggi grafici

Forniti di default dalla Lego:

RCX Code: incluso nella versione commerciale del kit RCX e in venditanei negozi di giocattoli;ROBOLAB: basato su LabVIEW e sviluppato dalla Tufts UniversityNXT-G: derivato da RoboLab e fornito in dotazione nella scatola NXT

Figura: Screenshot di NXT-G

Raffaele Grandi Robotica mobile e dintorni 27 / 59

Page 28: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Programmazione strutturata

Avviene tramite software di terze parti consentendo maggiore:

flessibilita

riusabilita

espandibilita

espressivita

velocita di esecuzione

integrazione con applicazioni e sistemi esistenti

Raffaele Grandi Robotica mobile e dintorni 28 / 59

Page 29: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Software in uso

Linguaggi di programmazione alternativi utilizzati:

QuiteCC and C++ sotto sistema operativo BrickOS (precedentementeLegOS)Visual BasicPythonJava sotto sistema operativo LeJOS (o TinyVM)

Ognuno di questi linguaggi permette l’interfacciamento con ilmicrocontrollore, previa modifica del firmware

La modifica tramite LeJOS avviene attraverso un appositoprogramma incluso nel pacchetto del nuovo firmware

Raffaele Grandi Robotica mobile e dintorni 29 / 59

Page 30: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

LeJOSLa scelta

LeJOS e un firmware sostitutivo per il mattone Lego MindstormsNXT.

Include una Java Virtual Machine, che permette di programmare irobot LMS mediante l’utilizzo del linguaggio di programmazioneJava.

Vaste librerie di codice che supportano varie funzioni di alto livelloquali navigazione e automatismo basato algoritmi comportamentali

Al momento risulta la struttura piu completa per la programmazionedei Lego MS

OpenSource: http://lejos.sourceforge.net/

Raffaele Grandi Robotica mobile e dintorni 30 / 59

Page 31: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione 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

Page 32: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Integrated Development EnvironmentIDE: 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 ufficialeplug-in oriented

Eclipse

ambiente di sviluppo multi-linguaggio scritto in Java (SWT)progetto opensource sviluppato da una vasta comunita sotto la tuteladella Eclipse Foundationplug-in oriented

Noi utilizzeremo Eclipse ma e possibile utilizzare anche NetBeans,entrambi gli ambienti sono dotati del plug-in specifico per LeJOS

inoltre e possibile lavorare tramite linea di comando

Raffaele Grandi Robotica mobile e dintorni 32 / 59

Page 33: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

EclipseRisorse per la programmazione

Eclipse e un ambiente di sviluppomultipiattaforma

(Linux - Windows e Mac)

Lo si scarica gratuitamente dawww.eclipse.org/downloads

La versione a cui siamo interessati eEclipse Classic

viene cosı installato tutto l’ambiente disviluppo

per chi avesse Ubuntu e disponibile

anche nel repository ufficiale Figura: Eclipse Downloads site

Raffaele Grandi Robotica mobile e dintorni 33 / 59

Page 34: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

EclipseL’ambiente di lavoro

Una volta installato Eclipse e ca-ricato, l’interfaccia appare comenella figura a fianco:

Area di lavoro

Gerarchia dello spazio dilavoro contenente ipackages e le classi

Console di output

Menu per la gestione delle

opzioni

Figura: Eclipse Interface

Raffaele Grandi Robotica mobile e dintorni 34 / 59

Page 35: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Integrazione Java - LeJOSAPI LeJOS

Le API di LeJOS sono state prodotte attraverso la compilazioneautomatica utilizzando il tool javadoc e si possono trovare

all’indirizzohttp://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

Page 36: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Integrazione Java - LeJOSAPI LeJOS - blocchi concettuali

Osservando le API ci si accorge che i packages si dividono a grandi lineein 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

Page 37: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Integrazione Java - LeJOSAPI LeJOS - il linguaggio

Packages mutuati direttamente dal linguaggio JAVA (java.* -javax.*)

1 relative al core del linguaggio (java.lang - java.io - java.util -java.net)

2 relative alla grafica (java.awt - java.awt.geom)3 relative alla comunicazione bluetooth (javax.bluetooth -

javax.microedition)

Raffaele Grandi Robotica mobile e dintorni 37 / 59

Page 38: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Integrazione Java - LeJOSAPI LeJOS - la piattaforma

Packages che riguardano la gestione delle piattaforma NXT-RCX(lejos.*)

1 relative alla gestione dei motori, sensori, batteria ... (lejos.nxt)2 relative alla gestione delle comunicazioni (lejos.nxt.comm -

lejos.nxt.remote)

Raffaele Grandi Robotica mobile e dintorni 38 / 59

Page 39: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Integrazione Java - LeJOSAPI LeJOS - la robotica

Packages di supporto specifici per la robotica (lejos.robotics.*)

1 supporto alla navigazione (lejos.robotics.navigation)2 supporto alla localizzione (lejos.robotics.localization)3 supporto alla “Subsumption Architecture” per la gestione dei

Behaviour (lejos.robotics.subsumption)

Raffaele Grandi Robotica mobile e dintorni 39 / 59

Page 40: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Behaviour based roboticscenni

In LeJOS esiste una tipologia di programmazione basata sui comportamentiche utilizza la Subsumption Architecture (SA)

SA e una architettura logica fortemente legata alla gestione deicomportamenti nell’ambito della robotica “autonoma”. Il termine e statointrodotto da Rodney Brooks (professore di robotica al MIT) e colleghinel 1986

Il concetto di sussunzione e usato nella rappresentazione dellaconoscenza, per indicare una classificazione gerarchizzante, ricondurreun concetto nell’ambito di uno piu ampio che lo comprende.

Raffaele Grandi Robotica mobile e dintorni 40 / 59

Page 41: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Subsumption Architecture (SA)

SA viene quindi vista come una via per decomporre lastruttura di un comportamento complesso in unasottostruttura di comportamenti piu semplici correlati traloro che possono essere modellati in base ad idee generalizzate.

Ad ogni comportamento “semplice” viene associato un livellodi astrazione

Ogni livello ha un obiettivo ben preciso che l’agente deveportare a termine

Raffaele Grandi Robotica mobile e dintorni 41 / 59

Page 42: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Subsumption ArchitectureStruttura

Architettura con struttura bottom-up

sono gli eventi che si verificano agli strati inferioridell’architettura che offrono la possibilita a quelli superiori diessere attivati e portati a terminegli strati decisionali piu bassi sono quelli che hanno contattocon la struttura “fisica” del robot

ci si interfaccia con le API di controllo: l’attuatore visto comeuna risorsa softwaremaggiore reattivita: i task inferiori prendono decisioni dirette

Raffaele Grandi Robotica mobile e dintorni 42 / 59

Page 43: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Comportamento

Ogni comportamento viene visto come entita dotata di 3 caratteristichefunzionali:

1 condizione di attivazione2 attivita da svolgere in fase attiva3 attivita da svolgere in caso di soppressione

Si utilizza un arbitro (o supervisore) che identifica la condizione di attivazionedel comportamento ed esegue la relativa azione, compresa l’eventualesoppressione se altre condizioni si verificano con una priorita di esecuzionemaggiore

in LeJOS l’arbitro e un thread che utilizza un array di comportamenti inordine di priorita crescente con la posizione nell’array

Raffaele Grandi Robotica mobile e dintorni 43 / 59

Page 44: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Vantaggi, Svantaggi e Soluzioni

Vantaggi:

maggiore modularitaogni livello lavora direttamente sulle risorse del proprio ambienteogni livello percepisce direttamente il proprio obiettivo

Svantaggi:

incapacita di avere piu livelli contemporanei dato che gli inneschi di unopossono interferire con quelli di un altrodifficolta di selezione dell’azione da eseguire in sistemi altamente distribuitiattraverso la sola capacita di inibizione/soppressione di un comportamento

Soluzioni:

eventuale programmazione mista ad esempio behaviour-planning per laselezione di comportamenti concorrenti

Raffaele Grandi Robotica mobile e dintorni 44 / 59

Page 45: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Programmazionebehaviours - schema

Figura: Schema BumperCar

Raffaele Grandi Robotica mobile e dintorni 45 / 59

Page 46: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Fase di upload sul LEGOCompilazione ed esecuzione

1 Una volta creato il proprio programma in Java-LeJOS sul propriocomputer e necessario inviarlo al microcontrollore NXT

2 Le fasi successive (che avvengono automaticamente) sono lacompilazione e la creazione di un file ottimizzato ad-hoc per la JVMresidente sul microcontrollore

1 nxjc: compila il programma originando un file .class2 nxj: crea un file .nxj ed esegue l’upload sul microcontrollore

3 L’interfacciamento con il microcontrollore puo essere effettuato siavia bluetooth che via USB

Raffaele Grandi Robotica mobile e dintorni 46 / 59

Page 47: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Disaccoppiamento

I programmi che possono essere sviluppati in modo da lavorarein locale sul robot sono programmi complessi ma comunquesempre limitati dalle capacita di calcolo e di memoria dellapiattaforma

LeJOS permette la ricezione via bluetooth di dati utilizzandotecnologia ereditata dai cellulari (javaME) e quindi permettedi sviluppare programmi che guidano il robot da remoto.

In questo modo possono essere sviluppati programmiparticolarmente complessi disaccoppiando la parte “pensante”da quella “esecutiva”. La prima viene seguita sul PC mentre laseconda sul robot.

Raffaele Grandi Robotica mobile e dintorni 47 / 59

Page 48: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Obiettivi dell’attivita

1 Scopo: interagire con la piattaforma Lego MS-NXT in modoche si possa approfondire l’interazione hardware - software

2 Esercitazioni: assegnamento di task operativi che necessitanosia della costruzione di un robot adeguato alla risoluzione deltask sia della sua programmazione

3 Lavoro di gruppo con eventuale suddivisione delle attivita dianalisi del problema proposto e realizzazione della soluzione

4 Eventuale utilizzo della piattafirma per il test e lo sviluppo dialgoritmi piu complessi...

esercitazioni lego

Raffaele Grandi Robotica mobile e dintorni 48 / 59

Page 49: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Linguaggi graficiLinguaggi strutturati alternativiIntegrazione Java e LeJOS

Controllo “moderno”

Toilet flusher:

uno dei piu 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

Page 50: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Infrastrutture di controllo

Generalmente quando ci si occupa di progetti complessi si tende asviluppare delle infrastrutture di controllo software ad-hoc che assistauno o piu robot durante lo svolgimento delle attivita. Un esempio puoessere il framework di supporto per l’arena degli unibot

Raffaele Grandi Robotica mobile e dintorni 50 / 59

Page 51: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Infrastrutture di controlloUnibot Tracking System

Raffaele Grandi Robotica mobile e dintorni 51 / 59

Page 52: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Infrastrutture di controlloROS

Negli ultimi anni dall’esigenza di un framework comune,versatile e facilmente utilizzabile e implementabile su le piudiverse architetture hardware e nato ROS : Robot OperatingSystem

ROS e un framework software nato all’interno di una start-upamericana la “Willow Garage” affiliata allo Stanford ArtificialIntelligence Laboratory

Raffaele Grandi Robotica mobile e dintorni 52 / 59

Page 53: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

ROS

ROS e un meta-sistema operativo che cercadi svincolare il programmatore di “risorserobotiche” dall’ hardware fisico mettendo adisposizione dati e servizi

si comporta come un middleware

L’astrazione avviene incapsulando all’internodi opportuni wrapper software i driver dicontrollo della risorsa stessa

In questo modo la risosrsa incapsulatadiventa un nodo di comunicazione/attuazionebidirezionale a disposizione del sistema

Il sistema e gestito da un “core” software e

implementa il pattern architetturale

Publish–Subscribe

Raffaele Grandi Robotica mobile e dintorni 53 / 59

Page 54: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

ROS

Ogni nodo sottoscrive e/o pubblica qualche genere di informazione.

Il “core” e la struttura preposta a gestire l’interscambio dei messaggi all’internodel sistema

Vantaggi

Disaccoppiamento tra chi invia e chi riceve: i nodi ignorano la strutturadel sistemaFault-tolerance : se qualche parte si disattiva il sistema continua afunzionareForte scalabilita del sistemaPossibilita di utilizzare strutture multi-core per progetti di grandidimensioni

Svantaggi

Disaccoppiamento : chi spedisce non ha nessuna certezza che l’ascoltatoresia attivoTempistica incerta nell’interscambio dei messaggi. Risulta difficile gestireapplicazioni real-time

Raffaele Grandi Robotica mobile e dintorni 54 / 59

Page 55: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

ROSROS graph example

Raffaele Grandi Robotica mobile e dintorni 55 / 59

Page 56: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

ROS : applicazioni

ROS e utilizzato in una molteplice varieta di applicazionirobotiche:

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

Page 57: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Algoritmi?

Ogni singolo robot si basa sulla sinergia di sistemi eterogenei eche forniscono un supporto piu o meno articolato a softwareintelligenti e autonomi che in qualche modo raccolgono edelaborano informazioni ambientali.

Gli algoritmi che controllano uno o piu robot possonoprovenire da tantissimi campi diversi appartenenti all’area deicontrolli, dell’intelligenza artificiale classica o di quellabio-inspirata

In ogni caso si tratta di campi molto vasti che necessitanoprofondi studi per essere compresi e portati avanti... ma nonsolo

Raffaele Grandi Robotica mobile e dintorni 57 / 59

Page 58: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

Immaginazione

“Imagination is more important than knowledge.For knowledge is limited to all we now knowand understand, while imagination embraces theentire world, and all there ever will be to knowand understand.” (Albert Einstein)

Raffaele Grandi Robotica mobile e dintorni 58 / 59

Page 59: Robotica mobile e dintorni - LAR-DEIS Home Page Sistemi... · Introduzione Applicazioni varie Lego Mindstorm NXT Infrastrutture software Algoritmi e Immaginazione Robotica mobile

IntroduzioneApplicazioni varie

Lego Mindstorm NXTInfrastrutture software

Algoritmi e Immaginazione

End

Domande?

Raffaele Grandi Robotica mobile e dintorni 59 / 59