uma soluÇÂo em robÓtica coletiva para...

65
UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA DESCONTAMINAÇÃO Bernardo Cid Killer Soares de Souza Projeto de Graduação apresentado ao Curso de Engenharia Eletrônica e de Computação da Escola Politécnica, Universidade Federal do Rio de Janeiro, como parte dos requisitos necessários à obtenção do título de Engenheiro. Orientador: Prof. Felipe M. G. França, Ph.D. Rio de Janeiro Março de 2016

Upload: nguyendung

Post on 08-Nov-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA

DESCONTAMINAÇÃO

Bernardo Cid Killer Soares de Souza

Projeto de Graduação apresentado ao Curso de

Engenharia Eletrônica e de Computação da Escola

Politécnica, Universidade Federal do Rio de

Janeiro, como parte dos requisitos necessários à

obtenção do título de Engenheiro.

Orientador: Prof. Felipe M. G. França, Ph.D.

Rio de Janeiro

Março de 2016

Page 2: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

ii

UMA SOLUÇÃO EM ROBÓTICA COLETIVA PARA

DESCONTAMINAÇÃO

Bernardo Cid Killer Soares de Souza

PROJETO DE GRADUAÇÃO SUBMETIDO AO CORPO DOCENTE DO CURSO

DE ENGENHARIA ELETRÔNICA E DE COMPUTAÇÃO DA ESCOLA

POLITÉCNICA DA UNIVERSIDADE FEDERAL DO RIO DE JANEIRO COMO

PARTE DOS REQUISITOS NECESSÁRIOS PARA A OBTENÇÃO DO GRAU DE

ENGENHEIRO ELETRÔNICO E DE COMPUTAÇÃO

Autor:

_________________________________________________

Bernardo Cid Killer Soares de Souza

Orientador:

_________________________________________________

Prof. Felipe M. G. França, Ph. D.

Examinador:

_________________________________________________

Prof Flávio Luis de Mello, D. Sc.

Examinador:

_________________________________________________

Prof. Heraldo Luis Silveira de Almeida, D. Sc.

Rio de Janeiro – RJ, Brasil

Março de 2016

Page 3: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

iii

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO

Escola Politécnica – Departamento de Eletrônica e de Computação

Centro de Tecnologia, bloco H, sala H-217, Cidade Universitária

Rio de Janeiro – RJ CEP 21949-900

Este exemplar é de propriedade da Universidade Federal do Rio de Janeiro, que

poderá incluí-lo em base de dados, armazenar em computador, microfilmar ou adotar

qualquer forma de arquivamento.

É permitida a menção, reprodução parcial ou integral e a transmissão entre

bibliotecas deste trabalho, sem modificação de seu texto, em qualquer meio que esteja

ou venha a ser fixado, para pesquisa acadêmica, comentários e citações, desde que sem

finalidade comercial e que seja feita a referência bibliográfica completa.

Os conceitos expressos neste trabalho são de responsabilidade do(s) autor(es).

Page 4: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

iv

AGRADECIMENTO

A todos que conviveram comigo no percorrer deste trabalho. Agradeço

principalmente aos meus amigos por considerações, ajudas e apoios que foram dados e

pelos momentos descontraídos dividimos. Agradeço também a meus professores, por

sua orientação dentro e fora de sala de aula.

Page 5: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

v

RESUMO

Este trabalho trata do desenvolvimento de um sistema de robótica coletiva. Esse

sistema foi focado no problema de descontaminação de grafos em um ambiente

simplificado e controlado. Adicionalmente são discutidas a implementação, estrutura do

código de controle dos robôs, dificuldades do trabalho e pequenas diferenças nos

algoritmos de tomada de decisões. A descontaminação é uma situação na qual se busca

a alocação coordenada de agentes em um grafo e por isso as discussões se centram em

determinação de novas posições e momento de movimentação dos agentes. Como

resultado final o sistema desenvolvido engloba os robôs utilizados, uma central de

comunicação para conectar os robôs, um simulador para casos mais genéricos dos

algoritmos dos robôs e um sistema de projeção do grafo sendo descontaminado sobre a

região na qual os robôs se movem fisicamente.

Palavras-Chave: robótica coletiva, sistema robótico, descontaminação, micro

controladores, descontaminação de grafos, escalonamento por reversão de arestas.

Page 6: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

vi

ABSTRACT

This work focus on the development of a swarm robotic system. This system

was built to solve the digraph decontamination problem in a controlled and simplified

environment. In addition the implementations, algorithm choices, the robots code

structure and development difficulties are also discussed. Decontamination focus on the

coordination of agents positioning themselves while moving on the digraph. It may

represents a fire fighting or hunting scenarios. The final system presents a group of

functional robotic agents, a communication central, simulation software and a

projection system to visualize the decontamination over the area the robots are

physically moving.

Key-words: swarm robotics, robotic system, decontamination, micro controllers, graph

decontamination, scheduling by edge reversal.

Page 7: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

vii

SIGLAS

UFRJ – Universidade Federal do Rio de Janeiro

ERA – Escalonamento por Reversão de Arestas

ERAh – Escalonamento por Reversão de Arestas com Hibernação

SER – Scheduling by Edge Reversal

NP – Nondeterministic polynomial time

IDE – Integrated Development Environment

Page 8: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

viii

Sumário

1 Introdução 1

1.1 - Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 - Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3 - Organização do Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Descontaminação de Grafos 3

2.1 - Problema de descontaminação de grafos . . . . . . . . . . . . . . . . 3

2.2 - Variantes do problema de descontaminação . . . . . . . . . . . . . 5

2.2.1 - Critério de contaminação . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2.2 - Período de contaminação (TC) . . . . . . . . . . . . . . . . . . . . 6

2.2.3 - Período de descontaminação (Td) . . . . . . . . . . . . . . . . . . 6

2.2.4 - Limpeza de arestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2.5 - Monotonicidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 Escalonamento por Reversão de Arestas 8

3.1 - Escalonamento por Reversão de Arestas . . . . . . . . . . . . . . . . 8

3.2 - Orientação Acíclica Inicial do ERA . . . . . . . . . . . . . . . . . . . 9

3.3 - Decomposição por sumidouros/sorvedouros . . . . . . . . . . . . . 10

3.4 - Escalonamento Por Reversão de Arestas com Hibernação . . 12

3.5 - Sistema e Controle Distribuídos . . . . . . . . . . . . . . . . . . . . . . 14

4 Descontaminação por Robótica Coletiva 16

4.1 - Algoritmos distribuídos de descontaminação . . . . . . . . . . . . 16

4.1.1 - Solução utilizando ERA . . . . . . . . . . . . . . . . . . . . . . . . 17

Page 9: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

ix

4.1.2 - Outras soluções utilizando agentes distribuidos . . . . . . 17

4.2 - Plataforma robótica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.2.1 - Robôs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.2.2 - Plataforma de programação . . . . . . . . . . . . . . . . . . . . . . 21

4.3 - Metodologia experimental . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

5 Código e comportamento dos robôs 24

5.1 - Algoritmos e estruturas de dados para implementação dos

robôs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

5.2 - Algoritmo de comportamento dos Robôs . . . . . . . . . . . . . . . 26

5.3 - Troca de tarefas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.4 - Algoritmos de determinação de prioridade . . . . . . . . . . . . . . 30

5.4.1 - Determinação de prioridades utilizando ERAh . . . . . . . 31

5.4.2 - Determinação de prioridades utilizando duas listas . . . . 34

5.5 - Algoritmos utilizados pra a determinação do movimento . . . 34

5.5.1 - Seleção de próximo nó usando ERA . . . . . . . . . . . . . . . 34

5.5.2 - Seleção de próximo nó usando decomposição lambda . 36

5.6 - Algoritmo de determinação de caminho . . . . . . . . . . 36

5.7 - Troca de informações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5.8 - Algoritmo de orientação inicial dos grafos . . . . . . . . . . . . . . 40

5.8.1 - Algoritmo de orientação acíclica inicial por desempate 40

5.8.2 - Algoritmo de orientação acíclica inicial por pseudo

decomposição em sorvedouros . . . . . . . . . . . . . . . . . . . . . . . . . .

41

5.9 - Análise dos resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5.9.1 - Sobre o número de agentes . . . . . . . . . . . . . . . . . . . . . . . 47

5.9.2 - Sobre o número de passos . . . . . . . . . . . . . . . . . . . . . . . . 49

5.9.3 - Comparação das combinações de algoritmos . . . . . . . . 50

Page 10: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

x

6 Conclusão 51

6.1 - Contribuições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

6.2 - Trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Bibliografia 52

Page 11: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

xi

Lista de Figuras

2.1 – Funcionamento do problema de contaminação . . . . . . . . . . . . . . . . . . . . . . . 4

2.2 – Exemplo da descontaminação de um grafo . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.1 – Funcionamento do ERA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.2 – Exemplos de diferentes orientações iniciais acíclicas . . . . . . . . . . . . . . . . . . 10

3.3 – Exemplo da decomposição por sorvedouros de um grafo . . . . . . . . . . . . . . . 11

3.4 – Funcionamento do ERAh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.1 – Grid de movimentação dos robôs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.2 – Detalhes do robô Beauto Rover, trás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4.3 – Detalhes do robô Beauto Rover, frente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.4 – Detalhes do robô Beauto Rover, fundo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

5.1 – Diagrama de estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.2 – Exemplo de um grafo completo funcionando com ERAh . . . . . . . . . . . . . . . 31

5.3 – Exemplo da dinâmica do ERAh no Grafo de Prioridades em uma situação

de descontaminação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

5.4 – Funcionamento de um algoritmo de busca por inundação de grafos . . . . . . . 38

5.5 – Exemplo do sistema robótico em funcionamento step 0 . . . . . . . . . . . . . . . . 44

5.6 – Exemplo do sistema robótico em funcionamento step 9 . . . . . . . . . . . . . . . . 44

5.7 – Exemplo do sistema robótico em funcionamento step 21 . . . . . . . . . . . . . . . 45

5.8 – Exemplo do sistema robótico em funcionamento step 23 . . . . . . . . . . . . . . . 45

Page 12: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

xii

Lista de Tabelas

5.1 – Composição das combinações de algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . 46

5.2 – Contagem de robôs utilizados por cada combinação em cada caso de teste . 48

5.3 – Número total de passos dado por todos os robôs em cada caso de teste

usando cada combinação de algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

Page 13: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

1

Capítulo 1

Introdução

1.1 - Motivação

Robótica coletiva é uma área relativamente recente que busca tratar a execução

de tarefas do mundo real utilizando um conjunto de vários robôs relativamente simples

em detrimento de um único grande robô altamente eficiente. Por sua natureza de

coordenar múltiplos agentes robóticos, é necessário tratar as respostas implementadas

em robótica coletiva como sistemas distribuídos. Ao mesmo tempo também se percebe

que esta é uma alternativa para implementação de soluções de problemas que já sejam

distribuídas.

A descontaminação é um dos problemas com solução distribuída que já é

estudado faz alguns anos. Essa pode ser um exemplo representativo de situações de

busca por indivíduos em cavernas ou prédios, de combate a incêndios em fábricas ou até

mesmo de combate a ataques cibernéticos ou destruição de vírus que tenham se

instalado em diferentes páginas ou servidores na web.

Ainda que haja compatibilidade entre a questão de descontaminação e uma

solução usando robótica coletiva, as respostas conhecidas para este são muitas vezes

específicas ou consideram capacidades que nem sempre são possíveis no mundo real.

