SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
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 
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 
 
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.
 
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. 
 
 
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 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. 
 
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. 
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  
 
 

Mais conteúdo relacionado

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

Middleware Reflexivo
Middleware ReflexivoMiddleware Reflexivo
Middleware Reflexivoelliando dias
 
Workshop: Construindo uma API RESTFul com Spring Boot
Workshop: Construindo uma API RESTFul com Spring BootWorkshop: Construindo uma API RESTFul com Spring Boot
Workshop: Construindo uma API RESTFul com Spring BootLucas Boeing Scarduelli
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
middlewareReflexivo.ppt
middlewareReflexivo.pptmiddlewareReflexivo.ppt
middlewareReflexivo.pptPatrícia Melo
 
Utilizando Sistemas Multi-agentes para a Programação de Plataformas Robóticas
Utilizando Sistemas Multi-agentes para a Programação de Plataformas RobóticasUtilizando Sistemas Multi-agentes para a Programação de Plataformas Robóticas
Utilizando Sistemas Multi-agentes para a Programação de Plataformas RobóticasCarlos Eduardo Pantoja
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDextra Sistemas / Etec Itu
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHPFlávio Lisboa
 
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.Cristofer Sousa
 
White Paper da Spin para o SIMPASE 2013
White Paper da Spin para o SIMPASE 2013White Paper da Spin para o SIMPASE 2013
White Paper da Spin para o SIMPASE 2013SpinEngenharia
 
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMMinicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMAlisson Solitto
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeAlessandro Binhara
 
Arquitetando sistemas PHP
Arquitetando sistemas PHPArquitetando sistemas PHP
Arquitetando sistemas PHPEduardo Cesar
 

Semelhante a Integração de sistemas robóticos com programação orientada a agentes (20)

Middleware Reflexivo
Middleware ReflexivoMiddleware Reflexivo
Middleware Reflexivo
 
CocoaPods in Action
CocoaPods in ActionCocoaPods in Action
CocoaPods in Action
 
Workshop: Construindo uma API RESTFul com Spring Boot
Workshop: Construindo uma API RESTFul com Spring BootWorkshop: Construindo uma API RESTFul com Spring Boot
Workshop: Construindo uma API RESTFul com Spring Boot
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
middlewareReflexivo.ppt
middlewareReflexivo.pptmiddlewareReflexivo.ppt
middlewareReflexivo.ppt
 
Utilizando Sistemas Multi-agentes para a Programação de Plataformas Robóticas
Utilizando Sistemas Multi-agentes para a Programação de Plataformas RobóticasUtilizando Sistemas Multi-agentes para a Programação de Plataformas Robóticas
Utilizando Sistemas Multi-agentes para a Programação de Plataformas Robóticas
 
Function as a Service no OpenFaaS com Docker e PHP
Function as a Service no OpenFaaS com Docker e PHPFunction as a Service no OpenFaaS com Docker e PHP
Function as a Service no OpenFaaS com Docker e PHP
 
Cursos
CursosCursos
Cursos
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
 
Usando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NETUsando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NET
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHP
 
Netbeans
NetbeansNetbeans
Netbeans
 
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.
 
Desenvolvimento Mobile Web
Desenvolvimento Mobile Web Desenvolvimento Mobile Web
Desenvolvimento Mobile Web
 
PHP e o Desenvolvimento Mobile Web
PHP e o Desenvolvimento Mobile WebPHP e o Desenvolvimento Mobile Web
PHP e o Desenvolvimento Mobile Web
 
White Paper da Spin para o SIMPASE 2013
White Paper da Spin para o SIMPASE 2013White Paper da Spin para o SIMPASE 2013
White Paper da Spin para o SIMPASE 2013
 
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMMinicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente Mainframe
 
Arquitetando sistemas PHP
Arquitetando sistemas PHPArquitetando sistemas PHP
Arquitetando sistemas PHP
 
AOP
AOPAOP
AOP
 

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

  • 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. 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.   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.  
  • 5.   Figura 2: Diagrama de ação da vida de um agente dentro de um sistema.  
  • 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. 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. 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