ROBOTICA

Docenti: 
LODI RIZZINI Dario
Codice dell'insegnamento: 
10424*7511*2016*2015*2
Crediti: 
6
Anno accademico di offerta: 
2017/2018
Settore scientifico disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Semestre dell'insegnamento: 
Secondo Semestre
Lingua dell'insegnamento: 

Italiano

Obiettivi formativi

Il corso si propone di fornire agli studenti gli elementi teorici ed i metodi per la progettazione di sistemi robotici ed in particolare:
-le principali tecnologie di sensori ed i principali metodi per l'elaborazione dei dati sensoriali;
-l'architettura di controllo e l'organizzazione dei sistemi robotici;
-i metodi e le tecniche per l'esecuzione da parte di sistemi autonomi e teleoperati di compiti come la navigazione, la manipolazione e presa di oggetti, l'interazione con l'uomo.

Le conoscenze elencate permettono di sviluppare capacità operative ed in particolare:
-saper impiegare sensori (laser, telecamere, sensori di percezione 3D) ed elaborare i dati acquisiti per ottenere rappresentazioni dell'ambiente adatte allo svolgimento di compiti;
-saper progettare e sviluppare il software di controllo di un robot mobile in grado di navigare e svolgere compiti per la risoluzione di un problema specifico;
-saper utilizzare strumenti software e librerie standard per la navigazione, la pianificazione del moto, la presa di oggetti, la percezione.

Prerequisiti

Fondamenti di programmazione e sviluppo software in ambiente C/C++/Unix.
Nozioni sulla rappresentazione dei sistemi di riferimento nello spazio.
Nozioni di base sulle metodologie di controllo.

Contenuti dell'insegnamento

- Terminologia e classificazione dei sistemi robotici
- Sensori e percezione
- Estrazione di features
- Metodi avanzati di percezione tridimensionale
- Architetture di controllo dei robot
- Spazio delle configurazioni e pianificazione del moto
- Teleoperazione robotica
- Interazione uomo-robot
- Sistemi aptici
- Sistemi di presa robotici, grasping e manipolazione
- Tecniche di programmazione mediante dimostrazione
- Apprendimento induttivo o con rinforzo dei compiti
- Navigazione di robot mobili
- Comportamenti robotici
- Metodi probabilistici per la stima dello stato del sistema robot-ambiente
- Problemi di Localizzazione, Mapping e SLAM

Programma esteso

1. Introduzione e classificazione dei sistemi robotici (2 ore)
1.1 Storia della Robotica.
1.2 Classificazione dei sistemi robotici.
2. Sensori e percezione (4 ore)
2.1 Caratterizzazione e tassonomia dei sensori.
2.2 Percezione.
2.3 Algoritmi di estrazione di feature
2.3.1 Feature geometriche
2.3.2 Feature da immagini (SIFT, SURF, ORB)
2.3.3 Feature da point cloud (FPFH, SHOT)
2.4 Outliers e algoritmi di Random Consensus
3. Architetture di controllo dei robot (2 ore)
3.1 Paradigmi nelle architetture robotiche.
3.2 Paradigma gerachico o deliberativo.
3.2.1 Pianificazione logica (STRIPS).
3.3 Paradigma reattivo.
3.3.1 Architettura Subsumption.
3.3.2 Archiettura Motor Schema.
3.4 Paradigma ibrido.
4. Pianificazione del moto (6 ore)
4.1 Richiami sulle trasformazioni geometriche. Quaternioni.
4.2 Introduzione agli algoritmi di pianificazione del moto. Algoritmi Bug.
4.3 Algoritmi basati sulla scomposizione in celle.
4.4 Algoritmi basati su campi di potenziale.
4.5 Algoritmi basati su Roadmap.
4.6 Algoritmi probabilistici (PRM,RRT)
5. Teleoperazione robotica. Interazione uomo-robot. (2 ore)
6. Interfacce aptiche. Manipolazione e grasping. (2 ore)
7. Apprendimento (4 ore)
7.1 Apprendimento con rinforzo.
7.2 Apprendimento per imitazione.
7.2.1 Tecniche basate su grafo di precedenza.
7.2.2 Tecniche basate su Modelli di Markov Nascosti (HMM)
8. Navigazione. (4 ore)
8.1 Modello uniciclo e cenni alla pianificazione.
8.2 Modello Robot Biciclo.
8.3 Inseguimento di traiettoria ed al controllo.
8.4 Navigazione e architetture.
8.5 Algoritmi di navigazione (VFH, Dynamic Window).
9. Paradigma probabilistico e problemi di localizzazione e mapping (6 ore)
9.1 Paradigma probabilistico nella Robotica.
9.2 Richiami di teoria della probabilità. Criteri ML e MAP.
9.3 Filtri bayesiani. Metodi Montecarlo.
9.4 Filtro di Kalman. Derivazione. Extended Kalman Filter (EKF).
9.5 Problemi di localizzazione, mapping, SLAM.
9.5.1 EKF localization and EKF SLAM
9.5.2 Classificazione delle mappe.
9.5.3 Associazione di dati basata su validation gate.
9.6 Cenni ai metodi di GraphSLAM.