Por isso é de interesse verificar as dificuldades da implementação e limitações de um

sistema final que use agentes robóticos reais ao invés de agentes digitais ou idealizados.

Demanda para o uso de robôs em conjunto já existe, mas cada aplicação

apresenta um novo conjunto de variáveis e terrenos a serem analisados e que implicam

no tipo e número de robôs adequados para cada um e como estes devem se relacionar. A

tradução de uma solução para um grafo “mapa” em movimento para os robôs também

não é direta e depende de como estes se relacionam. Com isso em mente, estudar uma

solução para um conjunto de tipos de problema de inteligência artificial distribuída e

como os robôs interpretam o ambiente e implementam esta solução é necessário.

Page 14: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

2

1.2 - Objetivos

Esse trabalho visa desenvolver uma plataforma robótica que possa ser utilizada

para demonstrações e na qual possam ser testados algoritmos distribuídos já

considerando as limitações de uma implementação física. Para tal o sistema será

implementado com robôs que irão se coordenar para resolver uma instância do

problema de descontaminação para uma topologia genérica. Os robôs deverão se

coordenar para solucionar o problema de descontaminação em um mapa, mas não

precisarão apresentar habilidade real de combater um tipo de contaminação.

1.3 - Organização do texto

O texto será dividido em 6 capítulos, incluindo a introdução. Os Capítulos 2 e 3

apresentam a base teórica que será utilizada no trabalho. No Capítulo 2 será definido o

problema de descontaminação de grafo, suas definições e variantes. No Capítulo 3

iremos discutir dois algoritmos de reversão de arestas que serão utilizados para solução

do problema de descontaminação e coordenação dos robôs.

Os Capítulos 4 e 5 focam em aspectos da implementação do sistema robótico e o

Capítulo 6 é a conclusão do trabalho. No Capítulo 4 falamos sobre o sistema que foi

implementado, a solução do problema de descontaminação usando múltiplos agentes e

sobre os robôs que serão utilizados. Já no Capítulo 5 iremos falar sobre o código e

inteligência dos robôs, quais algoritmos foram utilizados nestes e os resultados da

implementação do sistema. Finalmente o Capítulo 6 apresenta a conclusão do trabalho.

Page 15: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

3

Capítulo 2

Descontaminação de Grafos

Neste capítulo é apresentado o problema de descontaminação, base do cenário

no qual o trabalho se insere.

2.1 – Problema de descontaminação de grafos

Considere um grafo G formado por j nós N e k arestas A. Inicialmente todos os

nós estão contaminados e agentes descontaminadores são liberados dentro do grafo.

Quando um nó contaminado é ocupado por um agente este é descontaminado após um

período de descontaminação Td e não pode ser recontaminado enquanto o agente estiver

presente. Um nó descontaminado que não tenha um agente dentro dele pode ser

recontaminado caso apresente um nó vizinho que esteja contaminado durante um tempo

igual ou maior a um dado período de recontaminação Tr. Dois nós Nj1 e Nj2 são

considerados vizinhos caso Nj1 e Nj2 apresentem uma aresta Ak comum entre eles.

Desse modo um nó pode estar em um de quatro estados:

Contaminado: O nó não possui agente alocado em si e pode

recontaminar nós vizinhos que estejam descontaminados.

Descontaminado: O nó não possui nenhum agente alocado em si e não

recontamina nós vizinhos que estejam descontaminados.

Guardado: Similar ao caso descontaminado, mas com um agente

alocado em si. Não pode ser recontaminado por vizinhos contaminados.

Sendo Descontaminado: Similar ao guardado, mas caso o agente no nó

saia este nó é considerado contaminado.

A figura 2.1 representa o funcionamento da dinâmica de contaminação. Neste esquema

os nós pretos são nós contaminados, os nós cinzas são nós com agentes e os nós brancos

estão descontaminados e sem agentes. Na situação (a) o nó contaminado contamina seus

Page 16: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

4

vizinhos descontaminados e o ciclo se repete a cada passo temporal até o grafo inteiro

estar contaminado. Na situação (b) o nó contaminado contamina seu vizinho, mas a

contaminação não se espalha por todo o grafo pela presença de um “cerco” de agentes

no meio do grafo.

Figura 2.1: Funcionamento do problema de contaminação

O problema de descontaminação chega ao fim quando todos os nós forem

descontaminados e não puderem ser recontaminados, o que equivale a todos os nós

estarem descontaminados ou guardados. Essa situação é demonstrada na figura 2.2, na

qual desenvolvemos a descontaminação de um grafo de início ao fim. Inicialmente, no

passo (a), o grafo se encontra completamente contaminado. Um agente robótico é

inserido então no nó marcado pela seta dupla dando início ao processo de

descontaminação, esse nó passa a estar protegido. Nos próximos ciclos outros agentes

robóticos são inseridos e nós que estão ocupados por agentes e cujos vizinhos estão

ocupados por agentes se tornam descontaminados. Isso se repete até os passos (e) e (f)

onde todos os nós foram ocupados ou descontaminados.

Page 17: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

5

Figura 2.2: Exemplo da descontaminação de um grafo

Alternativamente uma solução trivial seria posicionar um agente

descontaminador em cada um dos nós. Entretanto esta resposta é pouco eficiente e nem

sempre possível. Se o grafo a ser descontaminado representar um sistema digital (uma

rede de servidores conectados entre si, por exemplo) os agentes que poderiam ser

programas de “limpeza antivírus” e seria possível replicá-los em cada servidor, não

tendo restrição de números, ou poderiam ser implementados em um único servidor

ocupando múltiplos threads (o que permitiria um número não infinito, mas grande, de

agentes). No caso de agentes físicos, como robôs de busca ou robôs detectores de

vazamentos não é possível garantir uma abundância de agentes e se torna mais

importante coordenar eficientemente os agentes disponíveis para solucionar a situação.

2.2 – Variantes do problema de descontaminação

O problema de descontaminação é descrito normalmente apenas como o de se

iniciar com uma região contaminada e depois introduzir agentes na região de modo que

esta se torne descontaminada após diversas interações tendo em conta a possibilidade de

recontaminação de suas subdivisões. Entretanto para cada caso de estudo existem

Page 18: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

6

diversas limitações que são impostas criando situações variadas [2] para serem

analisadas. Dentre as características modificadas ou limitações impostas mais comuns

na literatura temos: critério de recontaminação, período de recontaminação, período de

descontaminação, limpeza de arestas e monotonicidade da solução. Estas cinco

características são descritas a seguir.

2.2.1 - Critério de contaminação

O critério de contaminação indica sob quais condições um nó descontaminado (e

não guardado) se torna contaminado. Normalmente o critério de contaminação é

relacionado ao número de nós vizinhos contaminados. Exemplos de critérios de

contaminação são: caso um único vizinho, metade dos vizinhos, todos os vizinhos, pelo

menos quatro vizinhos estejam contaminados pode haver contaminação.

2.2.2 - Período de contaminação (𝐓𝐂)

O período de contaminação diz respeito a quanto tempo um ambiente, nó ou

região descontaminada leva para ser contaminada. Pode ser descrito de forma mais

específica como o tempo que um nó desprotegido sob o critério de contaminação leva

para se tornar contaminado.

2.2.3 - Período de descontaminação (Td)

O período de descontaminação é o tempo mínimo necessário que um agente

deve permanecer em um nó para que ele seja limpo. Ainda que um nó protegido não

esteja limpo, por não ter completado seu período de descontaminação, na literatura se

considera que este nó não irá contaminar nós vizinhos.

Um período de descontaminação igual a zero normalmente indica que o agente

limpa instantaneamente o nó e geralmente é utilizado em simulações nas quais a

disposição dos agentes é o foco.

Page 19: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

7

2.2.4 - Limpeza de arestas

A limpeza de arestas se dá quando um agente garante que não haverá

contaminação de um nó por efeito de um nó vizinho para o qual este está se deslocando.

Essa situação é abstraída como se o agente estivesse limpando o canal, isto é, limpando

toda a extensão que conecta o nó em que este estava e o nó para onde se deslocou. Neste

caso um robô que esteja em um nó protegido pode passar para seu último vizinho que

esteja contaminado sem perigo. O efeito prático de haver limpeza de arestas é a

necessidade de um robô a menos para a descontaminação de um nó e em extensão do

grafo.

2.2.5 - Monotonicidade

Monotonicidade é um termo utilizado para um tipo de solução do problema de

descontaminação de grafos. Matematicamente uma função monotônica é aquela cuja

derivada é sempre positiva ou negativa, ou seja, apresenta apenas um sentido. Já em

problemas de descontaminação uma solução monotônica é aquela que gera uma

sequência de descontaminação na qual nenhum nó é recontaminado. Ou seja, o número

de nós não contaminados sempre cresce. Normalmente os nós que serão ocupados

devem ser sempre vizinhos de outros nós já ocupados em uma resposta monotônica,

apesar dessa restrição não ser explicitada.

Page 20: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

8

Capítulo 3

Escalonamento por Reversão de Arestas

Neste capítulo é apresentado o algoritmo de Escalonamento por Reversão de

Arestas - ERA (Scheduling by Edge Reversal – SER). Originalmente este é um

algoritmo para compartilhamento de recursos, mas pode ser adaptado para determinar a

ocupação coordenada de um grafo.

3.1 - Escalonamento por Reversão de Arestas

O algoritmo de Escalonamento por Reversão de Arestas é um algoritmo para

compartilhamento de recursos em um grafo orientado no qual cada nó representa um

processo e cada aresta representa um recurso compartilhado entre dois processos

distintos [3],[4],[7]. O grafo ser orientado quer dizer que cada aresta tem um sentido,

apontando para um dos nós que conecta, e representa que um determinado nó (processo)

tem controle daquele recurso. Quando todas as arestas de um nó estão apontando para

ele (ou seja, orientadas em seu sentido) esse nó é considerado um sorvedouro e isso

quer dizer que o nó (processo) domina naquele momento todos os recursos que precisa

para operar e tem prioridade sobre todos s seus vizinhos para operar. Quando um nó

opera (o processo realiza sua função) este libera os recursos que estava utilizando,

representado pela reversão do sentido de suas arestas. Como um nó necessita ter todas

as arestas orientadas para si para operar, após a reversão de arestas todas suas arestas

passam a apontar para seus vizinhos. A figura 3.1 mostra como funciona o ERA.

Inicialmente o nó 1 tem todos os recursos alocados para si e é o único sumidouro, isso é,

o único nó que pode operar. Ao operar o nó 1 reverte suas arestas e o nó 4 se torna o

próximo sumidouro, esse então opera tornando os nós 2 e 3 sumidouros. Esse processo

pode ser repetido indefinidamente se não houverem ciclos na orientação do grafo.

Page 21: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

9

Figura 3.1: Funcionamento do ERA

Uma grande vantagem do ERA é que este, considerando a operação correta do

sistema, consegue diminuir a concorrência entre os processos e garantir uma divisão

mais democrática dos recursos. Uma concorrência menor (menor paralelismo) poderia

não ser desejada em um sistema, entretanto nosso problema apresenta uma limitação no

número de agentes totais dentro do sistema em todos os momentos. Por isso é de

interesse encontrar respostas que maximize o uso de cada agente, desse modo utilizando

menos agentes para executar a mesma tarefa. Entretanto este necessita de uma

orientação acíclica do grafo para que funcione corretamente (se não haverá ocorrência

de deadlock).

Para a solução do problema de descontaminação utilizaremos o ERA em um

grafo nos quais os nós representam regiões num espaço físico (posições) e cada aresta

