SISTEMI ROBOTICI E LABORATORIO
Modulo SISTEMI ROBOTICI

Anno accademico 2024/2025 - Docente: CORRADO SANTORO

Risultati di apprendimento attesi

  1. Conoscenza e capacità di comprensione (knowledge and understanding). Il corso di "Programmazione di Sistemi Robotici e Laboratorio" si prefigge l'obiettivo di fornire agli studenti le conoscenze sui principi, modelli, tecniche e strumenti per la programmazione di sistemi robotici e sistemi autonomi in genere. Le lezione teoriche si basano sull'insegnamento dei principi della modellazione dei sistemi dinamici, del controllo automatico, degli algoritmi di controllo, delle tecniche e dei linguaggi per la programmazione del comportamento dei sistemi robotici. Le esercitazioni di laboratorio hanno l'obiettivo di testare, in pratica, gli argomenti studiati in aula.  
  2. Capacità di applicare conoscenza e comprensione (applying knowledge and understanding). Attraverso l'analisi di diversi casi di studio e tramite esercitazioni in laboratorio, il corso consente allo studente di ottenere le capacità di applicare le tecniche acquisite durante le lezioni teoriche nei contesti applicativi tipici dei sistemi robotici; lo studente sarà altresì in grado di comprendere come progettare e implementare un sistema robotico.
  3. Autonomia di giudizio (making judgements). Le lezioni del corso e soprattutto le attività di laboratorio sono organizzate in modo da includere un'analisi critica di casi di studio, delle soluzioni impiegate, delle possibili varianti e dei pro e contro di queste ultime, al fine di consentire allo studente di acquisire un'adeguata autonomia di valutazione delle scelte tecniche.
  4. Abilità comunicative (communication skills). Le abilità comunicative dello studente saranno considerate soprattutto durante la prova d'esame al calcolatore, in cui lo studente è chiamato ad esporre le scelte implementative adottate e motivandole opportunamente. 
  5. Capacità di apprendimento (learning skills). Le capacità di apprendimento degli studenti saranno valutate durante le esercitazioni di laboratorio, le quali hanno l'obiettivo di testare quanto e come gli studenti abbiano compreso il funzionamento dei sistemi robotici e quanto siano in grado di progettare adeguatamente il software per tali sistemi. La valutazione del livello di apprendimento sarà dunque utilizzato per approndire (qualora sia necessario) gli argomenti e le parti che si sono rivelati particolarmente ostici. 

Modalità di svolgimento dell'insegnamento

Le lezioni del presente modulo sono svolte in aula in modo frontale, corredate da esempi ed esercitazioni e attraverso l'uso combinato di lucidi e lavagna tradizionale. Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.

Prerequisiti richiesti

  • Architettura degli elaboratori
  • Programmazione in linguaggio C/C++ e Python
  • Ingegneria del software
  • Algoritmi e strutture dati
  • Elementi di analisi matematica dei numeri complessi
  • Algebra lineare e calcolo matriciale

Frequenza lezioni

La frequenza alle lezioni, per quanto non sia obbligatoria, è fortemente consigliata, in quanto le lezioni stesse sono spesso svolte in forma di laboratorio in cui gli studenti stessi, insieme al docente, sono chiamati a implementare applicazioni tipiche dei sistemi robotici.

Contenuti del corso

I contenuti sono riportati nella pagina del corso reperible a questo link e riassunti di seguito:

  1. Introduzione ai sistemi robotici. Concetto di sistema robotico. Modello di controllo a "feedback". Panoramica sui modelli di controllo. Layer software di un sistema robotico autonomo.
  2. Sistemi dinamici. Modello di sistema dinamico. Rappresentazione con equazione differenziale ed esempi di integrazione. Discretizzazione di un sistema. Ingressi canonici. Risposta al gradino. Risposta all'impulso. Stabilità semplice e asintotica. Sistemi instabili. Diagrammi a blocchi di sistemi dinamici. Composizione di sistemi.
  3. Modellazione e simulazione software di sistemi reali
  4. Elementi di Controlli Automatici. Schema di controllo a feedback. Controllori PID. Discretizzazione di un PID. Implementazione dei controllori PID.
  5. Implementazione del controllo in velocità e posizione di un motore DC. PIlotaggio in PWM e H-Bridge. Lettura posizione e velocità con encoder. Loop di velocità. Loop di posizione.
  6. Implementazione del controllo in posizione di un robot mobile su ruote. Modello cinematico. Odometria. Schemi di controllo. Differential drive. Ackerman steering.
  7. Navigazione di un robot mobile. Algoritmi di navigazione, obstacle avoidance, path planning.
  8. Comportamento di un robot autonomo. Sistemi a regole. Conoscenza e ragionamento. Pianificazione.

Testi di riferimento

  • R. Siegwart, I. R. Nourbakhsh, Introduction to Autonomous Mobile Robots, The MIT Press
  • Peter Corke, Robotics, Vision and Control: Fundamental Algorithms in MATLAB, Springer
  • Slide del corso

Programmazione del corso

 ArgomentiRiferimenti testi
1Introduzione ai sistemi roboticiSlides del corso
2Sistemi dinamiciSlides del corso
3Sistemi dinamici di ordine superioreSlides del corso
4Stabilita'Slides del corso
5Elementi di Controlli AutomaticiSlides del corso
6Controllo in velocità e posizione di un motore DCSlides del corso
7Controllo in posizione di un robot mobile su ruoteSiegwart, Corke
8Navigazione di un robot mobileSiegwart, Corke
9Comportamento di un robot autonomoSlides del corso

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

  • Progetto
  • Prova Orale

Esempi di domande e/o esercizi frequenti

  • Modellazione di un sistema
  • Discretizzazione di un sistema
  • Studio della stabilita' e della risposta di un sistema
  • Controllo PID, ruolo delle costanti
  • Modelli di locomozione di robot mobili
  • Schema e implementazione del controllo in velocita' e posizione
  • Algoritmi di path planning e obstacle avoidance
  • Programmazione del comportamento di un robot