rizzate nelle variabili ?v, ?a, ?id, ?x, ?y e ?rulefired; in più viene memorizzato il
Fact-Index sia di face che di winner nelle rispettive variabili ?face e ?win. Viene
anche verificato che il Template winner non si trovi in una condizione di inizia- lizzazione (con l’ID 0 e la rule fired indicata come none), ciò non permetterebbe l’attivazione della regola.
Nel RHS si trova invece:
• La stampa (printout) nel display di iClips delle variabili estratte dagli slot, utile in fase di debug a controllare in tempo reale il punto che il robot sta osser- vando. Vengono stampati il punto e l’ID del winner, la valence e l’arousal relativi all’espressione che il robot sta realizzando, e la look rule che ha determinato il vincitore.
• L’esecuzione delle CLIPS Actions fun_lookat e fun_makeexp. La prima agisce sul servizio d’attuazione Gaze Control comunicando il punto che il robot deve raggiungere con lo sguardo, la seconda agisce sul servizio d’attuazione HEFES comunicando le coordinate (v,a) dell’espressione che il robot deve realizzare. La definizione di queste funzioni in ambiente C# è riportata in App. C nei codici C.3 e C.4.
• Infine, utilizzando i Fact-Index memorizzati nelle variabili provvisorie ?face e ?win, vengono reinizializzati i Templates winner e face tramite la funzione modify, rispettando così il paradigma presentato nella sezione relativa alle look
rules (Sez. 5.6).
5.8
Scelta della Conflict Resolution Strategy
Il Sistema Cognitivo presentato si troverà continuamente in situazioni di conflitto. In particolare si possono presentare due tipi di conflitto: il conflitto tra le regole e il
conflitto tra i soggetti.
5.8.1
Conflitto tra le regole
Nella sezione relativa alle look rules si è detto che queste regole sono concorrenti tra di loro in quanto presentano lo stesso livello di salienza. Cosa succede ad esempio se un soggetto soddisfa contemporaneamente due o più look rules? Quale verrà posta prima in Agenda?
92 CAPITOLO 5. IMPLEMENTAZIONE DEL CODICE
La risposta a queste domande è data dalla scelta della Conflict Resolution Strategy. Tra tutte le strategie messe a disposizione da CLIPS per la risoluzione dei conflitti (Sez. 3.7) è stata scelta la depth strategy. Con questa soluzione la regola posta per
prima in agenda sarà la prima ad essere attivata.
Nella pratica questo significa che la prima social cue rilevata dal sistema relativa a un soggetto sarà quella che determinerà la sua vittoria nel modello attentivo del robot. Ne risulta un Sistema Cognitivo altamente reattivo e sensibile agli eventi che si presentano nel contesto sociale del robot. Inoltre la reazione espressa dall’androide sarà continuamente e specificamente dipendente dall’evento che ha attirato la sua attenzione, il tutto in tempo reale.
Se ad esempio il soggetto che ha guadagnato l’attenzione del robot, l’ha guadagna- ta perché sta parlando, il robot lo guarderà con un’espressione di interesse per tutta la durata di tempo in cui il soggetto parla. Quando la persona che stava parlando cesserà di parlare, ma avrà comunque qualche caratteristica che desti l’attenzione del robot, ad esempio il fatto che si trovi al centro della sua visuale, il robot continuerà a fissarlo, ma cambierà espressione, mostrando un’espressione neutrale. Altrimenti, nel caso in cui la stessa persona, una volta terminato di parlare, non avrà nessuna caratteristica saliente che desti l’attenzione del robot, quest’ultimo rivolgerà la sua attenzione a un altro soggetto, o in alternativa tornerà a “fissare il vuoto”, o meglio, il visual saliency point dell’ambiente circostante.
5.8.2
Conflitto tra soggetti
Cosa succede, invece, se più soggetti soddisfano la stessa regola? Chi sarà il vincitore? Per risolvere questo secondo tipo di conflitto è stata sfruttata l’architettura del sistema. In particolare il modo in cui i soggetti rilevati vengono disposti nel pacchetto XML meta-scene da parte dello Scene Analyzer. Questa disposizione dipende dall’ID che è associato ad ognuno di questi soggetti, ma per capire meglio questo meccanismo dobbiamo soffermarci per un istante sull’assegnazione dell’ID.
Quello che sappiamo riguardo all’ID associato ai soggetti presenti nella scena sono le seguenti informazioni:
• è un numero intero,
• viene assegnato dal Kinect, • il numero assegnato è casuale,
5.8. SCELTA DELLA CONFLICT RESOLUTION STRATEGY 93
• viene associato in modo univoco ai soggetti rilevati (è impossibile che due soggetti abbiano lo stesso ID),
• nonostante il numero intero assegnato sia casuale, se IDi è l’ID associato al
soggetto rilevato in un dato momento t1, e IDj è l’ID associato a un altro
soggetto rilevato in un dato momento t2, possiamo affermare che:
t2 > t1 ⇔ IDj > IDi
Ora, nel passaggio dell’informazione dal Kinect al mondo di CLIPS del brain, sappiamo che ogni soggetto rilevato viene confrontato con il relativo Template e, se il confronto ha successo, il soggetto viene disposto nella fact-list in qualità di fatto strutturato.
In questa disposizione il soggetto, divenuto adesso un fact, sarà chiaramente associato a un Fact-Index.
La relazione tra il Fact-Index associato al soggetto da CLIPS e l’ID associato al medesimo soggetto dal Kinect non è prevedibile, poiché il continuo flusso in entrata di informazione dal sensore fa sì che gli indici della lista aumentino continuamente, a differenza dell’ID che rimane costante per tutto il periodo di tempo in cui il soggetto rimane nella scena. Ma, alla luce delle informazioni sull’ID elencate, e dato che lo
Scene Analyzer dispone i soggetti nel pacchetto dati in ordine decrescente del numero
di ID, visto che questa lista, una volta acquisita dalla Knowledge Base mantiene la stessa disposizione, possiamo dire che il soggetto che nella fact-list si trova in una posizione più alta (Fact-Index minore), rispetto agli altri presenti nella scena, sarà quello con l’ID più grande, quindi è stato rilevato per ultimo dal robot.
Con la Conflict Resolution Strategy scelta (la depth strategy), ogni regola verifica i fatti della fact-list dall’alto verso il basso. E’ così che risolviamo il secondo conflitto. Se ci sono ad esempio tre soggetti di fronte al robot, che hanno i requisiti per guadagnare la sua attenzione, molto probabilmente la persona che si è presentata più recentemente di fronte al robot la guadagnerà.
Questa ci è sembrata una soluzione ragionevole, ma non è altro che un comporta- mento del robot, e come tutti gli altri può essere modificato. Per esempio cambiando la Conflict Resolution Strategy con un semplice comando nell’editor di iClips, oppure modificando l’ordine in cui lo Scene Analyzer dispone i soggetti all’interno dell’XML
Capitolo 6
Test e risultati
Nel presente capitolo verrà presentato un test, in cui il Sistema Cognitivo, oggetto del presente lavoro di tesi è stato integrato nell’architettura del robot umanoide FACE. In questo esperimento l’androide è stato inserito in un contesto di interazione sociale operando in completa autonomia. Saranno nel seguito presentati sia il protocollo dell’esperimento che i risultati del test. Verranno dunque analizzati e discussi i risultati ottenuti e le capacità che il robot ha dimostrato di acquisire in seguito all’integrazione del brain.