indicará que há fronteira entre os nós (indica que as regiões são vizinhas). Um nó ser

um sorvedouro indica que aquela posição está pronta para ser ocupada e a operação de

um nó indica que aquela região foi ocupada por um agente e descontaminada.

3.2 – Orientação Acíclica Inicial do ERA

Para o Escalonamento por reversão de arestas garantir o funcionamento correto e

divisão democrática de recursos este depende de apresentar uma orientação inicial

acíclica no grafo no qual é aplicado. Uma orientação acíclica é aquela na qual não

existem ciclos. Por simplicidade definiremos uma orientação com ciclos, ou cíclica,

como uma orientação do grafo na qual para um nó 𝑁1 poder se tornar um sorvedouro

(ter todas as suas arestas apontadas para si e então poder atuar) este depende da reversão

de arestas de um outro nó 𝑁2 que dependa da reversão de arestas de 𝑁1 para se tornar

um sorvedouro (e então poder atuar e reverter suas arestas) ou da reversão de arestas de

Page 22: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

10

um nó 𝑁3 que dependa da reversão de arestas de 𝑁1 para poder atuar. Gerar uma

orientação acíclica não é difícil, mas determinar a orientação acíclica que minimiza ou

maximiza a concorrência de um grafo foi mostrado ser um problema NP completo.

Figura 3.2: Exemplos de diferentes orientações iniciais acíclicas

A figura 3.2 mostra dois exemplos de orientações iniciais acíclicas para um

mesmo grafo. Orientações acíclicas diferentes modificam a ordem na qual os nós irão

operar, mas não interferem no funcionamento do ERA.

3.3 – Decomposição por sumidouros/sorvedouros

Decomposição por sumidouros é um tipo de análise na qual divide-se os nós de

um grafo em níveis (ou mais genericamente cores). No primeiro nível, ou nível λ0, são

colocados todos os nós que são sumidouros. No nível seguinte, o λ1, são colocados os

nós que se tornarão sumidouros quando os nós do nível λ0 reverterem suas arestas. No

nível λ2 são colocados os nós que se tornarão sumidouros quando os nós dos níveis

anteriores tiverem revertido suas arestas. E assim sucessivamente até que todos os nós

tenham sido posicionados em um nível.

Ao utilizar o escalonamento por reversão de arestas em um grafo decomposto

por sumidouros veremos que quando um sumidouro (no nível λ0) atuar, seus vizinhos

irão passar para um nível inferior e o nó que atuou passará para o maior nível no qual

um de seus vizinhos estava posicionado. Desse modo os nós que estavam em λ1 passam

para λ0 (indicando os novos sorvedouros) e gerando uma nova orientação acíclica,

como é de se esperar do ERA.

Page 23: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

11

Essa organização do grafo serve para representar os nós que podem atuar ao

mesmo tempo (considerando que todos os nós que conseguem atuar atuem juntos) e nos

dá informações sobre o nível de concorrência que aparecerá quando os agentes forem

introduzidos no grafo. Aqui um número maior de níveis tende a indica uma menor

concorrência, podendo ser utilizado como métrica para se escolher entre duas

orientações iniciais de um grafo.

Figura 3.3: Exemplo da decomposição por sorvedouros de um grafo

A figura 3.3 mostra uma decomposição em sorvedouros de um grafo orientado.

O esquema (a) mostra a decomposição original do grafo. Após a operação dos nós 1 e 2

estes passam para camadas mais altas e os nós da camada λ1 passam para λ0 tornando-

Page 24: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

12

se sorvedoures, como é mostrado no esquema (b). Após isso, os sorvedouros novamente

operam passando para a situação no esquema (c).

3.4 - Escalonamento Por Reversão de Arestas com Hibernação

O outro algoritmo que será utilizado será o Escalonamento por Reversão de

Arestas com Hibernação – ERAh [1]. O ERAh se comporta de forma similar ao ERA,

entretanto no ERAh quando dois processos (nós) compartilham um recurso os nós

associados com tais processos são conectados por duas arestas ao inv és de uma

(ou por uma aresta dupla). A primeira destas arestas, que controla o recurso , funciona

como as arestas do ERA, indicando quando o processo tem posse de um recurso

compartilhado. A segunda aresta controla o recurso . O recurso indica se a aresta de

recurso poderá ser revertida quando o nó operar. Se o nó não controlar a aresta a

arestas não deverá ser revertida. No ERAh a noção de sorvedouro é um pouco

diferente da do ERA. Não é necessário que todas suas arestas estejam apontando para si,

quando todas suas arestas estejam direcionadas para si o nó (processo) é considerado

um sorvedouro e se encontra em condições de operar. Na operação de um nó este

reverte todas suas arestas que também tenham as respectivas arestas orientadas

para si e todas as arestas que controlam.

Alternativamente no ERAh existe uma segunda possibilidade quando um nó

opera. Ao invés de simplesmente reverter suas arestas um nó pode decidir entrar em

hibernação, isso quer dizer que ele abre mão de utilizar os recursos que compartilha

com outros nós enquanto está hibernando. Desse modo os recursos que utiliza ficam a

disposição de seus vizinhos continuamente até que este saia de hibernação. Para passar

para a hibernação o nó, quando for um sorvedouro, deve reverter apenas suas arestas

para todos os seus vizinhos. Tal como na reversão básica de arestas do ERAh deve-se

reverter apenas as arestas que o nó também controlar as respectivas arestas .

Para sair da hibernação um nó deve receber uma reversão de arestas de um de

seus vizinhos. Essa reversão de arestas será da aresta que compartilham. Quando isso

ocorre o nó que estava hibernando passa a controlar os recursos e daquela aresta

dupla e reverte todas suas outras arestas que controla. Se um de seus vizinhos que

Page 25: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

13

tiveram a aresta apontada para si estiver hibernando este passa o recurso

correspondente para o nó que está saindo da hibernação. O pseudocódigo do

funcionamento de um nó do ERAh está descrito a seguir.

Pseudocódigo do funcionamento de um nó que opera por ERAh

Se estado == ativo.

{

Se controlar todos os recursos .

{

Nó pode operar.

Se for tirar um vizinho da hibernação.

{

Reverter a aresta de recurso para o vizinho que sairá da hibernação.

}

Se for passar para hibernação.

{

Reverter todas as arestas de recurso que também controla o recurso

correspondente.

Estado = hibernando.

}

Se não.

{

Reverter todas as arestas de recurso e que controla o recurso

correspondente.

}

}

}

Se estado == hibernando.

{

Se receber o controle de um recurso .

{

Reverter o recurso correspondente.

}

Se receber o controle de um recurso .

{

Estado = ativo.

Reverter todas as arestas de recurso que controla e controla o recurso

correspondente.

Reverter todas as arestas de recurso que controla.

}

}

Page 26: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

14

Figura 3.4: Funcionamento do ERAh

Um exemplo simples do funcionamento do ERAh pode ser visto na figura 3.4.

Inicialmente nesse grafo temos apenas o nó 3 como sorvedouro, este então opera e passa

a hibernar retendo seus recursos . Com isso os nós 2, 4 e 5 passam a estar aptos a

operar. Os nós 2 e 5 operam, revertendo as arestas que controlam o recurso . O nó 4

também opera passando a hibernar. Depois disso o nó 1 opera despertando o nó 3 que

reverte suas arestas.

No sistema que será implementado para solucionar o problema de

descontaminação de grafo, o ERAh será utilizado para determinar a preferência entre os

robôs, determinando assim de qual robô é a vez de agir. Cada nó do grafo será um robô,

sendo o nó sorvedouro o que deve agir naquele instante. Os nós hibernando

representarão robôs que estão defendendo um nó do grafo a ser descontaminado para

que não haja recontaminação deste.

3.5 - Sistema e Controle Distribuídos

Um sistema distribuído é aquele no qual uma tarefa não é realizada por uma

única peça de hardware ou software, necessitando da comunicação, colaboração ou

interação entre as diversas partes para que a tarefa seja concluída. Existem diversas

montagens que implementam uma arquitetura distribuída, por exemplo, na configuração

mestre-escravo existem dois tipos de dispositivos, o primeiro tipo (mestres) coordena os

dispositivos de segundo tipo passando comandos e dados para estes (escravos). Por sua

vez os dispositivos do segundo tipo efetuam apenas os comandos que lhes são passados

pelos dispositivos do primeiro tipo.

Page 27: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

15

Os sistemas distribuídos, por sua natureza, tendem a apresentar algum tipo de

hierarquia ou diferenciação de tarefas. Algumas partes do sistema podem decidir as

ações a serem tomadas e outras apenas implementarem as ações. Outra possibilidade é

que as partes hajam independentemente, mas algumas façam apenas coleta e outras

apenas análise de materiais. Em contraposição, existem tipos de sistema distribuído sem

hierarquia, nos quais todas as partes apresentam o mesmo nível de comando sobre as

outras e os sistemas sem diferenciação de partes, nos quais cada unidade do sistema é

similar as outras, por exemplo um sistema de alarmes baseado apenas em sensores de

presença.

Já o controle distribuído é quando um controlador é designado para cada parte

do sistema, não havendo um controlador central que cuida do sistema inteiro (apesar de

poder haver uma interface que centralize a leitura de informações e estados de cada um

dos controladores). Esse tipo de sistema é muito utilizado em fábricas e usinas. Neste,

cada máquina ou pedaço da linha de produção são controlados individualmente por um

controlador próprio. Comandos podem ser emitidos para cada um dos controladores,

mas não diretamente para as máquinas, ficando a cargo dos controladores implementar

localmente cada comando e manter os elementos sob sua responsabilidade funcionando

corretamente.

Page 28: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

16

Capítulo 4

Descontaminação por Robótica Coletiva

Neste trabalho focaremos no problema de descontaminação no caso sem limpeza

de arestas, com período de descontaminação 0 (basta um agente adentrar em um nó que

este será descontaminado), período de contaminação 1 (basta estar um único momento

sem um agente defendendo um nó para que este já possa ser recontaminado) e critério

de contaminação de um vizinho contaminado (para qualquer nó descontaminado basta

haver um vizinho contaminado para haver contaminação). Isso quer dizer que, para um

nó ser realmente descontaminado, ele precisa ter um agente presente nele e todos os

seus vizinhos necessitam estar ou protegidos (com um agente no nó) ou

descontaminados. Nós que não apresentarem estas condições estarão protegidos, caso

haja um agente no nó, ou contaminados, caso não apresentem um agente em si.

Adicionalmente esse trabalho analisará casos implementados com agentes físicos e em

quantidade limitada em um ambiente discretizado.

Com as delimitações do problema bem colocadas iremos mostrar algoritmos

utilizados para solucionar o problema de descontaminação e descrever a base do sistema

robótico que será implementado para realizar a “descontaminação”.

4.1 – Algoritmos distribuídos de descontaminação

Tradicionalmente o problema de descontaminação é resolvido por soluções que

utilizam múltiplos agentes. Os tipos de soluções apresentadas podem tomar várias

formas, como algoritmos de coloração, determinação de caminhos e inundação, dentre

outros. A qualidade das soluções também é variada e pode não ser interessante para um

determinado tipo de implementação do sistema de descontaminação ou variante do

problema. Nesta sessão iremos falar sobre o algoritmo que utilizamos neste trabalho e

alguns outros exemplos de algoritmos distribuídos.

Page 29: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

17

4.1.1 - Solução Utilizando ERA

A descontaminação baseada em reversão de arestas funciona da seguinte

