• Nenhum resultado encontrado

Um agente autônomo concorrente para o manipulador robótico Jaco Kinova

N/A
N/A
Protected

Academic year: 2021

Share "Um agente autônomo concorrente para o manipulador robótico Jaco Kinova"

Copied!
98
0
0

Texto

(1)

UNIVERSIDADE FEDERAL DA BAHIA

DISSERTAC

¸ ˜

AO DE MESTRADO

UM AGENTE AUT ˆ

ONOMO CONCORRENTE PARA O

MANIPULADOR ROB ´

OTICO JACO KINOVA

Edi Moreira Martins de Araujo

Programa de P´

os-Gradua¸

ao em Engenharia El´

etrica

Salvador

2018

(2)

EDI MOREIRA MARTINS DE ARAUJO

UM AGENTE AUT ˆ

ONOMO CONCORRENTE PARA O

MANIPULADOR ROB ´

OTICO JACO KINOVA

Esta Disserta¸c˜ao de Mestrado foi

apresentada ao Programa de

P´os-Gradua¸c˜ao em Engenharia El´etrica

da Universidade Federal da Bahia,

como requisito parcial para obten¸c˜ao

do grau de Mestre em Engenharia

El´etrica.

Orientador: Prof. Dr. Augusto Cesar Pinto Loureiro da Costa

Salvador

2018

(3)

Martins de Araujo, Edi Moreira

Um Agente Autônomo Concorrente para o Manipulador Robótico Jaco Kinova / Edi Moreira Martins de Araujo. -- Salvador, 2018. 97 f.

Orientador: Prof. Dr. Augusto Cesar Pinto Loureiro da Costa. Dissertação (Mestrado - PEI - Programa de Pós-Graduação em Engenharia Industrial) -- Universidade Federal da Bahia, Escola Politécnica, 2018.

1. Manipulador Robótico. 2. Agentes Autônomos.

3. Jaco Kinova. 4. Robot Operating System. I. Loureiro da Costa, Augusto Cesar Pinto. II. Título.

Ficha catalográfica elaborada pelo Sistema Universitário de Bibliotecas (SIBI/UFBA), com os dados fornecidos pelo(a) autor(a).

(4)
(5)

RESUMO

Este trabalho tem como objetivo apresentar a implementa¸c˜ao do Agente Autˆonomo Con-corrente (AAC) para o manipulador rob´otico Jaco Kinova, habilitando-o a execu¸c˜ao de tarefas complexas de uma maneira completamente autˆonoma. A comunica¸c˜ao entre o AAC e o manipulador ser´a feita atrav´es do ROS (Robot Operating System), bem como a realiza¸c˜ao dos comportamentos presentes no n´ıvel reativo. O Agente Autˆonomo Con-corrente ´e a implementa¸c˜ao de uma arquitetura de agente cognitivo baseada no modelo cognitivo gen´erico para agentes autˆonomos. Este modelo ao longo dos anos mostrou-se bastante eficaz, sendo inicialmente utilizado para a implementa¸c˜ao de um sistema de controle distribu´ıdo para sistemas multi-robˆos, chamado Mecateam, obtendo resultados significantes em RoboCup’s Latin Am´erica e Brasileiras. O AAC j´a foi implementado em diversas aplica¸c˜oes com ˆexito, como exemplo, o robˆo humanoide NAO e o robˆo omni-direcional AxeBot. Tais resultados apontam o AAC como um modelo de cogni¸c˜ao bem indicado para a capacita¸c˜ao de robˆos a execu¸c˜ao de tarefas que solicitam um alto grau de cogni¸c˜ao.

Palavras-chave: Manipulador Rob´otico, Agentes Autˆonomos, Jaco Kinova, Robot

Operating System.

(6)

ABSTRACT

This work presents the use of the Concurrent Autonomous Agent (CAA) in an Jaco Ki-nova robot arm, enabling it to perform complex tasks in a completely autonomous way. The communication between the CAA and the manipulator will be made through the ROS (Robot Operating System), as well as the performance of the behaviors present in the reactive level. The Concurrent Autonomous Agent is an implementation of a cogni-tive agent architecture based on the Generic Cognicogni-tive Model for Autonomous Agents. This model over the years proved to be very effective, initially being used for the im-plementation of a distributed control system for multi-robot systems, called Mecateam, obtaining significant results in RoboCup’s Latin America and Brazilians. The CAA has already been implemented in several successful applications, such as the NAO humanoid robot and the AxeBot omnidirectional robot. These results point to CAA as a model of well-known cognition for the training of robots to perform tasks that require a certain degree of cognition.

Keywords: Robotic arm, Autonomous Agents, Jaco Kinova, Robot Operating System.

(7)

SUM ´

ARIO

Cap´ıtulo 1—Introdu¸c˜ao 1 1.1 Objetivo Geral . . . 2 1.1.1 Objetivos Espec´ıficos . . . 2 1.2 Justificativa . . . 2 1.3 Organiza¸c˜ao do Trabalho . . . 2

Cap´ıtulo 2—Problema Proposto 4 2.1 Conclus˜ao do Cap´ıtulo . . . 9

Cap´ıtulo 3—Revis˜ao Bibliogr´afica e Fundamenta¸c˜ao Te´orica 10 3.1 Agentes Inteligentes . . . 10

3.1.1 Agentes Reativos . . . 12

3.1.2 Agentes Cognitivos . . . 12

3.2 Sistemas Baseados em Conhecimento . . . 13

3.2.1 Sistemas de Produ¸c˜ao . . . 13

3.2.2 Sistemas Especialistas . . . 14

3.2.2.1 Estrutura Geral de um Sistema Baseado em Conhecimento 16 3.3 Agente Autˆonomo Concorrente . . . 18

3.3.1 N´ıvel Cognitivo . . . 19

3.3.2 N´ıvel Instintivo . . . 21

3.3.3 N´ıvel Reativo . . . 21

3.3.4 Representa¸c˜ao de conhecimento do AAC . . . 22

3.3.5 Revis˜ao Bibliogr´afica do AAC . . . 24

3.4 ROS . . . 26

3.4.1 N´ıvel de Sistema de Arquivos . . . 27

3.4.1.1 Pacotes do ROS . . . 27 3.4.1.2 Pilhas do ROS . . . 28 3.4.1.3 Mensagens . . . 28 3.4.2 Processamento Gr´afico . . . 28 3.4.2.1 N´os do ROS . . . 28 3.4.2.2 T´opicos do ROS . . . 29 3.4.2.3 Servi¸cos . . . 30 3.4.2.4 Servi¸cos de Parˆametro . . . 31 3.4.2.5 ROS Mestre . . . 31 3.4.3 N´ıvel de Comunidade . . . 31 iv

(8)

SUM ´ARIO v

3.4.4 Revis˜ao Bibliogr´afica-ROS . . . 31

3.5 JACO Kinova . . . 32

3.5.1 Package Kinova-ROS . . . 34

3.5.2 Virtual Robot Experimentation Platform (V-REP) . . . 36

3.6 Conclus˜ao do Cap´ıtulo . . . 37

Cap´ıtulo 4—Modelo Cinem´atico do Manipulador JACO Kinova 39 4.1 Cinem´atica Direta . . . 39

4.2 Cinem´atica Inversa . . . 44

4.3 Cria¸c˜ao dos Comportamentos . . . 48

4.4 Conclus˜ao do Cap´ıtulo . . . 57

Cap´ıtulo 5—Implementa¸c˜ao das Regras e Experimentos 58 5.1 N´ıvel Cognitivo . . . 58

5.2 N´ıvel Instintivo . . . 58

5.3 Representa¸c˜ao de Conhecimento do AAC utilizado nos Experimentos . . 59

5.4 N´ıvel Reativo . . . 59 5.5 Experimento I . . . 61 5.6 Experimento II . . . 67 5.7 Experimento III . . . 71 5.8 Conclus˜ao do Cap´ıtulo . . . 74 Cap´ıtulo 6—Conclus˜ao 75

Apˆendice A—Regras do N´ıvel Cognitivo 80 Apˆendice B—Planos do N´ıvel Instintivo 83

(9)

LISTA DE FIGURAS

2.1 Uma instˆancia simples de um quebra-cabe¸ca de oito pe¸cas, com a imagem do lado esquerdo sendo o estado inicial (Figura 2.1(a)) e a imagem do lado

direto sendo o estado objetivo (Figura 2.1 (b) ). . . 5

2.2 Diagrama do problema do mundo dos blocos. . . 6

2.3 Exemplo de uma Torre de Han´oi com 3 discos sendo montada. . . 7

2.4 Exemplo de uma Torre de Han´oi sem pinos. . . 8

2.5 Todos os estados iniciais poss´ıveis. . . 8

3.1 Diagrama esquem´atico de um Agente Reativo. . . 12

3.2 Diagrama esquem´atico de um Agente Cognitivo. . . 13

3.3 Estrutura gen´erica de um sistema de produ¸c˜ao. . . 14

3.4 Arquitetura de um Sistema Especialista. . . 16

3.5 Sistema Baseado em Conhecimento vs Sistema Especialista. . . 17

3.6 Estrutura geral de um Sistema Baseado em Conhecimento. . . 18

3.7 Modelo Gen´erico de Agentes Cognitivos. . . 19

3.8 Fluxo de informa¸c˜oes do Agente Autˆonomo Concorrente. . . 20

3.9 Fluxo de informa¸c˜oes do N´ıvel Cognitivo do AAC. . . 20

3.10 Fluxo de informa¸c˜oes do N´ıvel Instintivo do AAC. . . 21

3.11 Formato de uma rega de produ¸c˜ao. . . 24

3.12 Sintaxe completa na forma de Backu-Naur. . . 24

3.13 Formato de quadros na linguagem do AAC. . . 25

3.14 Sistemas de Arquiteturas Rob´oticas. . . 26

3.15 Log´otipo do ROS. . . 27

3.17 Conceitos b´asicos do ROS. . . 29

3.18 Manipulador JACO Kinova. . . 33

3.19 Medidas do manipulador JACO Kinova. . . 34

3.20 Software V-REP. . . . 35

3.16 Exemplo de Sistema Grafo do ROS. . . 38

4.1 Sistema de referˆencia. . . 40

