Top Banner
Tutorial JADE e ROS Autor: Pedro Mathias Nakibar 1.Requisitos 2.Criação do Projeto 1.Criar um projeto Maven no Eclipse EE 2. Editar o arquivo POM.xml e adicionar o repositório e as dependências necessárias (JADE e jrosbride) 3.Modificar a configuração para rodar o programa 3. Iniciando o ROS inicie o rosbridge 4. Arquivos Java dentro do projeto Pilot.java Turtle.java 5. Instanciando os Agentes 1.Requisitos Java JDK 8 IDE Eclipse EE Maven (Já incluído no eclipse EE) ROS e ROS Bridge Instalados Tutorial de instalação do ROS: http://wiki.ros.org/indigo/Installation Tutorial de como rodar o ROS Bridge: http://wiki.ros.org/rosbridge_suite/Tutorials/RunningRosbridge 2.Criação do Projeto 1.Criar um projeto Maven no Eclipse EE Ir em File>New Project e depois selecionar o Maven Project
13

Tutorial Setup projeto JADE e ROS

Aug 05, 2015

Download

Software

Pedro Nakibar
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Tutorial Setup projeto JADE e ROS

Tutorial JADE e ROS Autor: Pedro Mathias Nakibar

  

1.Requisitos 2.Criação do Projeto 

1.Criar um projeto Maven no Eclipse EE 2. Editar o arquivo POM.xml e adicionar o repositório e as dependências necessárias (JADE e jrosbride) 3.Modificar a configuração para rodar o programa 

3. Iniciando o ROS inicie o rosbridge 

4. Arquivos Java dentro do projeto Pilot.java Turtle.java 

5. Instanciando os Agentes   

1.Requisitos ● Java JDK 8 ● IDE Eclipse EE ● Maven (Já incluído no eclipse EE) ● ROS e ROS Bridge Instalados 

○ Tutorial de instalação do ROS: http://wiki.ros.org/indigo/Installation  ○ Tutorial de como rodar o ROS Bridge: 

http://wiki.ros.org/rosbridge_suite/Tutorials/RunningRosbridge  

2.Criação do Projeto

1.Criar um projeto Maven no Eclipse EE Ir em File­>New Project e depois selecionar o Maven Project 

 

Page 2: Tutorial Setup projeto JADE e ROS

  

  

Page 3: Tutorial Setup projeto JADE e ROS

  

2. Editar o arquivo POM.xml e adicionar o repositório e as dependências necessárias (JADE e jrosbride)

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>RosJadeIntegration</groupId> <artifactId>RosJadeIntegration</artifactId> <version>0.0.1-SNAPSHOT</version> <repositories> <repository> <id>tilab</id> <url>http://jade.tilab.com/maven/</url> </repository> </repositories> <dependencies> <dependency> <groupId>com.tilab.jade</groupId> <artifactId>jade</artifactId> <version>4.3.3</version> </dependency> <dependency>

Page 4: Tutorial Setup projeto JADE e ROS

<groupId>edu.wpi.rail</groupId> <artifactId>jrosbridge</artifactId> <version>0.2.0</version> </dependency> </dependencies> </project>

 Tome cuidado com o nome do projeto e aguarde terminar o download das 

dependencias, caso contrário não irá funcionar. Você poderá verificar se elas já estão presentes no seu projeto apenas por expandir o folder Maven Dependencies e ver se os pacotes já estão lá. 

 

3.Modificar a configuração para rodar o programa Bastar apertar ctrl+3 e digitar Run Configurations e apertar enter: 

  

Crie uma nova “Launch Configuration”  

Page 5: Tutorial Setup projeto JADE e ROS

 Na nova Run Configuration insira os novos dados, elas irão permitir que inicie o Jade 

com a interface aberta, para gerenciamento de agentes:

  

Mande rodar o projeto e a interface deverá abrir!  

Page 6: Tutorial Setup projeto JADE e ROS

 Bem vindo ao JADE!

3. Iniciando o ROS Abra o seu emulador de terminal e execute: 

roslaunch rosbridge_server rosbridge_websocket.launch

 Este comando irá também iniciar o roscore que suporta as várias funcionalidades do 

ROS. Em outro emulador de terminar insira os comandos: 

rosrun turtlesim turtlesim_node

 Irá aparecer uma janela e o serviço do “simulador de tartaruga” será iniciado. 

 

Page 7: Tutorial Setup projeto JADE e ROS

 E o serviço já está rodando!  

4. Arquivos Java dentro do projeto

