2.2 Architettura del sistema
2.2.3 I Servizi
L’attuale configurazione dell’architettura utilizza i seguenti servizi (blocchi bianchi in Fig. 2.4):
SENSE
Scene Analyzer. E’ il cuore del blocco deputato ai sensi. Il suo compito è quello di prelevare l’informazione acquisita dal Kinect ed elaborare i dati ricevuti disponendoli in un pacchetto XML strutturato denominato meta-scena. All’in- terno della meta-scena si trovano tutte le informazioni riguardanti il mondo visto da FACE. Si possono trovare le caratteristiche dei soggetti e degli oggetti rilevati. Con questo si intende i dati forniti direttamente dal Kinect, come ad esempio le coordinate spaziali (x, y, z) dei giunti dei due soggetti più vicini al robot, la loro angolazione rispetto al robot, la provenienza del suono calcolata con il multiarray di microfoni, così come alcune informazioni secondarie, social- mente rilevanti, calcolate a partire dai primi dati, informazioni estratte grazie a degli algoritmi implementati all’interno del servizio. Tra queste la speaking
probability, calcolata incrociando l’informazione della provenienza del suono
28 CAPITOLO 2. F.A.C.E.
con la posizione delle persone presenti, oppure la rilevazione di alcune gesture significative nel contesto di un linguaggio sociale non verbale, come il gesto di alzare la mano per richiedere l’attenzione, calcolato in base alla posizione relativa delle coordinate della mano del soggetto rispetto alla linea delle spalle. Un ulteriore contributo fondamentale è dato da SHORETM, software tedesco
incorporato nello Scene Analyzer, sviluppato dal Fraunhofer Institute for In- tegrated Circuits6. Questo programma, oltre ad effettuare il riconoscimento
facciale, è in grado di stimare genere ed età delle persone inquadrate. In base a un’elaborata analisi dell’immagine SHORETMriesce anche a stabilire con una
certa precisione alcuni stati emotivi che i soggetti stanno esprimendo con il volto. Queste informazioni vengono integrate nel pacchetto dati riguardante ciascun soggetto presente nella scena. Oltre alle persone nella meta-scena sono presenti anche le coordinate del punto dell’immagine considerato di maggior interesse in base a degli algoritmi di pura analisi dell’immagine in pixel, questo punto è definito “visual saliency point” [Dha03].
Nella figura 2.5 si può osservare uno screenshot dello Scene Analyzer in funzione: nel primo riquadro si notano le informazioni restituite da SHORETM; nel
secondo i dati forniti dal Kinect, come le coordinate dei giunti e la relativa ricostruzione dello scheletro del soggetto; nel terzo quadrante si vedono le informazioni di distanza e orientamento; nel quarto e ultimo quadrante viene evidenziato con un piccolo cerchio giallo il punto in cui il robot sta prestando attenzione. Dettagli sugli algoritmi e i processi dello Scene Analyzer sono reperibili nei seguenti articoli [ZML+13, ZMGDR14].
Power Supply. Si occupa di monitorare il consumo di energia da parte di FACE. Questo servizio gestisce la connessione del robot con l’alimentazione e legge continuamente il consumo di corrente e i livelli di voltaggio dei quattro canali di potenza del robot. Il servizio Power Supply calcola il consumo di potenza del robot in termini di Watt con una frequenza di 1 Hz e serializza questa informazione che viene poi spedita nella rete YARP. Il pacchetto di dati
consumption viene utilizzato sia dal brain influendo sul processo decisionale
del robot, sia attraverso il flusso reattivo, quindi in modo diretto, veloce e non ragionato, sul servizio di attuazione FACE Animator, modulando la velocità dei movimenti e la reattività agli stimoli di FACE.
2.2. ARCHITETTURA DEL SISTEMA 29
30 CAPITOLO 2. F.A.C.E.
PLAN
I-Clips Brain. Unico servizio e cuore del blocco cognitivo di FACE. Qui dentro si trova il “cervello” del robot. Difatti I-Clips Brain incorpora un Sistema Esperto basato su regole scritto in codice CLIPS, denominato CLIPS Engine. Anche questo servizio al suo interno gode di una struttura modulare. I-CLIPS Brain, infatti, dialoga con i servizi sottostanti tramite il caricamento di diversi moduli (alcuni di questi rappresentati in Fig. 2.4 come blocchi azzurri) contenenti tutte le informazioni rese disponibili in rete dai servizi del blocco SENSE, e tramite i quali spedisce le informazioni utili per il blocco ACT. In particolare il servizio I-CLIPS Brain include il processo cognitivo utilizzato per elaborare questi dati (ed altre informazioni secondarie derivate dalle prime in ingresso), restituendo in uscita i comandi per il blocco di attuazione (ad es. il soggetto che il robot deve guardare e l’espressione che deve fare). Non è altro che un ponte, tra il blocco sensoriale e quello di attuazione, che gestisce ed elabora le informazioni di alto livello, non attraverso un procedimento matematico, ma che potremmo definire di “ragionamento”. Questa parte verrà ampiamente trattata nel capitolo dedicato (vedi Cap. 3).
ACT
HEFES (Hybrid Engine for Facial Expressions Synthesis). HEFES è il pro- gramma deputato al controllo dell’espressione facciale di FACE [MLHDR12]. Fino al raggiungimento di questo servizio l’informazione relativa all’espressione e allo stato emotivo di FACE viene gestita in termini di valence e arousal. Queste sono le coordinate che permettono di disporre espressioni ed emozioni su un piano cartesiano chiamato ECS (Emotional Circumplex Space, se ne vede un esempio in figura 2.6), un sistema basato sulla teoria di Russel “Circumplex
Model of Affects” [Rus80, PRP05] che rende processabili stimoli mentali e
fisiologici, come le emozioni, da parte di un calcolatore.
E’ con queste coordinate che potremo collocare in uno spazio cartesiano le espressioni che l’androide deve interpretare. La valence corrisponde alla “po- sitività” di uno stato emotivo, e della relativa espressione, mentre l’arousal rappresenta l’attivazione, l’enfasi con cui viene espressa l’emozione. Inoltre grazie all’ECS si può effettuare l’interpolazione dei punti relativi ad ogni espres- sione facciale creando tutti gli stati intermedi. In questo modo si possono
2.2. ARCHITETTURA DEL SISTEMA 31
Fig. 2.6: ECS, (Emotional Circumplex Space).
esprimere emozioni ibride tra la rabbia e il disgusto, o la felicità e la sorpresa, che ci permettono di ricostruire una dinamica del volto, come si vede nella parte in basso di Fig. 2.6. Chiaramente nel momento in cui l’espressione deve essere materialmente generata non è più sufficiente un punto in coordinate (v, a). Sarà dunque il servizio HEFES a tradurre queste semplici coordinate nelle relative posizioni dei 32 servomotori necessarie a generare l’espressione corrispondente. Il pacchetto facial expression, contenente la configurazione dei motori della faccia, passa tramite una porta yarp dedicata al servizio FACE
32 CAPITOLO 2. F.A.C.E.
Gaze Control. E’ il sistema di controllo del collo e degli occhi di FACE [ZML+13, ZMGDR14]. Questo modulo riceve gli oggetti meta-scene contenenti la lista delle persone nel campo di vista del robot e il visual saliency point. Ognuno di essi è identificato da un ID univoco e associato a delle coordinate spaziali (x, y, z). Il servizio Gaze Control riceve contemporaneamente dalla porta YARP
“look at”, utilizzata dal sistema deliberativo, l’ID del soggetto (o dell’oggetto) sul
quale il robot deve focalizzare la sua attenzione. Integrando le due informazioni il servizio calcola i comandi per i motori di roll, pitch e yaw del collo, e per i motori che muovono gli occhi, affinché il robot raggiunga con lo sguardo il target (creando il pacchetto dati neck movements).
FACE Animator. Questo servizio è impegnato nel cotrollo di basso livello del robot. FACE Animator riceve e coordina le richieste multiple provenienti dagli altri servizi. Ad esempio possono arrivare contemporaneamente il pacchetto
facial expression dal servizio HEFES, il pacchetto neck movements dal Gaze
Control, e il pacchetto consumption direttamente dal Power Supply. In que- so caso le richieste parallele possono generare un conflitto. Spetta dunque all’animation engine il compito di fondere le azioni multiple prendendo in considerazione il momento e la priorità di ogni singola richiesta. Ne risulta un comportamento realistico e multitasking, che permette al robot di eseguire azioni multiple contemporaneamente.
Nell’architettura presentata i blocchi ACT, SENSE e PLAN sono solo dei co- strutti descrittivi mirati a una migliore comprensione del sistema. Essi non sono corrisposti da un’effettiva implementazione pratica. Il collegamento virtuale creato nelle connessioni tra i servizi di ACT e SENSE (la grande freccia rosa di Fig. 2.4) rappresenta la via reattiva. Diversamente la via deliberativa è rappresentata dalla freccia verticale, ma è realizzata effettivamente da tutte le connessioni che collegano il servizio I-CLIPS Brain (PLAN) e tutti gli altri servizi. Queste connessioni infatti non sono utilizzate per il ciclo di controllo deputato alla risposta veloce agli stimoli, bensì ai processi decisionali e di ragionamento. Un simile tipo di architettura è altamente modulare e si avvale di un’intelligente sistema di comunicazione tra le sue parti componenti che esclude una rigida struttura gerarchica dei moduli. Tutti i servizi sono posti allo stesso livello e sono autorizzati a condividere pacchetti di dati nella rete. Ciò rende il sistema molto più veloce e flessibile alla modifica, l’aggiunta o l’esclusione delle parti che lo compongono.