4.2 Modelo geom´etrico que descreve a posi¸c˜ao ~x e a orienta¸c˜ao (vetores ~n, ~s e ~a) do elemento terminal em rela¸c˜ao a um sistema de coordenadas solid´ario `a base do robˆo. . . 41

4.3 ˆAngulos de rota¸c˜ao roll, pitch e yaw. . . . 41

4.4 Exemplo de parˆametros para nota¸c˜ao de Denavit-Hartenberg. . . 42

4.5 Manipulador JACO Kinova, com ˆangulos em [180°, 270°, 90°, 180°, 180°, 350°] e medidas em rela¸c˜ao a Tabela 4.1. . . 44

(10)

LISTA DE FIGURAS vii 4.6 Espa¸co de trabalho do manipulador JACO Kinova. . . 46 4.7 Sistema de referˆencia utilizado nas simula¸c˜oes e experimentos. . . 48 4.8 Fluxograma de a¸c˜oes de cada comportamento. . . 49 4.9 Simula¸c˜ao I - Manipulador JACO kinova executando o comportamento

p1n3 p3n1. . . 50 4.10 Simula¸c˜ao II - Manipulador JACO kinova executando o comportamento

p1n2 p2n1. . . 50 4.11 Simula¸c˜ao III - Manipulador JACO kinova executando o comportamento

p3n1 p2n2. . . 50 4.12 Simula¸c˜ao I - Evolu¸c˜ao no tempo da posi¸c˜ao do efetuador do

comporta-mento p1n3 p3n1. . . 51 4.13 Simula¸c˜ao II - Evolu¸c˜ao no tempo da posi¸c˜ao do efetuador do

comporta-mento p1n2 p2n1. . . 51 4.14 Simula¸c˜ao III - Evolu¸c˜ao no tempo da posi¸c˜ao do efetuador do

comporta-mento p3n1 p2n2. . . 52 4.15 Simula¸c˜ao I - Evolu¸c˜ao no tempo das posi¸c˜oes das juntas do manipulador

do comportamento p1n3 p3n1. . . 53 4.16 Simula¸c˜ao II - Evolu¸c˜ao no tempo das posi¸c˜oes das juntas do manipulador

do comportamento p1n2 p2n1. . . 53 4.17 Simula¸c˜ao III - Evolu¸c˜ao no tempo das posi¸c˜oes das juntas do manipulador

do comportamento p3n1 p2n2. . . 54 4.18 Simula¸c˜ao IV - Evolu¸c˜ao no tempo das posi¸c˜oes das juntas do manipulador

durante a montagem da Torre de Han´oi. . . 54 4.19 Simula¸c˜ao IV - Evolu¸c˜ao no tempo da posi¸c˜ao do efetuador durante a

montagem da Torre de Han´oi. . . 55 4.20 Simula¸c˜ao IV - Evolu¸c˜ao no tempo das posi¸c˜oes das juntas dos fingers

do manipulador durante a montagem da Torre de Han´oi. Para fingers totalmente abertos 0œe 100 œtotalmente fechados. . . 55 4.21 Medidas do Manipulador JACO em mil´ımetros, com todos os ˆangulos de

juntas em 180°. . . 56 5.1 Exemplo de trˆes regras implementadas no n´ıvel cognitivo. . . 60 5.2 Exemplo de uma regra implementada no n´ıvel instintivo com o modelo do

mundo. . . 60 5.3 Modelo de mensagem enviada ao n´ıvel instintivo contendo o novo estado

do mundo ap´os cada comportamento executado. . . 61 5.4 Estado Inicial e estado objetivo do experimento I. . . 61 5.5 Sistema gr´afico do n´ıvel reativo do manipulador JACO Kinova no ROS. . 62 5.6 Regras do plano 1, utilizadas para a realiza¸c˜ao do experimento I presente

no n´ıvel instintivo. . . 63 5.7 Experimento I - Manipulador JACO Kinova executando o primeiro

com-portamento na montagem da Torre de Han´oi. . . 64 5.8 Experimento I - Manipulador JACO Kinova executando o segundo

(11)

LISTA DE FIGURAS viii 5.9 Experimento I - Manipulador JACO Kinova executando o terceiro

com-portamento na montagem da Torre de Han´oi. . . 65

5.10 Experimento I - Manipulador JACO Kinova executando o quarto compor-tamento na montagem da Torre de Han´oi. . . 65

5.11 Experimento I - Manipulador JACO Kinova executando o quinto compor-tamento na montagem da Torre de Han´oi. . . 65

5.12 Experimento I - Manipulador JACO Kinova executando o sexto compor-tamento na montagem da Torre de Han´oi. . . 66

5.13 Experimento I - Manipulador JACO Kinova executando o s´etimo e ´ultimo comportamento na montagem da Torre de Han´oi. . . 66

5.14 Experimento I - Evolu¸c˜ao no tempo da posi¸c˜ao do efetuador . . . 67

5.15 Experimento I - Evolu¸c˜ao no tempo dos ˆangulos das juntas do manipulador. 67 5.16 Estado Inicial e estado objetivo do experimento II. . . 68

5.17 Experimento II - Ordem de execu¸c˜ao das regras do plano 2 utilizadas do n´ıvel instintivo durante o experimento. . . 69

5.18 Experimento II - Evolu¸c˜ao no tempo da posi¸c˜ao do efetuador. . . 70

5.19 Experimento II - Evolu¸c˜ao no tempo dos ˆangulos das juntas do manipulador. 70 5.20 Estado Inicial e estado objetivo do experimento III. . . 71

5.21 Experimento III -Evolu¸c˜ao no tempo dos ˆangulos das juntas do manipulador. 72 5.22 Experimento III - Ordem de execu¸c˜ao das regras utilizadas do n´ıvel ins-tintivo durante o experimento. . . 73

5.23 Experimento III - Evolu¸c˜ao no tempo da posi¸c˜ao do efetuador. . . 74

A.1 Regras 1-10 implementadas no n´ıvel cognitivo. . . 80

A.2 Regras 11-20 implementadas no n´ıvel cognitivo. . . 81

A.3 Regras 21-25 implementadas no n´ıvel cognitivo. . . 82

B.1 Plano 1: Implementado no n´ıvel instintivo. . . 83

B.2 Plano 2: Implementado no n´ıvel instintivo. . . 84

(12)

LISTA DE TABELAS

3.1 Exemplo de um conjunto de regras de produ¸c˜ao. . . 14

3.2 Execu¸c˜ao do procedimento interpretador definido na Tabela 3.1. . . 14

3.3 Exemplo de um fato simples (a) e um composto (b). . . 23

3.4 Exemplo de uma base de fatos. . . 23

3.5 Formatos dos tipos de mensagens do ROS. . . 30

3.6 Especifica¸c˜oes do JACO Kinova . . . 33

3.7 Principais ”n´os”e t´opicos utilizados pelo Kinova-Ros (Figura 3.16). . . 36

4.1 Medidas do manipulador JACO Kinova (metros), (Figura 4.5). . . 45

4.2 Parˆametros Alternativos. . . 45

4.3 Parˆametros de Denavit Hartenberg do manipulador JACO Kinova. . . 45

4.4 Posi¸c˜oes dos discos da Torre de Han´oi utilizada nas simula¸c˜oes em rela¸c˜ao a base do manipulador utilizando o sistema de referˆencia conforme a Figura 4.7. . . 49

(13)

LISTA DE SIGLAS

IA Inteligˆencia Artificial ROS Robot Operating System

AAC Agente Autˆonomo Concorrente LTP L´ogica Temporal Proposicional LPO L´ogica de Primeira Ordem

UHRSP Unifield Humanoid Robotics Software Platform

API Application Programming Interface

DROS Dave’s Robotic Operating System

DSP Digital Signal Processor

RPC Remote Procedure Call

TCP Transmission Control Protocol

UDP User Datagram Protocol

V-REP Virtual Robot Experimentation Platform

ODE Open Motor Dynamics

SE Sistemas Especialistas

SBC Sistema Baseado em Conhecimento

SBRP Sistema Baseado em Regras de Produ¸c˜ao (SBRP) MT Mem´oria de Trabalho

MI Motor de Inferˆencia

NSBC N´ucleo do Sistema Baseado em Conhecimento

LHS left Hand Side

RHS Right Hand Side

GDL Graus de Liberdade D-H Denavit-Hartenberg

ZMP Zero Moment Point

(14)

Cap´ıtulo

1

INTRODUC

¸ ˜

AO

O termo Robˆo foi proposto pela primeira vez no inicio do s´eculo 20 pelo Checo Ka-rel Capek na pe¸ca teatral chamada Rossum’s Universal Robots. Desde ent˜ao, o sonho de criar seres que pudessem realizar tarefas de uma maneira completamente autˆonoma surgiu. Esse sonho gerou o ramo multidisciplinar conhecido como rob´otica, que por sua vez envolve diversas ´areas de conhecimento, tais como Engenharia El´etrica, Engenharia Mecˆanica, Inteligˆencia Artificial(IA), entre outras. Inicialmente os robˆos eram totalmente dependentes da supervis˜ao humana para realizar suas tarefas, por´em, com o passar do tempo esta dependˆencia come¸cou a diminuir e estes robˆos come¸caram a apresentar um significativo grau de autonomia. De forma a lograr desta completa autonomia, essas m´aquinas devem ser dotadas de algum tipo de inteligˆencia, isto ´e, devem ser capazes de tomar decis˜oes por conta pr´opria. Essa necessidade, por sua vez, alude ao ramo da Inteligˆencia artificial.

O grau de autonomia presente nos robˆos est´a associado com a tarefa que o mesmo venha a executar. Em algumas linhas de montagem industrial, os comportamentos dos robˆos podem ser supervisionados por uma m´aquina de estados discretos, que determina exatamente quais a¸c˜oes est˜ao dispon´ıveis em um dado estado, por´em, em tarefas mais complexas, especialmente aquelas que exigem planejamento, o mecanismo de tomada de decis˜ao deve ser mais robusto, de maneira que o robˆo venha adquirir a capacidade de realizar estas tarefas em um tempo h´abil, com um alto grau de precis˜ao e de uma forma completamente autˆonoma (SHHEIBIA, 2001). Para atender a estas necessidades, este trabalho prop˜oe a implementa¸c˜ao de um sistema inteligente, baseado em agentes cognitivos, para o manipulador rob´otico JACO Kinova, capacitando-o desta forma a realiza¸c˜ao de tarefas complexas de uma maneira completamente autˆonoma.

Em (BITTENCOURT, 1997) um modelo gen´erico de agentes cognitivos ´e proposto. Este modelo consiste em uma arquitetura cognitiva utilizada para modelar agentes de qualquer natureza. O modelo gen´erico de agentes cognitivos ´e utilizado como base em (COSTA; BITTENCOURT, 1999) para a proposta de uma arquitetura de agente autˆonomo inteligente chamada de Agente Autˆonomo Concorrente (AAC). Este agente utiliza uma arquitetura de trˆes camadas: cognitiva, instintiva e reativa. Cada uma

(15)

1.1 OBJETIVO GERAL 2

delas ´e implementada como um processo e representa um n´ıvel decis´orio distinto que complementa as demais para a constru¸c˜ao de um agente cognitivo. A complexidade do comportamento do agente ´e incrementada a cada camada.

O AAC possui a caracter´ıstica de poder ser implementado em qualquer sistema rob´otico, modificando-se apenas sua camada reativa, levando em conta a caracter´ıstica de hardware de cada robˆo. Alguns experimentos foram realizados com ˆexito como pode ser verificado em (COSTA et al., 2011), onde o n´ıvel reativo do AAC foi embarcado no robˆo omnidirecional Ax´eBot. Em (COSTA et al., 2015), o AAC foi aplicado no robˆo huma-noide Aldebaran NAO. J´a em (FERREIRA, 2014) uma rede de trˆes microcontroladores foi projetada para embarcar o AAC no robˆo omnidirecional Ax´eBot. Com tais resulta-dos, pode-se chegar a conclus˜ao de que o AAC ´e um modelo de agente bem indicado para capacitar robˆos a execu¸c˜ao de tarefas que solicitam um alto grau de cogni¸c˜ao, sendo esta arquitetura escolhida para ser utilizada neste trabalho.

1.1 OBJETIVO GERAL

Esta disserta¸c˜ao tem como objetivo geral utilizar a arquitetura do AAC juntamente com o ROS (Robot Operating System) para capacitar o manipulador rob´otico JACO Kinova a realiza¸c˜ao autˆonoma de tarefas complexas.

1.1.1 Objetivos Espec´ıficos

Este trabalho tem cinco objetivos espec´ıficos sendo eles:

• Implementar um sistema de comunica¸c˜ao entre o AAC e o ROS; • Habilitar o Manipulador rob´otico a execu¸c˜ao de tarefas complexas;

• Aprofundar os estudos sobre a plataforma ROS, testando suas principais ferramen-tas e aplica¸c˜oes;

• Implementar o n´ıvel Reativo do AAC, destinado ao JACO Kinova no ROS;

1.2 JUSTIFICATIVA

Manipuladores rob´oticos podem ser utilizados em diversas aplica¸c˜oes, por´em muitos destes manipuladores est˜ao limitados a movimentos sequenciais predefinidos ou neces-sitam de controle humano, ou seja, n˜ao possuem a capacidade de identificar mudan¸cas no ambiente e tomar decis˜oes de uma maneira autˆonoma. Neste contexto, este tra-balho prop˜oe a implementa¸c˜ao de um sistema inteligente em um manipulador rob´otico, habilitando-o a execu¸c˜ao de tarefas complexas de uma maneira completamente autˆonoma. As ideias aqui propostas podem ser utilizadas em diversas aplica¸c˜oes onde o manejo de objetos por parte de manipuladores rob´oticos torna-se necess´ario.

1.3 ORGANIZAC¸ ˜AO DO TRABALHO

(16)

1.3 ORGANIZAC¸ ˜AO DO TRABALHO 3

• O cap´ıtulo 2 tem como objetivo apresentar o problema proposto;

• O cap´ıtulo 3 tem como objetivo contextualizar a proposta, apresentando a revis˜ao bibliogr´afica acerca de assuntos cruciais para o desenvolvimento deste trabalho; • O cap´ıtulo 4 apresentar´a o modelo cinem´atico direto e inverso do robˆo JACO

Ki-nova;

• Os resultados e experimentos s˜ao demonstrados no cap´ıtulo 5;

(17)

Cap´ıtulo

2

PROBLEMA PROPOSTO

Em (NORVIG; RUSSELL, 2014), os autores definem a Inteligˆencia Artificial como o estudo da a¸c˜ao racional. Como ser´a visto no cap´ıtulo 3, um agente racional ´e aquele capaz de agir de forma a alcan¸car resultados otimizados, ou seja, para cada sequˆencia de percep¸c˜oes poss´ıveis, ´e selecionada uma a¸c˜ao que venha a maximizar sua medida de desempenho, dada a evidˆencia fornecida pela sequˆencia de percep¸c˜oes e por qualquer conhecimento interno do agente. Para mensurar a medida de desempenho de um agente, primeiro precisa-se saber qual o seu objetivo. Considerando que um certo objetivo seja alcan¸car um determinado estado do mundo, a tarefa do agente ´e descobrir como agir, no presente e no futuro, para que atinja o estado desejado, e para isso, o agente precisa decidir que tipos de a¸c˜oes e estados deveria considerar. Norvig e Russell (2014) utilizam o conceito formula¸c˜ao de problema como o processo de decidir que a¸c˜oes e estados de-vem ser considerados, dado um objetivo, dividindo um problema formalmente em cinco componentes:

• Estado inicial: Estado inicial do agente ou do mundo;

• A¸c˜oes poss´ıveis: Uma descri¸c˜ao de todas as a¸c˜oes que est˜ao dispon´ıveis para o agente dado um estado s;

• Modelo de transi¸c˜ao: Descri¸c˜ao do resultado de cada a¸c˜ao do agente, que determina o resultado de executar uma a¸c˜ao a em estado s;

• Teste de objetivo: Que determina se um estado ´e o estado objetivo;

• Custo de caminho: Que determina um custo a cada a¸c˜ao executada pelo agente. Estes elementos definem um problema, sendo a solu¸c˜ao um caminho desde o estado inicial at´e o estado objetivo. A qualidade da solu¸c˜ao ser´a ent˜ao medida pela fun¸c˜ao custo de caminho, e uma solu¸c˜ao ´otima tem o menor custo de caminho entre todas as solu¸c˜oes poss´ıveis.

(18)

PROBLEMA PROPOSTO 5 A abordagem de resolu¸c˜ao de problemas ou planejamento ´e aplicada a uma ampla s´eries de ambientes de tarefas em IA como exemplo: o quebra-cabe¸ca de oito pe¸cas, mundo dos blocos e a Torre de Han´oi (NORVIG; RUSSELL, 2014).

O quebra-cabe¸ca de oito pe¸cas consiste em um tabuleiro 3 x 3 com oito pe¸cas nume-radas e um quadrado vazio. O objetivo ´e alcan¸car um estado objetivo especificado, como o lado direito da Figura 2.1.

Figura 2.1: Uma instˆancia simples de um quebra-cabe¸ca de oito pe¸cas, com a imagem do lado esquerdo sendo o estado inicial (Figura 2.1(a)) e a imagem do lado direto sendo o estado objetivo (Figura 2.1 (b) ).

Fonte: (NORVIG; RUSSELL, 2014). A formula¸c˜ao padr˜ao ´e dada por:

• Estados: Os estados s˜ao descritos como a posi¸c˜ao das oito pe¸cas no tabuleiro; • Estado inicial: Qualquer estado inicial pode ser designado. Na Figura 2.1 pode-se

observar um exemplo de estado inicial;

• A¸c˜oes poss´ıveis: As a¸c˜oes poss´ıveis s˜ao de mover os quadrados numerados nos sentidos Esquerda, Direita, Para cima ou Para baixo;

• Modelo de transi¸c˜ao: Para uma estado e uma a¸c˜ao, ele devolve um estado resul-tante; como exemplo, se for aplicado na Figura 2.1(a), a a¸c˜ao Esquerda, teria como resultado a comuta¸c˜ao entre o n´umero 5 e o quadrado vazio;

• Teste de objetivo: Verificar se o estado objetivo foi alcan¸cado, como o exemplo na Figura 2.1(b);

• Custo de caminho: Para este exemplo cada movimento de mover um quadrado custa 1, e assim, o custo de caminho fica sendo o n´umero de movimentos.

(19)

PROBLEMA PROPOSTO 6 O mundo dos blocos (Figura 2.2) ´e um dos dom´ınios de planejamentos mais famosos. Este dom´ınio consiste em um conjunto de blocos montados sobre uma mesa. Estes blocos podem ser empilhados, por´em apenas um bloco pode estar diretamente sobre o outro e pode ser movido apenas um bloco por vez. O objetivo ser´a sempre de construir uma ou mais pilhas de blocos, conforme o estado objetivo.

Figura 2.2: Diagrama do problema do mundo dos blocos.

Fonte: (NORVIG; RUSSELL, 2014). Um exemplo de formula¸c˜ao para o mundo dos blocos seria:

• Estados: Os estados s˜ao descritos como a posi¸c˜ao dos blocos no mundo;

• Estado inicial: Qualquer estado inicial pode ser designado, desde que, apenas um bloco esteja diretamente sobre o outro. Na Figura 2.2 podemos observar um exem-plo de estado inicial;

• A¸c˜oes poss´ıveis: As a¸c˜oes poss´ıveis s˜ao MoverParaMesa(X,Y) e Mover(X, Mesa, C), sendo que x e y podem ser os blocos A, B ou C;

• Modelo de transi¸c˜ao: Para um estado e uma a¸c˜ao, ele devolve um estado resultante; como exemplo, se for aplicado no estado inicial da Figura 2.2(a), a a¸c˜ao

MoverPa-raMesa(C,A), teria como resultado o bloco C sobre a mesa, ou seja, ou blocos A,

B e C todos sobre a mesa;

• Teste de objetivo: Verificar se o estado objetivo foi alcan¸cado, como o exemplo da Figura 2.2;

• Custo de caminho: Cada passo custa 1, e assim, o custo de caminho fica sendo o n´umero de passos.

Uma solu¸c˜ao para o problema da Figura 2.2, seria aplicar em sequˆencia na seguinte ordem:

(20)

PROBLEMA PROPOSTO 7 • Mover(B,Mesa,C);

• Mover(A,Mesa,B).

A Torre de Han´oi ´e um jogo considerado como um precedimento para avalia¸c˜ao de capacidade de mem´oria de trabalho, planejamento e principalmente solu¸c˜ao de problemas. Este jogo (Figura 2.3) consiste em uma base contendo trˆes pinos (no caso das simula¸c˜oes e experimentos mostrados nos Cap´ıtulos 4 e 5 estes pinos foram substitu´ıdos por locais demarcados conforme a Figura 2.4) onde s˜ao dispostos alguns discos uns sobre os outros, em ordem crescente de diˆametro, de cima para baixo. O problema consiste em passar todos os discos de um pino para o ´ultimo pino, usando um dos pinos como auxiliar, sendo considerado o final do jogo quando os trˆes discos ficam montados, conforme a ´ultima imagem da Figura 2.3. Existem duas regras que devem ser seguidas na montagem da Torre:

• S´o poder´a movimentar um disco por vez;

• Nunca um disco maior pode estar sobre um disco menor.

A tarefa escolhida para a realiza¸c˜ao dos experimentos no Cap´ıtulo 5, foi a de capacitar o manipulador JACO kinova a montar uma Torre de Han´oi com 3 objetos, a partir de qualquer configura¸c˜ao inicial poss´ıvel, dentre os 25 estados iniciais aceitos para uma Torre com 3 discos. Na Figura 2.5, temos todos os estados iniciais poss´ıveis.

Figura 2.3: Exemplo de uma Torre de Han´oi com 3 discos sendo montada.

Fonte: Criado pelo autor.

Um exemplo de formula¸c˜ao de problemas para a Torre de Han´oi seria: • Estados: Os estados s˜ao descritos como a posi¸c˜ao dos discos no mundo;

(21)

PROBLEMA PROPOSTO 8 Figura 2.4: Exemplo de uma Torre de Han´oi sem pinos.

Fonte: Criado pelo pr´oprio autor atrav´es do software V-REP. Figura 2.5: Todos os estados iniciais poss´ıveis.

Fonte: Criado pelo pr´oprio autor.

• Estado inicial: Qualquer estado inicial dentre os 25 poss´ıveis (Figura 2.5) podem ser aceitos;

• A¸c˜oes poss´ıveis: Movimentar os discos da Torre, respeitando as duas regras descritas anteriormente;

• Modelo de transi¸c˜ao: Para um estado e uma a¸c˜ao, ele devolve um estado resultante; como exemplo, na Figura 2.3, onde a cada movimento h´a uma nova configura¸c˜ao

(22)

2.1 CONCLUS ˜AO DO CAP´ITULO 9

do mundo;

• Teste de objetivo: Verificar se o estado objetivo foi alcan¸cado;

• Custo de caminho: Cada movimento custa 1, e assim, o custo de caminho fica sendo o n´umero de movimentos. Usando como exemplo a Figura 2.3, temos sete movimentos.

2.1 CONCLUS ˜AO DO CAP´ITULO

Neste cap´ıtulo foi apresentado o problema proposto para este trabalho. Inicialmente o conceito de formula¸c˜ao de problemas proposto por (NORVIG; RUSSELL, 2014) foi demonstrado e alguns exemplos cl´assicos de resolu¸c˜ao de problemas em IA foram expostos. No cap´ıtulo seguinte, os principais conceitos para a resolu¸c˜ao do problema proposto ser˜ao descritos, fazendo sempre uma revis˜ao bibliogr´afica para cada um deles.

(23)

Cap´ıtulo

3

REVIS ˜

AO BIBLIOGR ´

AFICA E FUNDAMENTAC

¸ ˜

AO

TE ´

ORICA

Este cap´ıtulo tem como objetivo contextualizar a proposta, apresentando a revis˜ao bibliogr´afica e fundamenta¸c˜ao te´orica acerca de assuntos cruciais para o desenvolvimento deste trabalho. Neste contexto, ser´a apresentada uma explana¸c˜ao a respeito do manipu-lador rob´otico JACO Kinova, Agentes Inteligentes, Agente Autˆonomo Concorrente e o ROS.

3.1 AGENTES INTELIGENTES

Recriar aspectos do comportamento humano em m´aquinas sempre foi um dos prin-cipais objetivos da IA. Este objetivo contribuiu em muitos sentidos para o surgimento e desenvolvimento da tecnologia de agentes. Tal tecnologia possui como principal mo-tiva¸c˜ao a constru¸c˜ao de entidades computacionais autˆonomas, que possam ser capazes de realizar determinadas tarefas em benef´ıcio de usu´arios ou de outras entidades, como por exemplo, outros agentes (COSER et al., 1999).

Agentes tˆem sido utilizados com sucesso em diversas aplica¸c˜oes incluindo atividades mais simples que variam desde a intera¸c˜ao homem-m´aquina, at´e atividades mais comple-xas, como no monitoramento de um sistema atmosf´erico conforme podemos observar em (BARBOSA et al., 2005).

Norvig e Russell (2014) descreve agentes como sendo “tudo o que pode ser considerado capaz de perceber seu ambiente por meio de sensores e de agir sobre este ambiente por interm´edio de atuadores”. Os autores ainda explicitam o conceito de racionalidade acerca de agentes inteligentes. Para os autores o conceito de agentes racionais ´e umas das quest˜oes centrais para abordagem da inteligˆencia artificial. A defini¸c˜ao do que ´e racional depende de quatro fatores:

• A medida de desempenho que define o crit´erio de sucesso; • O conhecimento pr´evio que o agente tem do ambiente;

(24)

3.1 AGENTES INTELIGENTES 11

• As a¸c˜oes que o agente pode executar;

• A sequˆencia de percep¸c˜oes do agente at´e o momento. A defini¸c˜ao de um agente racional seria:

Para cada sequˆencia de percep¸c˜oes poss´ıvel, um agente racional deve solucionar uma a¸c˜ao que se espera venha a maximizar sua medida de desempenho, dada a evidˆencia fornecida pela sequˆencia de percep¸c˜oes e por qualquer conhecimento interno do agente (NORVIG; RUSSELL, 2014).

Um agente racional deve ser autˆonomo, `a medida que ele deve aprender baseado na sua percep¸c˜ao e nos efeitos de cada a¸c˜ao que realiza.