maneira: Consideremos um grafo orientado aciclicamente, este apresentará pelo menos

um sorvedouro. Para cada nó sorvedouro será enviado um agente. Os nós com agentes

agora estão protegidos, suas arestas são revertidas e novos nós se tornam sumidouros.

Novamente enviam-se agentes para os nós sorvedouros e se repete os passos anteriores

até que o grafo inteiro tenha sido ocupado.

Um agente deve continuar ativo até o momento que todos os nós vizinhos ao nó

que esteja ocupando tenham sido descontaminados. Depois disso o agente pode ser

desativado ou realocado para um novo nó sorvedouro.

É aqui que entra o fato de suas arestas serem orientadas e o Escalonamento por

reversão de arestas contribuem para a solução do problema. Quando há uma reversão de

arestas apenas nós vizinhos ao nó que está sendo descontaminado podem se tornar

sorvedouros. Desse modo os próximos nós que serão ocupados são nós que contribuirão

para a proteção total do nó que reverteu arestas e para a liberação do agente posicionado

nele.

Pelo fato da orientação ser acíclica todos os nós se tornarão sorvedouros em

algum momento e só se tornarão sorvedouros uma segunda vez quando todos seus

vizinhos tiverem sido ocupados ou descontaminados. Desse modo um nó já ocupado se

tornar um sorvedouro pode ser observado como um critério para saber este já foi

descontaminado.

4.1.2 – Outras soluções utilizando agentes distribuídos

Pelo grande número de variantes do problema de descontaminação, apesar de

serem encontrados vários estudos sobre o assunto, poucas soluções propostas se

enquadram na variante que estamos explorando. Outras soluções, apesar de se

enquadrarem, foram desenvolvidas para casos ou topologias (tipos de grafos)

específicos e não podem ser reaproveitadas. Ainda assim foram encontrados alguns

outros algoritmos de descontaminação que podem ser considerados.

Page 30: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

18

Um deles se baseia em escolher um nó base e a partir dele decompor o grafo em

“caminhos”, isso é, remover arestas até que não haja nenhum tipo de ciclo no grafo (um

ciclo não orientado, um caminho que retorna de um nó sem passar repetidamente em um

mesmo outro nó, que nem uma situação com um anel no grafo). Para cada “caminho” é

alocado um agente (ou dois agentes dependendo da variante do problema de

descontaminação) que irão fazer a limpeza de cada caminho (considerando as restrições

do grafo original para saberem quando podem se mover).

Outro algoritmo se baseia em descontaminar uma subseção do grafo [8], manter

agentes nos nós que ainda tiverem vizinhos contaminados e depois alocar mais agentes

para limpar outra subseção. Normalmente o número de agentes alocados representa o

tamanho da subseção que se deseja limpar.

Um terceiro algoritmo é o de descontaminação por inundação [11]. Neste caso

um agente é movido para um nó inicial. Depois disso outros agentes são alocados em

nós vizinhos ao nó previamente ocupado. Os agentes em nós descontaminados são então

liberados e novos agentes são alocados em todos os nós vizinhos (que estejam

contaminados) de nós protegidos.

4.2 – Plataforma Robótica

Esse projeto irá desenvolver uma plataforma robótica física na qual possamos

programar os robôs para que resolvam o problema de descontaminação em uma região

delimitada.

O sistema distribuído que será implementado será formado pelos robôs e por um

computador cujos únicos objetivos são inicializar os robôs com as informações

necessárias do sistema para que estes possam efetuar a limpeza e servir de canal de

comunicação. O sistema também não apresentará uma central de controle ou

coordenação como no caso de configurações mestre-escravo. O sistema apresentará

controle altamente distribuído sem diferença de hierarquia, isto é, não haverá um

dispositivo que avisa para os outros quando agirem e que desse modo controla o que

deve ser feito e como. Ao invés disso cada um dos robôs apresentará capacidade de

Page 31: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

19

interpretar o estado atual do sistema e decidir se é momento de agir e qual ação deve ser

tomada.

O ambiente discretizado citado se refere a uma grid preta com linhas de 1 cm de

espessura, sobre uma superfície branca e lisa e com as linhas e colunas um pouco

estendidas como é mostrado na figura 4.1. Cada cruzamento da grid representará uma

posição discretizada no espaço. Ou seja, corresponderá a uma região do ambiente que

está sendo simulado, podendo representar uma sala, parte de um cômodo ou parte de um

corredor. Dois cruzamentos adjacentes na grid indicam dois espaços adjacentes no

ambiente simulado.

Figura 4.1: Grid de movimentação dos robôs

Adicionalmente não será implementado, no primeiro momento, movimentação

paralela dos robôs. Os quais se movimentarão um de cada vez.

4.2.1 – Robôs

Os robôs utilizados são de um kit de desenvolvimento para educação chamado

“Beauto Rover” da empresa Vstone. Apresentam dois motores DC e um

microprocessador ARM montados em uma base perfurada (figura 4.2). Adicionalmente

a montagem que será utilizada usará um transmissor bluetooth e três conjuntos

emissor/sensor de infravermelho, sendo dois presos na parte dianteira do robô e um no

Page 32: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

20

lado direito do robô na altura da roda, o que pode ser observado nas figuras 4.3 e 4.4.

Os sensores dianteiros serão utilizados para implementar um seguidor de linha e o

lateral para identificar quando o robô passar sobre uma linha transversal à que está

seguindo. Desse modo o robô pode navegar sobre a grade determinando que chegou a

uma nova posição (cruzamento) pelo sensor lateral. A rotação é feita pelo mesmo

processo, o robô se rotaciona quando está sobre um dos cruzamentos das grades e

identifica o giro de 90 graus quando o sensor lateral passa sobre a linha da grade. Por

causa da limitação de sensores os robôs atualizam sua posição de forma relativa à sua

posição anterior e sua orientação na grade, sendo necessário inicializar esses valores e

posicionar o robô de acordo na grade.

Figura 4.2: Detalhes do robô Beauto Rover, trás

Page 33: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

21

Figura 4.3: Detalhes do robô Beauto Rover, frente

Figura 4.4: Detalhes do robô Beauto Rover, fundo

Page 34: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

22

4.2.2 – Plataforma de programação

O programa dos robôs foi desenvolvido na IDE LPCXpresso que é uma IDE de

C e C++ especializada para micro controladores. Para a comunicação foi desenvolvido

um outro código, inicialmente em Java e posteriormente em C, que conecta aos robôs

via bluetooth e gerencia a comunicação entre eles. Adicionalmente, como os robôs não

apresentavam uma interface de texto para debug rápido, foi desenvolvido também um

código em C++ que simula os robôs e reproduzia o código em C implementado no

LPCXpresso.

A implementação do código separado para gerenciar a comunicação dos robôs

se deu por uma limitação ainda não bem determinada, ou do hardware ou do código,

disponível para controle do hardware de bluetooth. Por qualquer que seja a origem da

dificuldade, o adaptador bluetooth disponível era capaz apenas de agir como servidor,

mas não como cliente bluetooth. Na programação de bluetooths, o servidor é aquele que

gera um serviço ou conexão para que outros dispositivos, os clientes, se conectem nele.

Isso quer dizer que os robôs não eram capazes de reconhecer os dispositivos de

comunicação dos outros e nem se conectarem a eles.

Para solucionar essa situação foi desenvolvido um código que funcionaria como

um canal de comunicação entre os robôs. Esse programa faz o reconhecimento de todos

os dispositivos bluetooth dos robôs e se conecta a eles, depois repassa as mensagens que

recebesse de cada robô para o robô destinatário correto. Dessa forma a comunicação

seria implementada e o programa não influenciaria no nível de distribuição de controle

do sistema.

O código foi implementado inicialmente em Java (durante a maior parte do

desenvolvimento essa versão foi utilizada) e mais tarde re-implementado em C

utilizando a biblioteca Bluez. A mudança de linguagem se deu por algumas limitações

inesperadas que apareceram e não se conseguiu corrigir. Algumas destas limitações

incluíam a capacidade de se comunicar apenas com 3 robôs por vez e a demora para

conexão.

Já o desenvolvimento do simulador se deu por dois motivos. O primeiro foi a

ausência de uma interface de texto para debug rápido nos robôs. O segundo era a

Page 35: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

23

demora para conexão bluetooth e movimentação dos robôs. Um único teste poderia

demorar um tempo elevado, principalmente quando a bateria dos robôs estava fraca,

com uma média de dois minutos nos testes mais simples. Assim, considerando que as

simulações levam apenas alguns segundos para rodar e geram logs com facilidade, foi

desenvolvido um código em C++ que simula os robôs e reproduz o código em C

implementado no LPCXpresso. Deste modo foi possível testar o funcionamento correto

do código que seria utilizado nos robôs.

4.3 – Metodologia Experimental

A primeira parte do trabalho foi focada no desenvolvimento do código de

controle dos robôs (incluindo o de simulação). Esse código foi testado para diversos

tipos de grafos que englobam todos os estados ou situações possíveis entre 2, 3 ou 4

robôs (número suficiente para gerar todas as configurações necessárias). Para cada grafo

testado foram comparadas as movimentações simuladas com as dos robôs e com as

movimentações esperadas.

Os testes utilizando robôs foram feitos sobre uma grade de 7x5, demarcada com

linhas pretas de 1cm de espessura. Nessa grade cada um dos cruzamentos representa

uma região discreta do espaço e será representada por um dos nós dos grafos de

caminho e contaminação.

Na segunda parte, os códigos dos robôs e de simulação foram modificados para

utilizarem outras implementações dos algoritmos de orientação inicial dos grafos,

determinação do robô com prioridade e seleção do próximo nó a ser ocupado. Com isso

observamos se o código dos robôs pode ser modificado com facilidade para serem

reutilizados no futuro e faremos a comparação de desempenho dos diferentes

algoritmos.

Page 36: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

24

Capítulo 5

Código e Comportamento dos Robôs

Neste capítulo apresentamos alguns detalhes do código de comportamento dos

robôs, como os robôs utilizam o algoritmo de escalonamento por reversão de arestas

para determinar a movimentação e das informações básicas que devem ser distribuídas

entre eles.

5.1 - Algoritmos e estruturas de dados para implementação dos robôs

Para o sistema robótico solucionar corretamente o problema de descontaminação

de grafos, é necessário determinar a ordem através da qual os nós deste sistema devem

ser descontaminados, qual robô deve se mover para cada nó, garantir a movimentação

dos robôs sem colisões ou erros de navegação e que cada robô não abandone um nó que

ainda possa ser recontaminado (evitando que todo o trabalho de descontaminação seja

desfeito, mantendo a monotonicidade da resposta). Para isso precisamos que cada robô

tenha uma compreensão correta do estado do grafo (quais nós estão ocupados,

contaminados, descontaminados) e da relação do grafo com a região física que deve ser

descontaminada (qual região equivale a cada no do grafo). Adicionalmente é necessário

que estes sejam capazes de se comunicar com os outros robôs para atualizar suas

informações sobre a descontaminação de novos nós do grafo e que identifiquem qual

robô deve seguir para o próximo nó a ser descontaminado (para garantir que não hajam

colisões por dois robôs tentarem ocupar o mesmo nó ou que um nó acabe por não ser

descontaminado).

Isso, no ponto de vista dos robôs, quer dizer que um robô deve saber se é sua vez

de agir (e ainda nesse ponto se pode deixar sua posição), para onde deve seguir, qual

caminho tomar até lá e deve ser capaz de receber atualizações sobre o estado global do

