survey integração de sistemas robóticos com programação orientada a agentes

8

Click here to load reader

Upload: pedro-nakibar

Post on 19-Jul-2015

100 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Survey  integração de sistemas robóticos com programação orientada a agentes

Integração de sistemas robóticos com programação orientada a agentes

  

Pedro Mathias Nakibar Bacharelado de Sistemas de Informação  

Instituto Federal do Espirito Santo  [email protected] 

 

Resumo Robos foram criados sempre para exercerem uma função dentro da indústria. Depois 

de compilados os códigos e inseridos dentro dos “cerébros” desses rôbos eles irão seguir essas instruções até que sejam desligados. Para serem inseridas instruções diferentes, tem que se passar por todo um processo de programação e inserção dos programas dentro da memória destes robos novamente. 

Poder trocar as missões e instruções de um robo on the fly é uma objetivo que pode ser atingido agora com o hardware disponível no mercado e com o paradigma de programação orientada a agentes, que permite que missões programadas possam ser inseridas dentro de um robo sem muito custo, se não o de enviar esses agentes pela rede, para dentro do robo. 

Utilizando o Robot Operating System (ROS) e o Java Agent Development Framework (JADE), esse objetivo pode ser alcançado com facilidade. Utilizando o ROS para controle dos recursos do rôbo e os disponibilizando dentro do JADE, é possível fazer sistemas distribuídos robóticos, em que vários rôbos se comuniquem e que várias missões sejam passadas dinamicamente para eles, atráves de Agentes Pilotos que acessam esses recursos e controlem esses rôbos.  

Programação Orientada a Agentes Este paradigma está um nível acima de Orientação a Objeto. Ele faz com que cada 

componente (agente) que está dentro inserido dentro de um contexto tenha vida própria, e se comunique com outros agentes que também estão lá. Agentes podem também serem transportados de um ambiente para outro, com novos agentes disponibilizando novos serviços. 

   OOP  AOP 

Basic unit  object  agent 

Page 2: Survey  integração de sistemas robóticos com programação orientada a agentes

Parameters defining state 

of basic unit 

unconstrained  beliefs, commitments, 

capabilities, choices.... 

Process of computation  message passing and 

response methods 

message passing and 

response methods 

Types of message  unconstrained  inform, request, offer, promise, 

decline.... 

Constraints on methods  none  honesty, consistency.... 

Tabela 1: Agentes vs Objetos por Yoav Shoham

  Com esse paradigma podemos criar Agentes Pilotos que controlam missões dentro 

de um ambiente robótico, acessando e utilizando recursos do robo de maneira discreta.  

JADE Java Agent Development Framework, é o ambiente o qual será utilizado para dar vida 

aos agentes dentro de nosso sistema. Ele permite a movimentação de agentes entre containers (que são como ambientes em que os agentes ficam em cada maquina) diferentes, e troca de mensagens, do tipo ACL (definida pela FIPA), entre eles. O framework já possui uma camada de middleware, que permite que o sistema fique distribuído em várias máquinas. Uma de suas ferramentas é um gestor gráfico, que permite conectar a vários ambientes em máquinas separadas e administrar os agentes facilmente. 

O JADE é um software grátis e open­source sob a LGPLv2 e é mantido pela Telecom Italia e uma grande comunidade de desenvolvedores que contribuem para seu desenvolvimento.¹  

Robot Operating System Ou ROS, é um ambiente completo distribuído de robótica. Ele possui várias 

ferramentas para permitir implementar com facilidade diversas funções do robô e disponibilizálas dentro de um ambiente, para que possa enviar e receber mensagens. O ROS é mantido com a idéia de fornecer um framework de desenvolvimento colaborativo e open­source, permitindo que todos possam usar e contribuir para o desenvolvimento da plataforma e suas ferramentas.² 

Ele funciona sobre o Linux e permite comunicação via WebSockets para troca de mensagens externas, utilizando o componente ros­bridge.4 

Page 3: Survey  integração de sistemas robóticos com programação orientada a agentes

 

Arquitetura da solução

Integrando os ambientes O nosso produto final quer gerar um ambiente de agentes que se comuniquem 

diretamente com o ROS dentro de um rôbo.  Para isso utilizei o componente do ROS, o ros­bridge, que permite abrir uma interface 

utilizando WebSockets para troca de mensagens utilizando JSON. Para fazer essa comunicação com mais facilidade é possível escolher várias APIs disponiveis na wiki do ROS. As APIs oficiais utilizam as linguagens Python e C++, porém a comunidade suporta várias outras linguagens, como Java e Javascript. 