Uma defini¸c˜ao gen´erica para agentes foi proposta em (COSTA et al., 2001 apud J.FERBER; GASSER, , p.19):

Um agente ´e uma entidade real, ou virtual, imersa em um dado ambiente onde ela pode tomar algumas a¸c˜oes, estar habilitada para receber e represen-tar parcialmente este ambiente, podendo ainda comunicar-se com so demais agentes do ambiente. Este agente apresenta um comportamento autˆonomo que ´e uma consequˆencia de suas observa¸c˜oes, do conhecimento armazenado e das intera¸c˜oes com os demais agentes do ambiente.

Weiss (1999) classifica agente inteligente como aquele capaz de seguir certos tipos de a¸c˜oes autˆonomas como:

• Reatividade: Capacidade que o agente tem de perceber o ambiente a sua volta e responder a essas mudan¸cas com o intuito de alcan¸car seus objetivos;

• Pr´o-atividade: Capacidade que o agente possui de tomar a¸c˜oes orientadas a metas, tomando a iniciativa para atingir seus objetivos;

• Habilidade Social: Capacidade de interagir em uma comunidade composta por outros agentes.

Wooldridge (2009) define agentes como sendo “sistemas computacionais capazes de a¸c˜oes autˆonomas em algum ambiente com a finalidade de alcan¸car seus objetivos de projeto”.