Pilot.java  package myagents.pilot; import java.io.IOException; import edu.wpi.rail.jrosbridge.messages.geometry.Vector3; import jade.core.AID; import jade.core.Agent; import jade.core.behaviours.Behaviour; import jade.lang.acl.ACLMessage; public class Pilot extends Agent { private static final long serialVersionUID = 1L; protected void setup(){ System.out.println("Hello, "+getAID().getName()+" is ready"); addBehaviour(new IssueCommandToTurtle()); } private class IssueCommandToTurtle extends OneShotBehaviour{ private static final long serialVersionUID = 5328804229040293382L; @Override public void action() { AID turtle1 = new AID("turtle1", AID.ISLOCALNAME); ACLMessage message = new ACLMessage(ACLMessage.REQUEST); message.addReceiver(turtle1); Float[] linear = {(float) 2.0,(float) 2.0,(float) 0.0}; Float[] angular = {(float) 0,(float) 0,(float) 0}; Float[][] vectors = {linear, angular}; try { message.setContentObject(vectors); } catch (IOException e) { e.printStackTrace(); } myAgent.send(message); doDelete() } } }

Page 8: Tutorial Setup projeto JADE e ROS

  

Turtle.java  package myagents.turtle; import edu.wpi.rail.jrosbridge.Ros; import edu.wpi.rail.jrosbridge.Topic; import edu.wpi.rail.jrosbridge.callback.TopicCallback; import edu.wpi.rail.jrosbridge.messages.Message; import edu.wpi.rail.jrosbridge.messages.geometry.Twist; import edu.wpi.rail.jrosbridge.messages.geometry.Vector3; import jade.content.schema.facets.RegexFacet; import jade.core.AID; import jade.core.Agent; import jade.core.behaviours.CyclicBehaviour; import jade.domain.RequestFIPAServiceBehaviour; import jade.lang.acl.ACLMessage; import jade.lang.acl.MessageTemplate; import jade.lang.acl.UnreadableException; public class TurtleAgent extends Agent{ //JADE things private static final long serialVersionUID = 1L; //ROS things private Ros ros; private Topic turtleTopic; public TurtleAgent(){ ros = new Ros("localhost"); ros.connect(); turtleTopic = new Topic(ros, "/turtle1/cmd_vel", "geometry_msgs/Twist"); turtleTopic.subscribe(new TopicCallback() { public void handleMessage(Message arg0) { //do nothing } }); } private void moveTurtle(Vector3 linear, Vector3 angular){ Message toSend = new Twist(linear, angular); turtleTopic.publish(toSend); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void moveTurtle(Float[] linear, Float[] angular){ Vector3 linearVector = new Vector3(linear[0],linear[1],linear[2]); Vector3 angularVector = new Vector3(angular[0],angular[1],angular[2]); this.moveTurtle(linearVector, angularVector);

Page 9: Tutorial Setup projeto JADE e ROS

} protected void setup(){ addBehaviour(new OfferRequestsServer()); System.out.println("Hello, "+getAID().getName()+" is ready"); } private class OfferRequestsServer extends CyclicBehaviour { @Override public void action() { MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessage.REQUEST); ACLMessage msg = myAgent.receive(mt); if (msg != null){ try { Float[][] content = (Float[][]) msg.getContentObject(); moveTurtle(new Vector3(content[0][0],content[0][1],content[0][2]), new Vector3(content[1][0],content[1][1],content[1][2])); } catch (UnreadableException e) { e.printStackTrace(); } } else{ block(); } } } }

 

5. Instanciando os Agentes O agente “Pilot” vai procurar pela instância do agente “Turtle”, de nome “turtle1” 

dentro do ambiente JADE. Após achar ele irá enviar uma mensagem contendo as informações necessárias para que o agente “turtle1” passe a requisição para o ROS e entao faça a movimentação. 

Para isso, rode o projeto com o launcher customizado que criamos anteriormente: 

Page 10: Tutorial Setup projeto JADE e ROS

  

Com o jade funcionando adicione os agentes:  

Page 11: Tutorial Setup projeto JADE e ROS

 Primeiro o da tartaruga: 

  

Page 12: Tutorial Setup projeto JADE e ROS

 Da maneira como foi implementado, o agente Pilot assim que for instanciado 

automaticamente enviará a mensagem para o turtle1 e será morto pelo JADE. 

     E esse é o fim do tutorial! 

Page 13: Tutorial Setup projeto JADE e ROS

Caso queira continuar e aprofundar no JADE e/ou no ROS, os sites oficiais tem documentação riquíssima e tutoriais muito bons para iniciantes.