SlideShare uma empresa Scribd logo
1 de 75
Inside Jason: Experiências no
Desenvolvimento de
Arquiteturas Customizadas
Projeto Turing – LISA
(Laboratório Inteligente de
Sistemas Autônomos)
• 1. Centro Federal de Educação Tecnológica (CEFET/RJ), Brasil
• 2. Universidade Federal Fluminense (UFF), Brasil
Carlos Eduardo Pantoja 1,2
24 de Setembro 2017
2Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
SOCIAL MEDIA
https://www.linkedin.com/in/
carlos-eduardo-pantoja-
aab0a011a
https://www.facebook.com/turi
ngproject
https://www.youtube.com/chan
nel/UCDff9u94Rc1q4xZqCbldQAA
https://www.youtube.com/channel/UC9X
rJBtDKukqUQcHLy4t-kA
https://www.instagra
m.com/prof.pantoja
Professor
Pantoja
Projeto
Turing
OUTLINE 1. Introdução
2. Inside Jason
3. ARGO
4. Agentes Comunicadores
5. Conclusão
Referências Bibliográficas
OUTLINE
2. Inside Jason
3. ARGO
4. Agentes Comunicadores
5. Conclusão
Referências Bibliográficas
5Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
1. INTRODUÇÃO: ARGO
ARGO [Pantoja et al., 2016]: Uma arquitetura customizada
do Jason para programação de Agentes Robóticos usando
placas microcontroladas (Arduino):
• Javino [Lazarin e Pantoja, 2015]
 middleware para comunicação entre controladores e software
de alto nível com detecção de erro.
• Filtros de Percepções [Stabile Jr e Sichman, 2015]
 Filtros de percepção reduzem a quantidade de informação
percebida pelo agente em tempo de execução.
6Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
1. INTRODUÇÃO: COMMUNICATOR AGENT
Agentes Comunicadores: Uma arquitetura customizada do
Jason para programação de Agentes capazes de se
comunicar com agentes de um outro SMA usando o middleware
ContextNet:
• ConextNet [Endler, 2011]
 Middleware robusto para distribuição de dados em uma rede
