Departamento de Engenharia Elétrica DESENVOLVIMENTO DE ROBÓTICA INTELIGENTE EM AMBIENTE VIRTUAL PARA MÚLTIPLOS ROBÔS Aluna: Deise Regina Ceregatti Momm Orientadora: Karla Tereza Figueiredo Leite Introdução A robótica autônoma e inteligente envolve diferentes áreas do conhecimento, é multidisciplinar. Os robôs devem ser capazes, entre outras coisas, de prever e planejar suas ações. Um aprendizado que, na maioria das vezes, requer longos períodos de processamento e inúmeros testes. Por isso a importância de um ambiente virtual que seja capaz de reproduzir o modelo real com fidelidade. Como forma de exemplificar os sistemas multiagentes, optou-se por simular o problema presa-predador, que envolve diversos conceitos inerentes ao tema. Se trata de um ambiente com uma presa e pelo menos dois predadores, onde, de maneira mais simplificada, o objetivo da presa é fugir dos predadores enquanto o deles é capturar a presa. A problemática que existe se refere ao fato do MatLab não possuir um ambiente de simulação e também de não se conectar diretamente com o Microsoft Robotics (alternativa escolhida como ambiente de simulação). Sendo assim, uma interface se faz necessária. Essa interface pode ser realizada via LabVIEW que se comunica tanto com o MatLab quanto com o Microsoft Robotics, ou ainda, via SPL, uma ferramenta alternativa que permite a integração dos três softwares anteriores. Sistemas Multiagentes Os Sistemas Multiagentes (SMA) são uma área emergente da Inteligência Artificial que fornece os princípios para construção de sistemas complexos envolvendo múltiplos agentes e os mecanismos de coordenação entre eles [1]. Conforme Wooldridge [2], a principal característica dos agentes é a autonomia, que os leva a interagir continuamente com o ambiente em que estão inseridos, num loop que consiste basicamente em sentir, decidir e agir. Figura 1 - Agentes e o ambiente Trabalho Desenvolvido no Período de Abril a Junho de 2012.
Além de interagirem com o ambiente os agentes interagem também entre si, o que requer que possuam habilidades como cooperação (trabalho em equipe), coordenação (controlar atividades interdependentes) e negociação (habilidade de chegar a um acordo em assuntos de interesse comum), assim como fazem as pessoas. A. Classificação Os agentes podem ser classificados quanto à aquisição de conhecimento, quanto à tarefa que executam, à mobilidade, entre outras coisas. Quanto à Aquisição de Conhecimento: Por Nwana [3], dentro desta classificação, os agentes podem ser deliberativos ou reativos. Agentes Deliberativos: possuem um modelo de raciocínio e um modelo simbólico interno, utilizado para tomar decisões e executar tarefas necessárias para alcançar seus objetivos. Agentes Reativos: executam tarefas apenas quando são estimulados, em resposta ao estado atual do ambiente no qual estão inseridos. Quanto as Tarefas que Executam: Segundo Wooldridge e Jennings [4], quanto às tarefas que executam, os agentes podem ser classificados em: Gopher: agentes simples que executam tarefas baseadas em regras preestabelecidas, hipóteses e suposições. Prestadores de Serviços: agentes que executam tarefas de alto nível e bem definidas, quando solicitado pelo usuário. Proativos: agentes que prestam informações/serviços ao usuário mesmo quando não solicitadas (os). Quanto à Mobilidade: Ainda por Nwana [3], os agentes podem ser classificados de acordo com a sua capacidade de se mover pela rede: Agentes Estáticos: não se movem pela rede, ou seja, atuam localmente. Agentes Móveis: possuem habilidade de se mover pela rede. B. Características Além da autonomia, existem outras características que definem um agente, destacando-se: Adaptabilidade Flexibilidade Inteligência Capacidade de se adaptar a novas situações pela acumulação de conhecimentos. Habilidade que demonstra a capacidade de um agente em escolher ações dinamicamente, assim como, a execução destas ações. Habilidade do agente em decidir quais ações tomar, para isso são utilizadas técnicas inteligentes como Redes Neurais, Lógica Fuzzy e Algoritmos Genéticos.
C. Propriedades dos Ambientes O tipo de ambiente em que os agentes estão inseridos é um aspecto fundamental a ser considerado, que define a maneira como os agentes atuarão e de que forma perceberão eventuais alterações. As principais classificações são: Acessível x Inacessível: um ambiente acessível é aquele que o agente tem todas as informações necessárias sobre o estado do ambiente, caso contrário é dito inacessível; quanto mais acessível for o ambiente, mais fácil será fazer com que o agente opere nele. Determinístico x Não-Determinístico: o ambiente é determinístico quando é determinado por seu estado atual e as atuações dos agentes. Episódico x Não-Episódico: em um ambiente episódico o desempenho do agente é dividido em episódios (constituídos das ações e percepções), sendo que, a qualidade de cada ação depende somente do episódio em si. Estático x Dinâmico: ambientes estáticos não se alteram com o passar do tempo, apenas devido às ações dos agentes; ambientes dinâmicos possuem outros processos em operação, que podem acarretar em alterações que os agentes não podem controlar. Discreto x Contínuo: um ambiente é discreto quando possui um número finito de ações e percepções (distintas e bem definidas). Agente Único x Multiagente: ambientes multiagentes envolvem ações coordenadas de mais de uma agente, enfoque deste trabalho. D. Coordenação Segundo Ferreira Jr. [5] (apud Nwana; Lee; Jennings, 1996), a coordenação impede o comportamento caótico do sistema (figura 2), permite que o sistema lide com restrições globais e a interdependência entre os agentes, e permite que o sistema seja composto por agentes diferentes com diferentes competências. Figura 2 - Comportamento caótico São quatro as categorias em que se pode classificar a coordenação: Estrutura Organizacional: técnica que explora uma descrição prévia da estrutura organizacional do SMA. Define implicitamente as responsabilidades dos agentes, suas capacidades, relações, etc. Contratos: a coordenação se dá por um processo de relações de mercado (descentralizado). Os agentes podem tornar-se gerentes, partir um problema em subproblemas e contratar outros agentes para realiza-los; os agentes
contratados podem fazer novas contratações. O processo acontece através de leilões que consideram a capacidade dos agentes para realizar as tarefas. Planejamento Multiagente: técnica que se baseia no planejamento conjunto entre os agentes para detalhar suas ações futuras e as interações necessárias para que o objetivo do sistema seja atingido. O planejamento pode ser distribuído ou centralizado, evita inconsistências e ações conflitantes. Negociação: essa técnica explora o processo de comunicação entre os agentes para que estes componham acordos mútuos sobre diversos aspectos de sua atuação conjunta no ambiente. Algumas técnicas utilizadas se baseiam na teoria dos jogos e em planejamento, e podem ser inspiradas na interação entre humanos. O Problema Presa-Predador No ecossistema, a predação é uma estratégia de obtenção de alimentos onde os predadores procuram suas presas, as perseguem, capturam e comem. Além disso, é uma força evolutiva bastante importante: favorece os predadores mais eficazes e as presas mais evasivas [6]. O objetivo desse modelo é demonstrar a cooperação em sistemas multiagentes (entre os predadores) e, por outro lado, a atuação independente da presa tais estratégias comportamentais definem as ações dos agentes no ambiente. Os agentes predadores devem identificar a presa, para então iniciar a sua perseguição e, consequentemente, a sua captura. Considera-se a presa capturada quando os predadores conseguem cercá-la, impedindo-a de se mover para qualquer outra posição (figura 3). Figura 3 - Captura da presa Nesse tipo de problema várias configurações relacionadas à inteligência dos agentes podem ser utilizadas: Predadores e presa dotados de inteligência. Predadores dotados de inteligência e presa burra (se movimenta aleatoriamente pelo ambiente). Predadores burros e presa inteligente. A Ferramenta de Simulação A ferramenta de simulação proposta deve integrar, principalmente, os softwares MatLab e Microssoft Robotics Developer Studio (MSRS), que devem se comunicar com os agentes que serão construídos utilizando-se o kit de robótica da Lego (Lego Mindstorms NXT). Nesses três meses de projeto foram estudados, além dos sistemas multiagentes, os programas: MatLab, MSRS, LabVIEW, SPL e o pacote RWTH, conforme segue:
1. Lego Mindstorms NXT Inicialmente, o Lego Mindstorms (figura 4) era tido como um brinquedo, porém, com o passar dos anos foi sendo introduzido em escolas e universidades para fins didáticos. O kit básico é composto de um brick (módulo NXT) com entradas para os sensores e saídas para os motores, um sensor ultrassônico, três servo-motores, um sensor sonoro, um sensor de luz e dois sensores de toque [7]. Além disso, estão inclusas várias peças características dos brinquedos Lego, que possibilitam a montagem de diversos modelos de robôs e máquinas (por exemplo, uma impressora). Figura 4 - Kit Lego Mindstorms A comunicação do NXT com o computador pode ser feita via USB ou Bluetooth, este último, proporciona uma liberdade no deslocamento dos robôs, porém, a comunicação se torna mais lenta, o que deve ser considerado durante a programação. Os sensores ultrassônicos podem detectar objetos a até 255 cm de distância, com variação de +/- 3 cm. Contudo, quando o objeto está muito próximo ou em casos de quinas o som pode ser desviado, acarretando em erros de medição bastante significativos. Os servo-motores permitem que se controle o quanto devem girar e a que velocidade (em uma escala que varia de 0 a 100), e ainda, possuem encoders (sensores de rotação) para determinação da distância percorrida, neste caso, dada em graus. 2. MatLab e a Ferramenta RWTH O MatLab é um software voltado para cálculos com matrizes que pode ser utilizado em diversas aplicações, como: análise numérica, processamento de sinal e imagem, controle, testes e medições, entre outras. Possui ferramentas adicionais de técnicas inteligentes como Redes Neurais, Lógica Fuzzy e Algoritmos Genéticos. O RWTH Mindstorms NXT Toolbox for MATLAB [8] foi desenvolvido na Universidade de Aachen, na Alemanha, a partir da necessidade de integrar o MatLab com o Lego Mindstorms NXT, para projetos dos estudantes de engenharia elétrica. Essa ferramenta possui os drivers necessários para controlar o NXT (controle dos motores, leitura dos sensores, conexão via USB e Bluetooth, etc.), conforme figura 5.
Figura 5 - Comandos do RWTH no MatLab 3. Microsoft Robotics Developer Studo (MSRS) O MSRS [9] é um ambiente que possibilita a criação de aplicações robóticas para uma variedade de plataformas de hardware (Lego, Pioneer P3DX, irobot, Kinect Sensor, etc.). A. Concurrency and Coordination Runtime (CCR) O CCR é utilizado para gerenciar operações que rodam simultaneamente, como por exemplo, no caso em que um robô se desloca em um ambiente com obstáculos, os sensores devem detectar objetos para evitar colisões e, ao mesmo tempo, decisões relativas às direções devem ser tomadas e seus motores devem ser controlados [10]. O CCR determina qual segmento de código está sendo executado o número de segmentos em execução é normalmente definido de acordo com o número de processadores independentes do sistema. B. Descentralized Software Services (DSS) Os programas do MSRS são escritos na forma de serviços que rodam no DSS, e estes, são utilizados para combinar aplicações CCR. A Microsoft fornece uma série de contratos que são utilizados pelos serviços, estes contratos especificam as APIs que devem ser utilizadas para estabelecer comunicação com os motores, sensores ultrassônicos e até mesmo câmeras de vídeo. Cada aplicação desenvolvida no MSRS irá conter um ou mais serviços. Combinar esses serviços e transmitir mensagens através deles é uma das tarefas do DSS, que é realizada por meio da orquestração. A figura 6 mostra um exemplo de como os serviços devem ser orquestrados para controlar um robô. Figura 6 Orquestração
C. Visual Programming Language (VPL) O VPL é um ambiente de programação gráfica (diagrama de blocos, figura 7) baseado em fluxo de dados que pode ser utilizado para criar serviços e orquestrá-los. Figura 7 - Diagrama de blocos NXT com sensor ultrassônico D. Visual Simulation Environment (VSE) O VSE pode ser usado em uma variedade de cenários avançados (internos e externos) com altas demandas de fidelidade, visualização e dimensionamento (ver figura 8). O simulador pode ser utilizado para testar algoritmos antes de executá-los no hardware do robô real, evitando que eventuais erros de programação destruam o robô. Além disso, existem casos em que o robô ainda não existe e o simulador funciona como um local de testes para o modelo a ser utilizado. Figura 8 - Simulação NXT em ambiente externo
4. Simple Programming Language (SPL) Durante as pesquisas realizadas, encontrou-se uma ferramenta que permite a comunicação direta entre os softwares em questão, o SPL (Simple Programming Language) [11], um software livre para desenvolvimentos acadêmicos e/ou não comerciais. Sua principal característica é a utilização de um script no qual linhas de comando e expressões são utilizadas para criação das aplicações (figuras 9 e 10). Uma ferramenta flexível e, principalmente, simples. O site disponibiliza uma série de tutoriais que auxiliam o aprendizado (alguns deles já foram realizados com êxito); todos os programas dos projetos foram escritos em C# e os códigos fonte estão disponíveis para download. Figura 9 - Script do SPL Figura 10 - Simulação no MSRS via SPL
5. LabVIEW para Lego Mindstorms O LabVIEW para Lego Mindstorms foi criado para uso da plataforma Lego no ensino de robótica como alternativa ao software original do Mindstorms que possui algumas limitações. Essa ferramenta possibilita configurar o Lego NXT visualmente (diagrama de blocos) e graficamente (painéis frontais). Para estudar a comunicação do MatLab com o MSRS via LabVIEW utilizou-se como exemplo o projeto Simulated Nicholas [12] disponibilizado pela National Instruments, conforme as figuras abaixo. Figura 11 - Inicialização do exemplo Simulated NIcholas Figura 12 - Exemplo em execução simulação no MSRS
O material disponibilizado pela National Instruments não deixa claro como a comunicação com o MSRS ocorre e, ao que se percebe, são necessários conhecimentos mais avançados da ferramenta. Por isso decidiu-se, no primeiro momento, utilizar o SPL para a integração dos softwares e desenvolvimento do ambiente de simulação do modelo presapredador e, paralelamente, continuar os estudos sobre a comunicação realizada via LabVIEW, de forma a anteder a proposta inicial do projeto. Conclusões O estudo realizado até agora permitiu uma maior compreensão das ferramentas que deverão ser utilizadas, suas principais características e até mesmo algumas de suas limitações. Espera-se que, com a utilização do SPL, e posteriormente com a comunicação via LabVIEW, o ambiente de simulação a ser desenvolvido possa ser utilizado em outras aplicações e como ferramenta de auxílio no ensino de disciplinas de robótica inteligente. Referências 1 - STONE, P.; VELOSO, M. Multiagent Systems: A survey from the machine learning perspective, em Autonomous Robots., v.8, n.3, Jul. 2000. 2 - WOOLDRIDGE, M. An Introduction to Multiagent Systems. Disponível em: http://www.csc.liv.ac.uk/~mjw/pubs/imas/imas2e.html, Lecture Slides. Acesso em: 04/04/2012. 3 - NWANA, H. Software Agents: An Overview. Knowledge Engineering Review, v.11, n.3, p.1-40, 1996. Cambridge University Press. 4 - WOOLDRIDGE, M.; JENNINGS, N.R. Intelligent Agents: Theory and Practice. The Knowledge Engineering Review, v.10, p.115-152, 1995. 5 - FERREIRA JÚNIOR, P. R. Coordenação de Sistemas Multiagente Atuando em Cenários Complexos: uma Abordagem Baseada na Divisão do Trabalho dos Insetos Sociais. Porto Alegre, 2008. 123p. Tese (Programa de Pós-Graduação em Computação), Universidade Federal do Rio Grande do Sul. 6 - Predation and Parasitism. Disponível em: http://www.globalchange.umich.edu/ globalchange1/current/lectures/predation/predation.html. Acesso em: 04/04/2012. 7 - Lego Mindstorms NXT. Disponível em: http://mindstorms.lego.com/en-us/default.aspx. Acesso em: 10/04/2012. 8 - RWTH Mindstorms NXT Toolbox. Disponível em: http://www.mindstorms.rwthaachen.de/. Acesso em: 15/04/2012. 9 - Microsoft Robotics Developer Studio. Disponível em: http://www. microsoft.com/robotics/#learn. Acesso em: 02/05/2012. 10 - JOHNS, K.; TAYLOR, T. Professional Microsoft Robotics Developer Studio. Wrox Programmer to Programmer. Mai, 2008. 826p. 11 - STEM Education: SPL Toolkit. Disponível em: http://www.helloapps.com/quickstart/. Acesso em: 11/06/2012.
12 - National Instruments: Simulated Nicholas using MSRS 2008 R3. Disponível em: http://zone.ni.com/devzone/cda/epd/p/id/6443. Acesso em: 10/05/2012.