laboratorio ciberfisico banner univr logo

Modulo di Robot Programming with ROS

AA 2017/2018

Docente: Domenico Daniele Bloisi

Informazioni sul corso

Le informazioni generali relative al corso di Laboratorio Ciberfisico (coord. Prof. Andrea Calanca) si trovano qui

In questa pagina è possibile trovare il materiale relativo al modulo di Robot Programming with ROS

Obiettivi:

Gli argomenti trattati nel corso riguardano la programmazione di sistemi ciberfisici complessi quali i sistemi robotici e includono tematiche legate alla percezione, alla navigazione, alla pianificazione e al controllo.

Il corso intende formare la figura dello sviluppatore robotico mediante un approccio sia teorico che pratico il quale include esperienza diretta su hardware e software. Lo sviluppatore robotico deve saper programmare sia a basso livello (embedded) che ad alto livello, conoscere il sistema operativo Robot Operating System (ROS) ed i framework di percezione quali Open Source Computer Vision (OpenCV) e Point Cloud Library (PCL). Inoltre, lo sviluppatore robotico saper progettare algoritmi in grado di controllare i sistemi fisici che compongono il robot stesso e l’ambiente con il quale interagisce.

Esame:

Il voto finale viene conseguito svolgendo:

  • gli homework obbligatori, che potranno essere svolti all’interno delle ore di laboratorio (voto massimo 24)
  • un progetto in team facoltativo (voto massimo 30L). I progetti consisteranno in una estensione degli esempi presentati durante le esercitazioni del corso.

Importante: È previsto un solo progetto per l'intero corso da 6 CFU, da svolgersi o su argomenti relativi al modulo di Robot Programming o sul modulo del Prof. Andrea Calanca.

Periodo:

II semestre (marzo 2018 – giugno 2018)

Orario di Lezione:

Martedì e mercoledì dalle dalle 8:30 alle 10:30 presso il Laboratorio Ciberfisico

Esercitazioni pratiche:

Martedì e mercoledì dalle dalle 10:30 alle 12:30 presso il Laboratorio Ciberfisico

Ricevimento:

  • In aula, subito dopo le lezioni
  • Su appuntamento (da richiedere tramite invio di una email) presso:
    Ca' Vignal 2, I piano, stanza 1.63A

Si invitano gli studenti a controllare regolarmente la bacheca degli avvisi

Programma preliminare
Modulo di Robot Programming with ROS

  1. Introduzione a ROS
  2. Compilazione con catkin
  3. Il paradigma publisher and subscriber
  4. Simulatori
  5. Percezione 2D
  6. Percezione 3D
  7. Navigazione

Per il programma completo fare riferimento al diario delle lezioni

Materiale Didattico

Tutorial di ROS:

Libro di testo:

Il corso non prevede un libro di testo. Gli studenti che vogliano approfondire i concetti trattati a lezione possono utilizzare l'elenco di libri su ROS disponibile qui

Slide:

Documentazione e codice Turtlebot3:

VirtualLab mondo virtuale:

Homework

Si invitano gli studenti a leggere con attenzione le regole degli homework.

Ogni homework ha una data di consegna consigliata, che non è vincolante e serve come suggerimento per l'organizzazione temporale del lavoro.

  • Homework 1

    testo     suggerimenti
    La data di consegna consigliata è fisssata al 15 aprile 2018

  • Homework 2

    testo
    La data di consegna consigliata è fisssata al 21 maggio 2018

  • Homework 3

    testo
    La data di consegna consigliata è fisssata all'11 giugno 2018

 

Modalità di consegna: Inviare una email al docente contenente in oggetto "[homework X]" X ∈ {1,2,3}, inserendo nel testo dell'email nome, cognome, matricola, corso di laurea, repository Git contenente il codice. Inoltre, indicare se si vuole che il link al repository Git venga pubblicato o meno sul sito del corso.

Nel caso di lavori di gruppo, inviare una unica email contenente i riferimenti per tutti i membri del gruppo.

Per dubbi relativi agli homework contattare il docente per email.

La lista degli homework consegnati può essere visionata qui

