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.