Integração de sistemas robóticos com
programação orientada a agentes
 
 
Pedro Mathias Nakibar 
Bacharelado de Sistemas de...
Parameters defining state 
of basic unit 
unconstrained  beliefs, commitments, 
capabilities, choices.... 
Process of comp...
 
Arquitetura da solução
Integrando os ambientes
O nosso produto final quer gerar um ambiente de agentes que se comuniquem...
Funcionamento
O usuário deve enviar agente para interagir com o ambiente, através trocas de 
mensagens com os outros agent...
 
Figura 2: Diagrama de ação da vida de um agente dentro de um sistema.
 
 
Figura 3: Diagrama de sequência de uma mensagem desde que ela sai do agente
até chega ao componente real do ROS. (Anexo ...
Controlador de Tartarugas (Logo)
Para provar o conceito, utilizei um dos módulos padrões do ROS, o TurtleSim, que 
simula ...
O sistema de agentes JADE foi implementado de maneira a auxiliar a troca de 
mensagens entre os chamados Agentes Pilotos, ...
Próximos SlideShares
Carregando em…5
×

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

285 visualizações

Publicada em

Artigo do tipo survey demonstrando o resultado de pesquisas envolvendo Sistemas robóticos e programação orientada a agentes, assim como o resultado e conclusões sobre esta abordagem.

https://github.com/pnakibar/jadeAndROSIntegration

Publicada em: Software
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

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

  1. 1. 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   pedronakibar@gmail.com    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 
  2. 2. 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 
  3. 3.   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.  
  4. 4. 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.   
  5. 5.   Figura 2: Diagrama de ação da vida de um agente dentro de um sistema.  
  6. 6.   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 agentes​5​ .    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.   
  7. 7. 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. 
  8. 8. 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      

×