sistema. Para tal, cada robô apresenta um dispositivo de comunicação bluetooth e tem

conhecimento de três grafos: o Grafo de Prioridades que representa todos os robôs e

indica seu status de livre/protegendo uma região, o Grafo de Contaminação [3] que

representa a relação entre os nós (indicando quais regiões podem recontaminar outras

Page 37: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

25

regiões) e o Grafo de Caminhos [3] que indica a relação de passagens físicas entre as

regiões (quais regiões tem portas ou passagens entre si).

O Grafo de Caminhos é um grafo não orientado no qual cada nó equivale a uma

posição física discreta, podendo representar uma sala ou área delimitada. As arestas

representam passagens entre essas regiões, como portas, buracos ou apenas

continuidade espacial. Já o Grafo de Contaminação é um grafo orientado que é

atualizado pelo uso do ERA. Ele é o grafo que representa em si o problema de

descontaminação que deve ser resolvido. Ele indica também o estado de um dado nó. Se

este se encontra contaminado, protegido ou descontaminado e se há um robô presente

nele e neste caso qual robô. Adicionalmente o Grafo de Contaminação pode ser igual ao

Grafo de Caminhos, mas não necessariamente, entretanto os dois devem ter algum tipo

de relação entre os seus nós e o Grafo de Contaminação deve sempre ter um número de

nós igual ou menor ao do Grafo de Caminho.

Por fim o Grafo de Prioridades é um grafo completo (todos os seus nós estão

conectados a todos os outros nós) com arestas duplas orientadas e que é atualizado

utilizando o algoritmo ERAh. Cada um de seus nós representa um robô, sendo que nós

que estão ativos representam robôs livres para se moverem, nós hibernando representam

robôs que estão em regiões que não estão protegidas contra recontaminação e o nó

sorvedouro (nessa montagem apenas um nó por vez é capaz de ser um sorvedouro)

representa o robô com prioridade, isso é, o robô que deve se mover até o próximo nó a

ser ocupado.

Desse modo cada robô utilizará o grafo de prioridades para determinar se é sua

vez de tomar ação. Em seguida utilizará o grafo de contaminação para determinar a

posição para a qual deve se mover e o grafo de caminhos para determinar o caminho

pelo qual deve se mover para chegar a posição desejada.

Com essas informações em foco, o programa dos agentes foi dividido em quatro

partes, a primeira é a de inicialização das variáveis do robô e orientação do grafo de

contaminação. A segunda controla a movimentação e comunicação do robô, tratando do

funcionamento do hardware. A terceira parte é composta pelos grafos de caminhos, de

contaminação e de prioridades e determina a compreensão do robô quanto ao ambiente

e quais ações devem ser tomadas. A quarta parte é composta por variáveis internas e

Page 38: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

26

lógica de tratamento de mensagens, mudança de estados e representa o comportamento

ou inteligência do robô. Essa última parte é a que interpreta as informações da segunda

parte e com base nelas utiliza os comandos da primeira parte para executar as

movimentações.

Integrando as quatro partes o código final apresenta a seguinte estrutura:

Pseudocódigo da organização do código do Robô

No ponto de vista do robô pode-se dizer que este é dividido em 4 módulos. Um

de boot e inicialização, um que implementa as ações que o robô deseja tomar (controle

de hardware), um que determina onde deve direcionar seus esforços (determinar qual o

próximo nó a ser ocupado) e outro que determina que tipo de ação deve tomar (deve se

mover, esperar, etc.).

5.2 - Algoritmo de comportamento dos Robôs

No pseudocódigo da sessão anterior nos referimos a estados do robô. Um robô

pode estar em um de seis estados que indicam diferentes comportamentos que este pode

apresentar:

Inicializando: Estado no qual o robô está recebendo as informações do

problema, inicializando variáveis e orientando o grafo de contaminação. Este

estado transita apenas para o estado de espera quando a inicialização de

variáveis termina.

Inicializar variáveis internas e buffer bluetooth;

Ler buffer bluetooth até receber informações do grafo (numero nós, nó de entrada, posição

dos nós na grade);

Ler buffer bluetooth até todos os dados do grafo serem transferidos;

Inicializar grafo de caminhos, grafo de contaminação;

Orientar o grafo de contaminação e determinar o número de robôs que serão necessários;

Inicializar grafo de prioridades;

Iniciar variáveis do robô;

Em quanto numeroDeNósDescontaminados for diferente de numeroDeNósDoGrafo

{

Verificar se há uma nova mensagem;

Tratar mensagens (depende do estado do robô);

Executar ações do estado;

}

Page 39: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

27

Espera: Estado no qual o robô não tem prioridade para agir e está em uma

posição (nó do grafo) já descontaminada. Este estado pode transitar para o

estado Movimentando quando o robô receber a prioridade ou para o estado

Ajudando quando o robô receber a mensagem de pedido de ajuda.

Movimentando: Estado no qual o robô tem prioridade para agir e está trocando

de posição até chegar na posição equivalente ao nó objetivo (próximo nó a ser

descontaminado). Esse estado pode transitar para o estado Hibernando quando

o robô se mover para a posição objetivo e o nó equivalente no grafo de

contaminação não estiver seguro contra recontaminação, para o estado Espera

quando o robô se mover para a posição objetivo e o nó equivalente no grafo de

contaminação estiver seguro contra recontaminação ou para o estado Pedindo

Ajuda caso o caminho para o nó objetivo esteja obstruído por um robô.

Hibernando: Estado no qual o robô se encontra em uma posição (nó no grafo)

que pode ser recontaminada. Equivale a situação de um nó guardado do

problema de descontaminação. Esse estado pode transitar para o estado Espera

quando o nó equivalente a sua posição estiver protegido contra recontaminação

no grafo de contaminação ou para o estado Ajudando caso receba uma

mensagem de pedido de ajuda.

Pedindo Ajuda: Estado no qual o robô passa para a posição que outro robô está

ocupando e transforma o robô ajudante no robô ativo. É dividido internamente

em cinco sub-estados: Pedido Feito, Pedido Aceito, Reposicionado, Espera_PA

e Resposta Ajudados. Esse estado pode transitar para o estado Hibernando ou

Espera dependendo de se a posição ocupada estará protegida contra

recontaminação quando o nó objetivo for ocupado. Seu funcionamento será

descrito em mais detalhes na sessão 5.3.

Ajudando: Estado no qual o robô se torna ajudante do robô ativo e passa a agir

como o robô ativo. O robô deixa sua posição atual que é ocupada pelo robô ativo

(robô ajudado) e passa a se mover até a posição objetivo. Esse estado pode

transitar para o estado Hibernando ou Espera dependendo de se a posição

ocupada estará protegida contra recontaminação quando o nó objetivo for

ocupado ou para o estado Pedindo Ajuda caso o caminho para posição objetivo

esteja obstruído por outro robô. Seu funcionamento será descrito em mais

detalhes na sessão 5.3.

Page 40: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

28

O diagrama de estados correspondente pode ser observado na figura 5.1.

Figura 5.1: Diagrama de estados

5.3 – Troca de tarefas

A escolha do uso da grid se deu pela simplicidade dos robôs e a complexidade

que seria implementar um controle de posicionamento mais livre (que foi determinado

como um projeto a parte). Essa escolha fez com que as posições discretas se tornassem

atômicas, isso é, apenas um robô conseguiria estar em uma posição discreta. Se um

cruzamento representasse uma sala apenas um robô poderia estar na sala. Isso não afeta

a resolução do problema de descontaminação, mas tem grande impacto na

movimentação dos robôs. Nessa montagem um robô não consegue passar por uma

Page 41: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

29

posição na qual outro robô esteja parado, o que é uma situação inevitável nesse tipo de

problema.

Esta limitação foi a que mais impactou o projeto, sendo necessário criar um

conjunto de comportamento mais complexo para lidar com ela. Esse novo

comportamento foi baseado em torno de uma funcionalidade nomeada como troca de

tarefas e é implementada utilizando os estados Ajudando e Pedindo Ajuda. A idéia por

trás da troca de tarefas é a de que quando um robô se encontra na situação em precisa

passar por uma posição ocupada, este faz um pedindo para o outro robô trocar de função

com ele. Nesse caso o outro robô passaria a se mover em direção à posição objetivo e o

robô que fez o pedido se posicionaria na posição na qual o outro robô estava. Para tal

foram desenvolvidas seis mensagens para implementar essa funcionalidade, sendo que

uma delas, a de negação de pedido, não é utilizada, apesar de que seria importante para

um caso mais desenvolvido no qual múltiplos robôs se movessem ao mesmo tempo.

O algoritmo para a troca de tarefas é descrito a seguir:

Pseudocódigo básico do pedido de troca de tarefas e do estado ‘Pedindo Ajuda’.

Pedido de troca de tarefas é feito.

Esperar recebimento da mensagem de confirmação.

Passar para o estado Pedindo Ajuda.

Esperar recebimento da mensagem de reposicionamento do outro robô.

Se mover para a posição do próximo robô.

Mandar mensagem de reposicionamento para robô ajudante.

Se estiver ajudando um outro robô e não tiver mandado mensagem de

reposicionamento para o outro robô.

{

Mandar mensagem de reposicionamento para robô ajudado.

Esperar mensagem de reposicionamento do robô ajudado.

}

Esperar mensagem de posicionamento do robô ajudante.

Enviar para todos os robôs mensagem de posicionamento.

Sair do estado Pedindo Ajuda.

Page 42: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

30

Pseudocódigo básico de quando se recebe um pedido de troca de tarefas e do

estado ‘Ajudando’.

Com isso diversos robôs podem trocar de tarefa e realizar um único

deslocamento que precisaria passar por diversas posições ocupadas. O fato do robô que

pediu a troca de tarefas indicar seu reposicionamento apenas quando o robô a quem

pediu a troca de tarefas indica que se posicionou faz com que o algoritmo de

determinação de prioridades só mude o robô ativo depois que a posição objetivo já tiver

sido ocupada. Essa funcionalidade cria um pouco de diferença entre as escolhas dos

algoritmos de determinação de prioridades, mas mantém seus funcionamentos corretos.

Adicionalmente este pode ser adaptado , com poucas modificações, para um caso com

múltiplos agentes se movendo ao mesmo tempo.

5.4 – Algoritmos de determinação de prioridade

Determinação de prioridade é como nos referimos à parte da inteligência do

robô que reconhece qual robô (ele próprio ou outro) que deve se movimentar para o nó

Pedido de troca é recebido.

Enviar mensagem de confirmação do pedido de troca.

Passar para o estado de Ajudando.

Determinar caminho até o objetivo.

Repetir até pedir ajuda ou chegar ao objetivo.

{

Checar se próxima posição do caminho está ocupada.

Se próxima posição estiver ocupada

{

Enviar pedido de ajuda.

Passar para o caso no qual está pedindo ajuda.

}

Posicionar-se na próxima posição do caminho.

Se não tiver mandado mensagem de reposicionamento.

{

Mandar mensagem de reposicionamento para robô

ajudado.

Esperar mensagem de reposicionamento do robô

ajudado.

}

}

Mandar mensagem de que se posicionou no objetivo.

Sair do estado Ajudando.

Page 43: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

31

que deve ser ocupado. Esta determinação pode ser feita considerando proximidade do

nó ou até mesmo apenas qual robô livre apresenta um id com maior valor. A seguir são

apresentados dois algoritmos para determinação de prioridades que foram utilizados nos

testes com os robôs.

5.4.1 – Determinação de prioridades utilizando ERAh

A determinação de qual robô deve se mover para o próximo nó utilizando ERAh

