Tuesday, October 03, 2006

Graphical User Interface

These past couple of weeks I've been working on the user interface that will allow a easy-breasy environment configuration, in order to achieve the mood accuracy we want. This has not been an easy task since I had never worked with Ogre3d's Gui package. This task took me even longer because I continue to have problems with programming just so it works, I always have to "do things right" so that they can be easily used and so that the code is somewhat correct Object Programming wise. I hope this doesn't prevent me from achieving my goals. I especially hope that this effort of trying to do things right continues to pay off in the future as it has in the past.

Tuesday, September 19, 2006

A new cycle begins

Finished the course of Autonomous Agents and Multi-Agent Systems I can say that even thought I didn't receive as good a grade as I expected, it was still a good result. I learned a lot and that is the most important thing !
Since last semester not much has changed work wise. I'm just now picking up were I left off. This year I will be developing this project in the context of my master's degree.

My first step is to determine the best ways to represent moods with my environment. To this effect I'm developing an user interface so I can effortlessly configure the parameters of the environment, namely :
    • the color of the sky,
    • the light of the environment,
    • power of the wind,
    • direction of the wind,
    • intensity of the rain,
    • density of the clouds,
    • thickness of the fog

Finished Report (In Portuguese)

Here is the final report on the work developed for the course of Autonomous Agents and Multi-Agent Sistems.




Agentes Autónomos

e Sistemas Multiagente

2º Semestre, 2005/2006

Departamento

Engenharia

Informática

Relatório de Projecto Específico:

Gaia




Grupo NºXX

Francisco Silva51398

Jorge Santos51618


Sumário

No âmbito da cadeira de Agentes Autónomos e Sistemas Multi-Agente (AASM), foi realizado um projecto que consistiu no desenvolvimento e implementação em ambiente tridimensional de um agente emocional com personalidade.

O agente que foi desenvolvido incorpora o cenário e o propósito deste agente é estar em plano secundário a reforçar a intensidade da acção principal. O agente controla os elementos climatéricos, nomeadamente o vento, as nuvens, a chuva e a própria coloração do céu.

A personagem que o agente interpreta é uma personagem passiva (no sentido em que não toma acção sobre os acontecimentos)

O desenvolvimento deste agente obrigou a uma vertiginosa aprendizagem do motor gráfico Ogre3D. Um componente a que demos muita importância no nosso projecto foi a aparência agradável, que permitisse a utilizadores humanos uma suspensão de crença (Suspension of Belief) uma imersão que tornasse o mundo criado possível para a imaginação do utilizador.

Para desenvolver este agente foi necessário estudar a mais indicada teoria de emoções e implementá-la [ORTONY2003]. Depois de um longo estudo não conseguimos encontrar nenhuma teoria que se adequasse ao nosso agente devido às características únicas que este possuía. Avançamos então com uma teoria inspirada em varias outras teorias mas que é diferente de todas elas.

Para que um agente seja credível tem de apresentar alguma coerência, ou seja, face as mesmas situações deve reagir de forma semelhante. Uma das formas de alcançar esta coerência é prover os agentes com personalidade. A forma como implementámos personalidade foi descrevendo o significado que cada acção tem para cada agente, definindo a forma como os agentes vêem o mundo à sua volta.

Com os testes de utilizador conseguimos identificar as emoções que melhor conseguimos exprimir e como exprimir melhor as emoções que não ficaram tão bem expressas.

Palavras-Chave: Emoções, Personalidade, Agente Credível, Suspensão de Crença, Acção

1 Índice




2 Introdução

Os objectivos principais deste trabalho foram:

- Compreender as dificuldades de implementar um agente com emoções e personalidade.

- Criar uma representação agradável que proporcione suspensão de crença, de um agente incorpóreo com elevada expressividade num ambiente gráfico tridimensional.

