Vinaora Nivo Slider 3.x

Robotics Lab

Stella inattivaStella inattivaStella inattivaStella inattivaStella inattiva
 

SSD: ING-INF/04
CFU: 6

Insegnamenti propedeutici (se previsti dall'Ordinamento del CdS)

Nessuno.

Eventuali prerequisiti

Utilizzo base del sistema operativo Linux; Conoscenza base di programmazione a oggetti.

Obiettivi formativi

L’obiettivo del corso è di fornire allo studente gli strumenti base per la programmazione di sistemi robotici avanzati, con particolare attenzione ai robot mobili terrestri e aerei e ai bracci robotici industriali. Durante il corso, lo studente apprenderà le tecniche base di programmazione del paradigma “percezione-azione” per il controllo di uno o di un gruppo di robot, applicando gli algoritmi sviluppati a piattaforma simulate in ambienti di simulazione dinamici.

Risultati di apprendimento attesi

Conoscenza e capacità di comprensione

Il percorso formativo ha lo scopo di fornire agli studenti gli strumenti metodologici per l’implementazione di algoritmi per il controllo di robot mobili e industriali basati su linguaggio di programmazione in C++, eseguiti su sistemi operativi Linux. Verrà inizialmente introdotto il principio alla base della programmazione di sistemi robotici e diverse librerie software dedicate a questo scopo. Successivamente verranno approfonditi i framework di programmazione ROS e ROS2 (Robot Operating System) studiandone il funzionamento, la filosofia e l’integrazione con sistemi robotici simulati. Lo studente deve dimostrare di aver appreso quali sono i principi di progettazione di un algoritmo per il controllo di un robot e i requisiti fondamentali relativi alla piattaforma robotica da controllare e a seguito del compito da eseguire. Lo studente dovrà inoltre dimostrare di aver acquisito la conoscenza sull’utilizzo delle principali librerie software dedicate alla risoluzione di problemi relativi alla programmazione di robot. Infine, lo studente dovrà acquisire una conoscenza base sull’utilizzo dei principali sensori utilizzati sui robot avanzati, sul loro interfacciamento con la piattaforma robotica e le principali tecniche di elaborazione dei dati sensoriali per controllare le azioni dei robot.

Capacità di applicare conoscenza e comprensione

Lo studente deve dimostrare di essere in grado di implementare un sistema di controllo in linguaggio di programmazione C++ che gestisca le azioni di un sistema robotico nell’esecuzione di un tipico compito della robotica di servizio. Il sistema di controllo deve essere sviluppato a partire da una serie di specifiche di funzionamento. Lo studente dovrà essere in grado di predisporre l’ambiente e il sistema robotico nell’ambiente di simulazione.

Programma - Syllabus

  • Introduzione al sistema operativo Linux
    • Introduzione alla configurazione e ai comandi base del sistema operativo Linux
  • Introduzione alla programmazione a oggetti
    • Paradigma di programmazione a oggetti
    • Strutture dati dinamiche
    • Compilazione e integrazione di librerie software esterne
    • Sviluppo di algoritmi multi-threading
      • Implementazione di un ciclo di controllo sense-plan-act
    • Utilizzo di software per il controllo di versioni
      • Gestione del codice mediante Git
    • Robot Operating System (ROS)
      • Filosofia di programmazione in ROS e concetti base
      • Installazione e configurazione di ROS
      • Message-passing in ROS
        • Protocolli di publish/subscribe e client/server
      • Utilizzo di sensori per applicazioni robotiche
        • Camere digitali
        • LIDAR
        • Sensori di profondità
      • Simulatori di sistemi robotici dinamici
        • Gazebo
        • CoppeliaSim e MuJoCo
      • Controllori per l’attuazione di robot
        • Controllori di posizione/velocità/forza
        • Simulazione di controllori in ROS e Gazebo
      • Algoritmi di controllo di robot industriali
        • Soluzioni automatiche per la cinematica diretta e inversa
        • Soluzioni automatiche per la dinamica diretta e inversa
      • Navigazione di robot mobili
        • Localizzazione di robot mediante sensori LIDAR
        • Localizzazione e mapping (SLAM) 2D
        • Generazione di percorsi liberi da ostacoli in due dimensioni
        • Controllo di una base mobile con attuazione differenziale
      • Robotica aerea
        • Simulazione di piattaforme aeree a decollo e atterraggio verticale
        • Localizzazione e mapping (SLAM) 3D
        • Generazione di percorsi liberi da ostacolo in tre dimensioni
        • Autopilota PixHawk e sua simulazione in Gazebo
      • Robot Operating System 2 (ROS2)
        • Introduzione a ROS2
        • Differenze tra ROS e ROS2
        • Porting di applicazioni ROS in ROS2
        • Applicazioni real time e comunicazione stabile tra diverse applicazioni
      • Sistemi di controllo di robot distribuiti
        • Sistemi multi robot
        • Sistemi distribuiti per il controllo di una singola piattaforma
      • Controllo dei robot e machine learning
        • Deep Reinforcement learning libero dal modello

Materiale didattico

Si veda il sito web docenti della materia. 

Modalità di svolgimento dell'insegnamento

Il docente utilizzerà lezioni frontali per il totale delle ore a disposizione. Durante le lezioni saranno svolte brevi esercitazioni al calcolatore.

Verifica di apprendimento e criteri di valutazione

Modalità di esame

L'esame si articola in una prova orale che consiste nella discussione di un elaborato progettuale da lui sviluppato autonomamente. Durante il colloquio verrà discusso in modo critico l’operato dello studente in modo da accertarne l’acquisizione dei concetti discussi durante le lezioni. La conoscenza di altri concetti introdotti durante le lezioni non contestuali all’elaborato progettuale varrà verificata durante il colloquio orale.

Modalità di valutazione 

Il corretto svolgimento dell’elaborato tecnico è vincolante ai fini dell’accesso alla prova orale, in quanto la valutazione dell’elaborato tecnico contribuisce al 70% della valutazione finale.