funciona da seguinte forma: Considerando um grafo completo de arestas duplas

orientado aciclicamente, este apresentará pelo menos um nó que seja um sorvedouro. O

nó que for um sorvedouro corresponde ao robô que deve se mover para o próximo nó a

ser descontaminado. Esse robô tem a prioridade de se mover em relação a todos os

outros robôs. Quando o robô descontaminar o nó que deveria ocupar, este reverte as

arestas duplas do nó que equivale a ele. Isso fará com que outro nó se torne um

sorvedouro indicando o próximo robô a ter prioridade.

Figura 5.2: Exemplo de um grafo completo funcionando com ERAh

Page 44: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

32

Esse funcionamento pode ser observado na figura 5.2 na qual um grafo completo

de cinco nós tem inicialmente um nó como sorvedouro em (a). Esse nó representa o

robô ativo, quando este robô se reposiciona este reverte suas arestas passando para a

configuração (b). Em (b) outro nó se torna um sorvedouro, indicando que um outro robô

passa a ser o robô ativo (com prioridade para se movimentar para o nó que deve ser

ocupado no momento). O processo se repete passando para as configurações (c), (d) e

(e) e em um dado momento chegando em (f) que representa uma volta à configuração

(a). Por sua vez cada configuração apresenta apenas um sorvedouro, ou seja, apenas um

robô que detêm a prioridade para se mover.

Entretanto o comportamento dos nós do grafo duplo é um pouco mais complexo.

Caso o robô (que o nó representa) se mova para um nó do grafo a ser descontaminado

que ainda tenha um vizinho que não foi ocupado (como deve ser a maior parte dos

casos), este reverte suas arestas, entrando em estado de hibernação do ERAh. Caso o nó

para o qual o robô se moveu seja um nó no qual todos os seus vizinhos já estejam

ocupados, este simplesmente reverte suas arestas sem entrar em hibernação. Caso um de

seus vizinhos que esteja hibernando esteja em um nó que agora tenha todos seus

vizinhos ocupados ou descontaminados, deve-se reverter a aresta para ele, fazendo-o

despertar da hibernação. Caso o robô esteja em hibernação e seu último vizinho

contaminado tiver sido ocupado, este irá ter a aresta de recurso compartilhada

apontada para si e sairá da hibernação, revertendo a orientação de todas as suas outras

arestas .

O comportamento de entrada e saída de hibernação pode ser observado na figura

5.3. Nas passagens dos momentos (a) para (b), (b) para (c) e (c) para (d), os nós

sorvedouros passam para a hibernação indicando que o robô que representam está

guardando um nó contra recontaminação. Nas passagens de (c) para (d) e (d) para (e),

um ou mais nós são tirados da hibernação, indicando que os nós em que seus

respectivos robôs se posicionaram foram completamente descontaminados. Esses robôs

agora passam a estar livres para se mover para outra posição e isso é indicado pelo nó

que o representa voltar para o estado de ativo.

Page 45: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

33

Figura 5.3: Exemplo da dinâmica do ERAh no Grafo de Prioridades em uma situação de

descontminação

Com isso o robô implementa o algoritmo de ERAh corretamente no Grafo de

Prioridades e os robôs com prioridade podem ser facilmente determinados observado o

sorvedouro. O fato do grafo ser completo faz com que sempre haja apenas um

sorvedouro mesmo com múltiplos nós ativos.

Uma característica interessante do algoritmo de ERAh é que este também pode

ser implementado nos agentes como um algoritmo de troca de mensagens fazendo com

que cada robô não precise conhecer todo o Grafo de Prioridades para poder saber

quando agir e podendo guardar as informações necessárias em uma estrutura de dados

bem mais simples. Isso faria com que o número de mensagens trocadas entre os agentes

para determinação do robô com prioridade fosse diminuindo em determinados

momentos. Infelizmente esse fato não pode ser aproveitado na implementação nos

robôs. Isso porque, para os robôs manterem atualizadas as informações de quais

posições foram ocupadas, estes necessitam sempre receber mensagens sobre avisos de

movimentação, as quais já trazem a informação que o ERAh necessita para operar.

Page 46: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

34

5.4.2 – Determinação de prioridades utilizando duas listas

Outra opção de algoritmo para determinação de prioridades seria a de utilizar

duas listas ordenadas de robôs. Uma lista de agentes ativos e outra de agentes ocupados

(hibernando no algoritmo de ERAh). O primeiro robô da lista de agentes ativos seria o

robô com prioridade. Quando um robô ocupa um nó que ainda tenha algum vizinho

contaminado este é movido para o final da lista de agentes ocupados. Do mesmo modo,

quando o último nó vizinho contaminado de um nó é ocupado, move-se o robô

posicionado neste nó para o fim da lista de agentes ativos. Caso haja mais de um robô

nessa condição, estes são passados para a lista de agentes ativos na ordem em que

aparecem na lista de agentes ocupados. Esse algoritmo, além de mais simples, também

utiliza uma estrutura de dados bem mais simples que o baseado em ERAh e apresenta

funcionamento similar para o caso de ERAh grafo completo.

5.5 - Algoritmos utilizados para a determinação do movimento

Determinação de movimento, ou seleção de próximo nó, é como nos referimos à

parte da inteligência do robô que indica qual deve ser o próximo nó a ser

descontaminado. Aqui apresentamos dois algoritmos para seleção de próximo nó que

foram utilizados nos testes com os robôs.

5.5.1 – Seleção de próximo nó usando ERA

Utilizamos uma pequena variação do algoritmo de Escalonamento por Reversão

de Arestas para se determinar a próxima posição a ser ocupada. Como comentado em

2.1, o algoritmo de Escalonamento por Reversão de Arestas pode ser utilizado para se

determinar quais nós devem ser descontaminados. Este algoritmo garante que um nó

que está sendo protegido por um robô não será elegível para ser ocupado por outro robô

enquanto não for completamente decontaminado (só será novamente um sumidouro

quando todos seus vizinhos estiverem ocupados ou descontaminados). Um nó (que

equivale a uma região física a ser descontaminada) é elegível como ponto a ser ocupado

Page 47: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

35

se este for um sorvedouro (sink) no Grafo de Contaminação, ou seja, tiver todas as suas

arestas apontadas para si.

Note que ser um sorvedouro não indica que o nó deve ser ocupado, mas apenas

que é elegível para ser ocupado e atuar (reverter as arestas). Deve-se também determinar

se o nó está no estado contaminado ou se já foi descontaminado ou ocupado.

Quando um nó for ocupado, por sua vez, este irá reverter a direção de todas as

suas arestas, fazendo com que novos nós se tornem sorvedouros. Adicionalmente o robô

que se posicionou nele indicará para os outros robôs que ocupou uma nova posição

(enviando uma mensagem de movimentação). Ao fazer isso, o grafo de prioridades,

utilizado para determinar qual será o próximo robô a se mover, também é atualizado.

No grafo de prioridades o nó que for um sorvedouro representa o robô que deve

se movimentar. Quando o robô equivalente mandar uma mensagem indicando que

chegou à posição que deveria, é analisado se aquela posição tem algum vizinho

desocupado e contaminado. Em caso positivo, é considerado que o robô passa para o

estado de hibernação, senão se mantém em estado ativo. O grafo de prioridades é então

atualizado de acordo com o novo estado.

As diferenças entre o algoritmo implementado e outras variantes arbitrárias do

ERA são basicamente duas. Primeiramente, os sorvedouros não revertem a direção de

suas arestas (atuam) todos ao mesmo tempo, representando a limitação de um único

robô se movendo por vez. E que dentre os sorvedouros aquele que será o próximo a ser

ocupado é o que apresentar em ordem os seguintes atributos:

1. Ter o menor número de vizinhos em estado contaminado.

2. Ter o maior número de vizinhos já ocupados.

3. Ter o maior número de vizinhos.

4. Ter o maior ID.

Com isso cada vez que um nó é ocupado um novo conjunto de sorvedouros é

formado e um deles é selecionado como a posição objetivo. O robô que estiver marcado

com prioridade no grafo de prioridades passa então a se movimentar para a posição

objetivo.

Page 48: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

36

Nos referiremos a esse algoritmo como algoritmo de seleção por desempate.

5.5.2 – Seleção de próximo nó usando decomposição lambda

Um segundo algoritmo de determinação do próximo nó a ser ocupado foi

implementado. Este é baseado na decomposição por sumidouros descrita anteriormente.

Nesse algoritmo os nós na camada λ0 são marcados e selecionados um a um usando os

mesmos critérios de seleção do algoritmo anterior de apresentar em ordem os atributos:

1. Ter o menor número de vizinhos em estado contaminado.

2. Ter o maior número de vizinhos já ocupados.

3. Ter o maior número de vizinhos.

4. Ter o maior ID.

Apenas após todos serem ocupados é que as arestas são revertidas determinando

novos sorvedouros que podem ser selecionados como posição objetivo. Isso equivale a,

na decomposição por sorvedouros, reverter as arestas de todos os nós na primeira

camada e então passar os nós da segunda camada para a primeira.

Nos referiremos a esse algoritmo como algoritmo de seleção por decomposição

lambda.

5.6 - Algoritmo de determinação de caminho

Para a determinação de qual caminho um robô deve tomar para chegar à posição

referente ao nó que deve ser ocupado. Para tal foi implementado um algoritmo de busca

baseado em inundação de grafos. Nesse algoritmo o nó inicial é o nó que equivale à

posição na qual o robô se encontra. O pseudocódigo do algoritmo está descrito a seguir:

Page 49: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

37

Algoritmo para determinação de caminho.

O funcionamento desse algoritmo pode ser observado também na figura 5.2.

Aqui o agente se encontra incialmente no nó 4 (nó inicial marcado por P) e deseja

chegar no nó 2 (nó objetivo marcado com X). Desse modo ele manda mensagens para

seus vizinhos que marcam qual nó lhes enviou a mensagem. Isso se repete até o nó X

receber a mensagem. O caminho é então reconstruindo verificando-se quais os nós que

enviaram as mensagens.

Lista_de_busca é uma lista de nós vazia.

Lista_caminho é uma lista de nós vazia.

Nó_inicial é o nó no qual o robô está posicionado.

O nó atual recebe o valor do nó_inicial.

Repetir até um vizinho ser o nó objetivo.

{

Do nó atual todos os seus vizinhos que não estão

marcados são marcados com o ID do nó e adicionados a

lista_de_busca.

Caso um de seus vizinhos seja o nó objetivo saia do

loop.

O próximo nó da lista de busca é selecionado como nó

atual.

}

Adicionar o nó objetivo na lista_caminho.

Nó_atual recebe o nó objetivo.

Repetir até o nó_inicial ser adicionado à lista_caminho.

{

Adiciona o nó com o id que foi marcado no nó_atual

no início de lista_caminho.

Nó_atual recebe o nó com id que está marcado em si.

}

Limpar a marcação em todos os nós.

Page 50: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

38

Figura 5.4: Funcionamento de um algoritmo de busca por inundação de grafos

5.7 – Troca de informações

Lembrando que, como os robôs representam um sistema distribuído e de

controle descentralizado (não existe um agente coordenador no sistema), é de suma

importância garantir que todos tenham acesso ao estado atual grafo (tanto que tenham a

mesma informação, quanto que esta informação esteja correta), ou pelo menos das

partes em que devem atuar. Caso não tenha essa informação atualizada, um robô pode

tomar decisões incorretas como achar que não pode deixar sua posição ou achar que um