O agente criado é reactivo (age de acordo com as acções que observa ou que já observou) com estado e autónomo (nenhuma entidade lhe diz o que acções observar ou que significado tirar dessas acções).

O mundo em que desenvolvemos é não-acessivel (o agente tem acesso a todas as acções, mas não ao estado interno de outros possíveis agentes), dinâmico (não existe tomada de turnos), determinístico (as acções não falham), não-episódico.

3 Arquitecturas

3.1 Teoria de Emoções

Para atribuir emoções ao nosso agente inicialmente tentámos empregar o modelo OCC [OCC].

O modelo OCC emprega 22 categorias de emoções baseadas em reacções a várias entidades, nomeadamente:

- Situações construídas como objectivos relevantes

- Acções de agentes

- Objectos atractivos ou repulsivos.

Como é mencionado no trabalho: “Integrating the OCC Model of Emotions in Embodied Characters” [BARTNECK2002] o modelo OCC é demasiado complexo, sendo criado para modelar emoções humanas, não é necessariamente adequado para modelar agentes credíveis.

Depois de analisar mais algumas teorias de emoção, não encontrámos nenhuma que se adequasse ao nosso agente devido as suas características pouco comuns. Nomeadamente a característica de observador (O nosso agente não influencia a acção principal) e a característica de se exprimir alterando as condições climatéricas das quais não queríamos abdicar.

Avançamos então com uma teoria inspirada em varias das estudadas mas diferente de todas elas.

Na nossa teoria de emoções sugere que cada uma das emoções complexas que os humanos experimentam se pode decompor em três componentes. Cada componente é polar, divide-se num par de emoções positivo/negativo. Os pares de emoções que constituem toda complexidade de emoções humanas a que chegamos foram os seguintes:

- Felicidade versus Tristeza

- Tranquilidade versus Ansiedade

- Amor versus Ódio

Para representarmos esta teoria computacionalmente, este par é representado valor contínuo que varia entre 1 e -1. Os valores positivos representam a intensidade da emoção positiva e os valores negativos representam a intensidade da emoção negativa.

Estes pares foram arbitrados por nos como os mais indicados e estão passíveis de um estudo mais criterioso para determinar a sua adequação.

Cada componente emocional é paralelo ou seja, os pares são independentes dando ao agente uma elevada amplitude de estados como exemplificado no seguinte diagrama:

Os pares de emoções independentes permitem a descrição dos estados emocionais como um sistema de 3 eixos ortogonais.

Passamos a descrever cada uma das emoções:

3.1.1 Emoções

3.1.1.1 Felicidade

A emoção felicidade é simplesmente felicidade e não necessita de definição pormenorizada.

3.1.1.2 Tristeza

Esta emoção é também simples e não necessita de definição pormenorizada.

3.1.1.3 Tranquilidade

A tranquilidade é a emoção que o agente sente quando observa uma acção que de acordo com a sua personalidade é tranquila.

Por exemplo: O observar de uma pessoa a descansar pode transmitir ao agente uma sensação de tranquilidade.

3.1.1.4 Ansiedade

A ansiedade é a emoção que o agente sente quando observa uma acção que de acordo com a sua personalidade é violenta, danosa, importante, de paixão, etc.…

.

Por exemplo: O observar de uma pessoa a descansar transmite ao agente uma sensação de tranquilidade.

3.1.1.5 Amor

Esta emoção é invocada quando um agente observa uma emoção que de acordo com a sua personalidade é um acto de amor.

Por exemplo: O observar de uma pessoa a sorrir para outra ou o observar de uma pessoa a auxiliar outra numa tarefa pode transmitir uma sensação de amor.

3.1.1.6 Ódio

Esta emoção é invocada quando um agente observa uma emoção que de acordo com a sua personalidade é um acto de ódio.

Por exemplo: O observar de uma pessoa a gritar com outra ou o observar de uma pessoa destruir um objecto pode transmitir uma sensação de ódio.