Progetti

  1. ratSLAM - advanced
  2. GPS localization, breadcrumb path planning - low-medium
  3. hallway following using laser, hardcoded feature (laser chemotaxis) - low-medium
  4. hallway following using laser, reinforcement learning - medium-advanced
  5. spline-following feedback control - medium
  6. line-following feedback control - low
  7. map "skeleton" (nonconvex decomposition etc.) and path planning - medium
  8. NN control policy using raw laser data - advanced
  9. moving 2 or more bots in formation - medium
  10. robot hide and seek - advanced
  11. mixed initiative control (robot and human pilot mixing) - medium
  12. stigmergy - leader robot carries and places a beacon, other robots detect it via laser. Beacon could be one or more things forming complex message. - advanced
  13. NN human detector (training samples would be person standing at known angle to robot, NN output is softmax of a range of angles, = 1 if human is there, = 0 if human is not there) - medium-advanced
  14. Mapping della potenza del segnale wireless nel dipartimento con Turtlebot 3


  15. Autonomous Driving


  16. NAO Simulation - RoboCup 2018
    (progetto a numero limitato)



Nota: è possibile concordare con il docente progetti diversi da quelli riportati sopra

Diario delle Lezioni

Data Argomenti trattati Download

13/03/2018

Lezione 1

  Lezione di presentazione

   • Robot mobili

   • See-think-act cycle

   • Robot sociali

1.1-introduzione.pdf

14/03/2018

Lezione 2

  ROS intro

   • nodi

   • topic e messaggi

   • installazione di ROS

   • turtlesim

1.2-ros-intro.pdf

Ubuntu 16.04

ROS Kinetic Kame

20/03/2018

Lezione 3

  Git+ROS

  • git commit

  • git push

  • git merge

  • package hello_ros

GIT two words introduction by Maurilio Di Cicco
(copia locale)

1.3-git+ros.pdf

27/03/2018

Lezione 4

  Uber's accident

  ROS Launch files

  • univr_turtle

uber-accident.pdf

1.4-ros-launch-files.pdf

28/03/2018

Lezione 5

  Robot mobili su ruote

  • manipolatori vs robot mobili

  • modello del robot mobile

  • Turtlebot 3

2.1-robot-mobili-su-ruote.pdf

ROS packages for Turtlebot 3

02/05/2018

Lezione 6

  Simulatori ROS

  • Gazebo

2.2-simulatori.pdf

Turtlebot 3 simulation

08/05/2018

Lezione 7

  Navigazione in ROS

  • Mappe

  • introduzione a SLAM

  • virtual SLAM and navigation

2.3-navigazione.pdf

libro ROS Robot Programming di YoonSeok Pyo, HanCheol Cho, RyuWoon Jung, TaeHoon Lim

copia locale del libro

09/05/2018

Lezione 8

  Getting started Turtlebot3

  • teleoperazione robot reale

  • RViz robot reale

2.4-turtlebot3.pdf

TurtleBot3 Hardware Setup

15/05/2018

Lezione 9

  Esercitazione Pratica

  • rosbag

  • virtual SLAM with saved rosbag

e1-rosbag.pdf

Turtlebot 3 ROS bags

16/05/2018

Lezione 10

  Esercitazione Pratica

  • rosbag con robot reale

22/05/2018

Lezione 11

  OpenCV

  • ORB-SLAM

3.1-percezione-visione.pdf

orb-slam.pdf

Si ringrazia il dott. Stefano Aldegheri

23/05/2018

Lezione 12

  Esercitazione Pratica

e2-facedetection.pdf

realsense_r200_viewer

face_visualizer_3d

face.bag

people.bag

29/05/2018

Lezione 13

  Gestione dati 3D

  • Point Cloud Library

3.2-pointcloud.pdf

pcl_examples.zip

Si ringrazia il Prof. Alberto Pretto

basic_3d_visualizer

30/05/2018

Lezione 14

  Esercitazione Pratica

  • Installazione libreria ORB-SLAM2

  • Discussione Homework 3

  • Discussione progetti finali

homework 3

ORB-SLAM project page

05/06/2018

Lezione 15

  Azioni in ROS

  • Goal per la navigazione

4.1-actions.pdf

turtlebot3_navigation_goals

ROS actionlib

Sending Goals to the Navigation Stack

06/06/2018

Lezione 16

  Azioni basate su detection

  • Esempio red ball (turtlebot3_visual_goals)

  • Esempio autorace simulation

turtlebot3_visual_goals

Turtlebot3 autorace simulation

Fork del repo originale Turtlebot3 autorace simulation realizzato da Fabio Falezza