MecaTeam: Um sistema Multiagente para o futebol de robôs simulado baseado no Agente Autônomo Concorrente Orivaldo Vieira Santana Júnior, João Paulo Rocha Portela de Souza, Marcelo Santos Linder e Augusto Loureiro da Costa 1 Programa de Pós-Graduação em Mecatrônca, Universidade Federal da Bahia (UFBA) Departamento de Engenharia Mecânica - Escola Politécnica Departamento de Ciência da Computação - Instituto de Matemática Av. Adhemar de Barros S/N, Ondina - 40170-110 Salvador BA Brasil. {orivajr,joaop}@dcc.ufba.br, {linder,agusto.loureiro}@ufba.br Abstract. This paper describes the cognitive Multi-Agent System used by Mecateam (UFBA) for the control of the robots in the Robocup Brazil 2006 soccer competition of simulated robots. The architecture of the agent is described, with emphasis in the important aspects of its implementation. Performance problems were identified during the development of the agent. These points of improvement are described, as well as some solution proposals, the implementation required and the preliminary results. At the end of the paper some future works are indicated. Resumo. Este artigo descreve o Sistema Multiagente cognitivo utilizado pelo Mecateam (UFBA), para o controle dos robôs na competição de futebol de robôs simulados da RoboCup Brasil 2006. A arquitetura do agente utilizado é descrita, com ênfase nos aspectos de sua implementação relevantes para este trabalho. Ao longo do desenvolvimento foram identificados problemas relacionados ao desempenho computacional do agente em questão. Estes pontos de melhoria são descritos, assim como as propostas de solução, a implementação realizada e os resultados obtidos. Por fim, são indicados trabalhos futuros para otimização do desempenho do agente. 1. Introdução A Inteligência Artificial (IA) nasceu oficialmente em 1956 num workshop de verão em Dartmouth College, EUA [Bittencourt 2001]. O termo foi cunhado por John McCarthy e Marvin Minski. A inteligência artificial distribuída (IAD) é uma das áreas da IA que mais se desenvolveram nos últimos anos e apresenta um enorme potencial de aplicações [Durfee et al. 1989]. A IAD, segundo [Weiss 1999], é o estudo, construção e aplicação de sistemas multiagentes, que são sistemas nos quais vários agentes inteligentes interagem para realizar um conjunto de objetivos ou tarefas. Uma forma de estimular o desenvolvimento à pesquisa em IAD e Robótica é a realização de partidas de futebol entre robôs autônomos, onde possibilita a utilização de varias tecnologias e em relação à IA, há espaço para a implementação de diferentes técnicas como cooperação em sistemas multiagentes, sistemas especialistas, lógica nebulosa, redes neurais, dentre outras. Pelas características do problema e dos desafios envolvidos numa partida de futebol, o futebol de robôs tornou-se um importante laboratório principalmente para a
pesquisa na área de sistemas multiagentes. O jogo coletivo e, como tal, a participação de todos para que o objetivo principal, vencer a partida, seja alcançado depende da atuação coletiva. É necessário que haja interação e comunicação entre os membros da mesma equipe para que se obtenha sucesso. Talentos individuais não são garantias de bons resultados, o ponto chave é cooperação. A idéia tomou forma e em 1997 realizou-se a primeira Copa Mundial de Futebol de Robôs (RoboCup), em Nagoya, Japão. Sendo realizadas até hoje competições anuais sempre em locais distintos [Kitano et al. 1997] [Kitano 1997]. Atualmente existem na RoboCup diferentes modalidades (Competição de Futebol, Salvamento, RoboCup Junior), o foco deste trabalho é na competição de futebol, na liga simulada, onde jogadores virtuais e independentes (agentes) jogam futebol num campo virtual simulado por computador. Cada um desses agentes assume o controle de um único robô. Os onze agentes responsáveis pelo controle do time de futebol de robôs formam um Sistema Multiagente chamado MecaTeam. O MecaTeam, time de futebol de robôs simulados da Universidade Federal da Bahia, utiliza como abordagem para controle de robôs do time simulado a arquitetura do Agente Autônomo Concorrente. Essa abordagem modulariza o agente em 3 níveis decisórios que é descrita com mais detalhe em [Costa and Bittencourt 1999a]. O MecaTeam é apresentado neste artigo, segundo a seguinte disposição: A seção 2 descreve a arquitetura do Agente Autônomo Concorrente, adotada pelo MecaTeam; a seção 3 apresenta brevemente alguns apectos de implementação da biblioteca Expert- Coop++ [Costa et al. 2003] utilizada para a implementação do MecaTeam; na seção são relatados problemas relacionados ao desempenho computacional do agente utilizado, enfrentados durante o desenvolvimento e as respectivas melhorias implementadas. Na seção são apresentadas as conclusões e perspectivas. 2. Arquitetura do Agente MecaTeam O MecaTeam 2006 apresenta uma evolução da arquitetura de agente apresentado pelo UFSC-Team 98 [Costa and Bittencourt 1999b] na RoboCup 98, chamado Agente Autônomos Concorrente [Costa and Bittencourt 1999a]. O Agente Autônomo Concorrente, baseia-se em um model hybrido para agente cognitivo [Bittencourt and Costa 2001], utilizado pelo time de futebol de robôs simulados Mecateam utiliza uma arquitetura de três camadas. Cada uma delas é implementada como um processo e representa um nível decisório distinto que complementa os demais para a construção de um agente cognitivo. A complexidade de comportamento do agente é incrementada a cada camada, como pode ser visto na Figura 1. O primeiro nível decisório, denominado Reativo, está implementado no processo Interface encarregado pela interação com o ambiente e pela resposta em tempo real do agente. Esta interação é feita captando informações sobre o ambiente e atuando sobre o mesmo. As informações vindas do ambiente também são processadas e enviadas como mensagens contendo uma descrição do estado corrente do ambiente para o nível imediatamente superior (Instintivo). A atuação ocorre através dos comportamentos que determinam quais ações o agente deve tomar sobre o ambiente a cada percepção. A escolha do comportamento mais adequado para cada instante de atuação do agente é de responsabilidade do nível intermediário do Agente Autônomo Concorrente,
Figure 1. Fluxo de informação no Agente Autonomo Concorrente denominado Instintivo, implementado no processo Coordinator. O comportamento ativo é escolhido por um sistema baseado em conhecimento composto por um motor de inferência monociclo, uma base de fatos e uma base de regras. Para esta atividade, são utilizadas informações acerca do estado do ambiente (provenientes do nível Reativo) e o plano em vigor (definida pelo nível superior). Informações simbólicas são enviadas para o nível seguinte (cognitivo). O nível superior da arquitetura do agente denominado Cognitivo é implementado no processo Expert. similarmente ao que ocorre com o nível instintivo, este nível utiliza um sistema baseado em conhecimento. O principal papel do Cognitivo é a manipulação das informações simbólicas provenientes do Instintivo construindo um modelo lógico do ambiente utilizando o conhecimento armazenado na base de regras, escolhendo planos e avaliando a validade do plano corrente. 3. Expert-Coop++ A implementação dos níveis Instintivo e Cognitivo descrito na seção anterior é feita na linguagem de programação C++ a partir do uso da biblioteca Expert-Coop++ [Costa et al. 2003]. Esta biblioteca está dividida em diversos módulos, encarregados das funcionalidades do agente. Na versão do agente implementada para o time de futebol de robôs simulados descrito neste trabalho são utilizados os seguintes módulos: o Knowledge, que representa o conhecimento por meio de uma base de fatos contendo padrões lógicos e frames e de uma base de regras; o Inference, responsável por manipular este conhecimento através de um motor de inferência e de filtros; o Communication, faz a comunicação entre as camadas do agente por meio de mensagens. Estes conceitos serão detalhados nas subseções a seguir. 3.1. Motor de Inferência O motor de inferência é o principal componente dos sistemas baseados em conhecimento. Sua funcionalidade consiste na realização de inferências a partir de uma base de regras e de uma base de fatos. O modo de raciocínio usado na inferência do motor do agente descrito neste trabalho é o encadeamento progressivo (forward chaining) [Bittencourt 2001],
Figure 2. Implementação do Agente Autonomo Concorrente a partir da Expert- Coop++ em que a parte esquerda da regra é comparada com a descrição da situação atual contida na base de fatos. Apenas as regras que satisfazem esta descrição são selecionadas. É permitido o uso de filtros nas regras, possibilitando por exemplo a utilização de operações de comparação como igualdade, diferença, maior, menor, maior igual e menor igual. O filtro, em termos de implementação, consiste numa função que recebe como parâmetro uma lista de variáveis contidas no lado esquerdo da regra e retorna uma outra lista contendo as variáveis que satisfizeram a operação relativa ao filtro. Caso esta lista de retorno possua tamanho zero, a regra analisada é descartada e o processo de inferência passa para a análise da próxima regra. Um exemplo de regra é ilustrado na figura 3. Figure 3. Exemplo de regra para ativar uma nova meta (local goal) Ao final do processo de seleção das regras o motor de inferência dispõe de um conjunto de regras que satisfazem a situação atual do problema (denominado conjunto de conflito). Se este conjunto for vazio, o processo de inferêcia é finalizado; caso contrário, torna-se necessária a definição das regras que serão efetivamente executadas e sua ordem de execução[bittencourt 2001]. O método de resolução de conflito adotado consiste em ordenar as regras pelo menor período entre o momento atual e a última atualização. Ao final deste processo é gerada uma lista de regras a ser encaminhada para a base de fatos. Caso o motor de inferência esteja funcionando em modo única regra, somente a primeira regra desta lista é encaminhada para base de fatos.
3.2. Base de Fatos A base de fatos é responsável pelo armazenamento das informações simbólicas sobre o ambiente. A lógica é utilizada como principal formalismo de representação de conhecimento, de acordo com o formato de três termos: objeto, atributo e valor. Um outro formalismo utilizado pela Expert-Coop++ são os quadros, também conhecidos como frameworks, ou frames [Minsky 1975]. Na base de fatos também são armazenadas as mensagens que serão enviadas para o Soccerserver ou para as outras camadas da arquitetura do agente. Essas informações são organizadas em listas encadeadas. Uma forma possível de atualização da base de fatos é a partir de informações obtidas da lista de regras enviada pelo motor de inferência. Desta lista é utilizado o lado esquerdo de cada regra, que pode conter informações representadas como padrões lógicos, como frames ou mensagens. Para cada situação é atualizada uma lista específica (lista de padrões lógicos, lista de frames ou lista de mensagens de saída). Uma outra possibilidade de atualização da base de fatos é a partir de mensagem vindas do SoccerServer, que podem conter, dentre outras, informações sensoriais, como as dos sensores corporais e as relativas à visão. As informações relativa à visão são armazenadas em uma lista de quadros e relacionadas aos sensores do corpo, em uma lista de padrões lógicos. 3.3. Base de Regras A base de regras é responsável pela leitura do arquivo de regras, previamente definido; pela extração destas regras e pelo seu armazenamento em uma lista. Este processo de extração ocorre a partir da leitura de blocos de caracteres que formam cada parte da regra. Os parênteses encontrados nesta extração indicam quando começam e terminam expressões das regras, como if, filter, frame, message e then, ilustradas na figura 3. A base de regras possui também função de inserção, remoção e atualização de regras. 3.4. UvA Trilearn 2003 Visando concentrar os esforços nos níveis mais altos da arquitetura, encarregados da parte inteligente, foi escolhido re-utilizar o código base do UvA Trilearn 2003 [Kok et al. 2003, de Boer and Kok. 2001] encapsulado na camada Reativa do Agente Autônomo Concorrente. O código base do UvaTrilearn disponibiliza algumas habilidades básicas para uma agente controlar um robô do simulador RoboCup Soccer Server [Chen et al. 2002]. Habilidades como: interceptar a bola, chutar a bola em uma desejada posição do campo, mover-se para uma posição desejada do campo, etc, são disponibilizas encapsuladas em comportamentos. Estes comportamentos combinam comandos aceitos pelo RoboCup Soccer Server: kick, dash, turn, catch, etc O código base do UvaTrilearn provê ainda a sincronização do agente com o simulador RoboCup Soccer Simulator e um modelo simplificado do ambiente, com os objetos visualizado pelo robôs, suas coordenadas globais, etc. A escolha das habibilidades básicas adequadas ao estado corrente e suas combinações de forma a implementar um agente capaz de controlar um robô para o Simulador Soccer Server, devem ser implementadas pelo usuário. O MecaTeam 2006 aptou por encapsular o código base do UvaTrilearn na camada Reativa, tendo sempre um comportameto ativo e utilizar as camadas Instintiva e Cognitiva para implementar o raciocínio automático do agente.
4. Problemas e Melhorias Os agentes do MecaTeam implementados com versão da Expert-Coop++ do mês de dezembro de 2005 tinham o problema de consumir muito processamento, requerendo cerca quatro computadores Pentium III 1GHz com 128 MB de RAM. Isto ficava evidente ao iniciar uma simulação com dois agentes usando mais de vinte regras, pois havia sobrecarga de processamento durante a simulação feita num computador pessoal. Diante dessa situação fez-se necessária uma análise detalhada do código da Expert-Coop++ visando uma otimização na implementação computacional da biblioteca. Foram obtidos dois resultados da análise do motor de inferência e da base de fatos. O primeiro foi uma melhoria significativa no desempenho do agente através da redução de atribuições usadas no código, uma redução de cerca de 25 % na carga de processamento. No entanto o agente ainda continuava a consumir bastante processamento e para que fosse possível uma nova redução do processamento era necessário uma reestruturação na implementação dos algoritmos e estruturas de dados usados no motor de inferência e na base de fatos. A primeira melhoria foi percebida ao abrir o código do motor de inferência e da base de fatos e observar o uso excessivo de variáveis temporárias e listas. Em muitas situações, no escopo de uma variável, eram feitas algumas cópias desta e o seu valor não era alterado, sendo possível elimina-las. Com as listas acontecia algo semelhante, uma cópia da lista era criada como auxiliar para fazer o uso dos elementos que eram retirados um por um para serem usados fora da lista. Para não precisar desta cópia auxiliar usouse iteradores para percorre a lista e manipular o objeto dentro da lista original. Como estas medidas diminuiu-se a quantidade de atribuições no código e conseqüentemente o consumo de processamento do agente em cerca de 20%. 5. Conclusão e trabalhos futuros O MecaTeam apresenta um Sistema Multiagente Cognitivo baseado no Agente Autônomo Concorrente, e utilizado as habilidade básicas do UvaTrilearn 2003. A tomada de decisão na arquitetura do agente do MecaTeam baseia-se num modelo híbrido de agente que compartilha a rápida resposta aos estímulos do ambiente dos agentes reativos com um planejamento bem elaborado apresentdo pelos agentes cognitivos. Apresenta ainda uma arquitetura em camadas que explora o paradigma de programação concorrente. Com redução do uso de listas e variáveis locais reduziu-se em cerca de 20% o processamento computacional do agente e com a proposta de reestruturação pretende-se minimizar o processamento do agente, tornando possível fazer o time jogar utilizando apenas um computador pessoal. Para isto, sistema baseado em conhecimento será simplificado bastante e todas informação referentes a base de fatos estarão concentradas em um só lugar, para evitar as copias de grandes volumes de dados. Um outro ponto importante é o uso de árvores binárias, ao invés de listas, na base de fatos, baixando a complexidade de buscas de O(n) para O(log n). A documentação do código é um fator muito importante para bom desenvolvimento de uma aplicação complexa, como é o caso do Agente cognitivo do MecaTeam. Os trabalhos futuros são de analisar, gerar mais documentação, no formato HTML, sobre a Expert-Coop++ e reestrutura-la quando necessário. Esta reestruturação será feita com o
código da Expert-Coop++ que implementa o uso de variáveis nas regras, o uso de filtros e o uso de frames. Como implementação futura será adicionado a Expert-Coop++ o uso de redes semânticas e uma analisador léxico e sintático recursivo preditivo para extração de regras a partir do arquivo. References Bittencourt, G. (2001). Inteligência Artificial Ferramentas e Teorias. Editora da UFSC, ISBN 85-328-0138-2, 362 p., Florianópolis, SC, 2 a edição. Bittencourt, G. and Costa, A. L. d. (2001). Hybrid cognitive model. In The Third International Conference on Cognitive Science ICCS 2001 : Workshop on Cognitive Angents and Agent Interaction. Pequim, China. Chen, M., Foroughi, E., and at al., F. H. (2002). Soccerserver manual. Technical report, RoboCup Federation. http://sserver.sourceforge.net/docs/manual.ps. Costa, A. L. d. and Bittencourt, G. (1999a). From a concurrent architecture to a concurrent autonomous agents architecture. IJCAI 99, Third International Workshop in RoboCup, pages 85 90. Springer, Lecture Notes in Artificial Inteligence. Costa, A. L. d. and Bittencourt, G. (1999b). Ufsc-team: A cognitive multi-agent approach to the robocup 98 simulator league. RoboCup98 Workshop - Team description, pages 371, 377. Springer, Lecture Notes in Artificial Inteligence, vol.1694. Costa, A. L. d., Bittencourt, G., Gonçalves, E. M. N., and Silva, L. R. (2003). Expertcoop++: Ambiente para desenvolvimento de sistemas multiagente. IV ENIA Encontro Nacional de Inteligência Artificial, pages 597 606. XXIII Congresso da Sociedade Brasileira de Computação. de Boer, R. and Kok., J. R. (2001). The incremental development of a synthetic multiagent system: The uva trilearn 2001 robotic soccer simulation team. Master s thesis, University of Amsterdam, The Netherlands. Durfee, E., Lesser, V., and Corkill, D. (1989). Trends in cooperative distributed problem solving. IEEE Transactions on Knowledge and Data Engineering, 1(1):63 83. Kitano, H. (1997). Robocup: The robot world cup initiative. in Proc. of The First International Conference on Autonomous Agent (Agents-97)). Marina del Ray, The ACM Press. Kitano, H., Tambe, M., Stone, P., Veloso, M., Coradeschi, S., Osawa, E., Matsubara, H., Noda, I., and Asada, M. (1997). The robocup synthetic agent challenge, 97. International Joint Conference on Artificial Intelligence (IJCAI97). Nagoya, Japan. Kok, J. R., Vlassis, N., and Groen, F. (2003). Team description uva trilearn 2003. In RoboCup 2003 Symposium. Minsky, M. (1975). A framework to represent knowledge. In The Psychology of Computer Vision, pages 211 277. McGraw-Hill. Weiss, G. (1999). Multiagent Systems: A Modern Approach to Distributed Artificial Intelligence. The MIT Press, Cambridge, MA. Edited by Gerhard Weiss.