O estado emocional do agente é influenciado pelo conjunto de acções que este observa. Chegámos a varias formas de calcular a forma como as acções influenciam o estado emocional e passamos a descrevê-las:

3.1.2 Influencia sobre o estado emocional

3.1.2.1 Por atribuição

Neste modo, as emoções que o agente associa às acções observadas substituem o estado emocional do agente. Esta aproximação é a menos poderosa, a cada acção que o agente observa, o agente esquece a anterior acção.

3.1.2.2 Por incremento

Neste modo, o valor das emoções que o agente associa às acções observadas é incrementada ao valor das emoções correspondentes do estado emocional do agente. Esta aproximação tem falhas graves, nomeadamente, acções a que o agente associa emoções não muito intensas levam o agente a estados emocionais de elevada intensidade.

A influência das acções sobre o estado emocional é um ponto em que o projecto ficou aquém das expectativas por motivos de falta de tempo. Justificava-se um estudo mais aprofundado de forma a chegar a uma solução que permitisse que as acções influenciassem o estado emocional do agente de uma forma mais interessante.

3.2 Personalidade

A personalidade de um agente é definida pela forma como o agente “vê” o mundo a sua volta. No nosso projecto a personalidade do agente é definida pela forma como ele avalia as acções que observa. Para cada acção seria portanto necessária uma avaliação de o que essa acção significa para o agente. Exemplos destas avaliações de acções:

Acção “Sorrir”:

- Felicidade/Tristeza 0.38

- Tranquilidade/Ansiedade 0.20

- Amor/Ódio 0.45

Os valores para cada componente de avaliação podem ter a precisão que for necessário e mais uma vez valores positivos significam uma avaliação da emoção positiva do par de emoções e valores negativos significam uma avaliação da emoção negativa do par de emoções.

Quando este agente observar a acção Sorrir irá portanto achar que a acção transmite alguma felicidade, um pouco de tranquilidade e algum amor.

Acção “Discutir”:

- Felicidade/Tristeza -0.30

- Tranquilidade/Ansiedade -0.34

- Amor/Ódio -0.49

Esta definição descreve a acção Discutir como uma acção que transmite tristeza, ansiedade e ódio.

Existem no entanto alguns problemas com esta aproximação à definição de personalidades. Nomeadamente esta aproximação obriga à definição exaustiva de todas as acções que possam ocorrer no mundo algo que se pode tornar pouco prático com um numero muito elevado de acções. Existe também o problema de uma definição demasiado ampla poder abarcar acções muito distintas como no exemplo do Sorrir que é geralmente uma acção positiva, o “Sorrir Sarcasticamente” já pode ser uma acção negativa, é certamente uma acção com significado diferente.

Para atacar estes problemas definimos a personalidade com níveis de abstracção como uma árvore hierárquica de acções em que cada nó final tem de ter uma avaliação e os nós não finais podem ou não ter uma avaliação ou podem até ter uma definição parcial. Achámos que o formato XML seria o mais indicado para exprimir esta árvore hierárquica. Passamos a exemplificar:

<Accao>

<AccoesSociais tranquilidade="-0.12">

<Sorrir felicidade="0.38" tranquilidade="0.20" amor="0.45" >

<SorrirSarcasticamente felicidade="-0.13" tranquilidade="-0.31" amor="-0.09"/>

Sorrir>

<Discutir felicidade="-0.30" tranquilidade="-0.34" amor="-0.49"/>

AccoesSociais>

Acção>

Desta forma acções de um mesmo ramo que para o agente tenham significados semelhantes podem não ser definidas na personalidade, tendo o mesmo significado que a mais próxima acção pai definida. Por exemplo, a acção “Discutir Violentamente” cujo pai directo é “Discutir” pode ser observada no mundo e será avaliada como tendo o mesmo significado que Discutir.

3.2.1 Aproximação Alternativa/Complementar

