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.
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.
Funzionamento con Virtual Robot
Funzionamento con robot fisici
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.
Versione iniziale del sistema con soltanto un cliente, così da iniziare ad avere una prima visione d'insieme.
Il lavoro è stato incentrato sulla definizione dello stato della stanza, introducendo un’architettura esagonale ed il pannello di controllo per il manager.
Si è introdotta la gestione di più clienti presenti contemporaneamente nella stanza ed i controlli relativi al tempo di permanenza nel sistema.
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.
La view del manager è una pagina web che consente al manager di consultare lo stato complessivo del sistema, in particolare permette di conoscere:
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.
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.
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.
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.
Ugo Leone Cavalcanti
ugoleone.cavalcanti@studio.unibo.itAmir Al Sadi
amir.alsadi@studio.unibo.itNicolò Romandini
nicolo.romandini@studio.unibo.it