arquitetura para criação de robôs autônomos emocionais
Transcrição
arquitetura para criação de robôs autônomos emocionais
ALEXANDRE HENRIQUE VIEIRA SOARES ARQUITETURA PARA CRIAÇÃO DE ROBÔS AUTÔNOMOS EMOCIONAIS-COGNITIVOS NUMA PERSPECTIVA SITUADA Belo Horizonte – MG Dezembro de 2007 ALEXANDRE HENRIQUE VIEIRA SOARES ARQUITETURA PARA CRIAÇÃO DE ROBÔS AUTÔNOMOS EMOCIONAIS-COGNITIVOS NUMA PERSPECTIVA SITUADA Dissertação apresentada ao Curso de Mestrado em Modelagem Matemática e Computacional do Centro Federal de Educação Tecnológica de Minas Gerais, como requisito parcial à obtenção do título de Mestre em Modelagem Matemática e Computacional. Linha de pesquisa: Sistemas Inteligentes Orientador: Prof. Dr. Henrique Elias Borges Centro Federal de Educação Tecnológica de Minas Gerais M ESTRADO EM M ODELAGEM M ATEMÁTICA E C OMPUTACIONAL C ENTRO F EDERAL DE E DUCAÇÃO T ECNOLÓGICA DE M INAS G ERAIS D IRETORIA DE P ESQUISA E P ÓS -G RADUAÇÃO Belo Horizonte – MG Dezembro de 2007 Soares, Alexandre Henrique Vieira S676a Arquitetura 2007 para criação emocionais-cognitivos de numa robôs autônomos perspectiva situada. – 2007. 96 f. Orientador: Henrique Elias Borges Dissertação (mestrado) – Centro Federal de Educação Tecnológica de Minas Gerais. 1. Robôs – Teses. 2. Inteligência artificial. 3. Robótica. I. Borges, Henrique Elias. II. Centro Federal de Educação Tecnológica de Minas Gerais. III. Título. Folha de aprovação. Esta folha será fornecida pelo Programa de Pós-Graduação. Dedico este trabalho a Deus, por minha existência. A meus pais e irmãos, por minha educação, incentivo e apoio aos estudos e pelo carinho. À minha namorada, Cristiana, pela compreensão, amizade, companheirismo e carinho. À minha família e aos meus amigos, pelo apoio. Em memória de minha avó Ruth, que nos momentos em que passamos juntos me deu conselhos, alegrias e sempre me incentivou a aproveitar a vida da melhor forma possível. Agradecimentos Ao meu orientador, Prof. Dr. Henrique Elias Borges, pela orientação, pelas críticas e sugestões. Principalmente, por me ter ensinado e incentivado a fazer pesquisa e por me deixar participar de um projeto tão interessante, motivador e desafiador como o projeto Artífice. Ao amigo Bruno André Santos que foi quem me encaminhou ao Cefet-MG, inicialmente me incentivando a cursar uma disciplina isolada e depois, eu já sendo aluno regular do curso de mestrado, dando-me suporte a algumas questões de meu trabalho. À amiga Luciana Maria de Assis Campos (da qual tive o trabalho como base), pelo auxílio e atenção, principalmente na etapa final do projeto, com ajustes na aplicação para testes. Aos meus amigos do curso que, de uma forma ou de outra, contribuíram com sua amizade e com sugestões para a realização deste trabalho. Ao Serpro – Serviço Federal de Processamento de Dados, pelo incentivo a mim concedido ao estudo pós-graduado, principalmente ao Francisco Araujo (Chicão), meu ex-gerente e à Vera Morais ex-gerente da Uniserpro (Universidade Corporativa do Serpro) e atual diretora administrativa, que me deram apoio e me incentivaram a ingressar no programa de educação pós-graduada da empresa. Ao CNPq pelo apoio financeiro ao projeto Artífice. Ao Laboratório de Sistemas Inteligentes (LSI) pelos recursos disponibilizados para realização deste trabalho. Ao Centro Federal de Educação Tecnológica de Minas Gerais (Cefet-MG). “Nosso corpo está no mundo assim como o coração está no organismo . . . o primeiro forma com o último um sistema.” Merleau-Ponty, Maurice. Fenomenologia da Percepção. Resumo O desenvolvimento de robôs autônomos, que sejam independentes de interferências humanas, tem sido foco de pesquisa há muito tempo. No entanto, dificuldades em seu desenvolvimento usando-se a Robótica Clássica, tem feito os pesquisadores partirem para uma nova abordagem, a Robótica Situada, a qual tem como foco o conceito de mente incorporada. Uma arquitetura com a qual se pudesse criar, de forma razoavelmente simples, estes tipos de robôs, além de possibilitar a agregação de novos aspectos do sistema nervoso humano, sem muito esforço, seria de grande valia para áreas como Ciências Cognitivas, Robótica e Inteligência Artificial. O presente trabalho trata da extensão da arquitetura “Artífice”, desenvolvida para a criação de agentes inteligentes bio-inspirados, para possibilitar que a mesma seja utilizada para a criação de robôs autônomos, emocionais-cognitivos. Alterações foram feitas de forma a encapsular o núcleo da arquitetura (sistema nervoso) e flexibilizar seu sistema periférico de tal forma que ela pudesse ser usada tanto para a criação de agentes de software quanto de hardware (robôs). Para verificar o adequado funcionamento da arquitetura, foram realizados experimentos computacionais num ambiente 3D simulado, no qual existiam postes de diferentes cores, um robô e um muro, delimitando a área na qual o robô podia se mover. No experimento, o robô devia regular suas necessidades corpóreas, a saber: sono (regulado quando o robô ficava parado), curiosidade (saciada quando o robô se aproximava de um poste) e estresse (regulado quando o robô experimentava um poste – ficando perto do mesmo, olhando-o, sendo que postes de cores diferentes influenciavam o nível de estresse de forma diferente). Os resultados dos experimentos comprovaram que robôs construídos a partir da arquitetura proposta podem apresentar um comportamento que um observador humano pode descrever como sendo inteligente, pois o robô, no decorrer de sua interação com o ambiente, passa a preferir experimentar postes de cores que diminuem seu estresse e tende a evitar os de cores que aumentam o nível dessa emoção. PALAVRAS-CHAVE: Robótica Situada; Robôs Autônomos Emocionais-cognitivos; Cognição Situada; Computação Bio-inspirada. Abstract In recent years, there has been an increasing interest in the development of applications of autonomous robots, capable of adapting themselves to an unpredicted and dynamic environment. However, the difficulties found in developing such applications using Classical Robotics ideas, are driving research efforts towards a new area: the Situated Robotics, which focuses on the embodied mind paradigm. So, it would be of great value, mainly for areas like Cognitive Science, Robotics and Artificial Intelligence, the development of an architecture for the creation of autonomous robots, even more if such architecture is flexible, extensible, and easy to use and test. This work presents an extension of the “Artífice” architecture for the development of emotional and cognitive autonomous robots. This architecture was first conceived for the creation of bio-inspired intelligent software agents. Changes were made in such a way that the core of the architecture (its nervous system) was encapsulated, while its peripheral system (everything else but the nervous system) became more flexible, in order to provide the framework to be usable for the creation of both software agents and hardware ones (i.e., robots).To ensure that the proposed architecture works adequately, computational experiments were done in a simulated world. Thus, a Pioneer simulated robot was living and navigating in a 3D simulated world, surrounded by a wall, in which some pillars were placed. The robot was expected to regulate its bodily needs: sleep (regulated whenever the robot momentarily stops), as well as its basic emotions of curiosity (regulation occurs as the robot gets closer to a pillar) and stress (regulation occurs as the robot experiences a pillar or interacts with it, staying near it for a while, seeing it, since different colors of the pillars contribute differently to the emotional regulation or deregulation of its stress). It was observed that while interacting with its environment, the robot tends to try pillars of those colors that lower its stress more rapidly and tends to avoid those colored pillars that increase the stress level. This same kind of behavior could be observed in all of the simulations carried out, showing that emotional-cognitive robots built with the proposed architecture can present a behavior that could be described as intelligent, from an observer point of view. KEYWORDS: Situated Robotics; Autonomous Robots; Emotional and Cognitive Robots; Embodied Cognition; Bio-Inspired Computation. Lista de Figuras 2.1 Modelo cliente/servidor do PSG. . . . . . . . . . . . . . . . . . . . . . p. 24 2.2 Abstração de hardware do PSG. . . . . . . . . . . . . . . . . . . . . . p. 25 2.3 Interface gráfica do Gazebo (wxGazebo). . . . . . . . . . . . . . . . . p. 27 2.4 Modelos com e sem peles (skins). . . . . . . . . . . . . . . . . . . . . p. 27 2.5 Teste de colisão com um robô. . . . . . . . . . . . . . . . . . . . . . . p. 28 2.6 Teste de colisão com dois robôs. . . . . . . . . . . . . . . . . . . . . . p. 28 2.7 Robô aranha usado pela NASA. . . . . . . . . . . . . . . . . . . . . . p. 28 2.8 Robô Segway com dinâmica de pêndulo físico. . . . . . . . . . . . . . p. 29 2.9 Arquitetura do simulador SimRobot. . . . . . . . . . . . . . . . . . . . p. 31 2.10 Interface do simulador SimRobot. . . . . . . . . . . . . . . . . . . . . . p. 32 3.1 Robô Darwin III. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 40 3.2 Esquema da neuroanatomia regional e funcional do Darwin X. . . . . p. 42 3.3 Robô Darwin XI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 43 3.4 Sistemas cognitivo e não-cognitivos do ASCS. . . . . . . . . . . . . . p. 44 3.5 Diagrama de blocos da arquitetura Artífice versão 0.7.5. . . . . . . . . p. 47 3.6 Aplicação de Vida Artificial usada para testar a arquitetura Artífice, versão 0.7.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 48 4.1 Diagrama de pacotes da versão 0.7.5 da arquitetura Artífice. . . . . . p. 51 4.2 Diagrama de pacotes da versão 0.8.0 da arquitetura Artífice. . . . . . p. 52 4.3 Diagrama de classes do mundo da versão 0.7.5. . . . . . . . . . . . . p. 54 4.4 Diagrama de classes da separação entre os tipos de mundos, na versão 0.8.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 54 4.5 Diagrama de classes do agente da versão 0.7.5. . . . . . . . . . . . . p. 54 4.6 Diagrama de classes da separação entre os tipos de agentes, na versão 0.8.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 54 4.7 Diagrama de classes das classes construtoras para criação de agentes da versão 0.7.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 54 4.8 Diagrama de classes da separação das classes construtoras para criação de agentes, na versão 0.8.0. . . . . . . . . . . . . . . . . . . . . p. 54 4.9 Diagrama de colaboração exemplificando como obter do servidor Player uma interface para o algoritmo blobFinder e para um controlador de movimentos horizontais, verticais e zoom (pan-tilt-zoom – PTZ). . . . p. 55 4.10 Diagrama de classes dos relacionamentos entre mundo, agente e classes construtoras de agentes, na versão 0.7.5. . . . . . . . . . . . p. 57 4.11 Diagrama de classes da flexibilização da arquitetura Artífice para a instanciação de agentes para interação com diferentes tipos de mundos. p. 57 4.12 Utilização da arquitetura para trabalhar em diversos tipos de ambiente. p. 58 4.13 Arquitetura Artífice para a criação de ASCSs. . . . . . . . . . . . . . . p. 58 4.14 Arquitetura Artífice para a criação de RAECs. . . . . . . . . . . . . . . p. 58 5.1 Robô Pioneer 2DX (real), e seu modelo simulado, foi utilizado nos experimentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 61 5.2 Ambiente simulado utilizado para os testes da versão 0.8.0 da arquitetura Artífice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 62 5.3 Dinâmica de funcionamento do robô, com foco na troca de estímulos. p. 65 5.4 Evolução dos níveis de ativação das emoções. . . . . . . . . . . . . . p. 70 Lista de Tabelas 5.1 Possibilidades de ação do robô numa determinada situação. . . . . . p. 64 5.2 Tendências para ação quando o robô se encontra sob uma determinada emoção. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 64 Lista de Abreviaturas e Siglas ASCS Agente de Software Cognitivo Situado Cefet-MG Centro Federal de Educação Tecnológica de Minas Gerais CI Cognição Incorporada CS Cognição Situada DBC Dispositivo Baseado no Cérebro GPSI Grupo de Pesquisa em Sistemas Inteligentes IA Inteligência Artificial (Clássica) LSI Laboratório de Sistemas Inteligentes PSG Projeto Player/Stage/Gazebo RAEC Robô Autônomo Emocional Cognitivo RC Robótica Clássica RS Robótica Situada TSGN Teoria de Seleção dos Grupos Neuronais Sumário 1 Introdução p. 15 1.1 Relevância do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 18 1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 19 1.3 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 19 1.4 Estrutura da dissertação . . . . . . . . . . . . . . . . . . . . . . . . . . p. 20 2 Simuladores p. 21 2.1 Simuladores avaliados . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 22 2.1.1 Projeto Player/Stage/Gazebo . . . . . . . . . . . . . . . . . . . p. 23 2.1.2 SimRobot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 29 2.2 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 32 3 Trabalhos relacionados p. 34 3.1 Inspirações biológicas na Robótica Situada . . . . . . . . . . . . . . . p. 37 3.2 A arquitetura Darwin . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 38 3.3 A arquitetura Artífice . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 43 3.4 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 47 4 Arquitetura Artífice para robôs bio-inspirados p. 50 4.1 Reorganização dos pacotes da arquitetura . . . . . . . . . . . . . . . p. 50 4.2 Integração com o arcabouço Player/Stage/Gazebo . . . . . . . . . . . p. 50 4.3 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 58 5 Experimentos computacionais, análise e discussão dos resultados p. 60 5.1 A aplicação criada para os testes . . . . . . . . . . . . . . . . . . . . . p. 61 5.1.1 Comportamentos emergentes . . . . . . . . . . . . . . . . . . p. 62 5.1.2 Dinâmica dos componentes internos do robô . . . . . . . . . . p. 65 5.2 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 68 6 Conclusão p. 71 6.1 Observações sobre a arquitetura . . . . . . . . . . . . . . . . . . . . . p. 72 6.2 Principais contribuições deste trabalho . . . . . . . . . . . . . . . . . . p. 73 6.3 Dificuldades encontradas . . . . . . . . . . . . . . . . . . . . . . . . . p. 73 6.4 Trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 74 6.5 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 75 Referências Bibliográficas p. 76 Anexo A -- Parâmetros de configuração da aplicação p. 82 Anexo B -- Parâmetros de configuração da simulação p. 85 B.1 Mundo 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 85 B.2 Servidor Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 89 B.3 Configuração do algoritmo blobfinder p. 91 . . . . . . . . . . . . . . . . . . Anexo C -- Passo-a-passo para instalação do arcabouço Player / Stage / Gazebo p. 92 C.1 Instalação do servidor Player . . . . . . . . . . . . . . . . . . . . . . . p. 92 C.2 Instalação do simulador 2D Stage . . . . . . . . . . . . . . . . . . . . p. 94 C.3 Instalação do simulador 3D Gazebo . . . . . . . . . . . . . . . . . . . p. 94 C.4 Compilação de programas . . . . . . . . . . . . . . . . . . . . . . . . . p. 95 C.5 Rodando um programa com Player . . . . . . . . . . . . . . . . . . . . p. 96 15 1 Introdução Desde a antigüidade, a biologia vem sendo fonte de inspiração para várias de nossas criações. Nós humanos ficamos fascinados, maravilhados com a perfeição da natureza e, ao encontrarmos algum problema, boa parte das vezes é dela que buscamos nossa inspiração para contorná-lo. Inspirados nos animais, a humanidade já inventou vários dispositivos, como, por exemplo, avião, submarino, roupas de natação, sonar, dentre outros. A área da Computação também sofre bastante influência da biologia. Tal fato pode ser constatado desde sua ferramenta principal, o computador, que foi inspirado no funcionamento do cérebro, tal qual era conhecido à época (NEUMANN, 1948), até as várias técnicas hoje usadas para solucionar diversos tipos de problemas, dentre elas, citam-se os algoritmos genéticos, de colônias de formigas e os baseados no funcionamento do sistema imunológico. Ainda com inspiração na natureza, temos construído máquinas capazes de, a partir de comandos dados por nós, substituir-nos na execução de atividades repetitivas, que exigem grande esforço (como por exemplo, levantar algo muito pesado) e que até mesmo podem ser perigosas. A construção de tais ferramentas está dentro da área da Robótica. A Robótica é a ciência ou o estudo da tecnologia associado com o projeto, fabricação, teoria e aplicação de robôs. Um robô é um dispositivo, ou grupo de dispositivos, eletromecânicos e/ou biomecânicos capazes de realizar trabalhos de maneira autônoma, pré-programada, ou através de controle humano (MURPHY, 2000; SELIG, 1992). Porém, às vezes, precisamos de máquinas que sejam menos dependentes de nossos comandos, que tenham um bom grau de autonomia. Neste trabalho, a palavra autonomia será usada no sentido de um robô agir independentemente, de forma consciente ou inconscientemente, num ambiente imprevisível e dinâmico, a fim de susten- 1 Introdução 16 tar sua existência (e.g., mantendo energia suficiente, evitando danos etc.) e de atingir alguma meta própria futura (HASELAGER, 2004; PFEIFER; VERSCHURE, 1992; BOURGINE; VARELA, 1992). A autonomia não será conseguida através de um mecanismo central de controle (pois o cérebro não será considerado como uma unidade central de controle, um processador de informação), e nem através de regras de como se comportar em determinado ambiente. Seu comportamento autônomo deve emergir da interação da máquina com seu meio, e deverá ser resultado da busca, por parte do robô, por estar sempre em congruência com o seu ambiente, com um se adaptando ao outro. “Com relação à autonomia, a Robótica constitui uma abordagem mais promissora em comparação à Inteligência Artificial tradicional (IA) [. . . ] por causa da ênfase na importância do corpo e do ambiente para a cognição.” (HASELAGER, 2004) No presente trabalho, a Robótica será dividida em duas linhas ou paradigmas: a Robótica Clássica (RC), que deriva da aplicação dos conceitos da Inteligência Artificial tradicional (IA) e a Robótica Situada (RS), cuja base teórico-conceitual advém da Cognição Situada (CS). Por compartilhar da mesma visão da IA, de que o cérebro é um processador simbólico e de que o mesmo possui uma representação ou mapa do mundo externo (CLANCEY, 1997; CLARK, 1997; SANTOS, 2003; CAMPOS, 2006), a RC tem encontrado dificuldades para lidar com o dinamismo do ambiente, fazendo com que a autonomia do robô fique bastante prejudicada. Nessa abordagem, um robô é programado com regras rígidas de como se comportar no ambiente, na maioria das vezes, com mapas deste sendo embutidos naquele. Com isso, o robô consegue executar, sem maiores problemas, as tarefas para as quais foi projetado para realizar no ambiente predefinido. Porém, caso o meio sofra alterações, há grande possibilidade de o robô ficar impedido de continuar executando as tarefas para as quais foi programado. Há casos em que ele simplesmente “trava” ao passar por uma situação inesperada, não conseguindo reagir de forma satisfatória (“inteligente”) à dinamicidade do ambiente e inclusive à sua (pois o robô pode sofrer danos, perder algum componente, e.g. um braço). Vale ressaltar que a palavra inteligência é usada neste trabalho no sentido de um organismo (robô) ser capaz de se adaptar ao seu meio, sobreviver, compartilhando dos 1 Introdução 17 conceitos de (MATURANA; VARELA, 2004), que diz que “todo fazer é um conhecer e todo conhecer é um fazer”. Maiores detalhes sobre essa abordagem de inteligência podem ser obtidos em (CAMPOS, 2006; SANTOS, 2003). Um novo paradigma da Robótica emergiu na duas últimas décadas, o qual rejeita a visão clássica da mente como sendo um centro de controle, onde toda a informação captada do ambiente é processada para se atingir uma meta, um objetivo (CLARK, 1997). A Robótica Situada1 (RS) surgiu como uma forma de melhorar a autonomia dos robôs. Nesta linha, a autonomia pode ser alcançada graças à melhor compreensão do processo cognitivo-emocional e à nova abordagem dada a ele, para a qual, baseada na Cognição Situada2 (CS), não existe mundo pré-dado, ele é construído no curso do processo de interação de um organismo (no caso, robô) com seu meio (MATURANA; VARELA, 2004). O mundo real é usado como seu melhor modelo (BROOKS, 1998). Segundo (BROOKS, 1998), a complexidade dos comportamentos está nos olhos dos observadores e não em quem os executa. Portanto, a autonomia será atingida não pela inserção excessiva de regras e modelos no robô, e sim pelo comportamento global que emergirá da interação, entre si, dos componentes internos do robô e entre os componentes do robô e seu ambiente. No que concerne à RS (HARTER; KOZMA; GRAESSER, 2001): (a). a percepção possui caráter ativo, não passivo (percepção-em-ação). Nós tomamos conhecimento daquilo que está à nossa volta à medida que interagimos com nosso ambiente. Nós aprendemos através de nossos atos, aquilo que sentimos é fruto de nossas ações e nossas ações são tomadas de acordo com o que sentimos, há uma co-dependência entre sentir e agir; (b). o mundo é seu melhor modelo próprio. Ao se trabalhar no mundo real temos de graça e sem esforço várias características, como as forças físicas, que influenciam diretamente o processo cognitivo, por causa do caráter ativo da percepção. Quanto mais simplificado for o modelo do ambiente, mais simples serão as capacidades cognitivas do agente, logo, é melhor utilizar o próprio mundo real; 1O nome Robótica Situada está sendo dado às linhas da Robótica que não compartilham da visão da RC e da IA, do cérebro como um processador simbólico. A Robótica Situada compartilha do mesmo ideário da Cognição Situada (MATURANA; VARELA, 2004; CLANCEY, 1997) – daí o nome “Robótica Situada”. 2 A teoria da Cognição Situada defende que cada pensamento e ação humanos são adaptados ao ambiente, isto é, situados, porque o que as pessoas percebem, como elas concebem suas atividades e o que elas fazem fisicamente desevolvem-se juntos (CLANCEY, 1997). 1.1 Relevância do trabalho 18 (c). a cognição emerge de atividades paralelas e distribuídas do cérebro. Não há uma unidade central de controle que comanda as diversas áreas do cérebro. O sistema nervoso opera através do acoplamento entre as diversas áreas que o compõem, cada qual tendo sua função específica e trabalhando em congruência com outras áreas. É da operação coordenada de cada área que emerge o comportamento cognitivo global; (d). é necessário haver interação com o mundo, co-evolução com o ambiente. Uma vez que o ambiente não é estático, o agente deve se manter em congruência com o mesmo, manter o acoplamento estrutural com o meio. O agente deve se adequar às mudanças ambientais para que não perca a capacidade de interagir com o mesmo, afetando assim sua cognição, uma vez que esta é dependente da capacidade de interação entre agente e ambiente. Agente e ambiente devem adequar-se um às mudanças do outro. “A idéia chave para se produzir comportamento inteligente é que a incorporação (embodiment) não significa meramente o controle de componentes materiais, mas o real acoplamento dinâmico entre o agente inteligente e seu ambiente. O acoplamento dinâmico coerente do agente com seu ambiente é a fonte do comportamento e não somente o sistema de controle do agente. A abordagem da cognição incorporada mudou o rumo da modelagem de sistemas inteligentes que sai do estudo de uma base de conhecimento intrínseca, com sistemas de controle ricos em representações do mundo real, para o estudo da dinâmica de redes de componentes de agente e ambiente (auto-organização).” (COSTA; ROCHA, 2005) Este trabalho se encaixa neste novo paradigma da Robótica e visa a dar uma contribuição ao mesmo no que concerne à criação de robôs autônomos emocionaiscognitivos (RAEC), por meio da adaptação da arquitetura Artífice (BORGES, 2002) para a criação de tais robôs. Esta arquitetura será detalhada na Seção 3.3. 1.1 Relevância do trabalho Atualmente os pesquisadores têm dado grande importância à questão da não separação da mente e do corpo para o desenvolvimento de sistemas inteligentes. Sendo 1.2 Objetivos 19 esta nova abordagem multidisciplinar, englobando, dentre outras áreas, Psicologia, Neurociência, Matemática, Computação, Biologia, Física, seria conveniente ter um arcabouço (framework ) com o qual se pudesse testar seus experimentos bem como incorporar novas características para deixar o agente, criado a partir do mesmo, mais plausível biologicamente. A arquitetura Artífice tem-se mostrado (PIRES, 2005; CAMPOS, 2006; OLIVEIRA, 2006) uma arquitetura com boa flexibilidade para tais experimentos, em agentes de software. Este trabalho mostra-se relevante à medida que estende o uso de tal arquitetura também para experimentos em Robótica, sejam os experimentos feitos com robôs reais ou simulados. Haja visto, como foi dito no começo desta seção, que atualmente tem-se buscado criar robôs mais independentes do controle humano, com a extensão da arquitetura Artífice, a comunidade científica poderá ter à sua disposição mais uma opção para a criação de robôs autônomos, dotados ou capazes de processos emocionaiscognitivos. 1.2 Objetivos Este trabalho tem como objetivo geral contribuir para o avanço da Robótica Situada com o desenvolvimento de mais uma arquitetura alicerçada em sólidas bases teóricoconceituais, para a criação de robôs autônomos que apresentem comportamento que se possa dizer ser inteligente: a arquitetura Artífice. Especificamente, o presente trabalho propõe que a Arquitetura Artífice também seja usada para programar robôs, mais especificamente, robôs autônomos emocionaiscognitivos e, com isso, reforçar o potencial da mesma e do referencial teórico base de sua criação para o desenvolvimento de agentes (tanto de software quanto de hardware) inteligentes. 1.3 Metodologia Para a execução do trabalho, foi feita uma pesquisa de caráter qualitativo, a qual fez uso de método procedimental em que uma conclusão foi obtida a partir da análise e interpretação de resultados qualitativos de um experimento de simulação de Robótica. 1.4 Estrutura da dissertação 20 O trabalho, foi realizado com base na versão 0.7.5 da arquitetura Artífice (para maiores detalhes, veja (CAMPOS, 2006)). Para a conclusão deste trabalho, foram seguidos os seguintes passos: 1. revisão bibliográfica sobre Robótica Situada; 2. revisão bibliográfica sobre simuladores de robôs e escolha de um ambiente/plataforma de simulação para ser usado no trabalho; 3. estudo sobre o simulador de robôs escolhido; 4. estudo da arquitetura Artífice; 5. adequação da arquitetura Artífice para o uso em robôs, mediante a integração da mesma à plataforma/ambiente de simulação; 6. teste do funcionamento da arquitetura no simulador de robôs; 7. análise crítica da nova versão da arquitetura. 1.4 Estrutura da dissertação Este capítulo introduziu e contextualizou o trabalho realizado. Uma discussão sobre o uso de simuladores, no caso, de robôs, é feita no Capítulo 2, onde também são citados alguns simuladores existentes atualmente e, dentre estes, é discutida a escolha do simulador com o qual o trabalho foi desenvolvido. O desenvolvimento de robôs emocionais-cognitivos, que têm embutido um cérebro artificial biologicamente inspirado, é discutido no Capítulo 3. O Capítulo 4 trata da reestruturação da arquitetura Artífice para que a mesma pudesse ser usada para a criação de robôs autônomos, enquanto o Capítulo 5 apresenta e discute os resultados alcançados com este trabalho. Finalmente, o Capítulo 6 apresenta a conclusão deste trabalho, bem como discute as principais contribuições dadas e registra algumas das possibilidades de trabalhos futuros nesta área. 21 2 Simuladores Atualmente, simuladores vêm sendo usados em diversas áreas tais como medicina, aeronáutica, automobilismo, engenharia civil, dentre outras. Estes geralmente são usados para treinamentos e testes iniciais, uma vez que as implementações dos experimentos nesses simuladores são, usualmente, mais rápidas e menos custosas. O desenvolvimento de aplicações para a área da robótica também faz uso de simuladores, com o intuito de minimizar o tempo de integração com o hardware, facilitar os ajustes necessários decorrentes de testes, facilitar a depuração, possibilitar testes com componentes novos, ou que estão sendo planejados, dentre outras situações. Trabalhar diretamente com uma situação real (mundo real) não é trivial, pois os objetos e ambiente não necessariamente comportam-se como esperamos e precisamos. Num ambiente simulado, uma determinada situação pode ser forçada para facilitar os experimentos, além de alguns componentes que existem na situação real poderem ser removidos para efeito de simplificação dos testes. Ou seja, numa simulação é maior a facilidade de se esquematizar uma situação específica que se deseja estudar. Outra vantagem é que, num ambiente simulado, os danos materiais com os testes são menores ou até mesmo inexistentes. Por exemplo, suponha que foi projetado um novo modelo de amortecedor para carros. Antes de se testar o mesmo num veículo real, seria bom testá-lo num ambiente simulado com características próximas ao real. Apenas após passar nos testes simulados o amortecedor deveria ser testado num modelo real. Com isso, se o projeto inicial der errado, nenhum dano será causado no veículo real, pois já terá falhado na simulação. Um ambiente simulado pode ter vários graus de realismo, dependendo dos testes que se quer fazer. Por exemplo, se queremos fazer testes com um sistema de navegação de um robô, em princípio só nos basta que o ambiente simulado tenha um robô com sensores capazes de detectar distância entre obstáculos e os próprios obstáculos. A simulação pode-se dar num mundo mais simples, 2D, sem vários detalhes 2.1 Simuladores avaliados 22 do mundo físico como atrito e gravidade. Já em testes de um sistema de equilíbrio para robôs, deseja-se que o ambiente seja mais realista, em 3D, incluindo efeitos de gravidade e atrito. No entanto, é preciso cautela no uso de tais ferramentas computacionais, pois como foi dito, numa simulação é feita uma simplificação, em algumas medidas, do mundo real. Com isso, perde-se muito do repertório de estímulos e variáveis que estão disponíveis no mundo real. Assim sendo, pode ser que um experimento que funcionou nos testes simulados falhem nos reais. Uma vez que a arquitetura Artífice já vem sendo testada, com sucesso (PIRES, 2005; CAMPOS, 2006), num mundo artificial 2D, com robôs de software, queremos agora comprovar sua eficácia num ambiente mais próximo ao mundo real. Com isso, algumas características para o simulador de robôs são desejadas: 1. simulação dinâmica de ambientes tri-dimensionais; 2. ambiente simulado com algumas características físicas do mundo real, tais como atrito e gravidade; 3. suporte à linguagem Java (na qual a arquitetura está sendo desenvolvida); 4. possibilidade de simulação em tempo real, ou seja, com os modelos sendo atualizados num intervalo fixo de tempo; 5. suporte a vários tipos de robôs, necessariamente ao Pioneer (ACTIVMEDIA, 2008), pois este deverá ser adquirido pelo Cefet-MG para experimentos futuros. Na seção seguinte, serão discutidos brevemente alguns simuladores disponíveis atualmente no mercado, dando maior ênfase aos que satisfizeram todos os requisitos acima. Também será discutida a escolha de um simulador para o desenvolvimento deste trabalho. 2.1 Simuladores avaliados Foram analisados os seguintes simuladores: 1. Player/Stage/Gazebo (COLLETT; MACDONALD; GERKEY, 2005), (GERKEY; VAUGHAN; HOWARD, 2003; GERKEY et al., 2008; KOENIG; HOWARD, 2004); 2.1 Simuladores avaliados 23 2. SimRobot (LAUE; SPIESS; RöFER, 2006); 3. Carmen (CARMEN-TEAM, 2008); 4. TeamBots (BALCH, 1998); 5. Microsoft Robotics Studio (MICROSOFT, 2008; REA, 2006); 6. ARIA/MobileEyes/MobileSim (ACTIVMEDIA, 2008). Alguns simuladores foram descartados por não atenderem a todas as exigências deste projeto, no que diz respeito aos requisitos da seção anterior. O simuladores Carmen, TeamBots e ARIA/MobileEyes/MobileSim não satisfizeram os requisitos 1 e 2; o simulador Microsoft Robotics Studio não satisfez ao requisito 3; e os simuladores Carmen, TeamBots não satisfizeram o requisito 5. Nas próximas seções serão mostrados os simuladores que satisfizeram os requisitos desejados (simuladores Player/Stage/Gazebo e SimRobot). 2.1.1 Projeto Player/Stage/Gazebo O projeto Player/Stage/Gazebo (PSG) (GERKEY et al., 2008) utiliza ferramentas de software livre para criar um arcabouço (framework ) para pesquisas na área de robótica e sistemas sensores. O projeto é composto por três módulos: um servidor (Player) e dois simuladores, sendo um para ambientes 2D (Stage) e outro para 3D (Gazebo). Player Player é um servidor para controle de robôs que pode ser acessado tanto por uma rede, quanto diretamente, através de sua API (do inglês, Application Programming Interface – Interface de Programação de Aplicativos), que fornece uma interface simples para os sensores e atuadores do robô. Como funciona em rede, os programas clientes se comunicam com o servidor através de troca de mensagens por vários protocolos, dentre eles TCP/IP, CORBA e JNI, sendo mais comum a comunicação via TCP/IP. O modelo cliente/servidor pode ser visto na Figura 2.1. Algumas das características deste servidor são: 2.1 Simuladores avaliados 24 1. é independente de linguagem e plataforma; 2. o servidor não precisa saber como sua aplicação está estruturada; 3. permite vários dispositivos representarem a mesma interface; 4. suporta qualquer número de clientes; 5. seu comportamento pode ser configurado sem ter que reiniciar o servidor (on the fly); 6. é um software livre. Figura 2.1: Modelo cliente/servidor do PSG. Adaptado de: Tutorial. . . (2007) O servidor Player comunica-se com cada dispositivo específico do robô utilizando device drivers e disponibilizando a seus clientes interfaces abstratas para tais dispositivos (Figura 2.2). Isto é, para o servidor se comunicar com o robô e acessar seus dispositivos, é necessário um driver específico para aquele tipo de robô, no entanto, o programa cliente apenas necessita saber qual dispositivo acessar, como, por exemplo, sonar, laser e odômetro. Com isso, a aplicação cliente não precisa ser reescrita para ser executada em outro robô. Tais drivers são mantidos como plug-ins para o Player e são seus arquivos de configuração que determinam quais device drivers serão usados. Os sensores e os atuadores são tratados da mesma forma que dispositivos de hardware o são em sistemas operacionais GNU/Linux, na forma de arquivos. Para ler os sensores, são abertos para leitura os arquivos correspondentes aos mesmos, e 2.1 Simuladores avaliados 25 Figura 2.2: Abstração de hardware do PSG. Adaptado de: Tutorial. . . (2007) para enviar comandos aos atuadores, são abertos para escrita os arquivos correspondentes aos mesmos. O Player suporta vários hardwares e robôs, dentre eles estão os robôs Khephera e Pioneer e também disponibiliza algoritmos para controlar e sentir eventos. A lista do hardware suportado pode ser encontrada em <http://playerstage.sourceforge.net/doc/ Player-cvs/player/supported_hardware.html>. Ainda, por ser distribuído sob licensa GPL e por sua arquitetura modular, torna-se fácil criar suporte a novos hardwares. Stage Stage disponibiliza uma população simulada de robôs e sensores operando num ambiente bi-dimensional. Assim como o Gazebo (a ser visto no próximo tópico), o Stage não simula dispositivos específicos, como, por exemplo, um robô Pioneer. Em vez disso, ele possui um modelo configurável de uma interface abstrata para o dispositivo, como “laser ” e “posicionamento”, os quais são configurados num arquivo “world”, que contém a descrição do ambiente a ser simulado. Sendo assim, pode-se criar uma interface que seja a mais próxima da usada por um robô sem ter que codificar algo específico da 2.1 Simuladores avaliados 26 arquitetura do mesmo. Os modelos de sensores e atuadores estão disponíveis ao Player através de suas interfaces padrões, como por exemplo, laser e sonar. Como o acesso aos sensores e atuadores é feito através das interfaces padrões dos mesmos, para a aplicação cliente não importa se o ambiente/robô é simulado ou real. Vale ressaltar que os device drivers do Player são usados tanto pelo Stage quanto pelo Gazebo. Para se usar o Stage com o Player em vez de dispositivos reais, basta carregar o driver do primeiro no último. Por padrão, o Stage é executado em tempo-real, com seus modelos sendo atualizados num intervalo fixo e configurável de tempo. Mas ele também pode ser executado em modo otimizado (fast mode), não esperando assim pelo relógio de temporeal e, com isso, sendo executado freqüentemente de modo mais rápido que quando operando em modo de tempo-real. Gazebo Gazebo é um ambiente tri-dimensional simulado para reproduzir a dinâmica de um ambiente que um robô pode encontrar. Neste ambiente, todos os objetos têm massa, velocidade, atrito e inúmeros atributos que permitem que eles se comportem como no mundo real, podendo ser puxados, empurrados, carregados. Na simulação, os robôs são compostos por estruturas dinâmicas conectadas por juntas. Forças lineares e angulares (torques) podem ser aplicadas às superfícies e às juntas para gerar locomoção e interação com o ambiente. O mundo é descrito por meio de paisagens, construções e outros objetos criados pelo usuário. Todos os aspectos da simulação são controláveis, desde as condições de iluminação até os coeficientes de atrito. Os controles são feitos através da biblioteca do Gazebo, que oferece meios para ajustar vários atributos como a velocidade de rodas, leitura dos dados de um dispositivo de laser, manipulação de câmera e inserção de objetos do ambiente, em tempo de execução. Porém, nem tudo é simulado no Gazebo. Dentre os tipos de objetos/eventos que não são simulados, encontram-se modelos físicos de solos, areia, grama, dentre outras superfícies encontradas na natureza. Também, não são implementados objetos 2.1 Simuladores avaliados 27 deformáveis e dinâmicas térmicas e de fluidos. Isso significa que também o Gazebo é um projeto em construção. Imagens do simulador As figuras de 2.3 a 2.8 são relacionadas ao projeto Player/Stage/Gazebo. Figura 2.3: Interface gráfica do Gazebo (wxGazebo). Fonte: Gerkey et al. (2008) Figura 2.4: Modelos com e sem peles (skins). Fonte: Gerkey et al. (2008) 2.1 Simuladores avaliados 28 Figura 2.5: Teste de colisão com um robô. Fonte: Gerkey et al. (2008) Figura 2.6: Teste de colisão com dois robôs. Fonte: Gerkey et al. (2008) Figura 2.7: Robô aranha usado pela NASA. Fonte: Gerkey et al. (2008) 2.1 Simuladores avaliados 29 Figura 2.8: Robô Segway com dinâmica de pêndulo físico. Fonte: Gerkey et al. (2008) Aplicações O arcabouço Player/Stage/Gazebo é usado por várias instituições acadêmicas e laboratórios industriais de pesquisa espalhados pelo mundo e também é usado para o ensino de robótica. Dentre seus usuários destacam-se: NASA, Intel Corporation, The Boeing Company, University of Southern California Robotics Research Lab e Reconfigurable Computing Laboratory (USP). A lista dos usuários deste projeto pode ser vista em <http://playerstage.sourceforge.net/wiki/PlayerUsers>. Este simulador vem sendo utilizado para aplicações de realidade aumentada, cooperação entre robôs, distribuição em redes de sensores, navegação de robôs, organização espacial de grupos de robôs, dentre outras. 2.1.2 SimRobot O SimRobot (SIEMS et al., 2008) é um simulador tri-dimensional de robôs, de código aberto e com interface parecida com a do Gazebo, visto na seção 2.1.1. Assim como o PSG, este simulador não é limitado a uma classe especial de robôs, podendo ser usado em diferentes modelos. A flexibilidade na modelagem dos robôs neste ambiente se dá pelo uso de uma linguagem baseada em XML (do inglês, Extensible Markup Language – Linguagem Extensiva de Marcação), chamada RoSiML. Essa linguagem parte de um esforço conjunto para se estabelecer uma interface comum entre os simuladores de robôs, para que se possa trocar componentes entre os diversos simuladores existentes e com a 2.1 Simuladores avaliados 30 qual os usuários podem criar seus próprios modelos por composição de modelos mais simples, descritos em forma de árvore, num arquivo XML. Por exemplo, um carro pode ser criado compondo-se quatro rodas e um paralelepípedo. As características dos objetos modelados como atrito e massa também são descritas neste arquivo XML. Um exemplo do arquivo que descreve um objeto composto pode ser visto abaixo. <Hinge name =" subWheelAxis "> <AnchorPoint x=" 0.022 " y="0" z="0"/> <Axis x="0" y="1" z="0"/> <Elements > <Cylinder radius =" 0.006 " height =" 0.004 "> <Rotation x="90" y="0" z="0"/> <Appearance ref=" VeryDarkGray "/> < PhysicalAttributes > <Mass value =" 0.02 "/> </ PhysicalAttributes > </ Cylinder > </ Elements > </ Hinge > Assim como o PSG, o SimRobot faz uso, para simulação da dinâmica dos objetos e do mundo, da biblioteca ODE (Open Dinamic Engine) (SMITH, 2008), e para a renderização, a biblioteca OpenGL (OPENGL. . . , 2008). Parecido com o sistema de sensores do PSG, o SimRobot não inclui uma classe específica de sensores, mas sim classes genéricas. As classes disponíveis são: câmera, sensor de distância, sensor de impacto e atuador de estado. Arquitetura A Figura 2.9 mostra a arquitetura do simulador. O executável do simulador é formado pela ligação de três partes: o núcleo do simulador (SimRobotCore), a interface gráfica com o usuário (GUI – Graphical User Interface) e o controlador (aplicação para controle do robô – Controller ). Os modelos são carregados do arquivo XML de descrição dos objetos. Pela Figura 2.9, pode-se ver que a arquitetura deste simulador difere daquela do 2.1 Simuladores avaliados 31 Figura 2.9: Arquitetura do simulador SimRobot. Fonte: Laue, Spiess e Röfer (2006). PSG, que é composta por módulos que são executados à parte, cada um independente do outro. O SimRobot é composto pelos seguintes itens: • SimRobotCore: núcleo do simulador. Componente que modela os robôs e o ambiente, executa comandos e lê os sensores; • GUI: interface gráfica. É a responsável por exibir informações e interagir com o usuário; • Controller: controlador. É a aplicação do usuário propriamente dita. É ele quem comanda o robô; • Scene: especificação dos robôs e do ambiente. Modelado num arquivo XML e carregado em tempo de execução. Imagens A Figura 2.10 é referente ao SimRobot. Nela são mostrados, da esquerda para a direita de cima para baixo: a visão em árvore do arquivo XML dos modelos; uma visão do ambiente completo; uma imagem simulada de uma câmera; uma visão do modelo do mundo do robô, definida pelo usuário e o console. 2.2 Considerações finais 32 Figura 2.10: Interface do simulador SimRobot. Fonte: Laue, Spiess e Röfer (2006). Aplicações O SimRobot vem sendo usado pela Universidade de Dortmund, Manufacturing Engineering Laboratory, Intelligent Systems Division (NIST – National Institute of Standards and Technology), Departamento de Engenharia da Informação da Universidade de Padova, dentre outros. Dentre as aplicações que usam esse simulador, estão futebol de robôs, cadeiras de rodas autônomas e localização espacial. 2.2 Considerações finais Simuladores ajudam nos testes iniciais de um projeto, seja por sua flexibilidade e facilidade em se fazerem testes, seja pela economia que recursos. Para este trabalho, 2.2 Considerações finais 33 o simulador escolhido foi o PSG, pois, como pode ser visto neste capítulo, o arcabouço PSG é bem flexível com relação aos dispositivos e robôs suportados. Também, pelo fato do servidor Player acessar os dispositivos simulados como dispositivos reais, para a aplicação cliente fica indiferente, transparente, se se está trabalhando com um ambiente real ou com um simulado. Tais características permitem que a aplicação cliente, se bem projetada, possa ser executada em vários robôs/ambientes simulados, sem que seja necessária sua modificação. Os usuários, a documentação e a facilidade de ajuda (através de fóruns de discussão) também foram pontos cruciais na escolha do simulador. 34 3 Trabalhos relacionados No início do desenvolvimento da Robótica (considerando-se aqui a Rótica aplicada à busca do desenvolvimento de robôs autônomos) esta possuía grande influência da Inteligência Artificial Clássica (NEWELL, 1980) e o funcionamento dos robôs era fundamentado no ciclo sentir, planejar e agir. O robô era projetado para obter informações sensoriais, planejar serus próximos passos (normalmente construindo um modelo do mundo) e finalmente agir. Essa forma de arquitetura de robô recebeu o nome de arquitetura deliberativa (FIKES; NILSSON, 1971; GENESERETH; NILSSON, 1987; SHARDLOW, 1990). Porém, com o tempo começou-se a perceber que a Robótica é diferente das aplicações tradicionais da IA e começou a se focar em três questões: 1. situacionismo (situatedness): o robô está circundado pelo mundo real, não por representações abstratas; 2. incorporação (embodiment): o robô possui um corpo físico; 3. emergência (emergence): a inteligência é resultado da iteração com o ambiente. Essa nova forma de ver a Robótica passou a ser chamada de reativa. Dentre os trabalhos (AGRE; CHAPMAN, 1987; KAELBLING; ROSENSCHEIN, 1995) nessa área, pode-se dizer que um dos pioneiros e grande impulsionador do desenvolvimento de robôs reativos foi Brooks, com sua arquitetura Subsumption, a qual “oferece um meio de escrever programas inteligentes para controle de robôs móveis” (BROOKS, 1998). Brooks (1986) fez algumas hipóteses que foram incorporadas à sua arquitetura, dentre as quais destacam-se: 1. comportamentos complexos não significam arquiteturas complexas. O nível de complexidade quem atribui é o observador, não o projetista; 3 Trabalhos relacionados 35 2. as coisas devem ser simples. Se elas começam a ficar muito complexas, é hora de rever o que se está fazendo. Talvez algo esteja caminhando de forma errada. Sua arquitetura é baseada no processo de decomposição do comportamento em camadas, as quais são máquinas de estados finitos e são divididas por níveis de competência, sendo que não há uma central de controle das mesmas. Com isso, temos que a arquitetura é composta por camadas de redes de máquinas de estados finitos, que operam independentemente e de forma assíncrona uma das outras, comunicando-se através de troca de mensagens, recebendo dados no seu barramento de entrada e enviando dados pelo seu barramento de saída. O processo cognitivo emerge como resultado da auto-organização e acoplamento entre cada unidade interna do robô e do mesmo com o meio onde se encontra. Para Brooks (1986), “a idéia-chave dos níveis de competência é que nós podemos construir camadas de um sistema de controle correspondendo a cada nível de competência e simplesmente adicionar uma nova camada a um conjunto existente para um nível mais alto de competência global”. Com isso, o que já foi construído não precisa ser mudado quando se for melhorar a arquitetura. Basta que se adicionem novas camadas. Os dois aspectos básicos de destaque desta arquitetura são que: (a) é necessária uma metodologia para quebrar os comportamentos em camadas; (b) cada rede de máquinas de estados finitos confere à sua camada uma estrutura e um repositório de estados. Nesta arquitetura, não há representação do mundo, sendo que os componentes da arquitetura atuam diretamente no mundo “real”. Não existem representações simbólicas como na IA. Além das arquiteturas deliberativas e reativas também há pesquisas (BURMEISTER; SUNDERMEYER, 1990; FERGUSON, 1992) feitas usando-se o melhor dos dois mundos, com a utilização de módulos de percepção-ação, juntamente com um planejamento de mais alto nível se necessário. A este modo de se projetar um robô deu-se o nome de de arquitetura híbrida, na qual normalmente utilizam-se três camadas (GAT, 1998): • camada reativa: – controle de baixo nível do robôs; – módulos percepção-ação. • camada executiva (seqüenciador): 3 Trabalhos relacionados 36 – decide quais módulos ativar a partir dos planos definidos na camada deliberativa; – montar uma representação que possa ser utilizada pela camada deliberativa a partir das informações sensoriais. • Camada Deliberativa – planejamento mais complexo/demorado. Pelas arquiteturas acima mostradas, pode-se observar que já possuem alguma inspiração na natureza, como por exemplo, o modo de agir de um organismo. Como visto no Capítulo 1, tem-se buscado cada vez mais inspirações na natureza para pesquisas em diversas áreas do conhecimento como economia, engenharia, matemática e computação. O desenvolvimento de sistemas (robôs) bio-inspirados tem ganhado destaque a cada dia, sendo que o nível de inspiração vindo da Biologia varia. Há quem busque, nesta, inspiração para a forma e a aparência (e.g. um cão de brinquedo); outros para o comportamento (e.g. um robô que se locomove como um inseto); outros para a organização (e.g redes neurais artificiais). Especificamente, uma área que vem tendo grande influência da Biologia é a das Ciências Cognitivas, que tem o enfoque em como se dá o processo cognitivo nos animais, principalmente nos humanos e a qual tem compartilhado cada vez mais das bases teórico-conceituais da Cognição Situada (CS), ou Cognição Incorporada (CI). A CI refere-se ao modo de pensar que argumenta que o ato cognitivo somente pode ser adequadamente compreendido se for levado em consideração o conjunto mente-em-um-corpo. A CI prima por evitar a modelagem excessiva do “mundo real”. A idéia é trocar a carga de processamento de informação pela sensibilização do sistema a aspectos particulares do mundo – aspectos que têm relevância apenas naquele nicho em que o sistema está imerso (CLARK, 1997). A idéia é que o cérebro não deve ser visto como um local primário de descrições internas de estados externos associados a um determinado assunto; de preferência, ele deve ser visto como um local de estruturas internas que agem como operadores sobre um mundo através de seu papel como desencadeante de ações (CLARK, 1997). Possuindo objetos de estudo em comum, as pesquisas que dizem respeito ao desenvolvimento de agentes inteligentes, autônomos, vêm acompanhado a tendência das Ciências Cognitivas e, cada vez mais, vêm migrando seu enfoque, da Inteligência Artificial (IA) tradicional para a CS. Embora esta última não seja uma área nova, 3.1 Inspirações biológicas na Robótica Situada 37 as pesquisas na área da computação embasadas na CS são recentes. Atualmente existem vários projetos de pesquisa seguindo essa nova tendência, focando principalmente na importância da não separação mente/corpo, de se trabalhar com a noção de mente-incorporada e não embutir aspectos do mundo externo nos agentes, deixá-los criar seu próprio mundo, experimentando o mundo real, com especial ênfase na emergência do processo cognitivo através da interação, do acoplamento, do agente com seu meio. 3.1 Inspirações biológicas na Robótica Situada Na Robótica Situada (RS), várias técnicas vêm sendo utilizadas para o estudo do processo cognitivo, para modelar características dos seres vivos como comportamento e organização interna. Para o desenvolvimento de robôs autônomos, o que se viu com mais freqüência na literatura foi o uso de: 1. sistemas dinâmicos. O formalismo matemático de sistemas dinâmicos vem sendo utilizado principalmente para a realização do acoplamento entre o agente e seu ambiente. Dentre os experimentos utilizando-se esta ferramenta temos: coordenação do andar em robôs inspirados em insetos (BEER et al., 1997); aprendizagem motora (THELEN et al., 2001) e correlação entre emoção e cognição (LEWIS, 2005). Para uma melhor contextualização sobre o uso de sistemas dinâmicos nas Ciências Cognitivas, veja Beer (1997, 2000); 2. computação evolucionária (Robótica Evolucionária). O uso desta ferramenta foi observado principalmente em conjunto com outras como as redes neurais artificiais para melhorar sua adaptação e dinamicidade no decorrer do tempo. Dentre os trabalhos que fazem uso da computação evolucionária, temos: controle de manipuladores robóticos (SOFGE, 2001); evolução da morfologia de agentes (MICONI; CHANNON, 2006) e evolução de sistemas de controle para robôs autônomos (NOLFI et al., 1994). Para mais informação sobre Robótica Evolucionária, veja Sofge et al. (2003), Nolfi (2004); 3. redes neurais artificiais. Esta ferramenta, inspirada na organização e funcionamento do cérebro vem sendo utilizada não somente para modelar sua neuroanatomia e funcionamento (FLEISCHER et al., 2006, 2007; KRICHMAR et al., 2005; REEKE, 1990), mas também para o controle neural de afetos primários 3.2 A arquitetura Darwin 38 (drives) (FLORIAN, 2006) e controle de comportamento de robôs (coordenação sensório-motora) (WANG et al., 2007). Ainda com relação à inspiração biológica, há quem trabalhe com a modelagem detalhada de organismos vivos mais simples, como os insetos (BEER et al., 1997); outros com a modelagem, com menos respaldo biológico, de humanóides (BROOKS et al., 1998; MIT, 2007; FITZPATRICK et al., 2003); outros com modelos da neurofisiologia cerebral (NSI, 2007; HARTER; KOZMA; GRAESSER, 2001; EDELMAN, 1987; REEKE, 1990; FLEISCHER et al., 2006, 2007; KRICHMAR et al., 2005); outros que procuram modelar um organismo completo, com maior apelo biológico (SANTOS, 2003; CAMPOS, 2006; CAMPOS; BORGES, 2006). Haja visto que este capítulo se propõe a tratar de máquinas dotadas de cérebros biologicamente plausíveis, preferiu-se dar maior enfoque aos trabalhos com maior apelo biológico, sendo que será dado enfoque aos trabalhos realizados com dispositivos baseados no cérebro (arquitetura Darwin), por estes usarem modelos que se assemelham à neurofisiologia e anatomia do cérebro. Outro trabalho que se será destacado neste capítulo é a arquitetura Artífice, por ser um modelo de um organismo completo com forte respaldo biológico e sua interação com seu ambiente. Em resumo, essas duas arquiteturas serão enfoque deste capítulo por, além de ambas terem suas bases na Cognição Situada, a Darwin estar se saindo muito bem como um modelo detalhado do funcionamento do cérebro, em nível celular (neurônio) e com isso tem conseguido comprovar algumas teorias à cerca do funcionamento do cérebro; e a Artifíce ser o objeto deste trabalho, além de inovar ao tentar ser um arbouço para a construção de agentes (organismos) completos, para interagir com vários ambientes, de forma flexível. 3.2 A arquitetura Darwin O projeto Darwin (NSI, 2007) foi iniciado por Gerald M. Edelman e tem como base a Teoria de Seleção dos Grupos Neuronais1 (TSGN) (EDELMAN, 1987), sendo que seu “coração” é o acoplamento de classificação. “Num acoplamento de classificação, dois mapas de grupos neuronais 1 Um grupo neuronal é um conjunto de células neuronais que oscilam e disparam em sincronia e são localizados em certas áreas do cérebro. Os grupos neuronais são estruturas (circuitos) rigidamente estabelecidos durante a epigênese, pela seleção de suas freqüências de disparo. 3.2 A arquitetura Darwin 39 recebem entrada de várias conexões reentrantes. Como resultado dos acoplamentos reentrantes e da mudança das forças sinápticas, padrões de classificação correspondentes começam a ser associados e ativam mutualmente os mapas correspondentes.” (HARTER; KOZMA; GRAESSER, 2001) Essa arquitetura iniciou-se relativamente simples, sendo que sua primeira versão (Darwin I) foi criada para demonstrar o processo de degenerescência dos grupos neuronais, explicado na TSGN. Segundo Edelman (1987), esta arquitetura foi útil para debater sobre um modelo computacional mínimo para um sistema de reconhecimento seletivo. “[Darwin I] consiste em um gerador de repertórios2 , que produz um repertório de strings binárias; um gerador de estímulos que produz strings binárias de entrada ou ‘estímulos’ a serem casados; uma regra de casamento que procura por pares ou correspondências entre um dado estímulo aleatório selecionado e elementos individuais do repertório; e um amplificador que aumenta a probabilidade futura de resposta por aqueles elementos do repertório que tiverem sido casados com sucesso com os estímulos de entrada.” (EDELMAN, 1987) A Darwin I mostrou-se bem sucedida na tarefa de reconhecimento de padrões, sendo um primeiro passo para a criação de uma arquitetura mais complexa, que possua mais características do sistema nervoso. Sua segunda geração (Darwin II) era uma máquina nova que utilizava acoplamento de classificação para reconhecer estímulos ‘visuais’ bi-dimensionais, classificá-los e fomar associações entre eles. Ela tem muitas das características de mapas globais implícitas no seu projeto e serviu para demonstrar a importância das conexões reentrantes no processo de seleção de grupos neuronais durante uma tarefa de categorização (EDELMAN, 1987). Seguindo a evolução da arquitetura, foi a ela adicionada coordenação sensóriomotora, em sua versão III, que era um autômato que possuía comportamento. Seu sistema nervoso era constituído por repertórios interconectados de grupos neuronais. Como nas versões I e II da arquitetura, nenhuma informação sobre um determinado 2 Repertórios são as populações resultantes de grupos neuronais variantes numa região cerebral. Este nome se dá em referência ao seu potencial coletivo de responder a qualquer variedade de estímulo (REEKE, 1990). 3.2 A arquitetura Darwin 40 estímulo ou algum algoritmo explícito para “computação neuronal” foi previamente embutido. Esta versão adiciona mais um passo na categorização: o controle motor (também como um processo seletivo). Ela foi o primeiro modelo neural sintético de um organismo interagindo com um ambiente, engajado numa tarefa de coordenação sensório-motora. O sistema nervoso simulado com sensores de tato e visão aprenderam a controlar um braço virtual para espantar objetos nocivos (NSI, 2007). A Figura 3.1 mostra uma imagem da simulação usada para testar a arquitetura Darwin III. Figura 3.1: Robô Darwin III. Fonte: NSI (2007) Haja visto que a arquitetura está atualmente na versão XI, não será explicada versão por versão até a mais recente, pois o enfoque é mostrar como a mesma vem sendo construída, a metodologia de sua criação, o que já será satisfeito com a apresentação das versões mais recentes, a saber, versões X e XI e com a apresentação do conceito de dispositivos baseados no cérebro. Um histórico mais completo sobre a arquitetura pode ser encontrado em (NSI, 2007). As versões apresentadas anteriormente foram desenvolvidas num ambiente simulado. Porém, a partir da versão IV da arquitetura, os experimentos vêem sendo realizados em dispositivos baseados no cérebro3 (DBC), que são uma classe de robôs controlados por neurônios, os quais são baseados em características da neuroanatomia e neurofisiologia dos vertebrados, enfatizando a interação do organismo com seu ambiente. Um DBC segue os seguintes princípios (FLEISCHER et al., 2006): 1. o dispositivo deve realizar uma tarefa comportamental; 2. o comportamento do dispositivo é guiado por um sistema nervoso simulado que reflete a arquitetura e dinâmica do cérebro; 3 Brain-Based Devices 3.2 A arquitetura Darwin 41 3. o dispositivo precisa estar situado no mundo real. O comportamento de um DBC emerge da interação entre o sistema nervoso simulado (o fenótipo do robô) e seu ambiente. A equipe de Edelman tem demonstrado que, pelo estudo de DBCs em interação com o mundo real, são capazes de investigar toda a dinâmica de interações do sistema nervoso com o corpo e o ambiente. Seus experimentos contrastam com outros experimentos, que visam a modelar a função do hipocampo em robôs, pelo fato de os primeiros focarem na modelagem, em larga escala, da neuroanatomia do cérebro, examinando os efeitos da interação com o mundo na dinâminca neural (FLEISCHER et al., 2007). Seguindo estes os princípios dos DBCs, foi construído o robô Darwin X, o qual incorpora aspectos de uma anatomia e fisiologia detalhadas do hipocampo e regiões vizinhas. Este dispositivo integra estímulos do ambiente e resolve a tarefa de memória espacial. Ele possui os seguintes comportamentos inatos: exploração, evitar obstáculos e detecção de plataforma (KRICHMAR et al., 2005). As áreas modeladas foram rotuladas de acordo com suas regiões análogas do cérebro de mamíferos: neocortical, hipocampal e subcortical. A Figura 3.2 mostra esquematicamente sua neuroanatomia funcional e regional, que consistia em um sistema nervoso simulado com 50 áreas neuronais, 90.000 unidades neuronais, e aproximadamente 1,4 milhões de conexões sinápticas. Na Figura 3.2, as elipses denotam áreas neuronais diferentes e as setas denotam projeções de uma área para outra. Em (A), tem-se o diagrama de alto nível da conectividade da simulação neural, sendo que as entradas vinham de uma câmera CCD, de um roda com odometria, e de sensores de infra-vermelho para detecção de parede e plataforma. A simulação continha áreas neuronais análogas ao córtex visual (V1, V2/4), córtex infero-temporal (IT), córtex pariental (PR), sistema de direção da cabeça (HD), núcleo talâmico anterior (ATN), áreas motoras para guia egocêntrica (MHDG ), um sistema de valor (S) e áreas de recompensa positiva e negativa (R+, R-). O hipocampo recebia entrada de três fluxos sensores principais (IT, PR e ATN) e possuia projeções para uma área motora (MHDG ) e para um sistema de valor, recebendo inibição rítmica de uma região basal anterior (BF) simulada. Em (B), tem-se a conectividade detalhada na região hipocampal, sendo que as entradas sensoras (veja ATN, IT e PR na Figura 3.2A) entravam no hipocampo via ECin. O hipocampo modelado continha áreas análogas ao córtex entorrinal (ECin, ECout), giro dentado (DG), e os subcampos CA3 e CA1, sendo que estas áreas continham interneurônios que 3.2 A arquitetura Darwin 42 implementavam inibição retro-alimentada (e.g., CA3 → CA3FB → CA3) e inibição préalimentada (e.g., DG → CA3FF → CA3). Figura 3.2: Esquema da neuroanatomia regional e funcional do Darwin X. Fonte: Krichmar et al. (2005) As unidades neuronais, no Darwin X, são simuladas por um modelo de taxa média de disparo, com dinâmica semelhante a um modelo integra-e-dispara e conexões sinápticas, sendo que as forças sinápticas são sujeitas a modificações de acordo com uma regra hebbiana que depende da atividade da unidade neuronal pré e pós-sináptica. Sinapses entre unidades neuronais com correlação de taxa de disparo forte são potencializadas e sinapses de unidades neuronais com fraca correlação de taxa de disparo são depreciadas; a magnitude da mudança é determinada pelas atividades pré e pós-sinápticas (KRICHMAR et al., 2005). Segundo (KRICHMAR et al., 2005), “diferente dos sistemas de robótica, que abstraem características do hipocampo para criar memórias espaciais, Darwin X possui dinâmicas neurais acopladas com neuroanatomia detalhada no nível dos sistemas da neurociência”. Continuando o projeto Darwin, foi criada a versão XI da arquitetura, que foi concebida para investigar a emergência de atividades cerebrais que dependem da jornada (caminho percorrido) do robô. No experimento, o robô tinha que navegar por um labirinto saindo de uma posição inicial e indo para uma posição final, onde se encontrava uma recompensa (estímulo prazeroso). Durante o percurso o robô encontrava bifurcações e tinha que decidir qual caminho seguir (como em alguns experimentos que são feitos com roedores). Para tanto, a arquitetura Darwin XI (Figura 3.3) foi 3.3 A arquitetura Artífice 43 dotada de um modelo detalhado do córtex entorrinal, hipocampo e regiões corticais sensoras. Com este modelo, a equipe de Edelman conseguiu obter resultados semelhantes aos obtidos por roedores no que diz respeito a ativação de células de localização (place cells), que são células neurais, localizadas no hipocampo, relacionadas à localização espacial que disparam mais fortemente quando o organismo está em determinada localização. Figura 3.3: Robô Darwin XI Fonte: Fleischer et al. (2007) Os trabalhos da equipe de Edelman com DBCs como Darwin X e XI têm permitido a quem está modelando examinar todos os aspectos do cérebro simulado durante o comportamento no ambiente. Este método oferece a oportunidade de se examinarem detalhes dos circuitos do sistema nervoso simulado, de maneira não possível em sistemas nervosos reais (FLEISCHER et al., 2007). 3.3 A arquitetura Artífice Baseada nestas idéias da CS, a arquitetura Artífice vem sendo desenvolvida no Laboratório de Sistemas Inteligentes (LSI4 ), no Centro Federal de Educação Tecnoló4 www.lsi.cefetmg.br 3.3 A arquitetura Artífice 44 gica de Minas Gerais (Cefet-MG5 ). Nesta arquitetura, os agentes (agentes de software cognitivos e situados – ASCS) não possuem representações internas de um mundo externo, eles constituem sua própria realidade mediante sua interação com o seu ambiente. Essencialmente, esta arquitetura apresenta um mundo artificial composto de objetos-componentes de software análogos às coisas inanimadas do mundo natural (mundo abiótico) e ASCS análogos aos organismos vivos (mundo biótico). O ASCS é constituído por dois subsistemas, que são classificados segundo sua contribuição para a função cognitiva: subsistema cognitivo (sistema nervoso) e nãocognitivo (sistema somático) (SANTOS, 2003). A interação entre eles se dá por meio dos componentes sensores e efetores, análogos ao sistema visceral. Outra função dos sensores e efetores é realizar a interface entre o ASCS e seu ambiente, sendo análogo ao sistema nervoso somático. O subsistema não-cognitivo contribui indiretamente para a cognição dos ASCS, ao disparar estímulos para os componentes cognitivos. Ele é formado pelos componentes de reprodução, destruição, persistência, entre outros ainda não concebidos no atual estágio da arquitetura. Assim, fica evidente que o corpo do ASCS tem papel importante nos processos cognitivos do agente, e vice-e-versa. Um diagrama esquemático de como ocorrem as interações pode ser visto na Figura 3.4. Figura 3.4: Sistemas cognitivo e não-cognitivos do ASCS. Fonte: (SANTOS, 2003) 5 www.cefetmg.br 3.3 A arquitetura Artífice 45 Toda a interação, tanto dos componentes do ASCS quando dos componentes do mundo artificial, se dá por meio do processo de troca de estímulos. Nesse processo, cada componente recebe estímulos que sua própria estrutura interna admite, os quais desencadearão mudanças na mesma. Após a mudança na estrutura interna, o componente poderá gerar outros estímulos, estabelecendo uma nova interação com o mesmo componente ou com outro, gerando uma dinâmica de interações não-determinísticas e, em grande parte, impredizíveis (CAMPOS, 2006). Outro fator importante e presente na arquitetura é o papel das emoções como disposições corporais dinâmicas que especificam os domínios de ações nos quais o agente opera num instante, sendo que elas modulam o conhecer e, ao mesmo tempo, são moduladas pelo mesmo (CAMPOS; BORGES, 2006). As emoções foram tratadas partindo-se de manifestações internas até chegar a uma manifestação corpórea observável, condizente com o que é percebido por diversos pesquisadores, dentre eles Lewis (2005), Buck (1999), Ledoux (1995), Carter (2002). Na arquitetura, também considera-se que a modulação emocional participa de sub-sistemas afetivos no controle da liberação/inibição de neuromoduladores, que afetam o sistema nervoso como um todo (comportando-se como um sistema dinâmico (LEWIS, 2005)), agindo de forma difusa sobre vários componentes deste, através da simples troca de estímulos ora ativadores ora inibidores. O tratamento das emoções feito na arquitetura compartilha das idéias de Ledoux (2003), ao considerar a mente como composta por uma trilogia que consiste de cognição, afeto (emoção) e conotação (motivação), e que não basta entender como os processos cognitivos interagem, ao inserir emoção e motivação nesta mistura, resta entender como estas interagem entre si e com os processos cognitivos. A arquitetura teve como uma das principais fontes de inspiração para o tratamento da correlação emoção/cognição as pesquisas realizadas por Buck (1999), o qual propõe uma teoria desenvolvimental-interacionista que, muito mais que reconhecer o correlato neural de uma emoção, estabelece um critério para classificá-las segundo características evolutivas, além de definir as interações entre sistemas filogeneticamente mais simples, considerados sistemas de propósito específico, e sistemas de propósito geral, presentes em organismos mais evoluídos (CAMPOS, 2006). Sendo assim, a arquitetura leva em conta os três níveis de expressão das emoções, destacados por Buck (1999), os quais ele denominou de emoções I, II e III, sendo que: 1. a emoção I atende às funções de adaptação e homeostase através de sistemas 3.3 A arquitetura Artífice 46 autônomos, endócrinos e sistemas imunológicos; 2. a emoção II atende às funções de coordenação social através de expressões faciais, corporais; 3. a emoção III atende às funções de auto-regulação emocional através de sentimentos experienciados subjetivamente. Ainda, segundo a classificação proposta por Buck e até o presente trabalho, as emoções já contempladas na arquitetura são as dos tipos I e II e suas relações com o processo cognitivo. Os reflexos foram implementados de forma a terem uma resposta fixa associada, correspondendo ao circuito rápido de respostas corporais, responsável principalmente pela sobrevivência do organismo. Os drives, foram implementados como manifestação das necessidades corpóreas e também têm importante papel na sobre- vivência do organismo, garantida pela homeostase, isto é, pela constante regulação dos mesmos, buscando o equilíbrio. Já os afetos, os quais ainda não foram totalmente contemplados, foram modelados para estarem cada vez mais associados a processos cognitivos mais complexos. Com isso, a arquitetura também incorpora os três níveis hierárquicos de resposta ao longo do eixo neural, quais sejam: resposta automática (reflexo), semi-elaborada (emocional e de origem sub-cortical) e elaborada (cognitiva e de origem cortical). “Após a resposta automática, o appraisal [6] emocional é responsável por gerar uma gestalt [7] (parcial) num primeiro momento, ainda que semi-elaborada, e num segundo momento o appraisal emocional-cognitivo gera uma nova gestalt (completa), mais elaborada, capaz de corrigir ou coordenar o resultado do appraisal imediatamente anterior e, assim, proporcionar uma característica importante no comportamento final: a auto-regulação emocional.” (CAMPOS, 2006) “[Cada uma das] emoções foram modeladas como contendo um nível de ativação (arousal), através do qual é calculada a eficiência comporta6A essência da teoria do appraisal diz que as emoções são suscitadas por avaliações (appraisals) de eventos e situações. Por exemplo, a tristeza sentida quando uma relação amorosa termina pode ser trazida à tona por avaliações de que algo desejado foi perdido e não pode ser recuperado. Mais detalhes podem ser obtidos em (SCHERER; SCHORR; JOHNSTONE, 2001). 7 A psicologia da gestalt é uma teoria da mente que propõe que o princípio operacional do cérebro é holístico, paralelo e analógico, com tendências e auto-organização. Pela teoria da gestalt, temos que o todo é maior que a soma das partes. Maiores detalhes podem ser obtidos em (STERNBERG, 2006; KOFFKA, 1955) 3.3 A arquitetura Artífice 47 mental que influenciará o comportamento do ASCS. As experiências do ASCS serão valoradas pelo sistema valoracional, segundo critérios emocionais. As funções de avaliação parcial (partial appraisal) e completa (full appraisal), representam importante papel nas capacidades cognitivas previstas no modelo e, através das memórias de trabalho, de longo prazo e das affordances[8] , estabelecem critérios de desambiguação de ações possíveis em um dado instante, possibilitando o surgimento de uma gestalt, ou melhor dizendo, um comportamento emergente, caracterizado como inteligente.” (CAMPOS; BORGES, 2006) O diagrama de blocos da última versão (0.7.5) da arquitetura, arterior ao presente trabalho, pode ser visto na Figura 3.5. Figura 3.5: Diagrama de blocos da arquitetura Artífice versão 0.7.5. Fonte: Campos (2006) Assim sendo, um agente construído a partir desta arquitetura terá, no curso de sua ontogenia, suas capacidades sensório-motoras moduladas pelo seu estado cognitivoemocional, tendo sua eficiência comportamental ajustada em função dos níveis de ativação (arousal) de suas emoções. A arquitetura vem sendo testada num ambiente 2D de Vida Artificial, o qual consiste num mundo com nutrientes (maçãs de diferentes cores e pedras) e tótens. O ASCS 8 O conceito de affordances foi introduzido nas ciências cognitivas por Gibson (1977) e dizem respeito às possibilidades de ação ou interação que se apresentam ao indivíduo numa certa situação específica. Assim sendo, uma ação é selecionada dentre as affordances presentes num determinado instante (CAMPOS; BORGES, 2006). 3.4 Considerações finais 48 deve manter suas necessidades corpóreas reguladas (fome e sono) no decurso de sua interação com o mundo, comendo os nutrientes (de diferentes valores energéticos) e descansando. Um instantâneo dessa aplicação pode ser vista na Figura 3.6. Um vídeo mostrando o comportamento do agente, ilustrativo de suas principais características, está disponível em <http://www.lsi.cefetmg.br/artifice/v075/aLifeExe.avi>. Para uma discussão detalhada da modelagem do processo cognitivo-emocional, sua inserção na arquitetura Artífice e os experimentos feitos com a versão 0.7.5, veja (CAMPOS, 2006). Figura 3.6: Aplicação de Vida Artificial usada para testar a arquitetura Artífice, versão 0.7.5. Fonte: Campos (2006) 3.4 Considerações finais As arquiteturas discutidas anteriormente possuem pontos comuns tais como a não aceitação de um mundo fornecido a priori e, como consequência, a não aceitação de que o conhecimento surge como resultado da aplicação de regras sobre símbolos que representam internamente o mundo. Também partilham do princípio da mente incorporada, que se refere à não há separação entre mente e corpo, à emergência 3.4 Considerações finais 49 do conhecimento como fruto da interação da mente-num-corpo-num-ambiente, do acoplamento da totalidade. Também é enfoque das arquiteturas estudadas tentar inserir o mínimo possível de conhecimento ontológico do criador. O conhecimento é construído durante a ontogenia do agente, de forma incremental e desenvolvimental. Faz-se necessário ressaltar que o enfoque do desenvolvimento de cada projeto/arquitetura foi diferente. Os trabalhos relacionados à arquitetura Darwin visam a comprovar modelos neurofisiológicos do funcionamento do cérebro. Os dispositivos baseados no cérebro, concebidos a partir dessa arquitetura, não foram concebidos com a intenção de construção de robôs inteligentes. Sendo assim, a arquitetura Darwin é a que, atualmente, mais possui detalhes da anatomia neurofisiológica do cérebro. A arquitetura Artífice foi concebida com enfoque em ser um arcabouço (framework ) com o qual se pudesse criar, de forma mais simples, agentes cognitivos e situados. Essa última arquitetura inova ao tentar modelar um organismo (situado num mundo) como um todo, com forte embasamento teórico-conceitual de diversas áreas das ciências como Biologia, Psicologia e Neurociência. Nessa arquitetura, pretende-se modelar desde processos básicos, internos ao agente, como regulação homeostática de necessidades primárias (drives), até o convívio em sociedades de agentes e o processo de reprodução. Vale ressaltar da arquitetura Darwin o seu nível de detalhes da neuroanatomia e neurofisiologia do cérebro de mamíferos, sendo a que possui mais respaldo neurocientífico. Por modelar o processo cognitivo através das estruturas constituintes do cérebro, em sua microanatomia, esta arquitetura pode ser considerada uma arquitetura bottom-up. Como fragilidade desta arquitetura, destaca-se o fato de o comportamento global, por mais simples que seja, exige a modelagem de todos os aspectos do organismo. Assim sendo, na Darwin, vários aspectos dos sistemas de atribuição de valor (emocional) e de expectativas foram embutidas na arquitetura, pelo projetista. Ou seja, nela são embutidos aspectos como “calor é melhor que frio”, “comer é melhor que não comer” etc. Sobre a arquitetura Artífice, pode-se enquadrá-la numa arquitetura de desenvolvimento misto, pois modela o processo cognitivo tanto em baixo nível (nível de estruturas) quanto em alto nível (comportamento, emoções). Como ponto forte da arquitetura, temos que ela parte de uma modelagem funcional do sistema nervoso como um todo, incluindo os principais processos cognitivos-emocionais, a partir da união de uma visão top-down, vinda da psicologia, com uma visão bottom-up, vinda da biologia, dos aspectos científicos dos correlatos neurais das emoções. A fragilidade desta arquitetura é que esta perde plausibilidade neurocientífica quando analisada na escala 3.4 Considerações finais 50 micro, pois seus micro-circuitos neurais ainda9 não foram concebidos com a utilização de modelos de neurônios biologicamente plausíveis. Pelas análises feitas nos parágrafos acima, acerca das arquiteturas Darwin e Artífice, pode-se dizer que elas são complementares pois o que ainda falta em uma já está implementado na outra (e.g. redes de neurônios ainda não estão implementadas na Artífice, mas o estão na Darwin). Neste capítulo, mostraram-se alguns trabalhos correlatos, na área da Robótica Situada, dando enfoque a duas arquiteturas, sendo que a última analisada, a arquitetura Artífice, ainda não havia sido usada para experimentos em Robótica. Com o presente trabalho tal arquitetura foi flexibilizada para permitir seu uso na criação de robôs emocionais-cog- nitivos. O capítulo seguinte descreve como foi feita a adequação para o funcionamento da mesma em robôs. 9 Os projetos (OLIVEIRA, 2007b, 2007a; CHAVES, 2007) estão relacionados à confecção de grupos de neurônios pulsantes para futuro uso na arquitetura. 51 4 Arquitetura Artífice para robôs bio-inspirados Este capítulo destina-se a apresentar as alterações feitas na arquitetura Artífice para flexibilizá-la para que também se possa criar com a mesma robôs autônomos emocionais-cognitivos (RAEC), que possam interagir tanto em ambientes simulados quanto em ambientes reais. O presente trabalho teve por base a versão 0.7.5 da arquitetura Artífice, desenvolvida por Campos (2006). Para a flexibilização da arquitetura para o desenvolvimento de aplicações em Robótica, foi necessário remodelá-la, encapsulando seu núcleo (sistema nervoso) a fim de tornar simples a instanciação de um agente para atuar em diversos ambientes. 4.1 Reorganização dos pacotes da arquitetura Antes de se começar a integração da arquitetura com o arcabouço Player/Stage/ Gazebo (PSG), achou-se conveniente reorganizar os pacotes da arquitetura, renomeando-se alguns e criando-se outros. A Figura 4.1 mostra como eram organizados os pacotes da arquitetura em sua versão anterior e a Figura 4.2 mostra sua nova organização. 4.2 Integração com o arcabouço Player/Stage/Gazebo Rearranjados os pacotes, o próximo passo foi integrar o arcabouço Player/Stage/ Gazebo (PSG) à arquitetura. Neste trabalho, pretende-se que os agentes criados a partir da arquitetura possam habitar os seguintes ambientes: 1. ambiente 2D de vida artificial, o qual não tem preocupação alguma com o realismo do mundo. Este mundo serve para testes experimentais do funcionamento 4.2 Integração com o arcabouço Player/Stage/Gazebo 52 Figura 4.1: Diagrama de pacotes da versão 0.7.5 da arquitetura Artífice. da arquitetura, para prova de conceito. Como não possui várias restrições do mundo real, tem-se um maior controle da interação agente/ambiente; 2. ambiente simulado 2D (Stage), o qual já tenta simular o mundo real, porém de forma bem simplificada. Neste ambiente são usados modelos de robôs reais que interagem com o mundo através de sensores como laser, sonar e câmera e efetores como motor de movimento. Uma idéia para a utilização deste ambiente pode ser testar novas mudanças feitas na arquitetura, já aprovadas no ambiente de vida artificial, e que precisem se adequar para trabalhar no mundo real; 3. ambiente simulado 3D (Gazebo), sendo que este está mais próximo do mundo 4.2 Integração com o arcabouço Player/Stage/Gazebo 53 Figura 4.2: Diagrama de pacotes da versão 0.8.0 da arquitetura Artífice. real por simular detalhes que um robô real enfrenta como gravidade e atrito, além de dar ao robô maior grau de liberdade nos movimentos (o mundo agora é 3D) como poder levantar algo; 4. ambiente real, pois neste se pode trabalhar plenamente com o conceito de mente incorporada princípio fundamental da arquitetura e, por isso mesmo, não pode ser ignorado no presente trabalho. 4.2 Integração com o arcabouço Player/Stage/Gazebo 54 Haja visto que a escolha do simulador (vista no Capítulo 2) já foi feita se pensando na praticidade e transparência ao se criarem aplicações que usassem mundos simulados e real, não foi preciso uma mudança mais radical na estrutura da arquitetura, sendo que as seguintes alterações foram feitas: 1. os tipos de mundos foram separados em dois: PlayerWorld, o qual serve para instanciar robôs tanto para interagirem com mundos simulados quanto para com mundos reais; e ArtificialWorld, o qual serve para aplicações num mundo de Vida Artificial. A Figura 4.3 mostra o único tipo de mundo com o qual se podia usar a arquitetura, já a Figura 4.4 mostra a separação entre mundos de robôs e de agentes de software; 2. os agentes também foram separados em dois tipos: ASCS, que são agentes de software, que interagem com o mundo de Vida Artificial e Robot, que são robôs que podem interagir tanto com mundos reais quanto com simulados. A Figura 4.5 mostra o único tipo de agente que se podia instanciar na versão 0.7.5 e a Figura 4.6 mostra os tipos possíveis de agentes na versão 0.8.0, sendo que, nesta última, é a classe Robot a reponsável pela comunicação com o servidor Player, através de um objeto da classe PlayerClient, que é uma classe da API Java do PSG; 3. para se construirem agentes, relacionando-os aos seus respectivos mundos, fez-se necessário também o desmembramento da classe construtora de agentes. Com isso, na nova versão da arquitetura existem duas classes construtoras: CSSABuilder, para a construção de agentes de software e RobotBuilder, para a construção de robôs. A Figura 4.7 mostra o diagrama de classes das classes construtoras da versão 0.7.5 e a Figura 4.8 mostra como ficaram tais classes na nova versão. Detalhando mais como foi feita a integração com o Player, como visto no item 2 acima, a classe Robot possui um objeto do tipo PlayerClient, da API Java do PSG. Este objeto é o responsável por estabelecer a comunicação com o servidor Player, conectando a arquitetura com o mesmo, via TPC/IP e fazendo requisições das interfaces controladoras dos dispositivos, como sonar, laser, câmera e efetor de posição. A conexão com o servidor se dá assim que uma instância da classe Robot é criada, passando-se como parâmetros o endereço da máquina onde o Player está e a porta de comunicação usada pelo mesmo. Por exemplo, para se adicionar ao robô 4.2 Integração com o arcabouço Player/Stage/Gazebo 55 Figura 4.3: Diagrama de classes do mundo da versão 0.7.5. Figura 4.4: Diagrama de classes da separação entre os tipos de mundos, na versão 0.8.0. Figura 4.5: Diagrama de classes do agente da versão 0.7.5. Figura 4.6: Diagrama de classes da separação entre os tipos de agentes, na versão 0.8.0. Figura 4.7: Diagrama de classes das classes construtoras para criação de agentes da versão 0.7.5. Figura 4.8: Diagrama de classes da separação das classes construtoras para criação de agentes, na versão 0.8.0. um dispositivo de câmera que use o algoritmo blobFinder 1 , deve-se fazer: 1 No PSG, além de dispositivos reais como câmera, sonar e laser, também temos algoritmos, que são acessados como se fossem dispositivos, através de interfaces. 4.2 Integração com o arcabouço Player/Stage/Gazebo 56 1. criar a classe Camera, sendo que seu construtor deve receber uma referência para o objeto robô ao qual a câmera pertencerá; 2. declarar na mesma um atributo do tipo BlobfinderInterface, que será uma instância de blobFinder ; 3. pedir ao servidor Player, através da API Java de comunicação com o PSG, uma interface de conexão para tal algoritmo. A Figura 4.9 mostra um diagrama de colaboração para adicionar à uma câmera, instâncias do algoritmo blobFinder e de um controlador para câmera para que se possam controlar os movimentos na horizontal, vertical e o zoom (pan-tilt-zoom – PTZ) da mesma. No método construtor da classe Camera, é feita uma requisição ao cliente Player do robô (mensagem 1.1) pedindo a este uma referência para o algoritmo blobFinder associado ao robô (mensagem 1.2). Caso não ocorra uma exceção durante o processo, a classe Camera já terá acesso a tal algoritmo e estará apta a usá-lo. De forma análoga, para que se possa utilizar uma interface para controle PTZ da câmera, no método construtor da classe Camera, é feita uma requisição ao cliente Player do robô (mensagem 2.1) pedindo a este uma referência para o controlador PTZ associado à câmera do robô (mensagem 2.2). Caso não ocorra uma exceção durante o processo, o controlador PTZ estará pronto para uso. Figura 4.9: Diagrama de colaboração exemplificando como obter do servidor Player uma interface para o algoritmo blobFinder e para um controlador de movimentos horizontais, verticais e zoom (pan-tilt-zoom – PTZ). Nas Figuras 4.10 e 4.11 são mostrados os diagramas de classes com os relacionamentos entre mundos, agentes e classes construtoras de agentes, sendo que a Figura 4.10 refere-se à versão 0.7.5 e a Figura 4.11 à versão 0.8.0 da arquitetura Artífice. Pela análise da Figura 4.11, temos, num nível mais abstrato, um mundo que contém agentes que são criados por um construtor de agentes (baseado no padrão de projetos Builder 2 ). Utilizando-se das idéias do padrão de projeto AbstractFactory, foram sepa2 Maiores informações sobre padrões de projeto podem ser encontradas em Gamma et al. (2006). 4.2 Integração com o arcabouço Player/Stage/Gazebo 57 radas duas classes de mundos, quais sejam um mundo para aplicações de Vida Artificial (ArtificalWorld) e um mundo para aplicações com o arcabouço PSG (Player World). Ainda, continuando a análise da Figura 4.11, temos que PlayerWorld pode ser habitado por robôs (Robot), que são construídos com um construtor RobotBuilder. Já ArtificialWorld pode ser habitado por agentes de software (CSSA), construí- dos através de um construtor CSSABuilder. Com isso, para se trabalhar com ambientes de Vida Artificial, deve-se criar um aplicação que estenda ArtificialWorld. Analogamente, para se desenvolverem aplicações que utilizem ambientes simulados ou reais, deve-se estender a classe PlayerWorld em sua aplicação, sendo que a escolha do tipo de mundo (simulado 2D, simulado 3D ou real) é feita no arquivo de configuração do servidor Player (arquivo “.cfg”). Um trecho de um arquivo de configuração para o uso com o simulador 3D Gazebo, pode ser visto abaixo, no qual o parâmetro plugin especifica o ambiente. No caso, libgazeboplugin especifica que o servidor será utilizado com o simulador Gazebo. driver( name "gazebo" provides ["simulation:0"] plugin "libgazeboplugin" server_id "default" ) A Figura 4.12 mostra um esquema de como a arquitetura pode ser utilizada para vários tipos de ambientes, podendo-se perceber a portabilidade conferida à mesma pelo arcabouço PSG, quanto ao uso de ambientes simulados e real. Na figura, (A) refere-se à arquitetura sendo utilizada para ter o robô interagindo com um mundo artificial, sem preocupação alguma com o realismo do ambiente. Em (B), a arquitetura está sendo usada para trabalhar com ambientes simulado ou real. (B.1) mostra o uso com o ambiente simulado 2D “Stage”. (B.2) mostra o uso com o ambiente simulado 3D “Gazebo”. Já em (B.3), a arquitetura é utilizada num robô interagindo com o mundo real. Nos diagramas de blocos das Figuras 4.13 e 4.14, tem-se a arquitetura modificada, com seu núcleo encapsulado e podendo-se instanciar tanto ASCSs (agentes de software que atuam num ambiente de vida artificial) quanto robôs autônomos emocionaiscognitivos (RAECs), capazes de atuar em ambientes simulados/reais. 4.2 Integração com o arcabouço Player/Stage/Gazebo 58 Figura 4.10: Diagrama de classes dos relacionamentos entre mundo, agente e classes construtoras de agentes, na versão 0.7.5. Figura 4.11: Diagrama de classes da flexibilização da arquitetura Artífice para a instanciação de agentes para interação com diferentes tipos de mundos. 4.3 Considerações finais 59 Figura 4.12: Utilização da arquitetura para trabalhar em diversos tipos de ambiente. Figura 4.13: Arquitetura Artífice para a criação de ASCSs. Figura 4.14: Arquitetura Artífice para a criação de RAECs. 4.3 Considerações finais Além das alterações destacadas nas seções anteriores deste capítulo, foram também realizadas algumas alterações para desacoplar códigos de aplicação (pacote aL- 4.3 Considerações finais 60 ife) de códigos do núcleo da arquitetura (pacote core). Códigos como os de dados para atualização de tela, usados em experimentos de Vida Artificial, foram deixados restritos apenas para o uso em aplicações que utilizem o mundo de Vida Artificial, haja visto que agora a arquitetura não permitirá apenas este tipo de aplicação. Também foram feitas algumas melhorias nos relacionamentos entre classes, visando a deixá-las menos acopladas. Ainda se pode melhorar bem a estruturação da arquitetura e, por isso, achou-se por bem citar tais melhorias na seção de trabalhos futuros (Seção 6.4). Um fato a se destacar é a facilidade em se trabalhar com o arcabouço Player/Stage/ Gazebo, mesmo ele apresentando alguns problemas3 . Crê-se que este conjunto de servidor/simuladores tem muito a crescer, haja visto que ele é um projeto bastante ativo quer seja por sua utilidade e conjuntos de funcionalidades quanto por ser um software livre no o qual a comunidade acadêmica, a cada dia, vem acrescentando novas funcionalidades e interfaces e corrigindo problemas encontrados. É válido destacar também a robustez da arquitetura Artífice, de seu projeto arquitetural, pois seu núcleo, durante este trabalho, sofreu poucas alterações, permanecendo praticamente o mesmo da versão anterior, 0.7.5. 3 Descritos na Seção 6.3 “Dificuldades encontradas”. 61 5 Experimentos computacionais, análise e discussão dos resultados Para que as alterações feitas na arquitetura pudessem ser testadas, fez-se necessário o desenvolvimento de um experimento utilizando uma aplicação instanciada com a nova versão da Artífice (0.8.0). Haja visto que a arquitetura já estava validada, em sua versão 0.7.5, desenvolvida no trabalho de Campos (2006), achou-se conveniente construir uma aplicação que fosse mais próxima da mesma, a fim de se ter uma base para comparação, uma vez que a validação da arquitetura se dá pela observação do comportamento do agente. Sendo assim, o robô construído com a versão 0.8.0 deve se comportar de forma semelhante ao agente de software construído com a versão 0.7.5 da arquitetura. Porém, como a aplicação de Campos (2006) foi feita no ambiente 2D de Vida Artificial, o qual não possui comprometimento com o realismo do mundo físico, e por alguns problemas encontrados no uso do ambiente PSG (discutidos no próximo capítulo, Seção 6.3), a aplicação precisou ter seu foco alterado. Um exemplo de alteração de escopo foi que, como o robô não consegue comer algo como o agente de software, foi necessário lançar mão de um afeto que pudesse ser análogo à fome, existente na aplicação de Campos (2006). Foi então usado o afeto estresse no lugar da fome, e o robô teria que contemplar (experienciar) um objeto (poste) para diminiur o nível de ativação de tal afeto, em analogia a um agente de software comer algo. Campos (2006), para testar sua versão da arquitetura (0.7.5), construiu uma aplicação de Vida Artificial que consistia em um agente interagir com seu mundo regulando suas necessidades corpóreas através de ações de comer nutriente (maçãs e pedras) e dormir. Os afetos que tiveram seus níveis de ativação regulados eram a fome e o sono, sendo que o nível de ativação de ambos eram aumentados com o passar do tempo, e o nível de fome aumentava mais depressa que o de sono. Os níveis eram diminuídos quando o agente comia um nutriente (sendo que nutrientes de cores 5.1 A aplicação criada para os testes 62 diferentes saciavam a fome em níveis diferentes) e descansava, respectivamente. O agente possuía um ato reflexo de exibição de rubor em sua pele, mudando a cor de seu corpo, ao ver um totem. 5.1 A aplicação criada para os testes Para os testes com a versão 0.8.0, foi realizado um experimento num ambiente 3D simulado1 com o uso do simulador Gazebo, parte integrante do arcabouço Player/ Stage/Gazebo (PSG), discutido na seção 2.1.1. No mundo simulado, foram inseridos objetos (postes) nas cores azul, verde e vermelho, um robô e um muro delimitando a área por onde este podia se locomover. O modelo de robô utilizado na simulação foi o Pioneer 2DX, provido de sensores de laser, sonar e câmera e efetor de movimento (motor). Imagens do robô real cujo modelo foi utilizado no experimento, e de sua simulação podem ser vistas na Figura 5.1, já a Figura 5.2 mostra o ambiente palco dos experimentos. Figura 5.1: Robô Pioneer 2DX (real), e seu modelo simulado, foi utilizado nos experimentos. Os afetos implementados para a regulação homeostática foram: estresse (Stress), sono (Sleep), e curiosidade (Curiosity). Ato reflexo implementado foi o de o robô emitir um som2 (beep) ao ver um poste da cor azul, análogo ao reflexo de rubor exibido pelo 1O conteúdo do arquivo de configuração do mundo artificial utilizado pode ser encontrado no Anexo B.1. Já o conteúdo do arquivo de configuração do servidor Player, utilizado para configurar a comunicação entre a aplicação cliente e o servidor Player, encontra-se disponível no Anexo B.2. 2 A real emissão de um som não foi feita pela ausência de um controlador de dispositivos sonoros no arcabouço PSG. 5.1 A aplicação criada para os testes 63 Figura 5.2: Ambiente simulado utilizado para os testes da versão 0.8.0 da arquitetura Artífice. agente da aplicação de Campos. O acompanhamento da dinâmica interna do robô foi feito através de mensagens que mostravam o funcionamento de seus componentes, as quais podiam ser impressas tanto no terminal (console) no qual a aplicação foi executada quanto em um arquivo de texto, para consulta posterior. 5.1.1 Comportamentos emergentes Pela concepção da arquitetura, um comportamento do robô que um observador pudesse dizer ser inteligente, emergia no decorrer de sua interação com seu ambiente, ao tentar se manter acoplado com o mesmo, através de sua regulação homeostática e coordenação sensório-motora. Os níveis de ativação dos afetos aumentavam com o decorrer do tempo, sendo que o afeto que tinha maior variação era o estresse, seguido pelo sono e, por último a curiosidade. O nível do estresse do robô diminuía quando este experimentava um 5.1 A aplicação criada para os testes 64 poste, ficando “parado”3 próximo ao mesmo, fitando-o. Já o sono diminuía quando o robô dormia, ficando parado; o nível de curiosidade era diminuído quando o robô se aproximava de um poste. Postes de cores diferentes regulavam o estresse em níveis diferentes, sendo que postes da cor azul diminuíam (acalmavam) mais o estresse, verdes acalmavam menos que os azuis e os vermelhos deixavam o robô mais estressado. Cada interação do robô com seu ambiente caracterizava uma experiência hedônica do mesmo, sendo que experiências com qualia4 eram valoradas, segundo sua influência na interação, como boas ou ruins. Interações que aumentavam o nível de ativação do estresse recebiam valência ‘false’, significando que aquela experiência foi de desprazer. Já interações que contribuíram para diminuir o nível de ativação das emoções eram consideradas ‘prazerosas’, e portanto a valência nestes casos era ‘true’. As ações possíveis para o robô executar eram: 1. experimentar: o robô somente experimentava postes, o fazendo quando ficava “parado” perto de poste, olhando-o; 2. evitar: evitar um objeto consistia em o robô rotacionar para sua esquerda, o que o fazia desviar do objeto; 3. dormir: o ato de dormir consistia em o robô ficar parado; 4. vaguear: esta ação consistia em o robô ficar rotacionando hora para sua esquerda, hora para sua direita. Esta ação permitia ao robô achar objetos; 5. aproximar: o robô somente tentava se aproximar, intencionalmente, de postes. Esta ação consistia em andar para frente deixando o poste centralizado em seu campo visual. A situação de o robô estar tocando algo ocorria quando os valores dos sensores do laser fossem menores que o limiar LASER_TOUCHING_THRESHOLD e os valores dos sensores do sonar fossem menores ou iguais ao limiar SONAR_TOUCHING_ THRESHOLD, sendo que os valores de tais limiares podem ser encontrados no Anexo 3 Na verdade o robô não ficava parado, mas sim se movendo, de forma muito lenta, para trás. Isso precisou ser feito para que, ao experimentar um poste, o robô não tivesse seu nível de sono diminuído pelo fato de estar realmente parado. 4 Segundo Bateson (1972), diz-se que uma experiência tem qualia quando ela possui qualidade como um todo, sendo esta qualidade avaliada na situação (contexto e estado do organismo) e não só no contexto. 5.1 A aplicação criada para os testes 65 A. A situação de o robô estar vendo um objeto ocorria quando objetos das cores vermelho, verde ou azul estavam no campo visual da câmera. Para detectar tais objetos, foi utilizado o algoritmo blobfinder 5 , disponível no PSG. A Tabela 5.1 mostra as possibilidades de ação (affordances) que foram previstas na aplicação. De acordo com uma situação de interação com um objeto, as affordances caracterizam as possíveis ações a serem executadas. Tabela 5.1: Possibilidades de ação do robô numa determinada situação. Possibilidades de ação vendo e tocando experimentar dormir evitar vendo e não tocando aproximar dormir vaguear não vendo e tocando vaguear evitar não vendo e não tocando vaguear dormir Na Tabela 5.2 constam as tendências para ação do robô quando este se encontra sob determinada emoção. Tabela 5.2: Tendências para ação quando o robô se encontra sob uma determinada emoção. Emoção sono curiosidade estresse 5O Tendências para ação dormir vaguear vaguear aproximar evitar experimentar aproximar vaguear evitar algoritmo blobfinder extrai das imagens capturadas pela câmera objetos de determinadas cores, configuradas num arquivo texto. O arquivo de configuração deste algoritmo para a aplicação em questão pode ser visto no Anexo B.3. 5.1 A aplicação criada para os testes 5.1.2 66 Dinâmica dos componentes internos do robô O desenvolvimento da dinâmica dos componentes consiste nas mudanças estruturais ocorridas nestes as quais foram desencadeadas por estímulos internos e externos ao robô. A Figura 5.3 mostra como foi modelada a troca de estímulos entre as estruturas internas do robô e entre estas e o ambiente. InterceptiveStimuliPool é onde os estímulo internos são armazenados e consultados pelas estruturas do robô. Figura 5.3: Dinâmica de funcionamento do robô, com foco na troca de estímulos. Vale ressaltar que cada estrutura interna do agente trabalha realizando três operações: sentir estímulo, mudar de estado e emitir estímulo para outras estruturas. Não há uma seqüência de ações na dinâmica, pois os componentes da arquitetura são todos threads, trabalhando concorrentemente. 5.1 A aplicação criada para os testes 67 Analisando primeiro a dinâmica para o ato reflexo de o robô emitir um som ao ver um poste azul e, supondo que o mesmo está no campo visual do robô, temos que: a camêra sente os estímulos vindos do ambiente e emite estímulos visuais (IntStiVisual). Tais estímulos são aceitos pela estrutura VisualSensor que emite um IntStiAdrenergic. O componente Beep aceita este estímulo e emite um IntStiSympathetic. BuzzerEffector emite um IntStiSomatic. Este estímulo é aceito tanto por PartialAppraisal quanto por Buzzer, sendo que Buzzer, ao sentir tal estímulo, emite um som e PartialAppraisal emite um IntStiParasympathetic. O estímulo IntStiParasympathetic é sentido pelo BuzzerEffector, que emite um IntStiSomatic, que é sentido pelo Buzzer e este pára de emitir som. Para a diminuição do estresse, a dinâmica foi implementada da seguinte forma: os sensores de laser, sonar e câmera sentem os estímulos ambientais e emitem estímulos IntStiLaser, IntStiSonar e IntStiVisual, respectivamente. O componente VisionSensor sente o estímulo IntStiVisual e emite um IntStiProprioceptivo. O PartialAppraisal sente os estímulos IntStiLaser, IntStiSonar e IntStiProprioceptivo, avalia o nível de cada emoção, escolhendo Stress para atender, e emite um estímulo IntStiEmotional. Esse último estímulo é então sentido pelo FullAppraisal, que: escolhe , dentre as tendências para a ação da emoção vigente e as possibilidades de ação (dada a situação do momento), uma ação a ser executada pelo robô; emite um estímulo IntStiCortical. CameraEffector e MuscularEffector sentem o IntStiCortical e emitem IntStiAtentional e IntStiMuscular, respectivamente. Position2D sente o estímulo IntStiMuscular e move o robô ligeiramente para trás, quase o parando. Camera: sente o IntStiAtentional; tenta6 mover-se para cima e para baixo; emite um estímulo IntStiParasympathetic. HomeostaticRegulation sente o estímulo IntStiParasympathetic, regula o nível do Stress (numa quantidade relativa à cor do poste visto) e emite um IntStiValuational. Finalmente, Valuation sente o estímulo IntStiValuation e valora a experiência do robô como boa ou ruim. Para a diminuição da curiosidade, a dinâmica foi implementada da seguinte forma: os sensores de laser, sonar e câmera sentem os estímulos ambientais e emitem estímulos IntStiLaser, IntStiSonar e IntStiVisual, respectivamente. O componente VisionSensor sente o estímulo IntStiVisual e emite um IntStiProprioceptivo. O PartialAppraisal sente os estímulos IntStiLaser, IntStiSonar e IntStiProprioceptivo, avalia o nível de cada emoção, escolhendo Curiosity, e emite um estímulo IntStiEmo6 Não foi possível fazer a câmera realmente mover-se para cima e para baixo por causa de falha de comunicação entre a biblioteca cliente e o servidor Player (vide 6.3). 5.1 A aplicação criada para os testes 68 tional. Esse último estímulo é então sentido pelo FullAppraisal, que: escolhe , dentre as tendências para a ação da emoção vigente e as possibilidades de ação (dada a situação do momento), uma ação a ser executada pelo robô; emite um estímulo IntStiCortical. MuscularEffector sente o IntStiCortical e emite um IntStiMuscular. Position2D: sente o estímulo IntStiMuscular; move o robô; caso a ação seja “aproximar”, emite um estímulo IntStiParasympathetic. HomeostaticRegulation sente o estímulo IntStiParasympathetic, diminui o nível da curiosidade e emite um IntStiValuational. Finalmente, Valuation sente o estímulo IntStiValuation e valora a experiência do robô como boa. Para a diminuição do sono, a dinâmica foi implementada da seguinte forma: os sensores de laser, sonar e câmera sentem os estímulos ambientais e emitem estímulos IntStiLaser, IntStiSonar e IntStiVisual, respectivamente. O componente VisionSensor sente o estímulo IntStiVisual e emite um IntStiProprioceptivo. O PartialAppraisal sente os estímulos IntStiLaser, IntStiSonar e IntStiProprioceptivo, avalia o nível de cada emoção, escolhendo Sleep, e emite um estímulo IntStiEmotional. Esse último estímulo é então sentido pelo FullAppraisal, que: escolhe , dentre as tendências para a ação da emoção vigente e as possibilidades de ação (dada a situação do momento), uma ação a ser executada pelo robô; emite um estímulo IntStiCortical. MuscularEffector sente o IntStiCortical e emite um IntStiMuscular. Position2D: sente o estímulo IntStiMuscular; pára o robô; emite um estímulo IntStiParasympathetic. HomeostaticRegulation sente o estímulo IntStiParasympathetic, diminui o nível do sono e emite um IntStiValuational. Finalmente, Valuation sente o estímulo IntStiValuation e valora a experiência do robô como boa. Para o aumento do nível de ativação dos afetos, a dinâmica foi implementada da seguinte forma: PartialAppraisal emite um estímulo IntStiSympathetic. Esse estímulo é então sentido por HomeostaticRegulation que aumenta o nível dos afetos. A Figura 5.4 mostra um gráfico da evolução dos níveis dos afetos durante uma execução da arquitetura no ambiente simulado de testes. Pela análise do gráfico, pode-se perceber que até o ciclo de execução 60 os níveis de ativação das emoções aumentam linearmente, sendo que o nível de estresse aumenta mais, seguido pelo de sono e depois pelo de curiosidade. No ciclo 61, o estresse começa a diminiur, fato que se deve pelo robô ter experimentado um poste (verde), o que se repete até o ciclo 65. Nos ciclos 66 e 67, estando o nível de ativação do sono maior que o dos outros afetos, o robô dorme, o que diminui o nível de ativação do sono. Com isso, a emoção com maior nível de ativação passa a ser a curiosidade, que passa a 5.2 Considerações finais 69 ter prioridade dentre as emoções (porém, não fica visível no gráfico, pois o nível de ativação da curiosidade cai pouco, ‘0,0003’ a cada vez que o robô atende este afeto). Já no ciclo 84 o estresse volta a ser a emoção de maior nível de ativação e somente é diminuído nos ciclos 125 e 126, quando o robô experimenta um poste (azul). Há de se destacar uma pequena variação no nível do estresse, entre os ciclos 63 a 65. Neste intervalo, mesmo estando experimentando um poste, o nível do estresse aumentou um pouco (de ‘0,2220’ para ‘0,2230’) e logo em seguida caiu (de ‘0,2230’ para ‘0,2140’). Tal fato se deve pela operação ‘paralela’ dos componentes internos da arquitetura, comportamente consoante com o referencial teórico base da arquitetura. Na ocasião, um componente simplesmente pode ter ‘perdido’ um estímulo. 5.2 Considerações finais Por se tratar de uma arquitetura que pretende modelar um organismo vivo como um todo, focando em seu processo cognitivo, e ter fundamentação teórico-conceitual em diversas áreas, compreender bem a dinâmica da arquitetura Artífice e porque as coisas acontecem não é uma tarefa trivial. Quando a intenção é modificar tal arquitetura a tarefa torna-se mais complexa ainda, pelo fato da Artífice funcionar como um sistema dinâmico não determinístico, o qual pequenas alterações em um componente podem afetar em muito o comportamento global emergente do todo. Dificuldades foram encontradas durante os testes, no que diz respeito em fazer emergir um comportamento que pudesse ser considerado inteligente por um observador. Tais dificuldades relacionaram-se, principalmente, em modelar as affordances e tendências para a ação (dada uma emoção) e o processo do sistema de avaliação completa (FullAppraisal) escolher uma dentre as ações possíveis. Quando implementamos algo sem considerar as limitações existentes no mundo real (por exemplo, os objetos não somem e pessoas não atravessam paredes), é mais fácil conseguirmos os resultados que esperamos, pois em ambientes puramente abstratos, podemos forçar certas situações acontecerem, o que não ocorre num mundo físico (seja ele real ou simulado). Por causa disso, e por algumas funcionalidades do simulador não se portarem da forma esperada, encontrar um conjunto de parâmetros que, quando operando em conjunto, fizessem emergir no robô um comportamento que pudesse ser dito inteligente (como por exemplo, evitar experimentar postes vermelhos, já que estes aumentavam o nível de estresse do robô) não foi tarefa fácil. Essa etapa 5.2 Considerações finais 70 de se fazerem “ajustes finos” foi a etapa mais trabalhosa e demorada do projeto. Tem-se que, mesmo para aplicações parecidas, fazer com que os agentes destas demonstrem comportamento semelhante não é trivial. Mesmo com sua complexidade, a arquitetura mostrou-se flexível o suficiente para que pudesse ser estendida para a criação de robôs autônomos cognitivos-emocionais, fato comprovado com os testes7 de sua nova versão. 7 Trechos filmados de uma sessão de testes estão disponíveis em <www.lsi.cefetmg.br/artifice/v080>. 5.2 Considerações finais Figura 5.4: Evolução dos níveis de ativação das emoções. 71 72 6 Conclusão O uso de simuladores a cada dia tem conquistado mais adeptos. Isso se dá, dentre outros fatores, pelo seu baixo custo e pela flexibilidade na montagem dos experimentos, pois características do mundo real podem ser adicionadas e removidas conforme a aplicação. Porém, quando o assunto é o desenvolvimento de robôs autônomos, as pesquisas têm voltado seu foco no trabalho com o conceito de mente incorporada, com a indivisibilidade mente-robô-ambiente. Para que experimentos em Robótica possam ser mais flexíveis e práticos, transitando de forma menos brusca de um ambiente simulado para um real, é de grande valia uma arquitetura que possibilite tal comodidade. Neste trabalho foi estendida a arquitetura Artífice – versão 0.7.5 – para a criação de robôs autônomos, cuja estrutura e funcionamento possuem bases biológicas no funcionamento do corpo humano, mais especificamente, seu sistema nervoso. Haja visto que essa plataforma de criação de agentes inteligentes está fortemente baseada nas teorias da Cognição Situada, a qual trabalha com a filosofia de não separação mente-corpo-ambiente, o trabalho desenvolvido encontra-se dentro das tendências atuais da Robótica, no que diz respeito à criação de robôs autônomos. Mais especificamente este trabalho enquadra-se na linha de pesquisa da Robótica Situada. Para a execução deste trabalho, foi feita uma pesquisa sobre os simuladores de robôs disponíveis, discutida no Capítulo 2. Nessa pesquisa analisaram-se, dentre outros pontos, os experimentos nos quais os simuladores estavam sendo usados e por quem, qual a flexibilidade oferecida quanto ao ambiente de desenvolvimento, os robôs suportados, seu custo e a facilidade de encontrar ajuda. Como resultado da pesquisa foi escolhido um simulador para ser usado na adaptação da arquitetura. A utilização do simulador em conjunto com a Artífice (integração) deu-se de forma tranqüila e sem maiores problemas. Há apenas um ponto a ser levado consideração, destacado mais adiante, no item 2 da Seção 6.3. O desenvolvimento de robôs emocionais-cognitivos, que têm embutido um cérebro 6.1 Observações sobre a arquitetura 73 artificial biologicamente inspirado, foi discutido no Capítulo 3, onde foi dado enfoque em dois projetos, quais sejam: 1. projeto Darwin, coordenado por Gerald M. Edelman, que consiste no desenvolvimento de dispositivos baseados no cérebro (brain-based devices) para testar modelos de funcionamento do cérebro de vertebrados; 2. o projeto Artífice, coordenado por Henrique H. Borges, que consiste no desenvolvimento de um arcabouço (framework ) para criação de agentes cognitivos e situados. O Capítulo 4 destinou-se a mostrar as alterações feitas na versão 0.7.5 da arquitetura Artífice para a geração de sua nova versão, 0.8.0, dotada de suporte para a criação de robôs autônomos emocionais-cognitivos (RAEC), sendo que os resultados dos experimentos com a nova versão da arquitetura foram mostrados no Capítulo 5. 6.1 Observações sobre a arquitetura Durante o desenvolvimento do trabalho pôde ser constatado que o comportamento apresentado pelo agente construído com a arquitetura Artífice é bastante sensível aos parâmetros de configuração apresentados no Anexo A, bem como ao relacionamento afeto/tendências para ação. O ajuste dos parâmetros da arquitetura é feito de forma empírica, modificando determinado parâmetro e testando para ver se o resultado obtido foi satisfatório. Por se tratar de um sistema dinâmico, uma mudança pequena no valor de determinado parâmetro pode acarretar uma grande mudança no comportamento do agente, podendo fazer um agente que estava agindo de forma coordenada e satisfatória a ter um comportamento caótico, descontrolado. Outra observação que merece destaque é o consumo de processamento exigido pela arquitetura. Como suas threads rodam por um intervalo de tempo indefinido, o aumento do poder computacional não significa aumento na velocidade da aplicação. Isso porque as threads executam tantas vezes quantas fortem suportadas pelo processador, haja visto que elas não operam por um tempo determinado e depois dormem. Elas operam de forma incessante, consumindo os recursos de processamento que estiverem disponíveis. Ambas observações foram destacadas como pontos a serem vistos em trabalhos futuros. 6.2 Principais contribuições deste trabalho 74 6.2 Principais contribuições deste trabalho Com a conclusão deste trabalho, gerou-se a versão 0.8.0 da arquitetura Artífice, conferindo à arquitetura suporte ao desenvolvimento de aplicações em Robótica. As alterações feitas na arquitetura se deram de forma que se precise alterar o mínino possível o núcleo da mesma, quando da transferência de uma aplicação de um ambiente de Vida Artificial (mundo simulado que não leva em conta as características do mundo real) para um ambiente com características físicas, seja ele simulado ou real. Ainda, para facilitar a transição entre tais ambientes, a arquitetura foi integrada ao arcabouço Player/Stage/Gazebo (PSG), o qual conferiu transparência no processo de execução de um mesmo experimento em ambientes de mundos simulados e reais. Com isso, a pessoa responsável por modelar a aplicação não precisa se preocurar se ela será executada num ambiente real ou simulado, pois o servidor Player é quem cuida da comunicação com tais ambientes, interagindo, via rede, tanto com o mundo simulado (2D ou 3D) quanto com o mundo real. A nova versão da arquitetura vai permitir aos colaboradores do projeto Artífice testar seus experimentos no mundo real, num robô. Com isso, tem-se um arcabouço flexível para o desenvolvimento de agentes autônomos emocionais-cognitivos, que podem ser construídos para atuar tanto num ambiente simulado em software, quanto no mundo real. 6.3 Dificuldades encontradas No decorrer do trabalho, foram encontradas algumas dificuldades, dentre as quais destacam-se: 1. a instalação do arcabouço PSG. Por fazer uso de várias bibliotecas, dentre elas, bibliotecas científicas para tratamento de imagem e para simulação de ambientes físicos, e não possuir um pacote pronto para instalação, esta não mostrou-se trivial. Os arquivos do arcabouço são baixados da Internet e devem ser primeiramente compilados, para depois serem instalados. Por tal dificuldade, achou-se interessante ter um passo-a-passo (Anexo C) para a instalação do PSG num sistema operacional GNU/Linux, distribuição Ubuntu; 2. erros de comunicação da arquitetura Artífice com determinados dispositivos do PSG. Alguns dispositivos tiveram seu funcionamento reduzido por problemas 6.4 Trabalhos futuros 75 de comunicação entre as bibliotecas para clientes Java do servidor Player e o simulador Gazebo. Ações como fazer a câmera do robô mover-se simplesmente não funcionaram. Também a utilização de garras no robô foi removida, pois estas não podiam ser fechadas, pelo mesmo problema. Os mantenedores do projeto PSG disseram que na nova versão do arcabouço esses problemas seriam corrigidos; 3. complexidade da arquitetura. Fazer alterações na arquitetura Artífice não é um processo trivial, por menor que elas sejam. Isto acontece, dentre outros fatores, por: esta ter um forte embasamento téorico-conceitual em diferentes áreas, tais como Biologia, Psicologia e Neurociência; tratar de um assunto tão complexo como a cognição; ser um sistema dinâmico, no qual pequenas alterações pontuais podem afetar em muito o comportamento global. 6.4 Trabalhos futuros Haja visto que o projeto Artífice ainda está em seu começo, seguem abaixo algumas sugestões para trabalhos futuros, como forma de ajudar no andamento do projeto: 1. fazer testes com robôs reais construídos a partir da Artífice; 2. usar redes neurais artificiais biologicamente plausíveis, como as constituídas por neurônios pulsantes, para coordenar a dinâmica interna da arquitetura, inclusive o processo das memórias de curto e longo prazo; 3. tornar a configuração da arquitetura (ajustes da mesma para uma aplicação específica) mais fácil, talvez utilizando arquivos XML, como é feito no projeto Player/Stage/Gazebo; 4. atualizar o arcabouço PSG para as versões mais novas de seus componentes, principalmente o simulador Gazebo, que irá possuir várias melhorias, a fim de evitar as falhas de comunicação entre as bibliotecas e obter melhores simulações; 5. expandir o sistema sensório-motor, bem como o processo de coordenação do mesmo, a fim de que o agente tenha mais possibilidades de interação com o meio e com isso, um melhor comportamento cognitivo; 6. fazer com que as possibilidades de ação (affordances) da arquitetura sejam aprendidas pelo agente, em sua ontogenia; 6.5 Considerações finais 76 7. dotar a arquitetura de um mecanismo de condicionamento (clássico/instrumental); 8. trabalhar na otimização do código da arquitetura, para tentar diminuir seu custo computacional; 9. tentar melhorar a forma de configuração da arquitetura, tentando minimizar os impactos bruscos da mudança dos parâmetros da arquitetura, talvez achando uma forma de deixar alguns parâmetros auto-configuráveis. 6.5 Considerações finais Os experimentos feitos demostraram que a arquitetura Artífice é flexível o suficiente não somente para a criação de agentes em software, mas também para agentes em hardware (robôs). Também, como tem sido frisado pelos estudiosos da Cognição Situada, observouse que o aprendizado do robô será tanto melhor, mais elaborado, quanto forem os dispositivos de interação com o mundo, ou seja, quanto maior for sua capacidade sensório-motora. Isso deve-se ao fato de que o processo cognitivo se dá pela interação entre organismo e seu meio, pelo acoplamento estrutural entre robô e ambiente, o qual depende da coordenação sensório-motora do robô, que o mantém em congruência com o meio. Haja visto que a arquitetura já alcançou um bom grau de maturidade e adequado funcionamento e, visto que sua complexidade vem aumentando a cada novo projeto, faz necessário sua reorganização, reestruturação, para tentar deixá-la mais simples de se instanciar uma aplicação e mesmo modificar seu núcleo. Por sua complexidade, trabalhar com a arquitetura Artífice mostrou-se ser uma tarefa desafiadora e empolgante. A conclusão deste projeto me fez crescer muito, seja como pesquisador (pois me atiçou ainda mais o gosto de aprender coisas novas), pessoa (pude ajudar e ser ajudado por meus colegas, e sem eles eu não teria terminado o trabalho), cidadão (contribuir para o crescimento científico da humanidade é sempre gratificante) e familiar (nas horas difíceis é aos familiares e aos amigos a quem recorremos). Por tudo o que foi dito, sinto-me satisfeito em ter participado do projeto Artífice. 77 Referências Bibliográficas ACTIVMEDIA. MobileRobots: Software, Documentation & Technical Suport for MobileRobots Research Platforms. 2008. Disponível em: <http://robots.mobilerobots. com>. Acesso em: 26 dez. 2008. AGRE, P. E.; CHAPMAN, D. Pengi: An implementation of a theory of activity. In: Proceedings of the American Association of Artificial Intelligence Conference (AAI-87). Seattle, Washington: [s.n.], 1987. BALCH, Tucker. Behavioral Diversity in Learning Robot Teams. 1998. Tese (Doutorado) — College of Computing, Georgia Institute of Technology, 1998. BATESON, Gregory. Steps to an Ecology of Mind. S. Francisco: Chandler Publ. Group, 1972. BEER, Randall D. The dynamics of adaptative behavior: A research program. Robotics and Autonomous Systems, v. 20, p. 257–289, 1997. BEER, Randall D. Dynamical approaches to cognitive science. Trends in Cognitive Sciences, v. 3, n. 4, p. 91–99, 2000. BEER, Randall D. et al. Biologically inspired approaches to robotics: what can we learn from insects? Communications of the ACM, v. 40, n. 3, p. 30–38, March 1997. BORGES, Henrique Elias. Arquitetura Flexível para a Criação de Agentes de Software Cognitivos e Situados: teoria, metodologia e ferramentas. Centro Federal de Educação Tecnológica de Minas Gerais, 2002. Projeto de Pesquisa (Diretoria de Pesquisa e Pós-Graduação). BOURGINE, Paul; VARELA, Francisco J. Toward a practice of autonomous systems. Toward a Practice of Autonomous Systems: Proceedings of the First European Conference on Artificial Life, p. xi–xvii, 1992. BROOKS, Rodney A. A robust layered control system for a mobile robot. IEEE Journal of Robotics and Automation, RA-2, n. 1, p. 14–23, April 1986. BROOKS, Rodney A. How to build complete creatures rather than isolated cognitive simulators. Architectures for Intelligence, p. 225–239, Fall 1998. BROOKS, Rodney A. et al. The cog project: Building a humanoid robot. In: NEHANIV, C. (Ed.). Computation for Metaphors, Analogy and Agents. [S.l.]: Springer-Verlag, 1998, (Springer Lecture Notes in Artificial Intelligence, v. 1562). BUCK, Ross. The biological affects: a typology. Psycological Review, Ross Buck, v. 106, n. 2, p. 301–336, 1999. Referências Bibliográficas 78 BURMEISTER, B.; SUNDERMEYER, K. Cosy: towards a methodology of multi-agent systems. In: International Working Conference of Cooperating Knowledge-Based Systems. Keele, UK.: [s.n.], 1990. CAMPOS, Luciana Maria de Assis. Modelagem do Processo Cognitivo-Emocional de um Organismo Artificial numa Perspectiva Dinâmico-Interacionista. 2006. Dissertação (Mestrado) — Centro Federal de Educação Tecnológica de Minas Gerais, 2006. CAMPOS, Luciana Maria de Assis; BORGES, Henrique Elias. Modelagem do processo cognitivo-emocional de um organismo artificial bio-inspirado. IX Encontro de Modelagem Computacional, Novembro 2006. CARMEN-TEAM. CARMEN: Robot Navigation Toolkit. 2008. Disponível em: <http://carmen.sourceforge.net>. Acesso em: 26 nov. 2008. CARTER, Rita. O Livro de Ouro da Mente. Rio de Janeiro, RJ: Ediouro Publicações S. A., 2002. CHAVES, Jeferson Figueiredo. Síntese de Estrutuas Bio-inspiradas Baseadas em Redes de Neurônios Pulsantes. 2007. Dissertação (Mestrado) — Centro Federal de Educação Tecnológica de Minas Gerais, 2007. CLANCEY, William J. Situated Cognition: On Human Knowledge and Computer Representations. [S.l.]: Cambridge University Press, 1997. CLARK, Andy. Being There: Putting Brain, Body and World Together Again. Cambridge, Massachusetts: MIT Press, 1997. COLLETT, Toby H.J.; MACDONALD, Bruce A.; GERKEY, Brian P. Player 2.0: Toward a practical robot programming framework. In: Proceedings of the Australasian Conference on Robotics and Automation (ACRA 2005). Sydney, Australia: [s.n.], 2005. COSTA, Fernando Almeida e; ROCHA, Luis Mateus. Embodied and situated cognition. Artificial Life, v. 11, p. 5–11, 2005. Disponível em <http://informatics.indiana.edu/rocha/embrob/papers/intro.pdf>. Acesso em: 10 nov. 2007. EDELMAN, Gerald M. Neural Darwinism: The Theory of Neuronal Group Selection. [S.l.]: Basic Books, 1987. FERGUSON, Innes Andrew. TouringMachines: An Architecture for Dynamic, Rational, Mobile Agents. 1992. Tese (Doutorado) — University of Cambridge, 1992. FIKES, R.; NILSSON, N. Strips: A new approach to the application of theorem proving to problem solving. In: 2nd International Joint Conference on Artificial Intelligence (IJCAI-71). [S.l.: s.n.], 1971. p. 608–620. FITZPATRICK, Paul et al. Learning about objects through action - initial steps towards artificial cognition. In: Proceedings of the IEEE International Conference on Robotics and Automation (ICRA). Taipei, Taiwan: [s.n.], 2003. Referências Bibliográficas 79 FLEISCHER, Jason G. et al. Retrospective and prospective responses arising in a modeled hippocampus during maze navigation by a brain-based device. In: Proceedings of National Academy of Sciences of the USA. [S.l.: s.n.], 2007. v. 104, n. 9, p. 3556–3561. FLEISCHER, Jason G. et al. A neurally controlled robot competes and cooperates with humans in segway soccer. In: Proceedings of the IEEE International Conference on Robotics and Automation. Orlando, Florida: [s.n.], 2006. FLORIAN, Razvan V. Spiking neural controllers for pushing objects around. Proceedings of the Ninth International Conference on the Simulation of Adaptive Behavior (SAB’06), Lecture Notes in Artificial Intelligence 4095, p. 570–581, 2006. GAMMA, Erich et al. Padrões de projeto: soluções reutilizáveis de software orientado a objetos. Luiz A. Meirelles Salgado (Trad.). Porto Alegre: Bookman, 2006. 364 p. GAT, E. Three-layer architectures. In: KORTENKAMP, D.; MURPHY, R. P. Bonasso andR. (Ed.). Artificial Intelligence and Mobile Robots: Case Studies of Successful Robot Systems. Cambridge, MA: MIT Press, 1998. p. 195–210. GENESERETH, M. R.; NILSSON, N. Logical Foundations of Articial Intelligence. Los Altos, CA, USA: Morgan Kaufmann Publishers, 1987. GERKEY, Brian P.; VAUGHAN, Richard T.; HOWARD, Andrew. The player/stage project: Tools for multi-robot and distributed sensor systems. In: Proceedings of the 11th International Conference on Advanced Robotics (ICAR 2003). Coimbra, Portugal: [s.n.], 2003. p. 317–323. GERKEY, Brian P. et al. The Player Project: Free Software tools for robot and sensor applications. 2008. Disponível em: <http://playerstage.sourceforge.net>. Acesso em: 26 dez. 2008. GIBSON, J. J. The theory of affordances. In: SHAW, R.; BRANSFORD, J. (Ed.). Perceiving, acting and knowing: toward an ecological psycology. Hillsdale NJ: Lawrence Erlbaum Associates Publishers, 1977. p. 67–82. HARTER, Derek; KOZMA, Robert; GRAESSER, Arthur C. Models of ontogenetic development for autonomous adaptive systems. In: Proceedings of the 23rd Annual Conference of the Cognitive Science Society. [s.n.], 2001. p. 405–410. Disponível em: <http://faculty.tamu-commerce.edu/dharter/pubs/conf/2001/cogsci2001/cogsci2001.pdf>. HASELAGER, Willem F. G. Co-evolutionary robotics and the problems of autonomy. In: 8th Brazilian Symposium on Artificial Neural Networks (SBRN). São Luis, Maranhão: [s.n.], 2004. KAELBLING, L.; ROSENSCHEIN, S. A situated view of representation and control. Artificial Intelligence, v. 73, p. 149–173, 1995. KOENIG, Nathan; HOWARD, Andrew. Design and use paradigms for gazebo, an open-source multi-robot simulator. In: SENDAI, JAPãO. Proceedings of 2004 IEEE/RSJ International Conference on Intelligent Robot and Systems. [S.l.], 2004. KOFFKA, Kurt. Principles of Gestalt Psychology. [S.l.]: Routledge, 1955. Referências Bibliográficas 80 KRICHMAR, Jeffrey L. et al. Spatial navigation and causal analysis in a brain-based device modeling cortical-hippocampal interactions. Neuroinformatics, v. 3, n. 3, p. 197–222, 2005. LAUE, Tim; SPIESS, Kai; RöFER, Thomas. Simrobot - a general physical robot simulator and its application in robocup. In: BREDENFELD, A. et al. (Ed.). RoboCup 2005: Robot Soccer World Cup IX. [S.l.]: Springer, 2006. (Lecture Notes in Artificial Intelligence, 4020), p. 173 – 183. LEDOUX, Joseph. Sinaptic Self: how our brain became who we are. New York: Penguin Group, 2003. LEDOUX, Joseph E. Emotion: clues from the brain. Annual Reviews Psycology, v. 46, p. 209–235, 1995. LEWIS, Marc D. Bridging emotion theory and neurobiology through dynamic systems modeling. Behavioral an Brain Science, v. 28, p. 169–245, 2005. MATURANA, Humberto R.; VARELA, Francisco J. A árvore do Conhecimento: as bases biológicas da compreensão humana. 4. ed. São Paulo: Palas Athena, 2004. MICONI, T.; CHANNON, A. An improved system for artificial creatures evolution. Proceedings of the 10th conference on the simulation and synthesis of living systems (ALIFE X), 2006. MICROSOFT. Microsoft Robotics Studio. 2008. Disponível em: <http://msdn.microsoft. com/robotics>. Acesso em: 26 dez 2008. MIT, Humanoid Robotics Group. Cog. 2007. Disponível em: <http://www.ai.mit.edu/ projects/humanoid-robotics-group/cog/cog.html>. Acesso em: 11 nov. 2007. MURPHY, Robin. Introduction to AI Robotics. [S.l.]: MIT Press, 2000. NEUMANN, John von. The Computer and the Brain. New Haven and London: Yale University Press, 1948. NEWELL, A. Physical symbol systems. Cognitive Science, v. 4, p. 135–183, 1980. NOLFI, Stefano. Evolutionary robotics: Looking forward. Connection Science, v. 4, p. 223–225, 2004. NOLFI, Stefano et al. How to evolve autonomus robots: Different approaches in evolutionary robotics. Proceedings of the International Conference Artificial Life IV, p. 190–197, 1994. NSI, The Neuroscience Institute. Brain-Based Devices. 2007. Disponível em: <http://vesicle.nsi.edu/nomad/>. Acesso em: 11 nov. 2007. OLIVEIRA, Geraldo Magela Couto. Emergência de sincronicidade em grupos de neurônios pulsantes acoplados. Anais do X Encontro de Modelagem Computacional, 2007. Referências Bibliográficas 81 OLIVEIRA, Geraldo Magela Couto. Emergência de Sincronicidade em um Sistema de Neurônios Pulsantes Acoplados. 2007. Dissertação (Mestrado) — Centro Federal de Educação Tecnológica de Minas Gerais, 2007. OLIVEIRA, Paloma Maira de. Uma Aplicação em 3D de Vida Artificial Baseada em Agentes de Sofware Cognitivos e Situados. 2006. Dissertação (Mestrado) — Centro Federal de Educação Tecnológica de Minas Gerais, 2006. OPENGL – The Industry Standard for High Performance Graphics. 2008. Disponível em: <http://www.opengl.org/>. Acesso em: 03 mar. 2008. PFEIFER, Rolf; VERSCHURE, Paul. Distributed adaptative control: A paradigm for designing autonomous agents. Toward a Practice of Autonomous Systems: Proceedings of the First European Conference on Artificial Life, p. 21–30, 1992. PIRES, Anderson Grandi. Modelagem de um Mecanismo de Percepção-em-ação para os Agentes de Software Cognitvos Situados e Extensão da Arquitetura Artífice. 2005. Dissertação (Mestrado) — Centro Federal de Educação Tecnológica de Minas Gerais, 2005. REA, Sara Morgan. An introduction to programming robots with microsoft robotics studio. Devx.com, Outubro 2006. Disponível em: <http://www.devx.com/dotnet/Article/ 32729>. Acesso em: 14 dez. 2006. REEKE, George N. Synthetic neural modeling: The “darwin” series of recognition automata. IEEE Proceedings, v. 78, n. 9, p. 1498–1530, September 1990. Special issue on Neural Networks. SANTOS, Bruno André. Aspectos Conceituais e Arquiteturais para a Criação de Linhagens de Agentes de Software Cognitivos e Situados. 2003. Dissertação (Mestrado) — Centro Federal de Educação Tecnológica de Minas Gerais, 2003. SCHERER, Klaus R.; SCHORR, Angela; JOHNSTONE, Tom. Appraisal Processes in Emotion: Theory, Methods, Research. [S.l.]: Oxford University Press, 2001. 478 p. SELIG, Jon M. Introductory Robotics. [S.l.]: Prentice Hall, 1992. SHARDLOW, N. Action and agency in cognitive science. 1990. Dissertação (Mestrado) — Department of Psychlogy, University of Manchester, Oxford Rd., Manchester M13 9PL, UK, 1990. SIEMS, Uwe et al. SimRobot – 3D-Robotiksimulator. 2008. Disponível em: <http://www.informatik.uni-bremen.de/simrobot/>. Acesso em: 26 dez 2008. SMITH, Russell. Open Dynamics Engine. 2008. Disponível em: <http://www.ode.org/>. Acesso em: 03 mar. 2008. SOFGE, D. A. Design, implementation, and cooperative coevolution of an autonomous/teleoperated control system for a serpentine robotic manipulator. Proceedings of the American Nuclear Society Nith Topical Meeting on Robotics and Remote Systems, Seattle, Washington, March 2001. Referências Bibliográficas 82 SOFGE, D. A. et al. Challenges and opportunities of evolutionary robotics. In: Proceedings of the Second International Conference on Computational Intelligence, Robotics and Autonomous Systems (CIRAS). Singapore: [s.n.], 2003. STERNBERG, Robert. Cognitive Psychology. [S.l.]: Thomas Wadsworth, 2006. THELEN, Esther et al. The dynamics of embodiment: A field theory of infant perseverative reaching. Behavioral and Brain Sciences, v. 24, p. 1–86, 2001. TUTORIAL Player. [S.l.], 2007. Disponível em <http://robotics.usc.edu/~boyoon/tmp/ Player\%20Tutorial.ppt>. Acesso em: 11 nov. 2007. WANG, Xiuqing et al. A behaviour controller based on spiking neural networks for mobile robots. Neurocomputing, 2007. Doi:10.1016/j.neucom.2007.08.025. 83 ANEXO A -- Parâmetros de configuração da aplicação Nas tabelas abaixo encontram-se os parâmetros de configuração usados para a aplicação que serviu de teste para a versão 0.8.0 da arquitetura Artífice. Este é o conteúdo da classe “br.cefetmg.lsi.artifice.core.common.Constants”. Nível inicial de ativação dos afetos INITIAL_STRESS 0.18 INITIAL_SLEEP 0.18 INITIAL_CURIOSITY 0.18 INITIAL_BEEP 0.18 Deltas para diminuição dos níveis das emoções RED_BLOB_PARASYM_DELTA -0.05 GREEN_BLOB_PARASYM_DELTA 0.01 BLUE_BLOB_PARASYM_DELTA 0.1 APPROACH_PARASYM_DELTA 0.0003 SLEEP_PARASYM_DELTA 0.004 Delta para o aumento dos níveis das emoções SYM_DELTA 0.001 Número de threads para cada grupo FASTTHREADS 4 PARTIALTHREADS 3 FULLTHREADS 7 Anexo A -- Parâmetros de configuração da aplicação 84 Prioridade das threads Valuation HomeostaticRegulation e PartialAppraisal PRIORITY_PARTIAL 1 Prioridade das threads MuscularEffector, CameraEffector FullAppraisal, Position2D, Sonar, Laser e Camera PRIORITY_FULL 1 Valores máximos e mínimos para as medidas do sonar SONAR_MIN_VALUE 0.2 SONAR_MAX_VALUE 5.0 Limiares dos sensores SONAR_TOUCHING_THRESHOLD SONAR_CAN_IGNORE_SMALL_AREAS_THRESHOLD LASER_TOUCHING_THRESHOLD LASER_CAN_IGNORE_SMALL_AREAS_THRESHOLD SEEING_BLOB_THRESHOLD Cores dos objetos ( blobs) RED_BLOB 16711680 GREEN_BLOB 65280 BLUE_BLOB 255 1.0 0.47 1.0 0.61 5300 Anexo A -- Parâmetros de configuração da aplicação Maior valor gerado aleatoriamente para sleep cíclico das threads SLEEP_BODY 100 SLEEP_SONAR 100 SLEEP_LASER 100 SLEEP_POSITION2D 100 SLEEP_CAMERA 100 SLEEP_BUZZER 100 SLEEP_BEEP 100 SLEEP_PARTIAL 100 SLEEP_FULL 100 SLEEP_VALUATION 100 SLEEP_HOMEOSTATIC_REGULATION 100 SLEEP_VISION_SENSOR 100 SLEEP_SONAR_SENSOR 100 SLEEP_LASER_SENSOR 100 SLEEP_BUZZER_EFFECTOR 100 SLEEP_CAMERA_EFFECTOR 100 SLEEP_MUSCULAR_EFFECTOR 100 85 86 ANEXO B -- Parâmetros de configuração da simulação B.1 Mundo 3D O mundo simulado que foi usado na aplicação de teste foi montado segundo o esquema XML abaixo: <?xml version="1.0"?> <gz:world xmlns:gz="http://playerstage.sourceforge.net/gazebo/xmlschema/#gz" xmlns:model="http://playerstage.sourceforge.net/gazebo/xmlschema/#model" xmlns:sensor="http://playerstage.sourceforge.net/gazebo/xmlschema/#sensor" xmlns:window="http://playerstage.sourceforge.net/gazebo/xmlschema/#window" xmlns:param="http://playerstage.sourceforge.net/gazebo/xmlschema/#params" xmlns:ui="http://playerstage.sourceforge.net/gazebo/xmlschema/#params"> <model:ObserverCam> <id>userCam0</id> <xyz>-8.0 0.0 5.0</xyz> <rpy>0 30 0</rpy> <imageSize>640 480</imageSize> <updateRate>8</updateRate> <renderMethod>auto</renderMethod> </model:ObserverCam> <model:SkyDome> <toneMap>images/skyTones.jpg</toneMap> <timeLapse>false</timeLapse> </model:SkyDome> B.1 Mundo 3D <model:LightSource> <id>light1</id> <xyz>0 0 8</xyz> <ambientColor>0.2, 0.2, 0.2</ambientColor> <diffuseColor>0.8, 0.8, 0.8</diffuseColor> <specularColor>0.2, 0.2, 0.2</specularColor> <attenuation>1.0, 0.0, 0.00</attenuation> </model:LightSource> <model:LightSource> <id>light2</id> <xyz>10 10 2</xyz> <ambientColor>0.2, 0.2, 0.2</ambientColor> <diffuseColor>0.8, 0.8, 0.8</diffuseColor> <specularColor>0.2, 0.2, 0.2</specularColor> <attenuation>1.0, 0.0, 0.00</attenuation> </model:LightSource> <model:LightSource> <id>light3</id> <xyz>10 -10 2</xyz> <ambientColor>0.2, 0.2, 0.2</ambientColor> <diffuseColor>0.8, 0.8, 0.8</diffuseColor> <specularColor>0.2, 0.2, 0.2</specularColor> <attenuation>1.0, 0.0, 0.00</attenuation> </model:LightSource> <model:LightSource> <id>light4</id> <xyz>-10 -10 2</xyz> <ambientColor>0.2, 0.2, 0.2</ambientColor> <diffuseColor>0.8, 0.8, 0.8</diffuseColor> <specularColor>0.2, 0.2, 0.2</specularColor> <attenuation>1.0, 0.0, 0.00</attenuation> </model:LightSource> 87 B.1 Mundo 3D <model:LightSource> <id>light5</id> <xyz>-10 10 2</xyz> <ambientColor>0.2, 0.2, 0.2</ambientColor> <diffuseColor>0.8, 0.8, 0.8</diffuseColor> <specularColor>0.2, 0.2, 0.2</specularColor> <attenuation>1.0, 0.0, 0.00</attenuation> </model:LightSource> <model:GroundPlane> <id>ground1</id> <color>255 255 0</color> <textureFile>images/grid.ppm</textureFile> </model:GroundPlane> <model:Terrain> <xyz>-9.0 -8.0 -0.1</xyz> <color>150 150 150</color> <textureFile>images/wall.ppm</textureFile> <terrainFile>images/world.gzb</terrainFile> </model:Terrain> <!-- Robot --> <model:Pioneer2DX> <id>robot1</id> <xyz>-3.0 0.0 0.2</xyz> <model:TruthWidget> <id>truth1</id> </model:TruthWidget> <model:SickLMS200> <id>laser1</id> <xyz>0.0 0.0 0.00</xyz> <model:SonyVID30> <id>camera1</id> <xyz>0 0 0.2</xyz> </model:SonyVID30> </model:SickLMS200> 88 B.1 Mundo 3D </model:Pioneer2DX> <!-- Blue boxes --> <model:SimpleSolid> <id>box1</id> <xyz>1 0 0</xyz> <shape>box</shape> <size>0.15 0.15 0.70</size> <mass>1.0</mass> <color>0 0 255</color> <textureFile>images/blue-box-texture.ppm</textureFile> </model:SimpleSolid> <model:SimpleSolid> <id>box1</id> <xyz>3 1 0</xyz> <shape>box</shape> <size>0.15 0.15 0.70</size> <mass>1.0</mass> <color>0 0 255</color> <textureFile>images/blue-box-texture.ppm</textureFile> </model:SimpleSolid> <!-- Red boxes --> <model:SimpleSolid> <id>box2</id> <xyz>2 3 0</xyz> <shape>box</shape> <size>0.15 0.15 0.70</size> <mass>1.0</mass> <color>255 0 0</color> <textureFile>images/red-box-texture.ppm</textureFile> </model:SimpleSolid> <model:SimpleSolid> <id>box2</id> <xyz>0 3 0</xyz> 89 B.2 Servidor Player 90 <shape>box</shape> <size>0.15 0.15 0.70</size> <mass>1.0</mass> <color>255 0 0</color> <textureFile>images/red-box-texture.ppm</textureFile> </model:SimpleSolid> <!-- Green boxes --> <model:SimpleSolid> <id>box3</id> <xyz>2 -3 0</xyz> <shape>box</shape> <size>0.15 0.15 0.70</size> <mass>1.0</mass> <color>0 255 0</color> <textureFile>images/green-box-texture.ppm</textureFile> </model:SimpleSolid> <model:SimpleSolid> <id>box3</id> <xyz>0 -3 0</xyz> <shape>box</shape> <size>0.15 0.15 0.70</size> <mass>1.0</mass> <color>0 255 0</color> <textureFile>images/green-box-texture.ppm</textureFile> </model:SimpleSolid> </gz:world> B.2 Servidor Player O conteúdo do arquivo de configuração do servidor Player, usado para a comunicação com o simulador Gazebo, pode ser visto abaixo. driver( name "gazebo" B.2 Servidor Player provides ["simulation:0"] plugin "libgazeboplugin" server_id "default" ) driver( name "gazebo" provides ["position2d:0"] gz_id "robot1" ) driver( name "gazebo" provides ["laser:0"] gz_id "laser1" ) driver( name "gazebo" provides ["sonar:0"] gz_id "robot1" ) driver( name "gazebo" provides ["camera:0"] gz_id "camera1" ) driver( name "cmvision" provides ["blobfinder:0"] requires ["camera:0"] colorfile ["colors.txt"] ) driver( 91 B.3 Configuração do algoritmo blobfinder 92 name "gazebo" provides ["ptz:0"] gz_id "camera1" ) B.3 Configuração do algoritmo blobfinder Os parâmetros de configuração (arquivo “colors.txt”) usado pelo algoritmo blobfinder integrante do arcabouço Player/Stage/Gazebo, para o reconhecimento de objetos coloridos blobs encontram-se abaixo. [Colors] (255, 0, 0) 0.000000 10 Red ( 0,255, 0) 0.000000 10 Green ( 0, 0,255) 0.000000 10 Blue [Thresholds] ( 10:184, 40:120,130:270) ( 5:240, 10:120, 20:145) ( 15:190,145:255, 40:120) 93 ANEXO C -- Passo-a-passo para instalação do arcabouço Player / Stage / Gazebo Este passo-a-passo basea-se na instalação do Player/Stage/Gazebo em um sistema operacional GNU/Linux, distribuição Ubuntu, em sua versão 7.04. Os fontes dos módulos Player, Stage e Gazebo podem ser obtidos em 2.1.1. As versões utilizadas neste tutorial são: 2.0.4 para o Player, 2.0.3 para o Stage e 0.7.0 para o Gazebo. C.1 Instalação do servidor Player Para a instalação do servidor Player é necessário ter os seguintes pacotes instalados: 1.gcc com suporte a C++ (g++); 2.autoconf; 3.automake; 4.libtool; 5.make; 6.libltdl e libltdl-dev; 7.boost (libboost-signals-dev, libboost-thread-dev); 8.gsl-devel (libgsl0-dev) => para o driver amcl; 9.libraw1394; 10.libdc1394; 11.libjpeg; C.1 Instalação do servidor Player 94 12.opencv (libcv-dev); 13.swig e pythonXX-dev. Passos para instalação: 1.Desempacotar o Player; 2.Dentro da pasta desempacotada, rodar, na seqüência: (a)./configure (b)make1 (c)make install Para instalar as bibliotecas de desenvolvimento Java do Player (Javaclient2 ), é necessário o programa “ant”3 para a instalação. Abaixo estão os passos para a instalação: 1.desempacotar a biblioteca Javaclient; 2.dentro da pasta desempacotada, executar, na linha de comando, “ant”; 3.copiar a pasta "classes/javaclient2"para o local onde estão as bibliotecas do Player, no caso “/usr/local/include/player-2.0”: “$ sudo cp -a classes/javaclient2 /usr/local/include/player-2.0”; 4.copiar a pasta “docs” para “/usr/local/include/player-2.0/javaclient2”: “$ sudo cp -a docs /usr/local/include/player-2.0/javaclient2”; 5.exportar o classpath do Javaclient: $ export CLASSPATH="$CLASSPATH:/usr/local/include/player-2.0:." 1 Se ocorrer erro com o cabeçalho "videodev2.h", adicione "#include <linux/types.h>"antes da linha "#include <linux/videodev2.h>"no arquivo "player-2.0.3/server/drivers/camera/uvc/v4l2uvc.h"e rode "make"novamente. 2 Disponível em <http://java-player.sourceforge.net> 3 Disponível em <http://ant.apache.org/> C.2 Instalação do simulador 2D Stage 95 C.2 Instalação do simulador 2D Stage Para a instalação do servidor Stage é necessário ter os seguintes pacotes instalados: libgtk2.0 e libgtk2.0-dev. Passos para instalação: 1.Desempacotar o Stage; 2.Dentro da pasta desempacotada, rodar, na seqüência: (a)./configure (b)make (c)ln -s /usr/lib/X11/rgb.txt /usr/X11R6/lib/X11/rgb.txt (d)src/stest worlds/everything.world robot14 ; (e)make install C.3 Instalação do simulador 3D Gazebo Para a instalação do simulador 3D Gazebo, é necessário ter os seguintes pacotes instalados: 1.libglut3 e libglut3-dev; 2.libxml2 e libxml2-dev; 3.libXmu6 e libXmu-dev; 4.libode0-dev; 5.driver da placa de vídeo 3D ativada: nvidia-glx-legacy (driver para placa de video Riva TNT2) ou nvidia-glx5 (driver para placa de video GForce); 6.swig; 7.python e python-dev; 8.python-wxgtk (wxPython); 4 Para testar se a instalação do Stage foi bem sucedida o driver usando o comando “sudo nvidia-glx-config enable”. 5 Habilitar C.4 Compilação de programas 96 9.libgeos-dev; 10.libjasper-1.701-dev; 11.libtiff4-dev; 12.libxerces26-dev; 13.libhdf4g-dev; 14.libungif4-dev; 15.libnetcdf++3 e netcdfg-dev; 16.libcfitsio-dev; 17.libpq-dev; 18.lib3ds; 19.python-gdal, libgdal1-1.3.1 e libgdal1-1.3.1-dev6 . Passos para instalação: 1.desempacotar o Gazebo; 2.dentro da pasta desempacotada, rodar, na seqüência: (a)./configure (b)make (c)make install 3.adicionar “/usr/local/lib” ao arquivo “/etc/ld.so.conf” e rodar, como root “/sbin/ldconfig”. C.4 Compilação de programas Para compilar programa em C++: $ g++ -o example0 ‘pkg-config –cflags playerc++‘ example0.cc ‘pkg-config –libs playerc++‘ 6 Criar um link simbólico: “$ sudo ln -s /usr/lib/libgdal1.3.1.so /usr/local/lib/libgdal.so”. Precisa fazer isso porque senão não será instalado o editor de terrenos. É importante que o link seje criado apontando para a versão correta da biblioteca C.5 Rodando um programa com Player 97 Para compilar programa em C: $ gcc -o example0 ‘pkg-config –cflags playerc‘ example0.c ‘pkg-config –libs playerc‘ Para compilar programa em Java: $ javac example0.java C.5 Rodando um programa com Player Para rodar um programa com o Player, faça o seguinte: 1.abra um terminal, vá até o diretório que contém os arquivos “.cfg”, “.world” “.inc” e os bitmaps e execute o Player com o comando “player example.cfg”. Isso faz com que o servidor Player fique aguardando conexões de progamas clientes; 2.abra um outro terminal e vá até o diretório onde se encontra o executável e execute-o normalmente. Observações: 1.se, ao tentar abrir um arquivo, “cfg” der o erro “player: error while loading shared libraries: libplayerdrivers.so.2: cannot open shared object file: No such file or directory”, rode o seguinte comando: “export LD_LIBRARY_PATH=/usr/local/lib:LD_LIBRARY_PATH” 2.se, ao executar o programa que foi compilado, der erro para carregar a biblioteca “libplayerc++”, edite o arquivo: “/etc/ld.so.conf” e adicione a seguinte linha: “/usr/local/lib” Depois execute o comando: “ldconfig”, como feito no item 3 da instalação do Gazebo.