A aproximação à definição de personalidades acima descrita pode levar a agentes muito distintos uns dos outros. Isto pode ou não ser benéfico para a credibilidade do conjunto dos agentes visto que a credibilidade dos agentes está muito dependente de se um humano consegue ou não prever as acções dos agentes e se quando não consegue prever se consegue ou não compreender as suas acções [ORTONY2003]. Agentes com comportamentos demasiado diferentes podem dar a humanos a ideia de aleatórios e destruir a suspensão de crença (Suspension of Belief).

Chegamos então à conclusão que a definição da personalidade como anteriormente descrita poderia ser comum a todos os agentes de um mundo e que para cada agente haveria um valor de ajuste para cada par de emoções que alteraria os seus valores de significado para o agente, aumentando ou diminuindo o significado geral das acções.

Desta forma passaríamos a ter duas estruturas para definir a personalidade de cada agente, a personalidade comum já descrita e o ajuste individual que passamos a exemplificar:

- Ajuste individual

Felicidade/Tristeza -0.10

Tranquilidade/Ansiedade +0.03

Amor/Ódio + 0.23

Este ajuste individual define um agente que associa às acções observadas um pouco mais de tristeza que o agente comum, um pouco mais de tranquilidade e mais amor.

Tomando o exemplo acima descrito da personalidade comum a personalidade resultante deste agente seria a seguinte:

<Accao>

<AccoesSociais tranquilidade="-0.09">

<Sorrir felicidade="0.28" tranquilidade="0.23" amor="0.68" >

<SorrirSarcasticamente felicidade="-0.23" tranquilidade="-0.28" amor="0.12"/>

Sorrir>

<Discutir felicidade="-0.40" tranquilidade="-0.31" amor="-0.32"/>

AccoesSociais>

Acção>

A diferença mais marcante do agente resultante seria que este passaria a ver um sorriso sarcástico como um acto de algum amor devido ao seu ajuste individual ser tão inclinado em direcção ao amor.

Esta aproximação poderia no entanto levar a alguma limitação de diversidade, obrigando todos os agentes de um mundo a conter os mesmos padrões de personalidade com apenas alguns ajustes, limitando a representação de agentes de culturas diferentes. Por este motivo a melhor aproximação a que chegamos foi aplicar uma personalidade comum a cada tipo de agente e um ajuste individual a cada agente desse tipo.

3.2.2 Personalidade Estática/Dinâmica

Este tipo de estruturação da personalidade poderia sugerir que a personalidade dos agentes seria estática e que uma vez definida ficaria sempre com a mesma definição. No entanto isto não é necessariamente verdade e embora um mecanismo de evolução/adaptação da personalidade não tenha sido explorado, os valores de definição da personalidade poderiam ser facilmente alterados e actualizada a definição.

3.3 Acções

A arquitectura que definimos para as acções é relevante pois era necessário que o agente tivesse acesso a todas as acções ocorridas e que conseguisse identificar a natureza de cada acção de forma a poder avaliar o significado da acção para ele.

3.3.1 Registo das acções

Para que o agente conseguisse “observar” as acções ocorridas no mundo idealizámos uma entidade a que chamámos Action Manager. Esta entidade regista todas as acções que ocorrem a cada iteração do mundo e torna-as acessíveis aos agentes que podem ter acesso a elas. No nosso caso o agente teria acesso a todas as acções do mundo.

3.3.2 Identificar as acções

Para que o agente conseguisse identificar as acções de forma a poder avaliar-lhes o significado, definimos uma estrutura hierárquica que tipifica as acções igual à que definimos para a personalidade. Estas duas estruturas são dependentes no sentido em que os elementos aqui adicionados poderão ou não ter significado para os agentes (Ver a definição das personalidades).

Passamos a exemplificar a estrutura de tipificação das acções:

<Accao>

<AccoesSociais>

<Sorrir>

<SorrirSarcasticamente/>

Sorrir>

<Discutir>
<
DiscutirViolentamente/>