Na parte dos agentes utilizei um agente dentro da plataforma JADE para representar o componente do ROS que iremos fazer a comunicação. Criando uma camada de abstração para comunicação com o ROS, dentro do ambiente de agentes, passando para esse agente as responsabilidade de funcionar como uma ponte entre os dois ambientes.  

 Figura 1: Modelo de implantação da solução.

 

Page 4: Survey  integração de sistemas robóticos com programação orientada a agentes

Funcionamento O usuário deve enviar agente para interagir com o ambiente, através trocas de 

mensagens com os outros agentes, para então controlar o rôbo em questão. Esse agente contem uma missão, que é uma lista de instruções que o robô irá seguir, que será então executada pelo rôbo assim que for apropriado. Cada agente funcionará com uma espécie de piloto para o rôbo, permitindo assim o câmbio desses pilotos, cada um com diferentes missões e aplicações para o rôbo.  

Page 5: Survey  integração de sistemas robóticos com programação orientada a agentes

 Figura 2: Diagrama de ação da vida de um agente dentro de um sistema.

 

Page 6: Survey  integração de sistemas robóticos com programação orientada a agentes

 Figura 3: Diagrama de sequência de uma mensagem desde que ela sai do agente

até chega ao componente real do ROS. (Anexo em maior resolução)

Protocolos utilizados O ROS utiliza um modelo assíncrono de mensagens de um formato padronizado, 

porém para o recebimento de mensagens via WebSockets é utilizado o JSON. O padrão WebSockets permite que sejam enviadas e recebidas mensagens ao servidor a qualquer momento. Este padrão funciona sob um único socket TCP¹. 

Na parte do JADE ele utiliza o protocolo TCP/IP para conexão com ambientes JADE distribuídos em outras máquinas, que é utilizado para movimentação de agentes² e mensagens do tipo ACL para troca de mensagens entre agentes5.  

Aplicações

Vantagens dessa abordagem A abordagem normal de rôbos não tem em mente uma integração de novos recursos 

a esses rôbos. Nesta abordagem é permitido que recursos sejam removidos e inseridos em tempo real, graças ao uso do ROS, e que novas funcionalidades sejam dadas atráves da combinação do ROS e do JADE. O único problema dessa abordagem é a de que recursos robóticos tenham um custo lógico maior, sendo necessário um maior investimento em hardware.  

Escalabilidade para adicionar mais rôbos O ROS por si só é bem limitado quando se trata de comunicação com outros robôs. O 

JADE permite fazer isso com mais facilidade, permitindo até mesmo que múltiplos rôbos executem uma mesma missão, ou que eles façam parte de uma missão maior, que engloba mais rôbos.  

Page 7: Survey  integração de sistemas robóticos com programação orientada a agentes

Controlador de Tartarugas (Logo) Para provar o conceito, utilizei um dos módulos padrões do ROS, o TurtleSim, que 

simula um robô por demonstrar na tela uma tartaruga, que se meche com os comandos dados. 

  

Figura 4: TurtleSim do ROS ³

Utilizando as interfaces do ROS é possível enviar mensagens para o TurtleSim, que nada mais é do que um tópico dentro do ROS. 

O ros­bridge serviu como uma ponte para troca de mensagens externas ao ROS. Utilizando JSON, é possível que essa troca seja feita utilizando WebSockets, e ainda é possível utilizar várias APIs disponíveis ou ainda compor suas próprias mensagens e postar diretamente no servidor que foi criado, sem uso de APIs. 

Page 8: Survey  integração de sistemas robóticos com programação orientada a agentes

O sistema de agentes JADE foi implementado de maneira a auxiliar a troca de mensagens entre os chamados Agentes Pilotos, que controlam a missão, e os agentes do ROS, que auxiliam o envio de mensagens para o ROS. 

Para essa aplicação, utilizei um agente, dentro do JADE, que mapeia a tartaruga do TurtleSim, que pega as mensagens recebidas entre os agentes e as repassa para o TurtleSim do ROS.   

Referências ¹ Java JADE ­ http://jade.tilab.com/ ² ROS ­ Robot Operating System ­ http://www.ros.org/  ³ Módulo ROS TurtleSim http://wiki.ros.org/turtlesim  4 Módulo Ros­Bridge  http://wiki.ros.org/rosbridge_suite 5 Mensagens ACL FIPA ­ http://www.fipa.org