da Internet of Things (IoT).
7Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
1. INTRODUÇÃO: OBJETIVOS
Objetivo Principal
• Criar SMA utilizando extensões para uma plataforma cognitiva baseada em
Java e AgentSpeak: Jason Framework.
• Desenvolver os projetos de Iniciação Científica ao longo do semestre.
• Introduzir o código fonte do Jason para desenvolvimento de novas soluções
no grupo.
Objetivo Secundário
OUTLINE 1. Introdução
3. ARGO
4. Agentes Comunicadores
5. Conclusão
Referências Bibliográficas
9Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
O Jason [Bordini et al., 2007] é um
framework para desenvolvimento de
Sistemas Multi-Agentes.
Além disso, o Jason implementa em Java
um interpretador para a linguagem
orientada a agentes AgentSpeak [Rao,
1996].
O Jason é um framework amplamente
utilizado na área de desenvolvimento de
sistemas multi-agentes para a
programação de agentes de software
BDI.
2. JASON
Jason by Gustave Moreau
10Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
2. JASON: REASONING CYCLE
11Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
12Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Local onde estão
todas as classes
fontes do Jason.
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
13Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Caso precise que o nome
da arquitetura
customizada seja
utilizada de forma direta
no arquivo de
configuração do SMA,
colocar sua classe aqui.
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
14Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Caso precise que o nome
da arquitetura
customizada seja
utilizada de forma direta
no arquivo de
configuração do SMA,
colocar sua classe aqui.
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
15Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
16Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
17Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
18Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
A arquitetura padrão de
um agente. Todas as
arquiteturas
customizadas estendem
esta classe. Se está
classe for modificada,
todos os tipos de
agentes serão
modificados.
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
19Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Instância do ContextNet
para permitir a
comunicação entre
agentes de SMA distintos.
Uma das nossas
experiências com
arquiteturas customizadas.
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
20Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Instância do Javino para
permitir a comunicação
entre agentes e
microcontroladores. Uma
outra experiência com
arquiteturas customizadas.
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
21Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
22Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Dos autores do Jason:
“The Agent class has the
belief base and plan library
of an AgentSpeak agent. It
also implements the
default selection functions
of the AgentSpeak
semantics.”
Se esta classe for
modificada (dependendo
de como seja feito), o
comportamento de todos
os agentes serão
modificados.
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
23Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Cada agente tem sua
própria instância dessa
classe. Funções como o
buf, são implementadas
nesta classe, assim como a
chamada para perceber o
ambiente simulado (classe
Environment)
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
24Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
25Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
São as ações internas da
biblioteca padrão
(standard library) do Jason.
As ações internas próprias
podem ser colocadas aqui
para não haver a
necessidade de colocar o
nome do pacote na hora
de fazer chamada a ação
no código asl.
2. JASON: BIBLIOTECA (THE ROAD SO FAR)
OUTLINE 1. Introdução
2. Inside Jason
4. Agentes Comunicadores
5. Conclusão
Referências Bibliográficas
27Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
3. ARGO FOR JASON
The Argo by Lorenzo Costa
O ARGO é uma arquitetura customizada
que emprega o middleware Javino
[Lazarin e Pantoja, 2015], que provê uma
ponte entre o agente inteligente e os
sensores e atuadores do robô.
Além disso, o ARGO possui um
mecanismo de filtragem de percepções
[Stabile Jr e Sichman, 2015] em tempo de
execução.
O ARGO tem como objetivo ser uma
arquitetura prática para a programação
de agentes robóticos embarcados
usando agentes BDI em Jason e placas
microcontroladas.
28Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
3. ARGO FOR JASON: REASONING CYCLE
29Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
3. ARGO FOR JASON: IMPLEMENTAÇÃO
30Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Customized
architecture created
to differentiate Argo
agents from common
Jason’s agents
3. ARGO FOR JASON: IMPLEMENTAÇÃO
31Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Javino instance for
each Argo agent.
3. ARGO FOR JASON: IMPLEMENTAÇÃO
32Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Returns the ARGO agent’s
Javino instance.
3. ARGO FOR JASON: IMPLEMENTAÇÃO
33Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
• Arquitetura Customizada de agentes ARGO
public class Argo extends AgArch {
public Javino jBridge = new Javino();
public Argo() {
this.setPort("COM1");
}
public Javino getArgo() {
return this.jBridge;
}
}
3. ARGO FOR JASON: IMPLEMENTAÇÃO
34Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
The serial port from which the agent is
receiving perceptions and executing
actions.
3. ARGO FOR JASON: IMPLEMENTAÇÃO
35Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Começa vazia pois nem
todo agente é um
agente ARGO.
É um método que é sobrecarregado na arquitetura
customizada. Aqui retorna nulo para não interferir
no funcionamento de outros tipos de agentes.
3. ARGO FOR JASON: IMPLEMENTAÇÃO
36Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Defines if the agent has
to perceive or not the
real world.
3. ARGO FOR JASON: IMPLEMENTAÇÃO
37Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
A time interval, in
milliseconds, for the
next real world sensing
3. ARGO FOR JASON: IMPLEMENTAÇÃO
38Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Desnecessário!!!
3. ARGO FOR JASON: IMPLEMENTAÇÃO
39Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Function responsible for
returning the perceptions from
the real world if:
i) the perceptions is not
blocked;
ii) the time limit was reached;
iii) the agent is an ARGO agent
3. ARGO FOR JASON: IMPLEMENTAÇÃO
40Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
• New realWorlPerceptions Method
public List<Literal> realWorldPerceptions() {
long perceiving = System.nanoTime();
List<Literal> percepts = new ArrayList<Literal>();
if(((perceiving - lastPerceived) < this.limit) || this.blocked)
return null;
lastPerceived = perceiving;
if (this.agArch.getArgo().requestData(this.agArch.getPort(), "getPercepts")) {
String rwPercepts = this.agArch.getArgo().getData();
String perception[] = rwPercepts.split(";");
for (int cont = 0; cont <= perception.length - 1; cont++) {
percepts.add(Literal.parseLiteral(perception[cont]));
}
return percepts;
}
3. ARGO FOR JASON: IMPLEMENTAÇÃO
41Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
Responsible for filtering
perceptions, as stated
before.
3. ARGO FOR JASON: IMPLEMENTAÇÃO
42Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
• Método de filtragem de percepções
private static void filter(List<Literal> percept) {
if (currentObjective == null)
return;
Iterator<Literal> it = percept.iterator();
while (it.hasNext()) {
if (remove(it.next())) {
it.remove();
}
}
}
public void buf(List<Literal> percepts) {
(...)
this.filter(percepts);
(...)
}
3. ARGO FOR JASON: IMPLEMENTAÇÃO
43Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
O ARGO permite:
1. Controlar diretamente os atuadores em tempo de execução;
2. Receber percepções dos sensores automaticamente dentro de um período de
tempo pré-definido;
3. Mudar os filtros de percepção em tempo de execução;
4. Alterar quais os dispositivos que estão sendo acessados em tempo de execução;
5. Decidir quando perceber ou não o mundo real em tempo de execução.
3. ARGO FOR JASON: FUNCIONALIDADES
44Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
• Ativando um efetuador
Ativando um
efetuador
utilizando a ação
interna act.
3. ARGO FOR JASON: FUNCIONALIDADES
45Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
3. ARGO FOR JASON: FUNCIONALIDADES
O ARGO permite:
1. Controlar diretamente os atuadores em tempo de execução;
2. Receber percepções dos sensores automaticamente dentro de um
período de tempo pré-definido;
3. Mudar os filtros de percepção em tempo de execução;
4. Alterar quais os dispositivos que estão sendo acessados em tempo de execução;
5. Decidir quando perceber ou não o mundo real em tempo de execução.
46Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
• Recebendo Percepções com Limite de Tempo
Limitando as
percepções em
25ms.
3. ARGO FOR JASON: FUNCIONALIDADES
47Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
3. ARGO FOR JASON: FUNCIONALIDADES
public boolean reasoningCycle() {
…
ag.buf(this.realWorldPerceptions());
…
}
• Mudanças na Classe TransitionSystem
antes:
ag.buf(getUserAgArch().perceive()
48Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
3. ARGO FOR JASON: FUNCIONALIDADES
• New realWorlPerceptions Method
public List<Literal> realWorldPerceptions() {
long perceiving = System.nanoTime();
List<Literal> percepts = new ArrayList<Literal>();
if(((perceiving - lastPerceived) < this.limit) || this.blocked)
return null;
lastPerceived = perceiving;
if (this.agArch.getArgo().requestData(this.agArch.getPort(), "getPercepts")) {
String rwPercepts = this.agArch.getArgo().getData();
String perception[] = rwPercepts.split(";");
for (int cont = 0; cont <= perception.length - 1; cont++) {
percepts.add(Literal.parseLiteral(perception[cont]));
}
return percepts;
}
49Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
3. ARGO FOR JASON: FUNCIONALIDADES
O ARGO permite:
1. Controlar diretamente os atuadores em tempo de execução;
2. Receber percepções dos sensores automaticamente dentro de um período de
tempo pré-definido;
3. Mudar os filtros de percepção em tempo de execução;
4. Alterar quais os dispositivos que estão sendo acessados em tempo de execução;
5. Decidir quando perceber ou não o mundo real em tempo de execução.
50Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
• Criando filtros de percepção
nome do filtro
nome do agente
dono do filtro
3. ARGO FOR JASON: FUNCIONALIDADES
51Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
• Mudando filtros de percepção
+!carry_to(R)
<− ! take (object, R);
.change_filter(search);
−object (r1);
!!search(slots).
3. ARGO FOR JASON: FUNCIONALIDADES
52Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
• Mudanças na Classe Agent
public void buf(List<Literal> percepts) {
if (percepts == null) {
return;
}
int adds = 0;
int dels = 0;
long startTime = qProfiling == null ? 0 : System.nanoTime();
filter(percepts);
Iterator<Literal> perceptsInBB = getBB().getPercepts();
while (perceptsInBB.hasNext()) {
...
3. ARGO FOR JASON: FUNCIONALIDADES
53Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
private static void filter(List<Literal> percept) {
if(currentObjective==null){
return;
}
Iterator<Literal> it = percept.iterator();
while (it.hasNext()) {
if (remove(it.next())) {
it.remove();
}
}
}
• Mudanças na Classe Agent
3. ARGO FOR JASON: FUNCIONALIDADES
54Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
O ARGO permite:
1. Controlar diretamente os atuadores em tempo de execução;
2. Receber percepções dos sensores automaticamente dentro de um período de
tempo pré-definido;
3. Mudar os filtros de percepção em tempo de execução;
4. Alterar quais os dispositivos que estão sendo acessados em tempo de
execução;
5. Decidir quando perceber ou não o mundo real em tempo de execução.
3. ARGO FOR JASON: FUNCIONALIDADES
55Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
• Criando e definindo a arquitetura de um agente ARGO
É preciso escolher
qual dispositivo o
agente irá
controlar definindo
a porta serial onde
o mesmo estiver
conectado.
3. ARGO FOR JASON: FUNCIONALIDADES
56Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
3. ARGO FOR JASON: FUNCIONALIDADES
O ARGO permite:
1. Controlar diretamente os atuadores em tempo de execução;
2. Receber percepções dos sensores automaticamente dentro de um período de
tempo pré-definido;
3. Mudar os filtros de percepção em tempo de execução;
4. Alterar quais os dispositivos que estão sendo acessados em tempo de execução;
5. Decidir quando perceber ou não o mundo real em tempo de execução.
57Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
• Criando e definindo a arquitetura de um agente ARGO
Por padrão, as
percepções
provenientes dos
sensores estão
inicialmente
bloqueadas. Para
isso é necessário
desbloqueá-las .
3. ARGO FOR JASON: FUNCIONALIDADES
58Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
• ARGO Internal Actions:
• .limit(x)
• .port(y)
• .percepts(open|block)
• .act(w)
• .change_filter(filterName)
3. ARGO FOR JASON: AÇÕES INTERNAS
59Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
public class limit extends DefaultInternalAction {
@Override
public Object execute(TransitionSystem ts, Unifier un, Term[] args)
throws Exception {
if (args[0].isNumeric()) {
ts.setLimit(Long.valueOf(args[0] + "000000"));
} else {
return false;
}
return true;
}
}
• A Classe limit no package jason.stdlib
3. ARGO FOR JASON: AÇÕES INTERNAS
60Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
3. ARGO FOR JASON: AÇÕES INTERNAS
• ARGO Internal Actions:
• .limit(x)
• .port(y)
• .percepts(open|block)
• .act(w)
• .change_filter(filterName)
61Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
public class port extends DefaultInternalAction {
@Override
public Object execute(TransitionSystem ts, Unifier un, Term[] args) throws Exception {
Term illoc = args[0];
String os = System.getProperty("os.name");
if (os.substring(0, 1).equals("W")) {
ts.getUserAgArch().setPort(illoc.toString());
} else {
ts.getUserAgArch().setPort("/" + illoc.toString());
}
return true;
}
}
• A Classe port no package jason.stdlib
3. ARGO FOR JASON: AÇÕES INTERNAS
62Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
3. ARGO FOR JASON: AÇÕES INTERNAS
• ARGO Internal Actions:
• .limit(x)
• .port(y)
• .percepts(open|block)
• .act(w)
• .change_filter(filterName)
63Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
public class percetps extends DefaultInternalAction {
@Override
public Object execute(TransitionSystem ts, Unifier un, Term[] args) throws Exception {
if (args[0].toString().equals("block")) {
ts.blocked = true;
return true;
} else if (args[0].toString().equals("open")) {
ts.blocked = false;
return true;
} else {
return false;
}
}
• A Classe percepts no package jason.stdlib
3. ARGO FOR JASON: AÇÕES INTERNAS
64Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
3. ARGO FOR JASON: AÇÕES INTERNAS
• ARGO Internal Actions:
• .limit(x)
• .port(y)
• .percepts(open|block)
• .act(w)
• .change_filter(filterName)
65Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
public class act extends DefaultInternalAction {
@Override
public Object execute(TransitionSystem ts, Unifier un, Term[] args)
throws Exception {
Term action = args[0];
if (ts.getUserAgArch().getArgo().sendCommand(ts.getUserAgArch().getPort(), action.toString())) {
return true;
} else { return false;}
}
}
• A Classe act no package jason.stdlib
3. ARGO FOR JASON: AÇÕES INTERNAS
66Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
3. ARGO FOR JASON: AÇÕES INTERNAS
• ARGO Internal Actions:
• .limit(x)
• .port(y)
• .percepts(open|block)
• .act(w)
• .change_filter(filterName)
67Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
public class filter extends DefaultInternalAction {
@Override
public Object execute(TransitionSystem ts, Unifier un, Term[] args) throws Exception {
String tag = args[0].toString();
ts.getAg().changeFilter(tag);
return true;
}
}}
• A Classe filter no package jason.stdlib
3. ARGO FOR JASON: AÇÕES INTERNAS
OUTLINE 1. Introdução
2. Inside Jason
3. ARGO
5. Conclusão
Referências Bibliográficas
69Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
NA PRÓXIMA VERSÃO
DA APRESENTAÇÃO
4. AGENTES COMUNICADORES
OUTLINE 1. Introdução
2. Inside Jason
3. ARGO
4. Agentes Comunicadores
Referências Bibliográficas
71Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
6. CONCLUSÃO
Este material teve (e tem) como objetivo orientar o
desenvolvimento de soluções integrando SMA e
plataformas de hardware utilizando as mais diversas
tecnologias.
Este material não está em sua versão final e estará em
constante atualização até os objetivos individuais dos
projetos em andamento forem concluídos.
Toda contribuição é válida e será bem vinda.
OUTLINE 1. Introdução
2. Inside Jason
3. ARGO
4. Agentes Comunicadores
5. Conclusão
73Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
REFERÊNCIAS BIBLIOGRÁFICA
•[Bordini et al. 2007] Bordini, R.H., Hubner, J.F., Wooldridge, M. Programming Multi-Agent Systems in AgentSpeak
Using Jason. John Wiley & Sons Ltd., 2007.
•[Bratman, 1987] Bratman, M. Intentions, Plans, and Practical Reason. Harvard University Press, 1987.
•[Endler et al., 2011] Endler M, Baptista G, Silva LD, Vasconcelos R, Malcher M, Pantoja V, Pinheiro V, Viterbo J.
ContextNet: context reasoning and sharing middleware for large-scale pervasive collaboration and social
networking. In Proceedings of the Workshop on Posters and Demos Track 2011 Dec 12 (p. 2). ACM.
•[Guinelli et al., 2016] Guinelli, J. V. ; Junger, D. S. ; Pantoja, C. E. . An Analysis of Javino Middleware for Robotic
Platforms Using Jason and JADE Frameworks. In: Workshop-Escola de Sistemas de Agentes, Seus Ambientes e
Aplicações, Maceió. Anais do X Workshop-Escola de Sistemas de Agentes, seus Ambientes e Aplicações, 2016.
•[Lazarin and Pantoja, 2015] Lazarin, N.M., Pantoja, C.E. : A robotic-Agent Platform For Embedding Software
Agents Using Raspberry Pi and Arduino Boards. In 9th Software Agents, Environments and Applications School,
2015
•[Pantoja et al., 2016] Pantoja, C. E.; Stabile Jr, M. F. ; Lazarin, N. M. ; Sichman, J. S. ARGO: A Customized Jason
Architecture for Programming Embedded Robotic Agents. In: Proceedings of the 3rd International Workshop on
Engineering Multi-Agent Systems (EMAS 2016), 2016.
74Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
REFERÊNCIAS BIBLIOGRÁFICA
•[Rao 1996] Rao, A.S.: AgentSpeak(L): BDI agents speak out in a logical computable language. In: de
Velde,W.V., Perram, J.W. (eds.) Proceedings of the 7th European workshop on Modelling autonomous
agents in a multi-agent world. Lecture Notes in Artificial Intelligence, vol. 1038, pp. 42-55. Springer-Verlag,
Secaucus. USA, 1996.
•[Stabile Jr. and Sichman, 2015] Stabile Jr., M.F., Sichman, J.S. Evaluating Perception Filters In BDI Jason
Agents. In: 4th Brazilian Conference On Intelligent Systems, 2015.
•[Wooldridge, 2009] Wooldridge M. An Introduction to MultiAgent Systems. John Wiley & Sons, 2009.
75Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas
AGRADECIMENTOS
OBRIGADO!
pantoja@cefet-rj.br

Mais conteúdo relacionado

Semelhante a Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas

Dev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsDev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsMichel Cordeiro
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Criando Framework - Conceitos, Estratégias e Dicas
Criando Framework - Conceitos, Estratégias e DicasCriando Framework - Conceitos, Estratégias e Dicas
Criando Framework - Conceitos, Estratégias e DicasNorton Guimarães
 
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-EndsSingle-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-EndsDaiana Cambruzzi Avila
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHPFlávio Lisboa
 
Desenvolvimento de Uma Smart Home Baseada na Arquitetura ARGO
Desenvolvimento de Uma Smart Home Baseada na Arquitetura ARGODesenvolvimento de Uma Smart Home Baseada na Arquitetura ARGO
Desenvolvimento de Uma Smart Home Baseada na Arquitetura ARGOCarlos Eduardo Pantoja
 
Seminário sobre ferramentas de gerenciamento de software
Seminário sobre ferramentas de gerenciamento de softwareSeminário sobre ferramentas de gerenciamento de software
Seminário sobre ferramentas de gerenciamento de softwareDiógenes Fernandes
 
Architectural Decision Records - PHPConfBR
Architectural Decision Records - PHPConfBRArchitectural Decision Records - PHPConfBR
Architectural Decision Records - PHPConfBRRafael Dohms
 
O papel do Front-End na UX
O papel do Front-End na UXO papel do Front-End na UX
O papel do Front-End na UXEdu Agni
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoComunidade NetPonto
 
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2André Dias
 
Bridge e Análise da Tarefa em equipe
Bridge e Análise da Tarefa em equipeBridge e Análise da Tarefa em equipe
Bridge e Análise da Tarefa em equipeLuiz Agner
 
Modulo ii arquiteturainformacaousabilidade_thaiscampas
Modulo ii arquiteturainformacaousabilidade_thaiscampasModulo ii arquiteturainformacaousabilidade_thaiscampas
Modulo ii arquiteturainformacaousabilidade_thaiscampasThais Campas
 

Semelhante a Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas (20)

Dev ops integração contínua com jenkins
Dev ops integração contínua com jenkinsDev ops integração contínua com jenkins
Dev ops integração contínua com jenkins
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Criando Framework - Conceitos, Estratégias e Dicas
Criando Framework - Conceitos, Estratégias e DicasCriando Framework - Conceitos, Estratégias e Dicas
Criando Framework - Conceitos, Estratégias e Dicas
 
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-EndsSingle-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
Single-SPA: Como este framework pode me ajudar na construção de Micro Front-Ends
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHP
 
Usabilidade Simples
Usabilidade SimplesUsabilidade Simples
Usabilidade Simples
 
Desenvolvimento de Uma Smart Home Baseada na Arquitetura ARGO
Desenvolvimento de Uma Smart Home Baseada na Arquitetura ARGODesenvolvimento de Uma Smart Home Baseada na Arquitetura ARGO
Desenvolvimento de Uma Smart Home Baseada na Arquitetura ARGO
 
Design agil: Encaixando o Design no processo
Design agil: Encaixando o Design no processoDesign agil: Encaixando o Design no processo
Design agil: Encaixando o Design no processo
 
O Arquiteto da Informação
O Arquiteto da InformaçãoO Arquiteto da Informação
O Arquiteto da Informação
 
Arquitetura da Informação - Origem e Desenvolvimento
Arquitetura da Informação - Origem e DesenvolvimentoArquitetura da Informação - Origem e Desenvolvimento
Arquitetura da Informação - Origem e Desenvolvimento
 
Seminário sobre ferramentas de gerenciamento de software
Seminário sobre ferramentas de gerenciamento de softwareSeminário sobre ferramentas de gerenciamento de software
Seminário sobre ferramentas de gerenciamento de software
 
Architectural Decision Records - PHPConfBR
Architectural Decision Records - PHPConfBRArchitectural Decision Records - PHPConfBR
Architectural Decision Records - PHPConfBR
 
O papel do Front-End na UX
O papel do Front-End na UXO papel do Front-End na UX
O papel do Front-End na UX
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
 
[TDC-Arquitetura Java] Pastoreando Gatos
[TDC-Arquitetura Java] Pastoreando Gatos[TDC-Arquitetura Java] Pastoreando Gatos
[TDC-Arquitetura Java] Pastoreando Gatos
 
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
 
Quem Precisa De Um Arquiteto
Quem Precisa De Um ArquitetoQuem Precisa De Um Arquiteto
Quem Precisa De Um Arquiteto
 
Objectory
ObjectoryObjectory
Objectory
 
Bridge e Análise da Tarefa em equipe
Bridge e Análise da Tarefa em equipeBridge e Análise da Tarefa em equipe
Bridge e Análise da Tarefa em equipe
 
Modulo ii arquiteturainformacaousabilidade_thaiscampas
Modulo ii arquiteturainformacaousabilidade_thaiscampasModulo ii arquiteturainformacaousabilidade_thaiscampas
Modulo ii arquiteturainformacaousabilidade_thaiscampas
 

Mais de Carlos Eduardo Pantoja

Integrando a Programação Java com Arduino Utilizando o Javino
Integrando a Programação Java com Arduino Utilizando o JavinoIntegrando a Programação Java com Arduino Utilizando o Javino
Integrando a Programação Java com Arduino Utilizando o JavinoCarlos Eduardo Pantoja
 
Transporte de Agentes Cognitivos entre SMA Usando Framework Jason e o Middlew...
Transporte de Agentes Cognitivos entre SMA Usando Framework Jason e o Middlew...Transporte de Agentes Cognitivos entre SMA Usando Framework Jason e o Middlew...
Transporte de Agentes Cognitivos entre SMA Usando Framework Jason e o Middlew...Carlos Eduardo Pantoja
 
A Heterogeneous Architecture for Integrating Multi-Agent Systems in AmI Systems
A Heterogeneous Architecture for Integrating Multi-Agent Systems in AmI SystemsA Heterogeneous Architecture for Integrating Multi-Agent Systems in AmI Systems
A Heterogeneous Architecture for Integrating Multi-Agent Systems in AmI SystemsCarlos Eduardo Pantoja
 
An Architecture for the Development of Ambient Intelligence Systems Managed b...
An Architecture for the Development of Ambient Intelligence Systems Managed b...An Architecture for the Development of Ambient Intelligence Systems Managed b...
An Architecture for the Development of Ambient Intelligence Systems Managed b...Carlos Eduardo Pantoja
 
Transporte de Agentes Cognitivos entre SMA Distintos Inspirado nos Princípios...
Transporte de Agentes Cognitivos entre SMA Distintos Inspirado nos Princípios...Transporte de Agentes Cognitivos entre SMA Distintos Inspirado nos Princípios...
Transporte de Agentes Cognitivos entre SMA Distintos Inspirado nos Princípios...Carlos Eduardo Pantoja
 
Explorando a Comunicação entre Sistemas Multi-Agentes Embarcados em Ambientes...
Explorando a Comunicação entre Sistemas Multi-Agentes Embarcados em Ambientes...Explorando a Comunicação entre Sistemas Multi-Agentes Embarcados em Ambientes...
Explorando a Comunicação entre Sistemas Multi-Agentes Embarcados em Ambientes...Carlos Eduardo Pantoja
 
Questões de Concursos - Sistemas de Informação (Parte 1)
Questões de Concursos - Sistemas de Informação (Parte 1)Questões de Concursos - Sistemas de Informação (Parte 1)
Questões de Concursos - Sistemas de Informação (Parte 1)Carlos Eduardo Pantoja
 
Integrating Multi-Agent Systems and Internet of Things To Support Ambient Int...
Integrating Multi-Agent Systems and Internet of Things To Support Ambient Int...Integrating Multi-Agent Systems and Internet of Things To Support Ambient Int...
Integrating Multi-Agent Systems and Internet of Things To Support Ambient Int...Carlos Eduardo Pantoja
 
LISA - Laboratório Inteligente de Sistemas Autônomos
LISA - Laboratório Inteligente de Sistemas AutônomosLISA - Laboratório Inteligente de Sistemas Autônomos
LISA - Laboratório Inteligente de Sistemas AutônomosCarlos Eduardo Pantoja
 
Support for the Deployment of Ambient Intelligence Systems Managed by Cogniti...
Support for the Deployment of Ambient Intelligence Systems Managed by Cogniti...Support for the Deployment of Ambient Intelligence Systems Managed by Cogniti...
Support for the Deployment of Ambient Intelligence Systems Managed by Cogniti...Carlos Eduardo Pantoja
 
Suporte à Implementação de Ambientes Inteligentes Gerenciados por Agentes Cog...
Suporte à Implementação de Ambientes Inteligentes Gerenciados por Agentes Cog...Suporte à Implementação de Ambientes Inteligentes Gerenciados por Agentes Cog...
Suporte à Implementação de Ambientes Inteligentes Gerenciados por Agentes Cog...Carlos Eduardo Pantoja
 
Instalação e Manutenção de Computadores
Instalação e Manutenção de ComputadoresInstalação e Manutenção de Computadores
Instalação e Manutenção de ComputadoresCarlos Eduardo Pantoja
 
Explorando o Transporte de Agentes Cognitivos entre Sistemas Multi-Agentes Di...
Explorando o Transporte de Agentes Cognitivos entre Sistemas Multi-Agentes Di...Explorando o Transporte de Agentes Cognitivos entre Sistemas Multi-Agentes Di...
Explorando o Transporte de Agentes Cognitivos entre Sistemas Multi-Agentes Di...Carlos Eduardo Pantoja
 
Sistema de Controle de Justificativas de Medicamentos Antimicrobianos
Sistema de Controle de Justificativas de Medicamentos AntimicrobianosSistema de Controle de Justificativas de Medicamentos Antimicrobianos
Sistema de Controle de Justificativas de Medicamentos AntimicrobianosCarlos Eduardo Pantoja
 
Prototyping Ubiquitous Multi-Agent Systems: A Generic Domain Approach with Jason
Prototyping Ubiquitous Multi-Agent Systems: A Generic Domain Approach with JasonPrototyping Ubiquitous Multi-Agent Systems: A Generic Domain Approach with Jason
Prototyping Ubiquitous Multi-Agent Systems: A Generic Domain Approach with JasonCarlos Eduardo Pantoja
 
Introdução a Administração e a Economia
Introdução a Administração e a EconomiaIntrodução a Administração e a Economia
Introdução a Administração e a EconomiaCarlos Eduardo Pantoja
 
Managing Natural Resources in a Smart Bathroom Using a Ubiquitous Multi-Agent...
Managing Natural Resources in a Smart Bathroom Using a Ubiquitous Multi-Agent...Managing Natural Resources in a Smart Bathroom Using a Ubiquitous Multi-Agent...
Managing Natural Resources in a Smart Bathroom Using a Ubiquitous Multi-Agent...Carlos Eduardo Pantoja
 
Uma Plataforma para Programação de Agentes Robóticos Estendendo o Framework J...
Uma Plataforma para Programação de Agentes Robóticos Estendendo o Framework J...Uma Plataforma para Programação de Agentes Robóticos Estendendo o Framework J...
Uma Plataforma para Programação de Agentes Robóticos Estendendo o Framework J...Carlos Eduardo Pantoja
 
LuBras: Uma Arquitetura de um Dispositivo Eletrônico para a Comunicação LIBRA...
LuBras: Uma Arquitetura de um Dispositivo Eletrônico para a Comunicação LIBRA...LuBras: Uma Arquitetura de um Dispositivo Eletrônico para a Comunicação LIBRA...
LuBras: Uma Arquitetura de um Dispositivo Eletrônico para a Comunicação LIBRA...Carlos Eduardo Pantoja
 

Mais de Carlos Eduardo Pantoja (20)

Integrando a Programação Java com Arduino Utilizando o Javino
Integrando a Programação Java com Arduino Utilizando o JavinoIntegrando a Programação Java com Arduino Utilizando o Javino
Integrando a Programação Java com Arduino Utilizando o Javino
 
Transporte de Agentes Cognitivos entre SMA Usando Framework Jason e o Middlew...
Transporte de Agentes Cognitivos entre SMA Usando Framework Jason e o Middlew...Transporte de Agentes Cognitivos entre SMA Usando Framework Jason e o Middlew...
Transporte de Agentes Cognitivos entre SMA Usando Framework Jason e o Middlew...
 
A Heterogeneous Architecture for Integrating Multi-Agent Systems in AmI Systems
A Heterogeneous Architecture for Integrating Multi-Agent Systems in AmI SystemsA Heterogeneous Architecture for Integrating Multi-Agent Systems in AmI Systems
A Heterogeneous Architecture for Integrating Multi-Agent Systems in AmI Systems
 
An Architecture for the Development of Ambient Intelligence Systems Managed b...
An Architecture for the Development of Ambient Intelligence Systems Managed b...An Architecture for the Development of Ambient Intelligence Systems Managed b...
An Architecture for the Development of Ambient Intelligence Systems Managed b...
 
Transporte de Agentes Cognitivos entre SMA Distintos Inspirado nos Princípios...
Transporte de Agentes Cognitivos entre SMA Distintos Inspirado nos Princípios...Transporte de Agentes Cognitivos entre SMA Distintos Inspirado nos Princípios...
Transporte de Agentes Cognitivos entre SMA Distintos Inspirado nos Princípios...
 
Explorando a Comunicação entre Sistemas Multi-Agentes Embarcados em Ambientes...
Explorando a Comunicação entre Sistemas Multi-Agentes Embarcados em Ambientes...Explorando a Comunicação entre Sistemas Multi-Agentes Embarcados em Ambientes...
Explorando a Comunicação entre Sistemas Multi-Agentes Embarcados em Ambientes...
 
Questões de Concursos - Sistemas de Informação (Parte 1)
Questões de Concursos - Sistemas de Informação (Parte 1)Questões de Concursos - Sistemas de Informação (Parte 1)
Questões de Concursos - Sistemas de Informação (Parte 1)
 
Integrating Multi-Agent Systems and Internet of Things To Support Ambient Int...
Integrating Multi-Agent Systems and Internet of Things To Support Ambient Int...Integrating Multi-Agent Systems and Internet of Things To Support Ambient Int...
Integrating Multi-Agent Systems and Internet of Things To Support Ambient Int...
 
LISA - Laboratório Inteligente de Sistemas Autônomos
LISA - Laboratório Inteligente de Sistemas AutônomosLISA - Laboratório Inteligente de Sistemas Autônomos
LISA - Laboratório Inteligente de Sistemas Autônomos
 
Support for the Deployment of Ambient Intelligence Systems Managed by Cogniti...
Support for the Deployment of Ambient Intelligence Systems Managed by Cogniti...Support for the Deployment of Ambient Intelligence Systems Managed by Cogniti...
Support for the Deployment of Ambient Intelligence Systems Managed by Cogniti...
 
Suporte à Implementação de Ambientes Inteligentes Gerenciados por Agentes Cog...
Suporte à Implementação de Ambientes Inteligentes Gerenciados por Agentes Cog...Suporte à Implementação de Ambientes Inteligentes Gerenciados por Agentes Cog...
Suporte à Implementação de Ambientes Inteligentes Gerenciados por Agentes Cog...
 
Instalação e Manutenção de Computadores
Instalação e Manutenção de ComputadoresInstalação e Manutenção de Computadores
Instalação e Manutenção de Computadores
 
ContextNet Middleware
ContextNet MiddlewareContextNet Middleware
ContextNet Middleware
 
Explorando o Transporte de Agentes Cognitivos entre Sistemas Multi-Agentes Di...
Explorando o Transporte de Agentes Cognitivos entre Sistemas Multi-Agentes Di...Explorando o Transporte de Agentes Cognitivos entre Sistemas Multi-Agentes Di...
Explorando o Transporte de Agentes Cognitivos entre Sistemas Multi-Agentes Di...
 
Sistema de Controle de Justificativas de Medicamentos Antimicrobianos
Sistema de Controle de Justificativas de Medicamentos AntimicrobianosSistema de Controle de Justificativas de Medicamentos Antimicrobianos
Sistema de Controle de Justificativas de Medicamentos Antimicrobianos
 
Prototyping Ubiquitous Multi-Agent Systems: A Generic Domain Approach with Jason
Prototyping Ubiquitous Multi-Agent Systems: A Generic Domain Approach with JasonPrototyping Ubiquitous Multi-Agent Systems: A Generic Domain Approach with Jason
Prototyping Ubiquitous Multi-Agent Systems: A Generic Domain Approach with Jason
 
Introdução a Administração e a Economia
Introdução a Administração e a EconomiaIntrodução a Administração e a Economia
Introdução a Administração e a Economia
 
Managing Natural Resources in a Smart Bathroom Using a Ubiquitous Multi-Agent...
Managing Natural Resources in a Smart Bathroom Using a Ubiquitous Multi-Agent...Managing Natural Resources in a Smart Bathroom Using a Ubiquitous Multi-Agent...
Managing Natural Resources in a Smart Bathroom Using a Ubiquitous Multi-Agent...
 
Uma Plataforma para Programação de Agentes Robóticos Estendendo o Framework J...
Uma Plataforma para Programação de Agentes Robóticos Estendendo o Framework J...Uma Plataforma para Programação de Agentes Robóticos Estendendo o Framework J...
Uma Plataforma para Programação de Agentes Robóticos Estendendo o Framework J...
 
LuBras: Uma Arquitetura de um Dispositivo Eletrônico para a Comunicação LIBRA...
LuBras: Uma Arquitetura de um Dispositivo Eletrônico para a Comunicação LIBRA...LuBras: Uma Arquitetura de um Dispositivo Eletrônico para a Comunicação LIBRA...
LuBras: Uma Arquitetura de um Dispositivo Eletrônico para a Comunicação LIBRA...
 

Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas

  • 1. Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Projeto Turing – LISA (Laboratório Inteligente de Sistemas Autônomos) • 1. Centro Federal de Educação Tecnológica (CEFET/RJ), Brasil • 2. Universidade Federal Fluminense (UFF), Brasil Carlos Eduardo Pantoja 1,2 24 de Setembro 2017
  • 2. 2Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas SOCIAL MEDIA https://www.linkedin.com/in/ carlos-eduardo-pantoja- aab0a011a https://www.facebook.com/turi ngproject https://www.youtube.com/chan nel/UCDff9u94Rc1q4xZqCbldQAA https://www.youtube.com/channel/UC9X rJBtDKukqUQcHLy4t-kA https://www.instagra m.com/prof.pantoja Professor Pantoja Projeto Turing
  • 3. OUTLINE 1. Introdução 2. Inside Jason 3. ARGO 4. Agentes Comunicadores 5. Conclusão Referências Bibliográficas
  • 4. OUTLINE 2. Inside Jason 3. ARGO 4. Agentes Comunicadores 5. Conclusão Referências Bibliográficas
  • 5. 5Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 1. INTRODUÇÃO: ARGO ARGO [Pantoja et al., 2016]: Uma arquitetura customizada do Jason para programação de Agentes Robóticos usando placas microcontroladas (Arduino): • Javino [Lazarin e Pantoja, 2015]  middleware para comunicação entre controladores e software de alto nível com detecção de erro. • Filtros de Percepções [Stabile Jr e Sichman, 2015]  Filtros de percepção reduzem a quantidade de informação percebida pelo agente em tempo de execução.
  • 6. 6Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 1. INTRODUÇÃO: COMMUNICATOR AGENT Agentes Comunicadores: Uma arquitetura customizada do Jason para programação de Agentes capazes de se comunicar com agentes de um outro SMA usando o middleware ContextNet: • ConextNet [Endler, 2011]  Middleware robusto para distribuição de dados em uma rede da Internet of Things (IoT).
  • 7. 7Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 1. INTRODUÇÃO: OBJETIVOS Objetivo Principal • Criar SMA utilizando extensões para uma plataforma cognitiva baseada em Java e AgentSpeak: Jason Framework. • Desenvolver os projetos de Iniciação Científica ao longo do semestre. • Introduzir o código fonte do Jason para desenvolvimento de novas soluções no grupo. Objetivo Secundário
  • 8. OUTLINE 1. Introdução 3. ARGO 4. Agentes Comunicadores 5. Conclusão Referências Bibliográficas
  • 9. 9Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas O Jason [Bordini et al., 2007] é um framework para desenvolvimento de Sistemas Multi-Agentes. Além disso, o Jason implementa em Java um interpretador para a linguagem orientada a agentes AgentSpeak [Rao, 1996]. O Jason é um framework amplamente utilizado na área de desenvolvimento de sistemas multi-agentes para a programação de agentes de software BDI. 2. JASON Jason by Gustave Moreau
  • 10. 10Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 2. JASON: REASONING CYCLE
  • 11. 11Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 12. 12Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Local onde estão todas as classes fontes do Jason. 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 13. 13Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Caso precise que o nome da arquitetura customizada seja utilizada de forma direta no arquivo de configuração do SMA, colocar sua classe aqui. 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 14. 14Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Caso precise que o nome da arquitetura customizada seja utilizada de forma direta no arquivo de configuração do SMA, colocar sua classe aqui. 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 15. 15Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 16. 16Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 17. 17Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 18. 18Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas A arquitetura padrão de um agente. Todas as arquiteturas customizadas estendem esta classe. Se está classe for modificada, todos os tipos de agentes serão modificados. 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 19. 19Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Instância do ContextNet para permitir a comunicação entre agentes de SMA distintos. Uma das nossas experiências com arquiteturas customizadas. 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 20. 20Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Instância do Javino para permitir a comunicação entre agentes e microcontroladores. Uma outra experiência com arquiteturas customizadas. 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 21. 21Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 22. 22Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Dos autores do Jason: “The Agent class has the belief base and plan library of an AgentSpeak agent. It also implements the default selection functions of the AgentSpeak semantics.” Se esta classe for modificada (dependendo de como seja feito), o comportamento de todos os agentes serão modificados. 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 23. 23Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Cada agente tem sua própria instância dessa classe. Funções como o buf, são implementadas nesta classe, assim como a chamada para perceber o ambiente simulado (classe Environment) 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 24. 24Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 25. 25Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas São as ações internas da biblioteca padrão (standard library) do Jason. As ações internas próprias podem ser colocadas aqui para não haver a necessidade de colocar o nome do pacote na hora de fazer chamada a ação no código asl. 2. JASON: BIBLIOTECA (THE ROAD SO FAR)
  • 26. OUTLINE 1. Introdução 2. Inside Jason 4. Agentes Comunicadores 5. Conclusão Referências Bibliográficas
  • 27. 27Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 3. ARGO FOR JASON The Argo by Lorenzo Costa O ARGO é uma arquitetura customizada que emprega o middleware Javino [Lazarin e Pantoja, 2015], que provê uma ponte entre o agente inteligente e os sensores e atuadores do robô. Além disso, o ARGO possui um mecanismo de filtragem de percepções [Stabile Jr e Sichman, 2015] em tempo de execução. O ARGO tem como objetivo ser uma arquitetura prática para a programação de agentes robóticos embarcados usando agentes BDI em Jason e placas microcontroladas.
  • 28. 28Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 3. ARGO FOR JASON: REASONING CYCLE
  • 29. 29Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 3. ARGO FOR JASON: IMPLEMENTAÇÃO
  • 30. 30Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Customized architecture created to differentiate Argo agents from common Jason’s agents 3. ARGO FOR JASON: IMPLEMENTAÇÃO
  • 31. 31Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Javino instance for each Argo agent. 3. ARGO FOR JASON: IMPLEMENTAÇÃO
  • 32. 32Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Returns the ARGO agent’s Javino instance. 3. ARGO FOR JASON: IMPLEMENTAÇÃO
  • 33. 33Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas • Arquitetura Customizada de agentes ARGO public class Argo extends AgArch { public Javino jBridge = new Javino(); public Argo() { this.setPort("COM1"); } public Javino getArgo() { return this.jBridge; } } 3. ARGO FOR JASON: IMPLEMENTAÇÃO
  • 34. 34Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas The serial port from which the agent is receiving perceptions and executing actions. 3. ARGO FOR JASON: IMPLEMENTAÇÃO
  • 35. 35Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Começa vazia pois nem todo agente é um agente ARGO. É um método que é sobrecarregado na arquitetura customizada. Aqui retorna nulo para não interferir no funcionamento de outros tipos de agentes. 3. ARGO FOR JASON: IMPLEMENTAÇÃO
  • 36. 36Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Defines if the agent has to perceive or not the real world. 3. ARGO FOR JASON: IMPLEMENTAÇÃO
  • 37. 37Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas A time interval, in milliseconds, for the next real world sensing 3. ARGO FOR JASON: IMPLEMENTAÇÃO
  • 38. 38Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Desnecessário!!! 3. ARGO FOR JASON: IMPLEMENTAÇÃO
  • 39. 39Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Function responsible for returning the perceptions from the real world if: i) the perceptions is not blocked; ii) the time limit was reached; iii) the agent is an ARGO agent 3. ARGO FOR JASON: IMPLEMENTAÇÃO
  • 40. 40Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas • New realWorlPerceptions Method public List<Literal> realWorldPerceptions() { long perceiving = System.nanoTime(); List<Literal> percepts = new ArrayList<Literal>(); if(((perceiving - lastPerceived) < this.limit) || this.blocked) return null; lastPerceived = perceiving; if (this.agArch.getArgo().requestData(this.agArch.getPort(), "getPercepts")) { String rwPercepts = this.agArch.getArgo().getData(); String perception[] = rwPercepts.split(";"); for (int cont = 0; cont <= perception.length - 1; cont++) { percepts.add(Literal.parseLiteral(perception[cont])); } return percepts; } 3. ARGO FOR JASON: IMPLEMENTAÇÃO
  • 41. 41Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas Responsible for filtering perceptions, as stated before. 3. ARGO FOR JASON: IMPLEMENTAÇÃO
  • 42. 42Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas • Método de filtragem de percepções private static void filter(List<Literal> percept) { if (currentObjective == null) return; Iterator<Literal> it = percept.iterator(); while (it.hasNext()) { if (remove(it.next())) { it.remove(); } } } public void buf(List<Literal> percepts) { (...) this.filter(percepts); (...) } 3. ARGO FOR JASON: IMPLEMENTAÇÃO
  • 43. 43Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas O ARGO permite: 1. Controlar diretamente os atuadores em tempo de execução; 2. Receber percepções dos sensores automaticamente dentro de um período de tempo pré-definido; 3. Mudar os filtros de percepção em tempo de execução; 4. Alterar quais os dispositivos que estão sendo acessados em tempo de execução; 5. Decidir quando perceber ou não o mundo real em tempo de execução. 3. ARGO FOR JASON: FUNCIONALIDADES
  • 44. 44Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas • Ativando um efetuador Ativando um efetuador utilizando a ação interna act. 3. ARGO FOR JASON: FUNCIONALIDADES
  • 45. 45Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 3. ARGO FOR JASON: FUNCIONALIDADES O ARGO permite: 1. Controlar diretamente os atuadores em tempo de execução; 2. Receber percepções dos sensores automaticamente dentro de um período de tempo pré-definido; 3. Mudar os filtros de percepção em tempo de execução; 4. Alterar quais os dispositivos que estão sendo acessados em tempo de execução; 5. Decidir quando perceber ou não o mundo real em tempo de execução.
  • 46. 46Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas • Recebendo Percepções com Limite de Tempo Limitando as percepções em 25ms. 3. ARGO FOR JASON: FUNCIONALIDADES
  • 47. 47Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 3. ARGO FOR JASON: FUNCIONALIDADES public boolean reasoningCycle() { … ag.buf(this.realWorldPerceptions()); … } • Mudanças na Classe TransitionSystem antes: ag.buf(getUserAgArch().perceive()
  • 48. 48Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 3. ARGO FOR JASON: FUNCIONALIDADES • New realWorlPerceptions Method public List<Literal> realWorldPerceptions() { long perceiving = System.nanoTime(); List<Literal> percepts = new ArrayList<Literal>(); if(((perceiving - lastPerceived) < this.limit) || this.blocked) return null; lastPerceived = perceiving; if (this.agArch.getArgo().requestData(this.agArch.getPort(), "getPercepts")) { String rwPercepts = this.agArch.getArgo().getData(); String perception[] = rwPercepts.split(";"); for (int cont = 0; cont <= perception.length - 1; cont++) { percepts.add(Literal.parseLiteral(perception[cont])); } return percepts; }
  • 49. 49Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 3. ARGO FOR JASON: FUNCIONALIDADES O ARGO permite: 1. Controlar diretamente os atuadores em tempo de execução; 2. Receber percepções dos sensores automaticamente dentro de um período de tempo pré-definido; 3. Mudar os filtros de percepção em tempo de execução; 4. Alterar quais os dispositivos que estão sendo acessados em tempo de execução; 5. Decidir quando perceber ou não o mundo real em tempo de execução.
  • 50. 50Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas • Criando filtros de percepção nome do filtro nome do agente dono do filtro 3. ARGO FOR JASON: FUNCIONALIDADES
  • 51. 51Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas • Mudando filtros de percepção +!carry_to(R) <− ! take (object, R); .change_filter(search); −object (r1); !!search(slots). 3. ARGO FOR JASON: FUNCIONALIDADES
  • 52. 52Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas • Mudanças na Classe Agent public void buf(List<Literal> percepts) { if (percepts == null) { return; } int adds = 0; int dels = 0; long startTime = qProfiling == null ? 0 : System.nanoTime(); filter(percepts); Iterator<Literal> perceptsInBB = getBB().getPercepts(); while (perceptsInBB.hasNext()) { ... 3. ARGO FOR JASON: FUNCIONALIDADES
  • 53. 53Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas private static void filter(List<Literal> percept) { if(currentObjective==null){ return; } Iterator<Literal> it = percept.iterator(); while (it.hasNext()) { if (remove(it.next())) { it.remove(); } } } • Mudanças na Classe Agent 3. ARGO FOR JASON: FUNCIONALIDADES
  • 54. 54Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas O ARGO permite: 1. Controlar diretamente os atuadores em tempo de execução; 2. Receber percepções dos sensores automaticamente dentro de um período de tempo pré-definido; 3. Mudar os filtros de percepção em tempo de execução; 4. Alterar quais os dispositivos que estão sendo acessados em tempo de execução; 5. Decidir quando perceber ou não o mundo real em tempo de execução. 3. ARGO FOR JASON: FUNCIONALIDADES
  • 55. 55Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas • Criando e definindo a arquitetura de um agente ARGO É preciso escolher qual dispositivo o agente irá controlar definindo a porta serial onde o mesmo estiver conectado. 3. ARGO FOR JASON: FUNCIONALIDADES
  • 56. 56Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 3. ARGO FOR JASON: FUNCIONALIDADES O ARGO permite: 1. Controlar diretamente os atuadores em tempo de execução; 2. Receber percepções dos sensores automaticamente dentro de um período de tempo pré-definido; 3. Mudar os filtros de percepção em tempo de execução; 4. Alterar quais os dispositivos que estão sendo acessados em tempo de execução; 5. Decidir quando perceber ou não o mundo real em tempo de execução.
  • 57. 57Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas • Criando e definindo a arquitetura de um agente ARGO Por padrão, as percepções provenientes dos sensores estão inicialmente bloqueadas. Para isso é necessário desbloqueá-las . 3. ARGO FOR JASON: FUNCIONALIDADES
  • 58. 58Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas • ARGO Internal Actions: • .limit(x) • .port(y) • .percepts(open|block) • .act(w) • .change_filter(filterName) 3. ARGO FOR JASON: AÇÕES INTERNAS
  • 59. 59Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas public class limit extends DefaultInternalAction { @Override public Object execute(TransitionSystem ts, Unifier un, Term[] args) throws Exception { if (args[0].isNumeric()) { ts.setLimit(Long.valueOf(args[0] + "000000")); } else { return false; } return true; } } • A Classe limit no package jason.stdlib 3. ARGO FOR JASON: AÇÕES INTERNAS
  • 60. 60Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 3. ARGO FOR JASON: AÇÕES INTERNAS • ARGO Internal Actions: • .limit(x) • .port(y) • .percepts(open|block) • .act(w) • .change_filter(filterName)
  • 61. 61Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas public class port extends DefaultInternalAction { @Override public Object execute(TransitionSystem ts, Unifier un, Term[] args) throws Exception { Term illoc = args[0]; String os = System.getProperty("os.name"); if (os.substring(0, 1).equals("W")) { ts.getUserAgArch().setPort(illoc.toString()); } else { ts.getUserAgArch().setPort("/" + illoc.toString()); } return true; } } • A Classe port no package jason.stdlib 3. ARGO FOR JASON: AÇÕES INTERNAS
  • 62. 62Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 3. ARGO FOR JASON: AÇÕES INTERNAS • ARGO Internal Actions: • .limit(x) • .port(y) • .percepts(open|block) • .act(w) • .change_filter(filterName)
  • 63. 63Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas public class percetps extends DefaultInternalAction { @Override public Object execute(TransitionSystem ts, Unifier un, Term[] args) throws Exception { if (args[0].toString().equals("block")) { ts.blocked = true; return true; } else if (args[0].toString().equals("open")) { ts.blocked = false; return true; } else { return false; } } • A Classe percepts no package jason.stdlib 3. ARGO FOR JASON: AÇÕES INTERNAS
  • 64. 64Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 3. ARGO FOR JASON: AÇÕES INTERNAS • ARGO Internal Actions: • .limit(x) • .port(y) • .percepts(open|block) • .act(w) • .change_filter(filterName)
  • 65. 65Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas public class act extends DefaultInternalAction { @Override public Object execute(TransitionSystem ts, Unifier un, Term[] args) throws Exception { Term action = args[0]; if (ts.getUserAgArch().getArgo().sendCommand(ts.getUserAgArch().getPort(), action.toString())) { return true; } else { return false;} } } • A Classe act no package jason.stdlib 3. ARGO FOR JASON: AÇÕES INTERNAS
  • 66. 66Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 3. ARGO FOR JASON: AÇÕES INTERNAS • ARGO Internal Actions: • .limit(x) • .port(y) • .percepts(open|block) • .act(w) • .change_filter(filterName)
  • 67. 67Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas public class filter extends DefaultInternalAction { @Override public Object execute(TransitionSystem ts, Unifier un, Term[] args) throws Exception { String tag = args[0].toString(); ts.getAg().changeFilter(tag); return true; } }} • A Classe filter no package jason.stdlib 3. ARGO FOR JASON: AÇÕES INTERNAS
  • 68. OUTLINE 1. Introdução 2. Inside Jason 3. ARGO 5. Conclusão Referências Bibliográficas
  • 69. 69Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas NA PRÓXIMA VERSÃO DA APRESENTAÇÃO 4. AGENTES COMUNICADORES
  • 70. OUTLINE 1. Introdução 2. Inside Jason 3. ARGO 4. Agentes Comunicadores Referências Bibliográficas
  • 71. 71Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas 6. CONCLUSÃO Este material teve (e tem) como objetivo orientar o desenvolvimento de soluções integrando SMA e plataformas de hardware utilizando as mais diversas tecnologias. Este material não está em sua versão final e estará em constante atualização até os objetivos individuais dos projetos em andamento forem concluídos. Toda contribuição é válida e será bem vinda.
  • 72. OUTLINE 1. Introdução 2. Inside Jason 3. ARGO 4. Agentes Comunicadores 5. Conclusão
  • 73. 73Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas REFERÊNCIAS BIBLIOGRÁFICA •[Bordini et al. 2007] Bordini, R.H., Hubner, J.F., Wooldridge, M. Programming Multi-Agent Systems in AgentSpeak Using Jason. John Wiley & Sons Ltd., 2007. •[Bratman, 1987] Bratman, M. Intentions, Plans, and Practical Reason. Harvard University Press, 1987. •[Endler et al., 2011] Endler M, Baptista G, Silva LD, Vasconcelos R, Malcher M, Pantoja V, Pinheiro V, Viterbo J. ContextNet: context reasoning and sharing middleware for large-scale pervasive collaboration and social networking. In Proceedings of the Workshop on Posters and Demos Track 2011 Dec 12 (p. 2). ACM. •[Guinelli et al., 2016] Guinelli, J. V. ; Junger, D. S. ; Pantoja, C. E. . An Analysis of Javino Middleware for Robotic Platforms Using Jason and JADE Frameworks. In: Workshop-Escola de Sistemas de Agentes, Seus Ambientes e Aplicações, Maceió. Anais do X Workshop-Escola de Sistemas de Agentes, seus Ambientes e Aplicações, 2016. •[Lazarin and Pantoja, 2015] Lazarin, N.M., Pantoja, C.E. : A robotic-Agent Platform For Embedding Software Agents Using Raspberry Pi and Arduino Boards. In 9th Software Agents, Environments and Applications School, 2015 •[Pantoja et al., 2016] Pantoja, C. E.; Stabile Jr, M. F. ; Lazarin, N. M. ; Sichman, J. S. ARGO: A Customized Jason Architecture for Programming Embedded Robotic Agents. In: Proceedings of the 3rd International Workshop on Engineering Multi-Agent Systems (EMAS 2016), 2016.
  • 74. 74Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas REFERÊNCIAS BIBLIOGRÁFICA •[Rao 1996] Rao, A.S.: AgentSpeak(L): BDI agents speak out in a logical computable language. In: de Velde,W.V., Perram, J.W. (eds.) Proceedings of the 7th European workshop on Modelling autonomous agents in a multi-agent world. Lecture Notes in Artificial Intelligence, vol. 1038, pp. 42-55. Springer-Verlag, Secaucus. USA, 1996. •[Stabile Jr. and Sichman, 2015] Stabile Jr., M.F., Sichman, J.S. Evaluating Perception Filters In BDI Jason Agents. In: 4th Brazilian Conference On Intelligent Systems, 2015. •[Wooldridge, 2009] Wooldridge M. An Introduction to MultiAgent Systems. John Wiley & Sons, 2009.
  • 75. 75Inside Jason: Experiências no Desenvolvimento de Arquiteturas Customizadas AGRADECIMENTOS OBRIGADO! pantoja@cefet-rj.br