Discutir>

AccoesSociais>

Acção>

3.3.3 Estrutura das acções

Cada acção foi definida com uma entidade origem, uma entidade destino e um tipo.

As entidades podem ser agentes ou objectos inanimados, o tipo tem tipo pai. Esta estrutura permite aos agentes associar as acções aos agentes que as fizeram e aos agentes que as sofrearam e o tipo permite identificar o tipo da acção.

4 Ambiente

4.1 Entidades

O ambiente pelo qual é constituído toda a cena é constituído pelos seguintes elementos:

  • Céu – Este elemento é um globo de elevadas dimensões onde foi mapeada uma textura que tenta representar um céu real. Todos os outros elementos se encontram contidos dentro deste globo, ficando dentro do mundo.

Conseguimos então agora ter duas diferentes perspectivas do nosso céu. Na primeira é um avista do interior do globo, a segunda a vista da nossa “terra”

  • Água – Este é o nosso oceano. Existe em todo o globo e reage à queda de chuva, a nível de texturas a água reflecte o céu através de uma técnica de Environment Mapping.

  • Nuvens – as clássicas nuvens de uma paisagem que inclua o céu. Internamente são um sistema de partículas caracterizado por um emissor (entidade responsável pela criação das nuvens) e por uma textura 2D mapeada em cada nuvem. Cada nuvem é também um Billboard, ou seja, está sempre virada para o utilizar disfarçando assim o facto de ser 2D.

  • Chuva – Este é um elemento conceptualmente equivalente às nuvens, é um sistema de partículas mas com uma particularidade – quando uma gota de água cai na água provoca a típica e ligeira ondulação

4.2 Emoções

Em relação às emoções já descritas anteriormente vamos agora tentar descrever sucintamente as técnicas utilizadas para as tentar representar.

  • Felicidade / Tristeza

Aqui foi um simples jogo de cores e intensidade de cores. Quando mais feliz, mais a cor se aproximava do branco e com cada vez mais intensidade. Por outro lado, a tristeza era exactamente o oposto, a aproximar-se do preto.

  • Tranquilidade / Ansiedade

Neste par de emoções foi utilizado o movimento. Enquanto que a tranquilidade não tem qualquer movimento, nem de nuvens, nem chuva nem mar a ansiedade é o oposto. Com as nuvens a moverem-se rápido, a chuva a cair intensamente e a água a reagir de igual forma às gotas que vão caindo.

  • Amor / Ódio

Foi um par complicado, optamos por fazer corresponder o Amor a uma grande dose de cor-de-rosa e o ódio a recair mais sobre o roxo.

5 Estudo Comparativo

Primeiros testes

Para além das pessoas que fomos consultando ao longo projecto (quatro a seis pessoas para além de nós próprios), ao chegar ao final, confrontámos 4 pessoas que nunca antes tinham visto a realizar um pequeno teste.

Em que consistiu o teste?

Depois de numa primeira fase ser explicado o contexto do trabalho mostramos ao inquirido uma lista de doze emoções divididas em dois grupos como mostra a lista a baixo:

Felicidade

Tranquilidade

Amor

Esperança

Confiança

Respeito

Desconsideração

Ansiedade

Tristeza

Desespero

Ódio

Descrença

São doze emoções listadas de formal aleatória para não induzir a respostas.

Assim, mostramos depois as 6 emoções separadamente e pedimos ao nosso “utilizador” que tentasse fazer uma correspondia entre um elemento da lista e paisagem observada.

Finalizada as seis observações, era dada a oportunidade que o utilizador refizesse as suas respostas mas o observador apontava ambas. Uma com uma resposta intuitiva e uma segunda, mais reflectida.

Na parte final o utilizador era induzida a dar respostas em pares de emoções antónimas. O observador injectava em sequência as duas diferentes sensações e o ambiente ia evoluindo da negativa para a positiva ou vice-versa.