Pode-se observar uma faixa de caracter´ısticas relativamente pequena com respeito a defini¸c˜ao do que ´e um agente. Em todas as defini¸c˜oes, parece claro a imagem de uma entidade autˆonoma, que atua em favor de um usu´ario ou de outros agentes.

Os agentes podem ser classificados de acordo com a complexidade computacional dos mesmos. Agentes com pouca complexidade computacional s˜ao chamados de Agen-tes Reativos, e aqueles com alta complexidade s˜ao chamados de AgenAgen-tes Cognitivos ou Inteligentes (COSTA et al., 2001).

(25)

3.1 AGENTES INTELIGENTES 12

3.1.1 Agentes Reativos

Os Agentes Reativos (Figura 3.1) selecionam suas a¸c˜oes com base na percep¸c˜ao atual, ignorando o restante do hist´orico de percep¸c˜oes (NORVIG; RUSSELL, 2014). Eles n˜ao apresentam mem´oria de trabalho e n˜ao conseguem planejar suas a¸c˜oes futuras, seguindo o modelo de funcionamento baseado no estimulo-resposta. Um termostato pode ser visto como um agente reativo, onde, para o estado de temperatura em “frio” o aquecimento mant´em-se “ligado” e quando a temperatura encontra-se no estado “quente” o aqueci-mento ent˜ao ´e desligado. Estes agentes n˜ao possuem uma representa¸c˜ao explicita do ambiente nem um modelo de comunica¸c˜ao de alto n´ıvel ou conhecimento de outros agen-tes quando em sociedade.

Agentes Reativos s˜ao baseados em modelos de organiza¸c˜ao biol´ogica ou etol´ogica, como por exemplo, as sociedades de formigas ou cupins. Se observarmos uma sociedade de formigas, veremos que embora uma formiga n˜ao seja considerada inteligente, o formigueiro como um todo ´e considerado como um sistema inteligente e complexo (COSTA et al., 2001).

Figura 3.1: Diagrama esquem´atico de um Agente Reativo.

Fonte: (NORVIG; RUSSELL, 2014).

3.1.2 Agentes Cognitivos

Os Agentes Cognitivos (Figura 3.2) possuem uma representa¸c˜ao explicita do ambi-ente e dos outros agambi-entes quando se encontram em sociedade. Eles possuem mem´oria de trabalho, podendo raciocinar sobre a¸c˜oes tomadas no passado e planejar suas a¸c˜oes futu-ras. Possuem um alto n´ıvel de complexidade computacional e caracterizam-se por possuir um comportamento de inteligˆencia (COSTA et al., 2001). Estes agentes baseiam-se no modelo de organiza¸c˜ao social humano.

(26)

3.2 SISTEMAS BASEADOS EM CONHECIMENTO 13

Figura 3.2: Diagrama esquem´atico de um Agente Cognitivo.

Fonte: (NORVIG; RUSSELL, 2014).

3.2 SISTEMAS BASEADOS EM CONHECIMENTO 3.2.1 Sistemas de Produ¸c˜ao

Sistemas de produ¸c˜ao s˜ao sistemas que representam o conhecimento atrav´es de um conjunto de regras baseadas em regras produ¸c˜ao, isto ´e, pares de express˜oes consistindo em uma condi¸c˜ao e uma a¸c˜ao. Post (1943) propˆos um sistema consistindo em um conjunto de regras de modifica¸c˜ao sint´atica de transforma¸c˜oes sobre uma mem´oria de trabalho (MT) composta de uma camada de caracteres.

De acordo com (BITENCOURT, 2006) um modelo de sistema de produ¸c˜ao (Figura 3.3) na sua forma mais simples apresenta trˆes componentes:

• Mem´oria de Trabalho: Uma sequˆencia de caracteres;

• Regras: Conjunto ordenados de pares (LHS-Left Hand Side, RHS- Right Hand

Side), sendo LHS e RHS sequˆencias de caracteres;

• Interpretador: Respons´avel pela modifica¸c˜ao da mem´oria de trabalho de acordo com as regras de modifica¸c˜ao.

De acordo com (BITENCOURT, 2006) o interpretador tem como fun¸c˜ao realizar o seguinte procedimento:

Para cada regra (LHS, RHS), se a sequˆencia de caracteres LHS est´a contida na mem´oria de trabalho, ent˜ao substituir os caracteres LHS na mem´oria de trabalho pelos caracteres de RHS; se n˜ao continua na pr´oxima regra.

