Tearoom Covid-19
Demo Progetto Specifiche Galleria Codice Team
robotHeader
overview

Abstract

Il manager di una sala da the (tearoom) vorrebbe regolare l'accesso al servizio impiegando un DDR robot (waiter). Inoltre richiede di poterne visualizzare lo stato corrente (current state) tramite un browser connesso ad un server web associato all'applicazione.

Analisi dei requisiti

Pertanto è stato realizzato un robot, ed il relativo sistema di supporto, che svolga tali funzionalità. In particolare, il robot creato è in grado di decidere automaticamente dove dirigersi e che mansioni svolgere, in relazione al comportamento dei clienti, all’interno di una sala da the.


Demo

Funzionamento con Virtual Robot

Funzionamento con robot fisici


Progetto

La metodologia di approccio allo sviluppo del progetto è stata di tipo agile, in particolare tramite framework SCRUM. Questo ha consentito di dividere il lavoro richiesto dai requisiti in 4 sprint, partendo dall'analisi dei requisiti e impiegando i metodi di progettazione e sviluppo visti nel corso.

Sprint 1

Versione iniziale del sistema con soltanto un cliente, così da iniziare ad avere una prima visione d'insieme.

Sprint 2

Il lavoro è stato incentrato sulla definizione dello stato della stanza, introducendo un’architettura esagonale ed il pannello di controllo per il manager.

Sprint 3

Si è introdotta la gestione di più clienti presenti contemporaneamente nella stanza ed i controlli relativi al tempo di permanenza nel sistema.

Sprint 4

In questa fase ci si è dedicati al deployment del sistema sui robot fisici e sulla possibilità di avere dei task interrompibili da parte del waiter.


Specifiche

View del manager

gui preview

La view del manager è una pagina web che consente al manager di consultare lo stato complessivo del sistema, in particolare permette di conoscere:

  • Posizione degli elementi nella stanza
  • Posizione corrente del waiter
  • Attività in cui è impegnato waiter
  • Stato dei tavoli
  • Identificativo dei clienti attualmente dentro la stanza
  • Attività in cui è impegnato il Barman
  • Eventuali statistiche del sistema

La GUI fornisce, inoltre, la possibilità di comandare manualmente il robot, visualizzare la mappa relativa al robot virtuale oppure la telecamera di bordo del robot DDR.

Architettura esagonale

L'aver adottato un'architettura esagonale permette di poter sviluppare e inserire facilmente nell’applicazione nuovi servizi, impiegando porte e adattatori. Questo pattern consente inoltre di donare scalabilità e flessibilità al sistema, sia in termini di servizi utilizzati che manutenzione degli stessi.

Per quanto riguarda il modello si è scelto di implementare una base di conoscenza Prolog, ciò ha consentito di beneficiare di una forte capacità espressiva ed una buona scalabilità, un esempio concreto lo si ha avuto durante lo sprint 3 nell'aggiungere la presenza in contemporanea di più clienti.

architecture preview

Gestione del tempo

architecture preview

Per soddisfare alcuni dei requisiti richiesti è stato necessario tenere sotto controllo lo scorrere del tempo, così da poter attivare alcune azioni ad esso legate come, per esempio, l'impedire ad un cliente di restare troppo a lungo nella sala da the.

Pertanto si è introdotto un attore timersmanager, atto a realizzare, tramite coroutines, timer concorrenti e bloccabili. In questo modo gli si può richiedere di attivare in qualsiasi momento un timer decidendo cosa fare allo scadere del tempo.

Planner interrompibile

Data una rappresentazione dello spazio in cui muoversi (una mappa della stanza) il waiter è il grado di trovare ed eseguire autonomamente il percorso più breve per spostarsi tra due punti.

Qualora inoltre sia presente un ostacolo nella sala da the il robot è in grado di fermarsi prima di sbattere contro di esso.

In fine è possibile interrompere il percorso in esecuzione, ad esempio quando il waiter ha necessità di dedicarsi a task più prioritari.

architecture preview

Galleria

robotImg
robotImg
robotImg
robotImg
robotImg
robotImg
robotImg
robotImg

Codice

Crediti