Obtivemos respostas bastante interessantes!

Primeiro teste:

Sara Passos

Muito curiosas as respostas da Sara. Teve sempre enormes dificuldades em dar uma resposta intuitiva. A primeira resposta era sempre reflectida mas nunca certa. Apenas depois de ver todas as paisagens deu respostas em linha com o que tínhamos pensado.

Vera Alves

A Vera foi a pessoa que deu respostas mais construtivas. Ou seja, todas as respostas estavam justificadas com cenários alternativos possíveis.

Felicidade / Tristeza

  • Respondeu tranquilidade, “Não é Felicidade porque só tem azul e branco”.
  • Respondeu desespero – “Sempre associei escuridão a desespero…”

Tranquilidade / Ansiedade

  • Confiança, “o mar está tranquilo mas há muitas nuvens…”
  • Ansiedade, “vento, chuva mar agitado…”

Amor / Ódio

  • Amor, “o cor-de-rosa é claramente a cor do amor”.
  • Descrença, “É um pouco por exclusão de partes”

Luís Soares

O Luís deu respostas distantes. Não lhe conseguimos mostrar bem a diferença entre emoções positivas e negativas, muita confusão de cores.

Felicidade / Tristeza

  • Tranquilidade, “Cores claras juntas com este céu revelam tranquilidade”.
  • Desespero – “A cor é estranha e faz-me sentir apertado e desesperado”

Tranquilidade / Ansiedade

  • Confiança, “Como está tudo parado faz-me sentir vontade de avançar sem recear!”
  • Ansiedade, “Irrequietude, parece que alguém está em pulgas para fazer qualquer coisa”

Amor / Ódio

  • Desespero, “Sinto desespero com esta cor, é estranha…”.
  • Tristeza, “O Roxo é uma cor triste que associo à infelicidade e tristeza”

6 Conclusões

Em primeiro lugar queríamos salientar que sentimos um pouco a falta de um apoio mais directo em relação aos assuntos mais avançados que investigámos. Durante todo o desenvolvimento da teoria de emoções e da personalidade sentimo-nos muito à deriva.

Podemos concluir que os testes realizados ao longo do trabalho tiveram um papel primordial. Cada pessoa tem a sua forma de imaginar a representação de uma emoção e foi tentando juntar o melhor de cada uma que obtivemos estes bons resultados. Considerando o exemplo do ódio, observamos que para uns o céu teria de ser roxo mas para outros esse mesmo roxo representava medo ou para ainda outros misticismo.

Considerando em geral o nosso estudo comparativo chegamos então à conclusão de que a Felicidade representava intensidade de cores, cores vivas e uma cena sem movimento. Por outro lado a tristeza era claramente uma cena escura, com céu negro e nuvens pretas, mas também sem movimento. A dinâmica veio a revelar-se um factor crucial no par calma e ansiedade, enquanto que o primeiro é uma paisagem sem vento, com poucas nuvens e sem chuva a segunda é o oposto – Muito vento, nuvens e muita chuva para transmitir o conceito pretendido. Por último, o amor/ódio foi mais um jogo de cores. Mas se o amor foi unânime nos tons de cor-de-rosa já o ódio como foi referido anteriormente tinha opiniões mais díspares.

No futuro será interessante testar o funcionamento deste agente a observar as acções de outros agentes e não com acções introduzidas directamente por utilizadores.

7 Referências

[OCC] Ortony, A., Clore, G., & Collins, A., The Cognitive Structure of Emotions, Cambridge: Cambridge University Press, 1988.

[BARTNECK2002] Christoph Bartneck, Integrating the OCC Model of Emotions in Embodied Characters, Department of Industrial Design, Eindhoven University of Eindhoven, 2002.

[ORTONY2003] Ortony, A., On making believable emotional agents believable. In R. P. Trapple, P. (Ed.), Emotions in humans and artefacts. Cambridge: MIT Press, 2003.