Pode ser verificado abaixo um exemplo de sistema de produ¸c˜ao retirado de (BITEN-COURT, 2006).

(27)

3.2 SISTEMAS BASEADOS EM CONHECIMENTO 14

Exemplo: Este sistema de produ¸c˜ao ´e capaz de multiplicar dois n´umeros em nota¸c˜ao

un´aria (na qual o n´umero n ´e representado por uma sequˆencia de n algarismos), podendo

ser especificado atrav´es do seguinte conjunto de regras:

Tabela 3.1: Exemplo de um conjunto de regras de produ¸c˜ao. 1 x∗→B∗ 2 1 x 11 →1A x 1 3 1A →A21 4 2A →A2 5 1B →B1 6 2B →B1 7 ∗A →∗ 8 ∗B →∗

Fonte: (BITENCOURT,2006).

Podemos observar que inicialmente cont´em um problema na mem´oria de trabalho a ser resolvido. Pegando como exemplo ∗11 x 11∗(onde os caracteres ∗tem fun¸c˜ao de delimitadores) a execu¸c˜ao do interpretador definido na Tabela 3.1 resultaria na sequˆencia de valores descritos na Tabela 3.2, como conte´udo da mem´oria de trabalho

Tabela 3.2: Execu¸c˜ao do procedimento interpretador definido na Tabela 3.1. ∗11 x 11∗ →2 ∗11A x 1∗ →3 ∗1A21 x 1∗ →1

∗1A21B∗ →3 ∗A2121B∗ →5 ∗A212B1∗ →6 *A21B11* →7 ∗21B11∗ →5 ∗2B111∗ →6 *B1111* →8 ∗1111∗

Fonte: (BITENCOURT,2006).

Figura 3.3: Estrutura gen´erica de um sistema de produ¸c˜ao.

Fonte: Criado pelo pr´oprio autor.

3.2.2 Sistemas Especialistas

De acordo com (BITENCOURT, 2006), outros tipos de sistemas que utilizam o for-mato de regras de produ¸c˜ao como m´etodo de representa¸c˜ao de conhecimento s˜ao os Siste-mas Especialistas (SE). Segundo o autor, um SE tem como proposito mimetizar a atua¸c˜ao de um especialista humano em um dom´ınio bastante especifico. Sistemas Especialistas

(28)

3.2 SISTEMAS BASEADOS EM CONHECIMENTO 15

surgiram atrav´es da utiliza¸c˜ao da estrutura funcional dos sistemas propostos por Post, quando os sistemas de produ¸c˜ao ganham generalidade e passam a utilizar um m´etodo de representa¸c˜ao de conhecimento como linguagem formal para a cria¸c˜ao de sua base de regras e da sua mem´oria de trabalho. Em geral um SE atual apresenta uma estrutura com trˆes m´odulos conforme a Figura 3.4, contendo uma base regras, uma mem´oria de trabalho e um motor de inferˆencia que substitui o interpretador utilizado na arquitetura gen´erica de um sistema de produ¸c˜ao. A base de regras e a mem´oria de trabalho (tamb´em chamada de base de fatos) formam a base de conhecimento do SE e o motor de inferˆencia ´e o mecanismo de controle do sistema que avalia e aplica as regras de acordo com as informa¸c˜oes da mem´oria de trabalho.

As mem´orias de trabalho de um SE devem respeitar um m´etodo de representa¸c˜ao de conhecimento, ou seja, uma linguagem e uma descri¸c˜ao matem´atica de seu significado. Um exemplo de formalismo de representa¸c˜ao de conhecimento ´e a l´ogica de primeira ordem (LPO)(BITENCOURT, 2006) (REZENDE, 2003).

A base de regras de acordo com (BITENCOURT, 2006), passa a conter condi¸c˜oes que representam perguntas `a representa¸c˜ao de conhecimento da mem´oria de trabalho. Desta forma, estas condi¸c˜oes devem ser comparadas com a MT com o intuito de decidir se a MT deve ser alterada de acordo com as consequˆencias das regras. Portanto, o motor de inferˆencia (antigo interpretador no modelo de Post) agora funciona como um mecanismo de inferˆencia l´ogica, sendo que este processo ocorre em ciclos, onde cada ciclo consiste em trˆes fases:

• Correspondˆencia de dados: onde deve-se encontrar as regras cujas premissas s˜ao satisfeitas pela MT (gerando o conjunto de conflitos);

• Resolu¸c˜ao de conflitos: Etapa na qual as regras que ser˜ao realmente executadas s˜ao escolhidas dentro do conjunto de conflitos. Se esse conjunto estiver vazio, a execu¸c˜ao ´e terminada, caso contr´ario, torna-se necess´ario utilizar algum m´etodo de resolu¸c˜ao de conflitos, como prioridades atribu´ıdas estatisticamente, simplicidade e especificidade, grau de importˆancia, sele¸c˜ao ao acaso dentre outros;

• A¸c˜ao: Etapa que ´e realizada as altera¸c˜oes na mem´oria de trabalho de acordo com a consequˆencia das regras selecionadas.

BITENCOURT (2006) descreve que as principais caracter´ısticas do motor de in-ferˆencia presente em um SE dizem respeito `a funcionalidades como: m´etodo de racioc´ınio, estrat´egia de busca, resolu¸c˜ao de conflitos e representa¸c˜ao de incerteza. No caso das re-gras de produ¸c˜ao, existem basicamente dois tipos de modos de racioc´ınio: encadeamento progressivo e encadeamento regressivo (BITENCOURT, 2006) (REZENDE, 2003).

No encadeamento progressivo (forward chaining), tamb´em conhecido como encade-amento dirigido por dados, a solu¸c˜ao para o problema vem a partir das informa¸c˜oes fornecidas pelo usu´ario, ou seja, a parte esquerda da regra ´e comparada com a descri¸c˜ao da situa¸c˜ao atual, contida na mem´oria de trabalho. As regras que satisfazem a esta descri¸c˜ao tem sua parte direita executada, sendo que na maioria das vezes significa a in-trodu¸c˜ao de novos fatos na mem´oria de trabalho. Geralmente este tipo de encadeamento ´e

(29)

3.2 SISTEMAS BASEADOS EM CONHECIMENTO 16

Figura 3.4: Arquitetura de um Sistema Especialista.

Fonte: Criado pelo pr´oprio autor.

utilizado em problemas de planejamento, projeto ou classifica¸c˜ao (BITENCOURT, 2006) (REZENDE, 2003).

J´a o encadeamento regressivo (backward chaining), tamb´em conhecido como encadea-mento dirigido a objetivos, parte da suposi¸c˜ao de que cada prov´avel solu¸c˜ao ´e verdadeira, tentando reunir evidencias que comprovem a sua veracidade. Estas evidencias s˜ao procu-radas nas informa¸c˜oes fornecidas pelo usu´ario. Geralmente o encadeamento regressivo ´e utilizado em ambientes onde existem uma pequena quantidade de sa´ıdas possiveis, porem uma grande quantidade de estados iniciais, como exemplo em problemas de diagn´osticos. Em geral um SE adota apenas um modo de racioc´ınio, com exce¸c˜ao de sistemas que utilizam o encadeamento misto, onde os encadeamentos progressivos e regressivos se al-ternam de acordo com o desenvolvimento da solu¸c˜ao do problema e com a disponibilidade de dados (BITENCOURT, 2006).

3.2.2.1 Estrutura Geral de um Sistema Baseado em Conhecimento

Rezende (2003) define Sistemas Baseados em Conhecimento (SBC) como ”progra-mas de computador que usam o conhecimento representado explicitamente para resolver problemas”. De acordo com autor, um SBC tem como objetivo manipular conhecimen-tos e informa¸c˜oes de forma inteligente, sendo usados em problemas que requerem uma quantidade consider´avel de conhecimento humano. Sendo assim, o conhecimento e o pro-cesso de resolu¸c˜ao de problemas s˜ao os pontos centrais no desenvolvimento de um SBC. O autor ainda apresenta um distin¸c˜ao entre SBCs e SEs. De acordo com o autor SEs s˜ao SBCs que resolvem problemas em dom´ınios mais restritos, ordinariamente resolvidos por um especialista humano, enquanto SBCs s˜ao sistemas capazes de resolver

(30)

proble-3.2 SISTEMAS BASEADOS EM CONHECIMENTO 17

mas usando conhecimento espec´ıficos sobre o dom´ınio da aplica¸c˜ao. Na Figura 3.5 s˜ao apresentados as caracter´ısticas desses sistemas no contexto de Sistemas Inteligentes. Nas se¸c˜oes e cap´ıtulos seguintes desta disserta¸c˜ao os termos Sistemas Especialistas e Sistemas Baseados em Conhecimento ser˜ao usados indistintamente.

Figura 3.5: Sistema Baseado em Conhecimento vs Sistema Especialista.

Fonte: Criado pelo pr´oprio autor.

Em (REZENDE, 2003) uma estrutura geral de SBC ´e apresentado (Figura 3.6). Esta estrutura ´e composta por cinco m´odulos, no qual destacam-se os m´odulos respons´aveis pelo armazenamento da Base de Conhecimento e pelo mecanismo de inferˆencia. Os m´odulos s˜ao classificados como:

• O n´ucleo do Sistema Baseado em Conhecimento: ´e o respons´avel pelas principais atividades do sistema. Neste m´odulo que ´e efetuado o controle de intera¸c˜ao com o usu´ario, processamento de conhecimento e explica¸c˜oes das conclus˜oes obtidas a partir de alguma linha de racioc´ınio. Neste m´odulo que est´a presente o Motor de Inferˆencia (MI) (REZENDE, 2003). O Motor de Inferˆencia tem um papel bastante similar ao apresentado por (BITENCOURT, 2006) presente na Se¸c˜ao 3.1. O MI tem como fun¸c˜ao desenvolver o racioc´ınio baseado nas informa¸c˜oes obtidas pelo usu´ario e no conhecimento apresentado na Base de Conhecimento;

• Base de Conhecimento (BC): Representa uma abstra¸c˜ao do mundo descrito expli-citamente, atrav´es de um formalismo de representa¸c˜ao de conhecimento que possa ser processado pelo n´ucleo do Sistema Baseado em Conhecimento;

• Mem´oria de Trabalho (MT): Onde s˜ao armazenadas as conclus˜oes de um processo de racioc´ınio;

(31)

3.3 AGENTE AUT ˆONOMO CONCORRENTE 18

• Base de Dados: Onde o sistema obtˆem ou armazena os dados e informa¸c˜oes. • Interface com o usu´ario: Onde obtˆem-se as informa¸c˜oes junto ao usu´ario.

Figura 3.6: Estrutura geral de um Sistema Baseado em Conhecimento.

