5 Pepper
5.3 Choregraphe
Choregraphe è l’applicazione desktop multi-piattaforma (Windows, Linux, Mac) di default per la programmazione di Pepper e degli altri robot Aldebaran. Questo permette di:
programmare il robot attraverso l’interconnessione di blocchetti grafici con funzionalità specifiche
creare animazioni, comportamenti e dialoghi
testare il progetto su un robot simulato o direttamente su quello reale
monitorare e controllare il robot attraverso il tool a corredo, Monitor, che permette l’analisi della vista e degli stimoli esterni oltre che dei dati provenienti dai vari sensori del robot.
38
Figura 19. Pagina di avvio di Choregraphe [15]
Come descritto in 4 I livelli di astrazione nella programmazione di un robot sociale questo permette all’utilizzatore di programmare l’interazione sociale attraverso un mix di livelli di astrazione, includendo
hardware, algorithm, social, emergent e controlling primitives.
Come descritto in [8] Choregraphe è la trasposizione grafica delle funzionalità NAOqi.
É possibile controllare i LED e i sonar (hardware primitives), lavorare col riconoscimento vocale e sul face-tracking (algorithm primitives), è possibile fare parlare Pepper e fargli assumere una determinata posizione (social primitives), e lavorare su combinazioni di queste funzionalità (emergent primitives) come col blocco Dialog, implementazione grafica di ALDialog.
Utilizzando due modalità di programmazione visuali, il dataflow diagram e la timeline (control
primitives), è possibile gestire strutturare i blocchi funzionali per creare comportamenti più complessi e funzionalità più evolute.
39
Figura 20. La suddivisione in pannelli di Choregraphe [15]
a) Project Files Panel: descrive le proprietà del progetto e i vari files allegati.
b) Box Libraries Panel: dove sono raggruppati, in base a famiglie di funzionalità, i blocchetti basici di controllo suddivisi nei macro gruppi Animation, Speech, Leds, Multimedia, Movement, Sensoring e Programming.
Selezionato un blocchetto logico è possibile trasportarlo (drag and drop) nel Flow Diagram Panel per interconnetterlo agli altri blocchi d’interesse
c) Flow Diagram Panel: dove si configura il comportamento del robot tramite la composizione dei blocchi funzionali e la loro interconnessione logica nella modalità in/out.
Per descrivere azioni sequenziali l’output di un modulo deve essere l’input per il successivo in un diagramma a catena.
40
Figura 21. Esecuzione seriale
Per descrivere esecuzioni parallele l’output di un blocco deve essere input dei blocchi su cui vogliamo che l’esecuzione venga avviata in parallelo.
41
d) Robot View e Video Monitor Panel: il primo mostra in una vista 3D il robot cui Choregraphe risulta collegato, mentre il secondo mostra ciò che viene visto dalla telecamera del robot in real-time. Quest’ultimo serve inoltre per fase di learning degli oggetti.
e) Inspector Panel and Robot Applications Panel: il primo è un pannello contestuale che mostra i dettagli di ciò che è attualmente selezionato, mentre il secondo mostra le applicazioni disponibili sul robot attualmente connesso.
Come già accennato la modalità di default, la dataflow diagram, segue la filosofia di programmazione di input (trigger), parametri e output.
Figura 23. Programmazione in modalità Data-flow
Nell’altra modalità, la timeline, il tempo fa da padrone; questa modalità è usata per organizzare i blocchi (keyframe) su un asse temporale piuttosto che nell’ottica in/out; questa modalità di gestione è
42
Figura 24. Programmazione in modalità Timeline
Un’importante caratteristica di Choregraphe è il fatto che possono essere creati nuovi blocchi funzionali utilizzando il linguaggio di programmazione Python. Per un programmatore con conoscenza di questo linguaggio risulterà così possibile arricchire le caratteristiche e le funzionalità del tool di management del robot.
43
Figura 25. Creazione di un blocco Python
In aggiunta a questo è possibile anche prendere visione del codice Python NAOqi costituente un singolo blocco così da avere traccia del codice testuale sottostante l’intero progetto.
44
5.3.1 Considerazioni
Il tool Choregraphe è un ottimo strumento per una rapida programmazione del robot in quanto ha dalla sua parte:
la possibilità di configurare semplici comportamenti del robot senza avere alcuna esperienza di programmazione formale ma basta una lettura della documentazione online per poter
cominciare a lavorare.
le due modalità di programmazione visiva, data-flow e timeline, riescono a coprire molte delle funzionalità “essenziali” di comportamento del robot.
la libertà di costruirsi i propri box partendo dal codice Python aggiunge un buon grado di libertà all’intero tool.
Di contro vi sono alcuni aspetti da non sottovalutare:
come accennato nel capitolo 4 I livelli di astrazione nella programmazione di un robot sociale la lettura della documentazione è essenziale per raggiungere una certa dimestichezza e flessibilità nella gestione del robot. Spesso però tale documentazione non è sufficiente e solo l’esperienza col tool può garantire buoni risultati.
la complessità delle interconnessioni e del numero dei singoli moduli può salire in maniera esponenziale per la gestione di comportamenti complessi (magari anche paralleli) rendendo l’applicazione poco gestibile. Si presenta dunque un problema di scalabilità verso l’alto.
manca un’apertura verso il mondo esterno: mancano infatti blocchi funzionali che permettano connessioni TCP/UDP, chiamate Rest, moduli specifici per la gestione di formati XML/JSON, query a database, ecc.
Risulta quindi possibile configurare solamente il robot in maniera “isolata” dal mondo circostante (non è neanche possibile fare dialogare due robot fra loro cosa invece realizzabile tramite le NAOqi API par. 8.1 NAOqi framework) e in particolare per i contenuti WEB (ad eccezione del caricamento di intere pagine web sul tablet), a meno che non si intervenga con la programmazione a codice Python. Naturalmente passando da questa strada la complessità di gestione sale e non ha più senso utilizzare Chroregraphe ma conviene gestire il tutto tramite le native chiamate NAOqi API.
Per come definite in precedenza le caratteristiche EUD (paragrafo 1.4 End User Development:
motivazioni e caratteristiche) Choregraphe non si può annoverare fra questo tipo di soluzioni. Se da un
lato infatti permette a un non programmatore di fare esperienza col robot grazie ad una modalità visuale fatta di elementi parametrizzabili, non permette, nella stessa modalità operativa, di rendere l’utente finale capace di modificare e fare evolvere la soluzione in base alle proprie esigenze. Ad esempio non è vi è alcun blocchetto grafico capace di fare una query a un database per recuperare informazioni da poi mostrare sul tablet o fare chiamate verso un servizio REST online e presentarne l’output in maniera testuale o vocale. Per fare questo è necessario passare dal codice Python precludendo la strada a utilizzatori non programmatori.
45