robô que não está presente esteja em seu caminho.

No ponto de vista dos robôs, seu trabalho está terminado quando todos os nós do

grafo estão descontaminados. Do mesmo modo, observando o estado dos nós do grafo,

estes sabem que podem se movimentar ou se devem permanecer guardar uma posição.

Desse jeito os robôs compreendem parcialmente o problema de

contaminação/descontaminação, sabendo que não estão livres para se movimentar caso

o nó que estejam ocupando não tenha seus vizinhos ocupados ou descontimanados

(exceto no caso de um “pedido de ajuda” de outro robô, como definido na sessão

Page 51: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

39

anterior). Entretanto estes não apresentam sensores complexos que obtenham esse tipo

de informação. São capazes apenas de determinar sua própria posição utilizando sua

posição atual (inicializada quando ligamos os robôs) e os movimentos que fazem. Desse

modo dependem que outros robôs informem suas posições atuais para que saibam quais

nós estão ocupados e como devem agir.

Logo, para garantir que todos os robôs tenham o mesmo conjunto de

informações e sejam capazes de articular-se corretamente, devemos definir um conjunto

de protocolos ou mensagens para que estes comuniquem a outros robôs onde se

encontram ou que determinadas ações ou tarefas foram concluídas. Considerando as

limitações físicas do sistema e que os algoritmos de decisão de movimentação são

implementações do algoritmo de ERA, foram implementadas as seguintes mensagens:

Movimentação: Mensagem enviada quando um robô para em uma nova

posição. Esta mensagem não é enviada quando um robô chega em uma posição

qualquer, mas sim apenas quando chega a uma posição final. Indica que um nó

foi ocupado.

Pedido de ajuda: É a mensagem enviada quando um robô chega na situação

limite de precisar passar por uma posição ocupada por outro robô para chegar ao

seu nó objetivo. É enviada para o robô que está “no caminho” e necessita de

uma resposta de aceitação. Caso aceito, o robô que enviou a mensagem de

pedido de ajuda passa para o estado “SENDO AJUDADO” e o robô que

confirmou a ajuda passa para o estado “AJUDANDO”. Sua utilização é

mostrada nos pseudocódigos da sessão 5.3.

Mensagens para ajuda: Mensagens que tratam da situação limite no qual um

robô está pedindo ajuda para outro. Estas são divididas em 5 subtipos:

confirmação, negação, conclusão, liberação e ocupação. A dinâmica básica

dessas mensagens é descrita nos pseudocódigos da sessão 5.3.

Dados de inicialização: Mensagem que contém apena dados para serem

utilizados na inicialização dos grafos.

Page 52: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

40

5.8 - Algoritmo de orientação inicial dos grafos

Como foi dito anteriormente, o algoritmo de ERA depende de uma orientação

acíclica das arestas do grafo. Não só isso, mas é a orientação inicial que determina a

ordem em que os nós se tornarão sorvedouros. No problema analisado isso representa a

ordem em que as regiões serão ocupadas para descontaminação. Muitos dos algoritmos

para orientação de grafos são baseados em sorteios de valores para cada um dos nós e

orientação dos nós de acordo com esses valores. Esse tipo de algoritmo pode apresentar

melhoras em algumas características das orientações finais, incluindo a concorrência,

mas não é interessante para nossa implementação onde os robôs são mantidos com o

mesmo nível de hierarquia e funcionalidades. Isso porque não temos um robô que

determina a orientação dos grafos e depois a repassa para os outros robôs (mesmo que

isso seja possível), mas todos os robôs individualmente determinam qual é a orientação

correta que devem seguir. Além disso o algoritmo apresenta outras limitações: o nó de

entrada é pré-especificado, a solução final de descontaminação deve ser monotônica e

tentar minimizar o número de robôs necessários e apenas nós que não tenham nenhum

vizinho no grafo de caminhos ocupado por um agente não podem ser sorvedouros.

Além disso, para garantir que as orientações do Grafo de Contaminação em cada

robô sejam as mesmas (isso é, as informações em cada robô são iguais) o algoritmo de

orientação do grafo deve ser determinístico. Aqui apresentamos dois algoritmos para

gerar a orientação inicial de grafos que foram utilizados nos testes com os robôs.

5.8.1 – Algoritmo de orientação acíclica inicial por desempate

O algoritmo de orientação acíclica inicial por desempate foi montado tendo em

vista todas as limitações impostas para a orientação do grafo. O pseudocódigo do

algoritmo está descrito a seguir.

Page 53: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

41

Algoritmo de orientação do Grafo de Contaminação.

Desse modo a orientação montada tenta ocupar o mais rápido possível nós que

descontaminem outros nós protegidos ou que precisem de menos agentes para serem

descontaminados, diminuindo assim o número de agentes necessários para

descontaminação total do grafo.

Nos referiremos a esse algoritmo como algoritmo de orientação por desempate.

5.8.2 – Algoritmo de orientação acíclica inicial por pseudo

decomposição em sorvedouros

Um segundo algoritmo de orientação determinístico também foi implementado.

Neste segundo algoritmo o nó de entrada é pré-determinado e todas suas arestas são

Orientar todos as arestas do nó de entrada para o nó de entrada.

Adicionar a lista de nós candidatos todos os vizinhos do nó de entrada conectados

no Grafo de Caminho.

Inicializar s contadores do total de 1 agente e 0 agentes livres.

Número de iterações = 1;

Repetir até a lista de candidatos estar vazia ou ao numero de iterações ser igual ao

número de nós:

{

Verificar a lista de nós candidatos:

{

Determinar os nós com menor número de vizinhos desocupados.

Caso haja empate determinar o com maior número de vizinhos.

Caso haja empate determinar o com maior número de vizinhos não

ocupados que também são vizinhos no Grafo de Caminho.

Caso haja empate escolher o nó com menor id.

}

Remover o nó escolhido da lista de candidatos.

Orientar as arestas não orientadas do nó escolhido para ele.

Adicionar os nós vizinhos do nó escolhido que também são vizinhos do nó

equivalente no Grafo de Caminhos à lista de candidatos.

Caso haja agentes livres número de agentes livres é decrementado em 1, caso

contrário número total de agentes é incrementado em 1.

Para cada um dos vizinhos do nó escolhido:

{

Caso esteja ocupado e todos os seus vizinhos tenham sido ocupados

número de agentes livres é incrementado em 1;

}

}

Page 54: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

42

orientadas para si. Depois disso todos seus vizinhos são postos em uma lista. Esta lista

contém todos os nós vizinhos de nós que já tiveram suas arestas orientadas. Depois

disso para cada nó na lista se verifica se um de seus vizinhos também está na lista. Caso

haja vizinhos na lista, um destes é selecionado utilizando os seguintes critérios:

1. Ter o menor número de vizinhos em estado contaminado.

2. Ter o maior número de vizinhos já ocupados.

3. Ter o maior número de vizinhos.

4. Ter o maior ID.

O nó que não foi selecionado é marcado como não elegível na rodada. Depois de

passar por todos os nós na lista os nós que não foram marcados têm suas arestas não

orientadas direcionadas para si, são removidos da lista e seus vizinhos no Grafo de

Caminhos que não tiveram todos os seus nós direcionados ainda são adicionados à lista

e os nós que foram marcados como não elegíveis na rodada são desmarcados. O

processo é repetido até que todos os nós tenham tido todas suas arestas orientadas.

Page 55: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

43

Algoritmo alternativo de orientação do Grafo de Contaminação.

Nos referiremos a esse algoritmo como algoritmo de orientação por pseudo

decomposição em sorvedouros.

5.9 – Análise dos resultados

Primeiramente foi verificado o funcionamento correto do sistema, tanto em

deslocamento correto dos robôs quanto em seleção correta e coerente de quais nós

Orientar todas as arestas do nó de entrada para o nó de entrada.

Adicionar à lista de nós candidatos todos os vizinhos do nó de entrada conectados

no Grafo de Caminho.

Inicializar os contadores do total de 1 agente e 0 agentes livres.

Número de iterações = 1;

Repete até o número de iterações ser igual ao número de nós:

{

Repete até a lista de candidatos estar vazia

{

Verificar a lista de nós candidatos:

{

Determinar os nós com menor número de vizinhos

desocupados.

Caso haja empate determinar o nó com maior número de

vizinhos.

Caso haja empate determinar o nó com maior número de

vizinhos não ocupados que também são vizinhos no Grafo de Caminho.

Caso haja empate escolher o nó com menor id.

}

Marcar o nó escolhido como orientado.

Remover o nó escolhido da lista de candidatos.

Orientar as arestas não orientadas do nó escolhido para ele.

Remover os vizinhos do nó escolhido que também estão na lista de

candidatos da lista de candidatos.

Caso haja agentes livres número de agentes livres é decrementado

em 1, caso contrário número total de agentes é incrementado em 1.

Incrementar o número de iterações em 1.

}

Adicionar os nós que já têm alguma aresta orientada mas não foram

marcados como orientados à lista de candidatos.

}

Page 56: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

44

devem ser ocupados. As figuras 5.5, 5.6, 5.7 e 5.8 mostram quatro momentos do

funcionamento do sistema na descontaminação de um grafo.

Figura 5.5: Exemplo do sistema robótico em funcionamento no step 0

Figura 5.6: Exemplo do sistema robótico em funcionamento no step 9

Page 57: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

45

Figura 5.7: Exemplo do sistema robótico em funcionamento no step 21

Figura 5.8: Exemplo do sistema robótico em funcionamento no step 23

O sistema foi testado para oito casos distintos, nos quais se esperava verificar

todas as transições de estados e tipos de relação entre nós. Os robôs tanto completam

corretamente os deslocamentos no grafo (considerando as delimitações do problema)

quanto determinam corretamente a ordem de ocupação dos nós.

Após a implementação e teste do sistema dos robôs reprogramamos os robôs a

fim de explorar a dificuldade de reutilização do código dos robôs e os diferentes

algoritmos de orientação acíclica de grafo, determinação do robô com prioridade e

escolha do próximo nó a ser ocupado. As combinações desses algoritmos geraram oito

variantes de códigos para os robôs, exploramos assim algumas variantes de

Page 58: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

46

comportamento dos agentes e analisamos os quais tendiam a apresentar um número

menor de agentes. Os algoritmos usados para gerar as variantes foram: o algoritmo de

determinação de prioridades utilizando ERAh, algoritmo de determinação de

prioridades utilizando duas listas, algoritmo de seleção por desempate, algoritmo de

seleção por decomposição lambda, algoritmo de orientação por desempate e algoritmo

de orientação por pseudo decomposição em sorvedouros. Cada variante foi montada

utilizando um algoritmo de orientação acíclica inicial, um algoritmo de determinação de

prioridade e um algoritmo de seleção do próximo nó.

Tabela 5.1 – Composição das combinações de algoritmos

Algoritmo Variante Combinação

1 2 3 4 5 6 7 8

Orientação

Acíclica Inicial

Desempate X X X X

Pseudo

Decomposição em

Sorvedouros

X X X X

Seleção de

Prioridade

ERAh X X X X

2 Listas X X X X

Seleção do

Próximo Nó

Desempate X X X X

Decomposição

Lambda X X X X

As combinações foram montadas como demarcadas em cada coluna da tabela

5.1 e nomeadas de 1 a 8. As combinações são respectivamente:

Variante 1: algoritmo de orientação por desempate com algoritmo de

determinação de prioridades utilizando duas listas e algoritmo de seleção

por desempate.

Variante 2: algoritmo de orientação por pseudo decomposição em