Fonte: (REZENDE, 2003).

3.3 AGENTE AUT ˆONOMO CONCORRENTE

A arquitetura do AAC foi inspirada no modelo gen´erico para agentes cognitivos pro-posto em (BITTENCOURT, 1997) (Figura 3.7). A ideia principal desta arquitetura ´e de implementar percep¸c˜ao, a¸c˜ao, comunica¸c˜ao, coopera¸c˜ao, planejamento e tomada de decis˜ao, utilizando a programa¸c˜ao concorrente. Neste modelo concorrente, a arquitetura de tomada de decis˜ao era completamente centralizada, ocasionando alguns problemas de sincronismo entre o agente e o ambiente.

Com o intuito de solucionar esses problemas de sincroniza¸c˜ao, a arquitetura do agente cognitivo concorrente migrou de uma abordagem centralizada, para uma arquitetura des-centralizada, atrav´es da sua implementa¸c˜ao no framework Expert-Coop++ (COSTA; BITTENCOURT, 1999). Esse modelo baseia-se na hip´otese de que as atividades cog-nitivas possuem trˆes caracter´ısticas principais: auto-organiza¸c˜ao, natureza evolutiva e dependˆencia hist´orica (COSTA et al., 2011). De acordo com esse modelo, um agente cog-nitivo ´e composto por trˆes n´ıveis decis´orios: n´ıvel reativo, instintivo e cogcog-nitivo (Figura 3.8). Cada um desses n´ıveis implementa um processo decis´orio distinto, complemen-tando os demais n´ıveis para a constru¸c˜ao de um agente cognitivo. A arquitetura do AAC permite que esta seja implementada em qualquer sistema rob´otico, modificando-se sua camada reativa (levando em conta as caracter´ısticas de hardware de cada robˆo) e criando novas bases de regras, para os n´ıveis cognitivo e instintivo.

(32)

3.3 AGENTE AUT ˆONOMO CONCORRENTE 19

Figura 3.7: Modelo Gen´erico de Agentes Cognitivos.

Fonte:(BITTENCOURT, 1997).

3.3.1 N´ıvel Cognitivo

A fun¸c˜ao do n´ıvel Cognitivo (Figura 3.9) ´e de possuir um modelo simb´olico do ambi-ente, um conjunto de planos, uma base de conhecimento codificado em regras de produ¸c˜ao com a qual ´e poss´ıvel estabelecer metas e escolher o plano mais adequado para alcan¸ca-las. Estes planos s˜ao executados pelo n´ıvel instintivo. O n´ıvel cognitivo recebe informa¸c˜oes simb´olicas do n´ıvel instintivo e as mensagens dos outros agentes (quando inserido em um sistema multiagente). Um importante aspecto do AAC ´e que enquanto os n´ıveis instintivo e reativo trabalham no alcance de uma meta local, o n´ıvel cognitivo pode, concomitan-temente, se dedicar a tarefas de planejamento e cria¸c˜ao de novas metas (FERREIRA, 2014).

Um componente importante presente em todos os n´ıveis decis´orios do AAC, o mailbox, tem um papel fundamental no funcionamento do agente. O mailbox consiste de um objeto instanciado em cada processo da biblioteca Expert-Coop++ que oferece uma interface de comunica¸c˜ao baseada em soquetes UNIX e uma estrutura de dados que funciona como um buffer, armazenando as mensagens em uma fila de tamanho finito. Quando uma mensagem ´e lida, a mesma ´e removida da fila.

(33)

3.3 AGENTE AUT ˆONOMO CONCORRENTE 20

Figura 3.8: Fluxo de informa¸c˜oes do Agente Autˆonomo Concorrente.

Fonte: Criado pelo pr´oprio autor.

Figura 3.9: Fluxo de informa¸c˜oes do N´ıvel Cognitivo do AAC.

(34)

3.3 AGENTE AUT ˆONOMO CONCORRENTE 21

3.3.2 N´ıvel Instintivo

O n´ıvel instintivo (Figura 3.10) ´e o respons´avel pelo reconhecimento das mudan¸cas do estado do ambiente, atualiza¸c˜ao das informa¸c˜oes simb´olicas utilizadas na base de conhecimento do n´ıvel cognitivo e pela escolha do comportamento a ser utilizado pelo n´ıvel reativo. O reconhecimento das mudan¸cas do estado do ambiente ´e realizado ap´os cada ciclo de percep¸c˜ao-a¸c˜ao executado pelo n´ıvel reativo. Este n´ıvel executa planos, que se bem sucedidos, levam a satisfa¸c˜ao de metas locais, criadas pelo n´ıvel cognitivo. Um Sistema Baseado em Conhecimento (SBC), composto por um Motor de Inferˆencia (MI), Base de Regras (BR) e uma Base de Fatos (Estado do Mundo) s˜ao implementados neste n´ıvel.

Figura 3.10: Fluxo de informa¸c˜oes do N´ıvel Instintivo do AAC.

Fonte: Criado pelo pr´oprio autor.

O arquivo de regras, implementado pelo usu´ario, fornecer´a as regras necess´arias para classificar os estados do ambiente, escolher o comportamento mais adequado a este estado e gerar informa¸c˜oes a ser enviadas ao n´ıvel cognitivo. L´ogica e quadros s˜ao os formalismos admitidos para representa¸c˜ao de conhecimento do agente.

3.3.3 N´ıvel Reativo

O n´ıvel reativo ´e o respons´avel pela intera¸c˜ao do agente com o ambiente. Ele recebe a percep¸c˜ao do ambiente e determina as a¸c˜oes que ser˜ao tomadas sobre ele. Tais a¸c˜oes s˜ao determinadas por um conjunto de comportamentos que ser˜ao implementados no n´ıvel

(35)

3.3 AGENTE AUT ˆONOMO CONCORRENTE 22

reativo do agente. A cada ciclo de a¸c˜ao-percep¸c˜ao apenas um comportamento est´a ativo. Os comportamentos podem ser entendidos como um conjunto de a¸c˜oes que devem ser executadas afim de alcan¸car determinados objetivos. Em (COSTA et al., 2011) um sis-tema de controle para rastreamento de trajet´oria foi encapsulado no n´ıvel reativo do robˆo Ax´ebot, com o intuito de rastrear a referencia de trajet´oria recebida do n´ıvel instintivo. A execu¸c˜ao das trajet´orias a serem rastreadas foram ent˜ao chamadas de comportamen-tos. J´a em (COSTA et al., 2015), o n´ıvel reativo foi implementado no modulo UHRSP (Unifield Humanoid Robotics Software Platform) do robˆo Humanoide NAO. O UHRSP disponibiliza uma plataforma de controle de caminhada chamado de Zero Moment Point (ZMP), que recebe do n´ıvel instintivo do AAC qual o comportamento ser´a executado pelo controlador ZMP.

No presente trabalho, o n´ıvel reativo foi implementado no ROS. O ROS possui um conjunto de ferramentas e bibliotecas que permite ter o controle do manipulador JACO Kinova tanto no espa¸co cartesiano, quanto no espa¸co de juntas.

3.3.4 Representa¸c˜ao de conhecimento do AAC

Em (REZENDE, 2003), o autor define representa¸c˜ao de conhecimento como algo que pode ser entendido como uma forma sistem´atica de estruturar e codificar o que se sabe sobre uma determinada aplica¸c˜ao. Ainda de acordo com o autor uma representa¸c˜ao de conhecimento deve apresentar as seguintes caracter´ısticas:

• Ser compreens´ıvel ao ser humano;

• Abstrair-se dos detalhes de como funciona o processador de conhecimento que o interpretar´a;

• Ser robusta, de modo a permitir sua utiliza¸c˜ao mesmo que n˜ao aborde todas as situa¸c˜oes poss´ıveis.

• Ser generaliz´avel, ou seja, que possa ter v´arios pontos de vista do mesmo aconteci-mento, de maneira que possa ser atribu´ıda a diversas situa¸c˜oes e interpreta¸c˜oes. BITENCOURT (2006 apud FURBACH; DIRLICH; FREKSA, 1984) aponta compo-nentes essenciais de uma representa¸c˜ao de conhecimento como:

• Mundo externo;

• A representa¸c˜ao propriamente dita:

• A rela¸c˜ao entre o mundo externo e a representa¸c˜ao propriamente dita.

O mundo externo e a representa¸c˜ao devem possuir operadores que possibilitem a manipula¸c˜ao dos seus elementos, e a rela¸c˜ao entre estes corpos de conhecimento, como o autor os denomina, comp˜oe a semˆantica da representa¸c˜ao.

(36)

3.3 AGENTE AUT ˆONOMO CONCORRENTE 23

O Agente Autˆonomo Concorrente utiliza L´ogica de Primeira Ordem (LPO) e qua-dros como m´etodo de representa¸c˜ao de conhecimento do seu Sistema Baseado em Co-nhecimento (BITTENCOURT; COSTA, 2001). A base de fatos (Tabelas 3.3 e 3.4) (ou mem´oria de trabalho) ´e respons´avel pelo armazenamento de informa¸c˜oes do ambiente a partir de fatos, possuindo um formato de trˆes termos: objeto, atributo e valor (Figura

??). Na parte ”a” da Tabela 3.3, ´e apresentado um fato simples com apenas um atributo

de um determinado objeto e na parte ”b”, ´e apresentado o caso de m´ultiplos atributos. Tabela 3.3: Exemplo de um fato simples (a) e um composto (b).

