La piattaforma Duckietown

La piattaforma Duckietown offre esperienze educative nell’ambito della robotica e l’apprendimento automatico tramite l’integrazione di:

Duckietown è modulare, completamente personalizzabile e allo stato dell’arte.

Duckietown è progettata per insegnare, imparare dalle basi dell’informatica e dell’automazione, sia di robot individuali che di interazioni tra robot, ed esplorare le sfide tecnico-scientifiche al confine della conoscenza.

Ad oggi Duckietown è stata usata da utenti dai 14 anni d’età!

 

Il Duckiebot

  • Sensore: solo (!) una telecamera
  • Computazione: Raspberry Pi
  • Attuazione: due motori elettrici (guida differenziale) e 5 LED
  • Modularità: le componenti hardware sono intercambiabili con quelle della città
  • Accessibilità: la maggior parte delle componenti sono facilmente reperibili, o si può ordinare insieme online.
  • Duckie: non è un Duckiebot se non ha un papera di gomma a bordo!

Le Duckietown

  • Città intelligente: anche l'ecosistema è un robot, che percepisce, interagisce e decide come i Duckiebots
  • Ambiente strutturato: gli elementi fondamentali sono rigorosamente definiti in forma, dimensione, colori e posizionamenti relativi
  • Modularità: una volta costruiti gli elementi fondamentali, si posso mettere insieme a piacere
  • Flessibilità: Nessuna mappa prefissata

L'hardware

Duckietown è un ecosistema robotico dove flotte di veicoli autonomi intelligenti (Duckiebots) interagiscono tra di loro e con un ambiente urbano in scala, personalizzabile (Duckietown).

Il design dei robot e delle città è progettato attentamente per offrire robot capaci di comportamenti avanzati a livello di agente singolo o multi-agente, mantenendo i costi contenuti.

Il Duckiebot è la piattaforma minimale di autonomia che tuttavia permette di fare scienza. Ha un solo sensore: una telecamera frontale, due motori elettrici per muoversi e cinque LED per comunicare con gli altri robot. Tutte le decisioni vengono prese a bordo (la piattaforma è completamente decentralizzata) di ciascun Duckiebot grazie alla presenza di un Raspberry Pi – un computer vero e proprio delle dimensioni di una carta di credito. La batteria di bordo offre diverse ore di autonomia. 

Le Duckietown sono ambienti strutturati e modulari costruiti su due livelli (strade e segnali), per offrire un’esperienza di guida flessibile ma ripetibile.

Il livello stradale di ciascuna città consiste di segmenti stradali ben definiti: rettilineo, curva, incroci (di 3 o 4 strade), ed elemento vuoto. Ogni segmento è costruito su tasselli collegabili, che possono essere riconfigurati in città di diverse topografie e dimensioni, pur mantenendo il rigore nelle specificazioni sulle forme, colori, e dimensioni della segnaletica stradale che garantisce il corretto funzionamento dei robot.

La segnaletica stradale in Duckietown consiste di cartelli e infrastruttura stradale. I cartelli stradali rappresentano codici facilmente interpretabili dai robot (April Tags) per permettere localizzazione e interpretazione della tipologia di intersezioni stradali. L’infrastruttura stradale invece consiste di semafori e torri d’osservazione, che sono veri e propri robot. A livello hardware e software, i semafori sono Duckiebot senza ruote e le torri d’osservazione sono semafori senza LED. Pur non muovendosi, l’infrastruttura stradale permette alla città stessa di diventare un robot: può percepire, prendere decisioni ed interagire con l’ambiente (e altri Duckiebots).

Il software

Duckietown è programmata per essere scalabile a livello di difficoltà, in modo che possa essere utilizzata in maniera sempre dettagliata a seconda dell’esperienza dell’utente. 

L’architettura software in Duckietown permette all’utente di usare la piattaforma tramite terminal (per esperti) o un interfaccia grafica web (duckie-dashboard). 

Le diverse funzionalità dell’ecosistema robotico offerte nell’implementazione di base sono racchiuse in contenitori Docker, che includono ROS e codice scritto in Python.  Docker permette di assicurare che qualunque cosa “funzioni” ad un certo punto nel tempo, continui a funzionare per sempre grazie al fatto che tutte le dipendenze vengono incluse nel contenitore dell’applicazione specifica. Inoltre Docker permette all’infrastruttura di essere modulare, cioè se ne possono cambiare funzioni specifiche senza incontrare problemi di compatibilità. 

La comunicazione tra le varie funzionalità (percezione, pianificazione, controllo ad alto e basso livello, …) avviene tramite il Robotic Operating System (ROS), celebre middleware open source per la robotica. Nonostante ROS supporti molteplici linguaggi di programmazione, Duckietown utilizza Python.

I nodi ROS che girano dentro i contenitori Docker si appoggiano ad un sistema operativo fatto in casa (duckie-OS) che offre un ulteriore livello di astrazione. Questo passaggio permette di eseguire sequenze complesse con linee singole di codice. Per esempio, con solo tre righe di codice si può addestrare un agente in simulazione,  “confezionarlo” in un contenitore Docker e implementarlo su un vero Duckiebot.  

 