sorvedouros com algoritmo de determinação de prioridades utilizando

duas listas e algoritmo de seleção por desempate.

Page 59: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

47

Variante 3: algoritmo de orientação por desempate com algoritmo de

determinação de prioridades utilizando ERAh e algoritmo de seleção por

desempate.

Variante 4: algoritmo de orientação por pseudo decomposição em

sorvedouros com algoritmo de determinação de prioridades utilizando

ERAh e algoritmo de seleção por desempate.

Variante 5: algoritmo de orientação por desempate com algoritmo de

determinação de prioridades utilizando duas listas e algoritmo de seleção

por decomposição lambda.

Variante 6: algoritmo de orientação por pseudo decomposição em

sorvedouros com algoritmo de determinação de prioridades utilizando

duas listas e algoritmo de seleção por decomposição lambda.

Variante 7: algoritmo de orientação por desempate com algoritmo de

determinação de prioridades utilizando ERAh e algoritmo de seleção por

decomposição lambda.

Variante 8: algoritmo de orientação por pseudo decomposição em

sorvedouros com algoritmo de determinação de prioridades utilizando

ERAh e algoritmo de seleção por decomposição lambda.

Para cada caso (grafo a ser descontaminado) rodado foram computados diversos

fatores, como o número de robôs utilizados, se houve algum robô recebendo prioridade

muito mais vezes do que outros, o número médio de movimentos por robô e o número

de pedidos de ajuda que foram feitos. No fim do levantamento de dados se determinou

que os fatores que realmente diferenciavam as combinações de algoritmos eram o

número de robôs utilizados e o total de passos dados. Ao total foram analizadas 19

situações diferentes.

5.9.1 – Sobre o número de agentes

De forma geral, nos casos simulados, os algoritmos se comportaram de forma

similar. Desse modo, o número de agentes utilizados em cada caso tenderam a serem

iguais ou apenas dois valores diferentes (não foram observados casos em que cada

algoritmo utilizou um número diferente de robôs nem que houveram três valores

Page 60: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

48

diferentes para o número de robôs utilizados). Os valores levantados podem ser vistos

na tabela 5.2. Dentre as combinações de algoritmos testadas as que apresentaram mais

vezes um número inferior de agentes (7 vezes) e menos vezes um número superior de

agentes (2 vezes) foram as combinações: 1, 3 (algoritmo de seleção por desempate e

orientação por desempate tanto com o uso do ERAh quanto das duas listas para

estrutura de dados de prioridade) e a combinação 5 (algoritmo de seleção por

decomposição lambda e orientação com seleção por desempate utilizando as duas listas

como estrutura de determinação de prioridade).

Tabela 5.2 – Contagem de robôs utilizados por cada combinação em cada caso de teste

Caso de

teste

Combinação

1 2 3 4 5 6 7 8

1 4 4 4 4 4 4 4 4

2 2 2 2 2 2 2 2 2

3 3 3 3 3 3 3 3 3

4 3 3 3 3 3 3 3 3

5 3 3 3 3 3 3 4 4

6 4 4 4 4 4 4 4 4

7 5 5 5 5 5 5 5 5

8 4 3 4 4 4 3 4 4

9 4 5 4 5 4 5 4 5

10 8 8 8 8 6 6 6 6

11 6 6 6 6 6 6 6 6

12 4 6 4 6 4 6 4 6

13 3 3 3 3 3 4 4 4

14 3 3 3 3 3 4 3 4

15 3 3 3 3 3 3 3 3

16 5 5 5 5 5 5 5 5

17 5 5 5 5 7 7 7 7

18 5 5 5 5 5 5 5 5

19 4 5 4 5 4 5 4 5

Total 78 81 78 82 78 83 80 85

A combinação que apresentou o maior número de agentes utilizados foi a

combinação 8 (algoritmo de seleção por decomposição lambda com orientação por

desempate utilizando o ERAh para determinação do agente com prioridade). Este

Page 61: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

49

apresentou um número superior de agentes em 8 casos e um número inferior em apenas

1 caso.

5.9.2 – Sobre o número de passos

Considerando as distâncias totais percorridas pelos robôs (considerando que

todas as posições têm mesma distância para todos os seus vizinhos) a combinação 1

(algoritmo de seleção por desempates e orientação por desempate com o uso das duas

listas) foi a que apresentou menor número de passos (percorreu assim menor distância)

no geral. Já a combinação 6 (algoritmo de seleção por decomposição lambda e

orientação por decomposição de sumidouros utilizando as duas listas) foi a que

apresentou maior número de passos dados pelos robôs. Esta seleção foi uma das que

mais alocou agentes, mesmo não tendo sido a combinação que mais alocou. Os valores

levantados podem ser vistos na tabela 3.

Tabela 5.3 – Número total de passos dado por todos os robôs em cada caso de teste

usando cada combinação de algoritmos

Caso de

teste

Combinação

1 2 3 4 5 6 7 8

1 19 20 20 20 19 20 20 20

2 11 11 11 11 11 11 11 11

3 8 8 8 8 8 8 8 8

4 17 17 17 17 17 17 17 17

5 17 17 17 17 17 17 18 18

6 29 30 29 30 32 33 32 33

7 27 27 27 27 27 27 27 27

8 20 19 20 21 18 21 22 23

9 20 20 20 20 20 20 20 20

10 69 69 75 75 69 70 69 70

11 65 65 67 67 79 79 69 69

12 28 37 28 37 30 37 30 37

13 30 30 30 30 30 36 36 36

14 30 30 30 30 30 36 30 36

15 27 27 27 27 27 27 27 27

16 16 16 16 16 16 16 16 16

17 31 31 30 30 30 29 29 29

18 32 33 34 35 36 35 34 33

19 20 21 20 22 20 21 20 22

Total 516 528 526 540 536 560 535 552

Page 62: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

50

5.9.3 – Comparação das combinações de algoritmos

Dentre as combinações que utilizaram o menor número de agentes, a

combinação 1 (algoritmo de seleção por desempates e orientação por desempate com o

uso das duas listas) também foi a com menor número acumulado de passos e a que

apresentou menor número de passos na maior parte dos casos (não simplesmente teve

um caso testado em que desempenhou muito melhor do que os outros). Assim a

combinação 1 se mostrou superior às outras . Já a combinação 5 (algoritmo de seleção

por decomposição lambda e orientação com seleção por desempate, utilizando as duas

listas como estrutura de determinação de prioridade) foi a que apresentou maior número

de passos entre as três combinações com menor número de agentes alocados, se

mostrando menos eficiente que as combinações 1 e 3.

Já a combinação 8 se mostrou a menos eficiente em termos de alocação de

agentes, sendo a que utilizou mais agentes. A combinação 6, por sua vez, não utilizou

um número tão elevado de agentes quanto a 8, mas apresentou menor eficiência no uso

de cada agente, computando um maior total de passos.

Page 63: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

51

Capítulo 6

Conclusão

Neste trabalho apresentamos o problema de descontaminação e as características

de uma implementação em agentes robóticos que executam uma solução para este.

Adicionalmente descrevemos algumas possíveis variações nos algoritmos e estruturas

de dados principais dos agentes robóticos e comparamos seus desempenhos. Ainda

assim, o dado mais importante foi o levantamento das dificuldades e fatores extras que

devem ser relevados na implementação física dos agentes.

6.1 – Contribuições

O sistema final, englobando grade impressa, conjunto de robôs montados, e

código para os robôs e simulador reconfiguráveis, foi completado e pode ser usado

como base para testar e comparar novos algoritmos já considerando as restrições de uma

implementação física. O sistema deve ficar a disposição no Laboratório de Inteligência

Artificial para desenvolvimento de projetos futuros.

6.2 – Trabalhos Futuros

O próximo passo para progredir o tema seria a criação de um conjunto de

protocolos e mensagens para a movimentação correta de vários robôs ao mesmo tempo.

No momento o sistema pode representar o resultado equivalente a uma movimentação

múltipla, mas não a simula nem a recria tratando sua complexidade. A movimentação

paralela dos agentes é uma das características mais interessantes de um sistema de

robótica coletiva e por isso seria muito desejável que seja implementada e que os

aspectos necessários para sua implementação sejam mapeados.

Page 64: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

52

Bibliografia

[1] CARVALHO, D., PROTTI,FABIO, GREGORIO, MASSINO DE, FRANÇA,

FELIPE M. G., A novel distributed scheduling algorithm for resource sharing

under near-heavy load. Lecture Notes in Computer Science, v.3544, p. 431-442,

2005.

[2] FOMIN, FEDOR V., THILIKOS, DIMITRIOS M., An annotated bibliography on

guaranteed graph searching. Theoretical Computer Science, v.399, n.3, p.236-245,

June 2008.

[3] ALVES DS, SOARES EE, STRACHAN GC, CARVALHO GP, XAUD MF,

COUTO MV, MENDONÇA RM, FREITAS RS, SANTOS TM, GONÇALVES

VC, MOURELLE LM, NEDJA N, MACULAN N, LIMA PM, FRANÇA FM. A

Swarm Robotics Approach to Decontamination. Mobile Ad Hoc Robots and

Wireless Robotic Systems: Design and Implementation: Design and

Implementation. 2012 Dec 31:107.

[4] VANESSA CARLA F. GONÇALVES, FELIPE M. G. FRANÇA, NELSON

MACULAN, PRISCILA M. V. LIMA, SER-Based Web Graph Decontamination.

First Worskhop INCT WebScience, PUC-RIO.

[5] DANIEL SANTOS FERREIRA ALVES, Extensões para o Mecanismo ERA

aplicado a Descontaminação de Grafos. Trabalho de conclusão de curso (Instituto

de Ciência da Computação) da Universidade Federal do Rio de Janeiro, Maio 2011.

[6] DIEGO MOREIRA DE ARAUJO CARVALHO, Escalonamento distribuído por

reversão de arestas com reconfiguração dinâmica de carga. M.Sc. dissertation,

COOPE/Universidade Federal do Rio de Janeiro, Maio 2004.

[7] VANESSA CARLA FELIPE GONÇALVES, Descontaminação distribuída de

grafos. M.Sc. dissertation, COOPE /Universidade Federal do Rio de Janeiro, Junho

2011.

[8] JOHN PENUEL, J. COLE SMITH, SIQIAN SHEN, Integer Programming Models

and Algorithms for the Graph Decontamination Problem with Mobile Agents.

Journal Networks, v.61, n.1, p. 1-19, January 2013.

[9] JIE CAI, PAOLA FLOCCHINI, NICOLA SANTORO, Distributed Black Virus

Decontamination and Rooted Acyclic Orientations. CIT/IUCC/DASC/PICom 2015:

1681-1688.

[10] ALVES, DANIEL S. F., GONÇALVES, VANESSA C. F., LIMA, PRISCILA M.

V., MACULAN, NELSON, França, Felipe M. G., G-DI: a Graph Decontamination

Iterator for the Web. ACM Web Science 2011, 2011, Koblenz Proceedings of the

ACM WebSci’11, 2011, p. 1-4.

Page 65: UMA SOLUÇÂO EM ROBÓTICA COLETIVA PARA …monografias.poli.ufrj.br/monografias/monopoli10017126.pdf · Lista de Figuras 2.1 ... em robótica coletiva como sistemas distribuídos

53

[11] FLOCCHINI,, Paola, HUANG, MIAO JUN, LUCCIO, FLAMINIA L.,

Decontamination of Hypercubes by Mobile Agents. Jurnal Networks v. 52(n. 3),

p.167-178, October 2008.