(logic ( <objeto><atributo><valor>)) (logic ( <objeto ><atributo 2 ><valor 2 >)(logic ( <objeto><atributo 1><valor 1 >)) ...

(logic ( <objeto ><atributo n ><valor n >)

(a) (b)

Fonte: Criado pelo pr´oprio autor. Tabela 3.4: Exemplo de uma base de fatos.

((logic ( robo velocida 2.5)) (logic ( robo orientacao 0.5)) (logic ( robo dis obstaculo 1.5))) Fonte: Criado pelo pr´oprio autor.

A inteligˆencia do agente ´e baseada em regras de produ¸c˜ao (Figura 3.11). Estas regras s˜ao concebidas com intuito de tentar prever todos os poss´ıveis estados do ambiente, determinando para cada um destes estados, qual o comportamento o agente ir´a executar (J´UNIOR; COSTA, 2007). A biblioteca Expertcoop++ possui um analisador de regras respons´avel por realizar analises l´exicas e sint´aticas dos seus arquivos de regras, al´em de formalizar a sua gram´atica de linguagem. Esta gram´atica descrave as estruturas de linguagem das regras, sendo o lado direito e o lado esquerdo os mais importantes (Figura 3.12). O lado direito ´e identificado pelo token ”if” e cont´em a representa¸c˜ao do estado do ambiente ( ou condi¸c˜oes como na se¸c˜ao 3.2.1 e Figura 3.11 ) e o lado esquerdo ´e identificado pelo token ”then”, sendo este respons´avel por conter informa¸c˜oes para modificar o estado do ambiente (ou consequˆencias como na se¸c˜ao 3.2.1 e Figura 3.11) (J´UNIOR; COSTA, 2007).

O analisador l´exico ´e o respons´avel pela leitura do arquivo de regras, car´acter por car´acter, extraindo uma sequˆencia de s´ımbolos l´exicos (tokens). Cada s´ımbolo l´exico ´e uma palavra reservada (podendo ser identificadores ou operadores), sendo que cada uma possui uma fun¸c˜ao pr´e-definida , como exemplo: if, then, filter, logic, frame, message, to

(37)

3.3 AGENTE AUT ˆONOMO CONCORRENTE 24

Figura 3.11: Formato de uma rega de produ¸c˜ao.

Fonte: (FERREIRA, 2014).

analisar se uma dada senten¸ca do arquivo de regras est´a gramaticamente correta. A sin-taxe completa na forma de Backu-Naur da linguagem de representa¸c˜ao de conhecimento utilizada pelo AAC ´e apresentada na Figura 3.12.

Figura 3.12: Sintaxe completa na forma de Backu-Naur.

Fonte: (JUNIOR; COSTA, 2007).

Al´em de LPO, o AAC admite quadros na sua representa¸c˜ao de conhecimento (Figura 3.13). O termo ”frame id” ´e um identificar que permite qua o quadro seja fornecido como valor de atributo para outros quadros (FERREIRA, 2014).

3.3.5 Revis˜ao Bibliogr´afica do AAC

A arquitetura do AAC possui a caracter´ıstica de poder ser implementado em qualquer sistema rob´otico, para isso, ´e apenas necess´ario a cria¸c˜ao de bases de regras para os n´ıveis

(38)

3.3 AGENTE AUT ˆONOMO CONCORRENTE 25

Figura 3.13: Formato de quadros na linguagem do AAC.

Fonte: (FERREIRA, 2014).

instintivo e cognitivo, al´em da modifica¸c˜ao da sua camada reativa, levando em conta a caracter´ıstica de hardware de cada robˆo.

Em (COSTA et al., 2011), o n´ıvel reativo do AAC foi embarcado no robˆo omnidi-recional Ax´eBot. Neste caso, o n´ıvel reativo foi composto por um m´odulo respons´avel pela implementa¸c˜ao da instrumenta¸c˜ao do sistema, encapsulando um sistema de controle em cascata para controle da posi¸c˜ao do centro de massa do robˆo. O n´ıvel instintivo foi embarcado em um sistema computacional baseado no microprocessador ARM7, chamado

Stargate Kit. Um sistema de representa¸c˜ao de conhecimento tamb´em foi utilizado, sendo

respons´avel por identificar os estados do ambiente contidos no n´ıvel instintivo e de acordo com estes estados, determinar a referˆencia de trajet´oria a ser rastreada pelo controlador encapsulado no n´ıvel reativo.

Em (FERREIRA, 2014) uma rede de trˆes microcontroladores foi projetada para em-barcar o AAC no robˆo omnidirecional Ax´eBot. A rede foi concebida mimetizando a rede funcional do AAC. Os trˆes n´ıveis deste ultimo foram embarcados em cada n´o da rede. O n´ıvel reativo, consistia em um controlador cinem´atico de posi¸c˜ao baseado no modelo do robˆo omnidirecional Ax´eBot, o mesmo foi embarcado no microcontrolador PSoC 5Lp. O n´ıvel instintivo foi embarcado em um m´odulo microcontrolado, baseado no microcon-trolador NXP LPC1768. Um sistema baseado em conhecimento com uma base de regras em LPO (L´ogica de Primeira Ordem) foi implementado neste n´ıvel com o intuito de coordenar a sele¸c˜ao de comportamentos no n´ıvel reativo. J´a o n´ıvel cognitivo, foi im-plementado em um m´odulo baseado DIL/NetPC 2486. Foi imim-plementado tamb´em um sistema baseado em conhecimento com um motor de inferˆencia que pˆode utilizar LPO, quanto LTP (L´ogica Temporal Proposicional). O trabalho em quest˜ao, demonstrou que a arquitetura de hardware projetada para o AAC, atendeu satisfatoriamente as demandas de concorrˆencia e comunica¸c˜ao exigida pelo mesmo, al´em de, demonstrar outra carac-ter´ıstica importante do AAC, que seria a capacidade de suportar mais de um m´etodo de inferˆencia na sua arquitetura cognitiva.

Em (COSTA et al., 2015), o AAC sendo aplicado no robˆo humanoide Aldebaran NAO. Foi utilizado os mesmos n´ıveis instintivos e cognitivos implementados no RoboCup, atualizando apenas as suas bases de regras. O n´ıvel reativo foi modificado, levando em conta as caracter´ısticas de hardware do NAO, com seus comportamentos sendo utilizados atrav´es do UHRSP.

Com tais resultados, pode-se chegar a conclus˜ao de que o AAC ´e um modelo de agente bem indicado para capacitar robˆos a execu¸c˜ao de tarefas que solicitam um alto

(39)

3.4 ROS 26

grau de cogni¸c˜ao. Conclui-se tamb´em quem o modelo do AAC pode ser implementado em qualquer sistema rob´otico.

Outro ponto a ser considerado, ´e a facilidade de implementa¸c˜ao do agente, visto que, o mesmo possui um conjunto de bibliotecas de classes chamada de ExpeertCoop++ escrita em linguagem de programa¸c˜ao C++, orientado a objetos, projetado para auxiliar a implementa¸c˜ao de Sistemas Multiagantes sob restri¸c˜ao de tempo real do tipo melhor esfor¸co (BARBOSA et al., 2005).

3.4 ROS

Desenvolver c´odigos de programa para controle de robˆos ´e dif´ıcil, visto que, a ´area da rob´otica cresce a um ritmo extremamente acelerado, tendo seu campo de atua¸c˜ao ampliado a cada instante. Outro fator importante ´e o grande n´umero de diferentes robˆos, que por sua vez apresentam uma ampla variedade de hardware, o que torna a reutiliza¸c˜ao desses c´odigos, nesses diferentes tipos de robˆos, quase invi´avel (OLIVEIRA et al., 2013).

Atualmente existem v´arias plataformas (frameworks) para desenvolvimento de aplica¸c˜oes rob´oticas, que tem como intuito gerenciar a complexidade e facilitar a prototipagem de programas para pesquisas, o que resultou em muitos sistemas de programas rob´oticos que atualmente s˜ao usados em Universidades e Industrias (QUIGLEY et al., 2009) como exemplo: Open Platform for Robotic Services (OPRos), Urbi, Microsoft Robotics

Stu-dio, Dave’s Robotic Operating System(DROS), Robotic Operating System (ROS), Player,

YARP, Orocos (Figura 3.14). Estes softwares possuem ferramentas e conte´udos API (Application Programming Interface) que permitem utilizar as suas funcionalidades sem a necessidade de desenvolver detalhes de implementa¸c˜ao destes (SANTOS, 2013).

Dentre estas plataformas o ROS (Figura 3.15) pode ser evidenciado, sendo o mesmo o sistema mais utilizado atualmente no mundo (KERR; NICKELS, 2012) com trabalhos sendo desenvolvidos tanto em ambientes industriais como em ambientes acadˆemicos.

Figura 3.14: Sistemas de Arquiteturas Rob´oticas.

Fonte:(Santos, 2013).

O Robotic Operation System (ROS) ´e um software de c´odigo aberto, desenvolvido em 2007, que disponibiliza bibliotecas e ferramentas para ajudar desenvolvedores de progra-mas rob´oticos a criarem suas aplica¸c˜oes. Ele fornece diversos servi¸cos, incluindo abstra¸c˜ao de hardware, implementa¸c˜ao de bibliotecas, controle de baixo n´ıvel de dispositivos

(dri-vers), gerenciamento de pacotes e troca de mensagens entre processos (OLIVEIRA et al.,

(40)

3.4 ROS 27

hardware na ´area da rob´otica, permitindo por exemplo, que diferentes grupos de pesquisa possam trocar informa¸c˜oes e experiˆencias, reutilizando c´odigos e ferramentas criadas com o seu aux´ılio (BARROS, 2014).

Figura 3.15: Log´otipo do ROS.

Fonte: http://www.ros.org/, acessado em :31/01/2017.

A filosofia de cria¸c˜ao do ROS ´e baseada no sistema operacional UNIX. Ele possui um sistema baseado em mensagens, sendo composto por bibliotecas escritas em linguagens como C++ e Python. O ROS possui trˆes n´ıveis de conceitos: o n´ıvel de sistema de arquivos, o n´ıvel do Grafo de Computa¸c˜ao e o n´ıvel de comunidade.

3.4.1 N´ıvel de Sistema de Arquivos

O Sistema de Arquivos s˜ao divididos em: pacotes, manifestos, mensagens, servi¸cos e pilhas stacks.

3.4.1.1 Pacotes do ROS

Os pacotes (package) s˜ao as unidades principais de organiza¸c˜ao do ROS, neles est˜ao contidos as bibliotecas, conjuntos de dados, arquivos de configura¸c˜ao, c´odigos fontes e arquivos execut´aveis, habitualmente chamados de “n´os”. Sendo um sistema baseado em pacotes, sua principal caracter´ıstica ´e a de que arquivos podem referenciar outros arquivos de uma maneira bastante simples (BARROS, 2014). A estrutura de um pacote quase sempre pode ser representado do seguinte modo.

• src/ - Cont´em os c´odigos fonte geralmente escritos em linguagem Python ou C++; • bin/ - Cont´em arquivos execut´aveis;

• lib/ - Cont´em as bibliotecas necess´arias para executar os arquivos da pasta bin; • launch/ – Arquivos de Inicializa¸c˜ao de pacote, est´a contido os arquivos launch

(.launch/XML), necess´arios para utilizar a ferramenta do ROS chamada roslaunch; • include/ – Cont´em arquivos de cabe¸calho em C++;

(41)

3.4 ROS 28

• msg / - Cont´em arquivos de descri¸c˜ao do tipo de mensagem (.msg); • scripts/ - Cont´em scripts execut´aveis;

• Srv/ - Cont´em arquivos de descri¸c˜ao do tipo de servi¸co (.srv); • Manifest.xml – Arquivo onde se encontra as informa¸c˜oes do pacote; • CMakelist.txt – Arquivo de constru¸c˜ao CMak.

3.4.1.2 Pilhas do ROS

Os pacotes (packeage) do ROS eram organizados em pilhas (stacks), sendo que seu principal objetivo ´e de simplificar o compartilhamento dos c´odigos que est˜ao contidos nos pacotes, facilitando assim a sua reutiliza¸c˜ao. O stack era o principal mecanismo de distribui¸c˜ao de softwares que utilizam o ROS (BARROS, 2014), por´em ´e de extrema importˆancia salientar que o conceito de stack no ROS est´a em desuso, visto que, suas vers˜oes mais recentes utilizam o conceito de “metapacotes” (Metapackages).

3.4.1.3 Mensagens

Um arquivo do tipo mensagem define a estrutura de dados da requisi¸c˜ao e da resposta para os servi¸cos do ROS, sendo esses publicados por execut´aveis, no caso n´os. Este arquivo ´e composto pela descri¸c˜ao de campos e constantes, sendo que os campos (vari´aveis) s˜ao dados enviados para e pela mensagem e as constantes s˜ao valores fixos para a interpreta¸c˜ao destes campos (OLIVEIRA et al., 2013). Para facilitar a gera¸c˜ao autom´atica do c´odigo fonte da mensagem, o ROS faz uso de uma descri¸c˜ao simplificada dos valores de dados, que s˜ao atribu´ıdos em arquivos do tipo “.msg” que se encontram no subdiret´orio de um pacote do ROS.

3.4.2 Processamento Gr´afico

O Processamento Gr´afico no ROS ´e uma rede peer-to-peer de processos, ou seja, pro-cessamento de dados em conjunto. Os conceitos do Grafo de Computa¸c˜ao s˜ao: n´os(nodes), t´opicos, mensagens, servi¸cos, mestre, servidor de parˆametro.

3.4.2.1 N´os do ROS

Os n´os (nodes) s˜ao processos que executam instru¸c˜oes, geralmente utilizando biblio-tecas do ROS, como o roscpp baseada em C++ ou rospy baseada em python. Quando combinados em um grafo, comunicam uns com os outros atrav´es de streaming de t´opicos, servi¸cos via RPC (Remote Procedure Call1) e o servidor de parˆametro. Um sistema de controle de robˆo, como o apresentado neste trabalho, compreende muitos n´os, onde se

1Protocolo para execu¸ao remota de procedures em computadores ligados em rede, podendo ser

im-plementado sobre diferentes protocolos de transportes, como ´e o caso do TCP (Transmission Control

(42)

3.4 ROS 29

tem um n´o para realizar o controle cinem´atico do robˆo, um n´o para receber mensagens do AAC, um n´o para enviar mensagens ao AAC, e assim por diante. A utiliza¸c˜ao dos n´os no ROS traz uma s´erie de vantagens ao sistema em geral, dentre elas:

• Maior tolerˆancia a falhas, visto que problemas relacionados a um ´unico n´o s˜ao isolados ao mesmo;

• Independˆencia com linguagens de programa¸c˜ao, visto que, cada n´o pode ser escrito com uma linguagem diferente;

• Menor complexidade no c´odigo em rela¸c˜ao a aplica¸c˜oes monol´ıticas.

Todos os n´os executados s˜ao identificados no sistema gr´afico com um nome, como pode ser observado na Figura 3.16.

3.4.2.2 T´opicos do ROS

No ROS um n´o pode se comunicar com outros n´os por meio de um sistema de trans-porte com a semˆantica de publicador/subscritor (publisher/subscriber) (Figura 3.17). Para que um n´o possa enviar uma mensagem, o mesmo precisa publica-la em um de-terminado t´opico. Caso outro n´o queira receber o conte´udo desta mensagem, o mesmo ter´a que subscrever neste mesmo t´opico. Um n´o pode publicar ou subscrever m´ultiplos t´opicos ao mesmo tempo, podendo haver situa¸c˜oes onde a publica¸c˜ao ou subscri¸c˜ao em um t´opico seja disputada entre diversos n´os, visto que, em geral os publicadores e subs-critores n˜ao possuem conhecimento da existˆencia uns dos outros. Cada t´opico recebe um nome e qualquer n´o pode enviar ou receber mensagens do mesmo (WADA, 2016).

Figura 3.17: Conceitos b´asicos do ROS.

(43)

3.4 ROS 30

O ROS atualmente suporta os protocolos de comunica¸c˜ao TCP/IP e UDP, sendo respectivamente conhecidas como TCPROS e UDPROS, tendo como padr˜ao a primeira alternativa.

Os n´os comunicam-se por interm´edio do envio de mensagens via t´opicos, mensagens estas que s˜ao simplesmente uma estrutura de dados, que compreende os campos pr´e-definidos. O ROS possui grande diversidade no tipo de mensagens como mostrado na Tabela 3.5. Muitos destes tipos de mensagens foram elaborados para aplica¸c˜oes rob´oticas, permitindo a integra¸c˜ao de diversas ´areas, como navega¸c˜ao, geometria, vis˜ao, dentre outras (ROMERO, 2014).

Tabela 3.5: Formatos dos tipos de mensagens do ROS. Package Tipo de mensagem Orientadas `as ´areas

std msgs string, bool, int8, int16,char, float, MultiArrays Mensagens no formato comum da programa¸c˜ao;

geometry msgs twist, transform, pose,point Geometria primitiva como pontos,vetores, posi¸c˜oes ou velocidades;

nav msgs odometry, path,occupancyGrid Mensagens indicadas para a navega¸c˜ao; trajectory msgs JointTrajectory Orienta¸c˜ao para jun¸c˜ao de trajet´orias; visualization msgs ImageMarker,InteractiveMarker Utilizadas na camada dealto n´ıvel, como a

ferramenta rviz;

stereo msgs DisparityImage Especificas paraprocessamento stereo, como disparidade de imagens; sensor msgs Image, PointCloud,LaserScan Definidas para usar emsensores, como cˆamaras,

laser scan, infravermelhos; Fonte: Criado pelo autor.

3.4.2.3 Servi¸cos

O modelo publicador/subscritor de mensagens ´e um padr˜ao de comunica¸c˜ao muito flex´ıvel, porem sua grande quantidade de trocas de mensagens n˜ao ´e apropriada para requisi¸c˜oes do tipo RPC, ou intera¸c˜oes do tipo requisi¸c˜ao/resposta que s˜ao geralmente solicitadas em sistemas distribu´ıdos, tendo em vista, que os n´os s˜ao destinados `a trans-miss˜ao unidirecional de dados (CONLEY, 2012). Neste caso as requisi¸c˜oes e respostas s˜ao feitas atrav´es de servi¸cos que s˜ao definidos por um par de estruturas de mensagens: uma para a requisi¸c˜ao e outra para resposta.

(44)

3.4 ROS 31

Um n´o disponibiliza um servi¸co que ´e identificado por um nome especifico e outro n´o cliente usa o servi¸co por meio de mensagem de requisi¸c˜ao e aguarda a resposta (CONLEY, 2012).

As bolsas (bags) s˜ao um formato de arquivos do ROS (.bag), que servem para salvar e recuperar dados obtidos a partir de mensagens. Atrav´es desses arquivos que torna-se poss´ıvel o armazenamento de dados, por exemplo provenientes de sensores, possibili-tando a verifica¸c˜ao de algoritmos sem a necessidade de repetidas execu¸c˜oes na pr´atica (ROMERO, 2014).

3.4.2.4 Servi¸cos de Parˆametro

O servidor de parˆametro do ROS permite que os nodos possam armazenar e recuperar parˆametros durante a sua execu¸c˜ao. Ele foi desenvolvido para que as ferramentas do ROS possam inspecionar o estado de configura¸c˜ao do sistema, modificando-o se necess´ario (THOMAS, 2013).

3.4.2.5 ROS Mestre

O ROS Mestre (Master) tem como principal fun¸c˜ao fornecer as informa¸c˜oes necess´arias para que os n´os possam se comunicar. Quando um n´o aparece no sistema, o Master providencia os dados necess´arios para que este n´o possa formar uma liga¸c˜ao peer-to-peer com os restantes n´os que publicam e subscrevem os mesmos t´opicos.

3.4.3 N´ıvel de Comunidade

O ROS possui alguns recursos que auxiliam comunidades distintas a troca de software e conhecimento (ROMERO, 2014). Podemos destacar os seguintes recursos:

• Wiki do ROS: Principal f´orum onde se encontra informa¸c˜oes sobre o ROS como documenta¸c˜ao e tutoriais;

• Reposit´orios: O ROS possui uma rede federada de reposit´orios de c´odigos onde diferentes institui¸c˜oes de ensino lan¸cam seus pr´oprios componentes de software de robˆos;

• ROS Answers: Site onde qualquer pessoa pode se cadastrar para realizar perguntas e encontrar respostas acerca do ROS;

• Distribui¸c˜oes: O ROS possui diversas vers˜oes, que podem vir a ser instalada no computador. Estas vers˜oes desempenham um papel semelhante ao das distribui¸c˜oes linux.

3.4.4 Revis˜ao Bibliogr´afica-ROS

Em (OLIVEIRA et al., 2013) podemos verificar diferentes funcionalidades e aplica¸c˜oes da plataforma ROS. Neste caso foi apresentado um sistema de trajet´oria para o controle de

Referências

Documentos relacionados

Lydia Fontoura Pinheiro, doravante denominada CONTRATANTE e a empresa ROSANGELA DE OLIVEIRA LIMA DA SILVA DE CAPIM GROSSO - ME, inscrito no CNPJ sob nº 02.445.380/0001-01 situada à

São por demais conhecidas as dificuldades de se incorporar a Amazônia à dinâmica de desenvolvimento nacional, ora por culpa do modelo estabelecido, ora pela falta de tecnologia ou

O conceito de fingerprint tem sido empregado em diferentes aplicações: 1 determinação de autenticidade e identificação de espécies, 2 avaliação da qualidade química e

Os estudos originais encontrados entre janeiro de 2007 e dezembro de 2017 foram selecionados de acordo com os seguintes critérios de inclusão: obtenção de valores de

A seleção portuguesa feminina de andebol de sub-20 perdeu hoje 21-20 com a Hungria, na terceira jornada do Grupo C do Mundial da categoria, a decorrer em Koprivnica, na

introduzido por seus orifícios e daí se descarrega no difusor secundário e depois no difusor principal, e a seguir para o coletor de admissão e cilindros... 8-C

Esta subárea trabalhará os seguintes conteúdos: Diagnóstico e controle das doenças cárie e periodontal, planejamento do tratamento odontológico, interrelação periodontia/

No presente trabalho, um estudo experimental e um numérico na célula linear e um estudo numérico na célula SAGD foram desenvolvidos para entender melhor como a injeção de