Gli algoritmi

  • Un solo codice per tutto il mondo
  • Sviluppo collaborativo: il SW in Duckietown è open source, ospitato su Github. Chiunque può partecipare allo sviluppo.
  • Gratis: il codice non si paga!

L'architettura

  • Linux: HypriotOS - una versione leggera di Ubuntu per interfacciare l'hardware e Docker
  • Docker: un po' come una serie di macchine virtuali, ma molto meglio
  • Portainer: un modo facile per gestire i programmi (contenitori) in Docker
  • Duckietown OS: un livello d'astrazione in più per semplificare la vita
  • ROS: Robotic Operating System - gestisce le comunicazioni in tempo reale tra le varie componenti del codice (percezione, controllo, ...)
  • Python: nonostante altri linguaggi siano supportati (C, C++, ...), tutto il nostro codice è scritto in Python

Gym-Duckietown

  • Sviluppo collaborativo
  • Gratis
  • Fisicamente realistico
  • Portabilità con i Duckiebot fisici
  • Perfetto per addestramento e testing di algoritmi di IA

Il simulatore

Duckietown include un simulatore, Gym-Duckietown, scritto completamente in Python/OpenGL (Pyglet). Il simulatore è progettato per essere fisicamente realistico e facilmente compatibile con il mondo reale, nel senso che gli algoritmi sviluppati in simulazione possono essere portati sui Duckiebots fisici con la semplicità di un click.

Nel simulatore si possono collocare agenti (Duckiebots) in città simulate: circuiti chiusi di strade, incroci, curve, ostacoli, pedoni (papere) ed altri Duckiebots. Può diventare un posto abbastanza caotico!

Gym-Duckietown è veloce, open-source, e incredibilmente personalizzabile. Nonostante inizialmente il simulatore sia stato progettato per verificare il funzionamento di algoritmi in grado di mantenere i veicoli nella corsia di guida, oggi è diventato un simulatore di guida in ambienti urbani pienamente funzionante adatto per addestrare e testare algoritmi di apprendimento automatico (machine learning), apprendimento per rinforzo (reinforcement learning), apprendimento per imitazione (imitation learning) oltre, ovviamente, ad algoritmi di robotica più tradizionali.

Con Gym-Duckietown si possono esplorare una serie di comportamenti: dal semplice seguire una corsia alla completa navigazione urbana con ostacoli dinamici. Inoltre, il simulatore è provvisto di una serie di funzionalità e strumenti che permettono di portare gli algoritmi sviluppati in simulazione rapidamente sul robot fisico, includendo funzionalità avanzate di randomizzazione dei domini, fisica accurata a livello di dinamica e di percezione (e, la cosa più importante: lo zampettare delle papere). 

Il database sperimentale

Come complemento all’ambiente simulativo e all’hardware standardizzato mettiamo a disposizione un database di riprese delle telecamere dei robot con associati dati tecnici (calibrazioni delle telecamere, commandi ai motori) aggiornato continuamente.

Questa mole di dati è utile sia per l’addestramento di alcune tipologie di algoritmi di apprendimento automatico (apprendimento per imitazione), sia per sviluppare algoritmi di percezione che funzionino nel mondo reale. 

Data la standardizzazione dell’hardware e la sua distribuzione internazionale, questo database contiene informazioni relative a una moltitudine di condizioni ambientali diverse (luce, manti stradali, sfondi, …) e imperfezioni sperimentali, che sono ciò che rende la robotica divertente!

I "logs"

  • Calibrazione telecamera: estrinseca ed intrinseca per ciascun Duckiebot
  • Video: 640x480 dei Duckiebots, unica fonte di dati per il robot
  • Comandi ai motori: con coordinate temporali
  • Ricchezza sperimentale: decine di ore, centinaia di robot, in crescita costante
  • Comprensiva: dalle basi di algebra lineare allo stato dell'arte dell'apprendimento automatico
  • Utile: teoria ma anche esercizi pratici, manuali operativi, video tutorial, codice, istruzioni per l'assemblaggio, etc.
  • Open Source : tutti possono contribuire
  • Gratis

Il materiale pedagogico

Il sottotitolo originale del progetto Duckietown era “Da una scatola di componenti, ad una flotta di macchine autonome in soli 3427 passaggi, senza nascondere nulla“.

Da quel tempo i passaggi sono divenuti molti di più ma lo spirito è rimasto lo stesso. In Duckietown, tutte le informazioni necessarie per usare, esplorare e sviluppare con la piattaforma sono messe a disposizione, gratuitamente, nella nostra libreria online (i “Duckuments“, o “Duckiedocs“).

Nella documentazione si possono trovare istruzioni, manuali operativi, preliminari teorici, collegamenti alle descrizioni dei codici utilizzati e “dimostrazioni” (demo) di comportamenti fondamentali, a livello di robot singolo o di flotta. 

La documentazione è open source, collaborativa (chiunque può integrare contributi, che vengono moderati per garantire la qualità) e gratuita. 

Scroll to top
Bitnami