Esercitazioni
1. Introduzione a ROS. Uso e spiegamento di un'applicazione di controllo di robot mobili.
2. Progettazione di un’architettura robotica reattiva e sviluppo di comportamenti del robot (GoTo, Wall-Follow).
3. Introduzione all’ambiente di programmazione MoveIt! per la pianificazione del moto e delle prese.
4. Elaborazione di point cloud tramite Point Cloud Library (PCL).

Bibliografia

- H. Choset, K. M. Lynch, S. Hutchinson, G. Kantor, W. Burgard, L. E. Kavraki and S. Thrun, "Principles of Robot Motion", MIT Press, 2005.
- R. Siegwart, I.R. Nourbakhsh and D. Scaramuzza, "Introduction to Autonomous Mobile Robots", Second Edition, MIT Press. 2011.
- S. Thrun, W. Burgard and D. Fox, "Probabilistic Robotics", MIT press 2005.
- B. Siciliano, L. Sciavicco, L. Villani, G. Oriolo, "Robotics: Modelling, Planning and Control (Advanced Textbooks in Control and Signal Processing)", Springer, 2009.
- Aa. Vv. a cura di B. Siciliano, O. Khatib, "Springer Handbook of Robotics", Springer-Verlag, Second Edition, Springer-Verlag, 2016.
- S.M. LaValle, "Planning Algorithms", Cambridge University Press, 2006, http://planning.cs.uiuc.edu/.

Metodi didattici

Il corso viene svolto alternando lezioni in aula ed esercitazioni in laboratorio.
Nelle lezioni in aula vengono presentati problemi, concetti e metodi specifiche della disciplina, talvolta con ricorso a casi di studio.
Il materiale delle lezioni (slide) è caricato sul portale didattico di ateneo Elly settimanalmente.
Le esercitazioni in laboratorio permettono di verificare alcuni dei metodi e degli argomenti del corso utilizzando robot e dispositivi, e di applicarli a situazioni problematiche.
Oltre ai framework e librerie in uso nella robotica (in particolare, ROS), viene anche fornito il codice sorgente tramite repository interno.

Modalità verifica apprendimento

La valutazione sommativa prevede tre momenti.
1) La prova scritta, che contribuisce con peso del 47% al voto finale, è costituita da sei quesiti in forma di domanda aperta o di esercizi. Durante la prova scritta viene richiesto allo studente di:
- conoscere le nozioni presentate nel corso;
- saper applicare algoritmi e metodi ad situazioni problematiche negli esercizi.
La durata della prova scritta è pari a 2 ore e 30 minuti. La valutazione della prova scritta è in trentesimi.
2) Assegnamento di laboratorio, che contribuisce con peso del 6% al voto finale, consiste nella programmazione del robot mobile per l'esecuzione di task. E' organizzata come competizione tra gruppi di due-tre studenti. Lo studente deve dimostrare di:
- saper analizzare un semplice problema di navigazione di robot e proporre le opportune soluzioni;
- sapere programmare e gestire un sistema robotico;
- saper lavorare in gruppo.
L'assegnamento ha valutazione dicotomica (positiva o non positiva).
3) Il progetto del corso, che contribuisce con peso del 47% al voto finale, consiste nel progettare e realizzare una specifica soluzione per un problema robotico. Il progetto è svolto singolarmente o in gruppi di due, massimo tre studenti. Alla conclusione del progetto lo studente o gli studenti devono produrre una relazione e presentare oralmente (con il supporto di diapositive) i risultati del progetto. La valutazione del progetto è in trentesimi.

Altre informazioni

Il materiale didattico e di supporto alle lezioni ed alle esercitazioni è
disponibile sul sito http://elly.dii.unipr.it/.