• Non ci sono risultati.

Design modulare del Sistema Cognitivo

Ciò significa che in un lasso di tempo pari a 300 ms il Sistema Cognitivo di FACE si appella ai servizi del blocco sensoriale per ricevere le informazioni, le elabora, e le spedisce al blocco di attuazione, per poi ripetere questa operazione dall’inizio.

A questo scopo sono state pensate due modalità di esecuzione, entrambi eseguibili a partire dall’interfaccia iClips:

• E’ possibile impartire un singolo comando di (run) nella finestra dell’editor che farà partire un singolo ciclo di lavoro.

• E’ possibile spuntare una casella, chiamata appunto run, che è stata inserita successivamente nell’interfaccia. Questa farà partire un thread in cui il comando (run) sarà eseguito in ripetizione alla frequenza di lavoro scelta (300 ms).

4.4

Design modulare del Sistema Cognitivo

Tutta l’informazione elaborata dai servizi deputati alla percezione (SENSE) viene spedita, tramite delle YARP ports dedicate, a dei moduli del servizio I-CLIPS Brain, così come si può vedere dallo schema dell’architettura del blocco cognitivo ripresa in figura 4.2. Quindi, il primo comando che dovrà essere lanciato nell’interfaccia iClips sarà necessariamente la richiesta di uno o più moduli, altrimenti il brain non avrà alcuna informazione da elaborare.

Inoltre ciascun modulo contiene un determinato insieme di regole che, nel momento in cui il modulo viene caricato, vengono automaticamente definite nella Knowledge

Base del robot, ovvero nel motore di regole Clips Engine. Queste regole sono scritte

nel file init.clp presente in ogni modulo.

La sintassi per richiedere un modulo acquisendone l’informazione e le regole al suo interno è la seguente:

Codice 4.2: Sintassi per la require di un modulo dall’editor di iClips.



( r e q u i r e " < n o m e _ m o d u l o > " )



I moduli del blocco cognitivo sono i seguenti:

Attention Module. Questo modulo si collega alla porta yarp meta-scene dove si trova il pacchetto dati che ha lo stesso nome della porta e che contiene tutti i dati provenienti dall’SDK del Kinect. Questi consistono nelle informazioni relative a un numero che va da uno a sei soggetti rilevati nella scena, tra cui,

64 CAPITOLO 4. DESIGN DEL SISTEMA COGNITIVO

i due soggetti più vicini sono caratterizzati dalle coordinate (x,y,z) di venti giunti dalle quali viene ricostruito lo skeleton, un’approssimazione stilizzata dello scheletro (vedi il secondo quadrante di Fig. 2.5); mentre dei soggetti rimanenti si conosce esclusivamente le coordinate dello spin center. Oltre a queste, risiedono nel modulo le informazioni riguardanti il visual saliency point. In uscita dal modulo, in seguito all’elaborazione dei dati da parte del CLIPS

Engine viene spedito sulla porta yarp look-at un pacchetto dati contenente le

coordinate (x,y) e l’ID del soggetto (o del punto) che il robot deve guardare. Questo pacchetto dati sarà prelevato dal servizio di attuazione che si occupa dei movimenti della testa del robot, ovvero il Gaze Control. L’Attention Module contiene le regole che gestiscono l’attenzione di FACE.

Emotion Module. Questo secondo modulo si connette anch’esso con la porta

meta-scene ma estrae selettivamente dal pacchetto dati XML le informazioni

riguardanti lo stato emotivo dei soggetti e informazioni secondarie come genere ed età. Questi dati sono forniti dal software SHORETM. Anche da questo

modulo, in seguito al processo decisionale gestito dal motore di regole, uscirà un pacchetto dati, stavolta contenente le coordinate ECS (v,a) dell’espressione che il robot deve rappresentare. Questo pacchetto XML sarà prelevato dal servizio del blocco di attuazione che ha il compito di tradurre queste coordinate virtuali in comandi da impartire ai servomotori, ovvero il servizio HEFES. L’Emotion

Module contiene quindi le regole che gestiscono l’informazione relativa allo stato

emotivo del robot e dei suoi interlocutori.

Energy Module. E’ il modulo che si collega al flusso dei pacchetti dati consumption disponibili nell’omonima porta yarp. Gestisce quindi il flusso relativo allo stato fisico del robot (detto anche stamina). Da questo modulo l’informazione non deve fuoriuscire, servirà solo ad influenzare alcune regole del motore

CLIPS Engine, variando il percorso decisionale intrapreso dalla mente del

robot. Si può affermare che, se i primi due moduli rappresentano la parte del Sistema Cognitivo deputata all’esterocezione, l’ Energy Module non è altro che l’interocezione del robot, e le regole contenute in questo modulo si occupano dell’elaborazione di questo tipo di informazione.

Questa struttura modulare ci consentirà di aggiungere in futuro nuovi moduli che gestiscono altri pacchetti di informazioni e contengono altri set di regole. Ad esempio, l’aggiornamento con versioni più aggiornate o l’aggiunta di sensori, non

4.4. DESIGN MODULARE DEL SISTEMA COGNITIVO 65

Fig. 4.2: Blocco cognitivo estratto dall’architettura del sistema.

apporterà modifiche sensibili da parte del blocco cognitivo, il quale si limiterà a ricevere il modulo senza preoccuparsi di quale sia il servizio che gli passa i dati, né tanto meno da quale sensore questi dati provengano. Oppure, nel caso di un nuovo sensore che processa un nuovo tipo di informazione, sarà sufficiente implementare un nuovo modulo dedicato da caricare, senza dover ritoccare il codice del brain. Ovviamente la stessa cosa vale anche per le eventuali modifiche apportate al blocco di attuazione.

Al momento, nell’effettiva implementazione del codice si sta utilizzando esclusiva- mente l’Attention Module all’interno del quale viene passato, ad ogni ciclo di lavoro, l’intero pacchetto meta-scene attraverso la porta dedicata, e dove si trovano tutte le regole del sistema. In uscita dal modulo l’informazione non passa da una porta yarp, piuttosto vengono utilizzate da una rule interna al motore di regole CLIPS Engine delle funzioni definite in CLIPS dall’ambiente C# (CLIPS Actions) che intervengono direttamente sui servizi del blocco di attuazione. Queste soluzioni sono perfettamente funzionanti ma provvisorie. Le variazioni che il sistema attuale presenta rispetto al design ideato saranno discusse nella sezione riguardo agli sviluppi futuri del progetto 6.2.

66 CAPITOLO 4. DESIGN DEL SISTEMA COGNITIVO