• Nenhum resultado encontrado

UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA BACHARELADO EM ENGENHARIA DE COMPUTAÇÃO FERNANDO ALBERTO CORREIA DOS SANTOS JUNIOR SUAVIZAÇÃO DE ROTAS USANDO CURVAS DE BÉZIER E LÓGICA FUZZY Feira de Santana 2012

N/A
N/A
Protected

Academic year: 2021

Share "UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA BACHARELADO EM ENGENHARIA DE COMPUTAÇÃO FERNANDO ALBERTO CORREIA DOS SANTOS JUNIOR SUAVIZAÇÃO DE ROTAS USANDO CURVAS DE BÉZIER E LÓGICA FUZZY Feira de Santana 2012"

Copied!
61
0
0

Texto

(1)

BACHARELADO EM ENGENHARIA DE COMPUTAÇÃO

FERNANDO ALBERTO CORREIA DOS SANTOS JUNIOR

SUAVIZAÇÃO DE ROTAS USANDO CURVAS DE BÉZIER E LÓGICA FUZZY

Feira de Santana 2012

(2)

SUAVIZAÇÃO DE ROTAS USANDO CURVAS DE BÉZIER E LÓGICA FUZZY

Trabalho de Conclusão de Curso apresentado ao curso de Engenharia de Computação da Universidade Estadual de Feira de Santana, como requisito parcial para a obtenção do título de Bacharel em Engenharia de Computação.

Orientador: Prof. Dr. Matheus Giovanni Pires.

Feira de Santana 2012

(3)
(4)

Issac Asimov Porque Dele, e por meio Dele, e para Ele são todas as coisas. A Ele, pois, a glória eternamente. Amém! Romanos 11:36

(5)

Agradeço aos meus pais Ivone, Arielson e Fernando (em memória) pelo amor e suporte incondicional, pelo exemplo de honestidade, humildade e fé. Em especial minha mãe, que sempre foi minha base, que me ensinou logo cedo a como vencer obstáculos, que me permitiu ter pai Arielson como segundo pai e que me deu a minha irmã.

Sou grato a minha irmã Ariane, meu grande orgulho, por estar sempre do meu lado seja na alegria ou na tristeza.

Agradeço também as minhas avós Fia e Elvira, com elas aprendi que no caminho há difíceis desafios a serem vencidos e que são esses desafios que fazem a vida valer a pena.

Agradeço à todos meus colegas e amigos de turma, em especial aqueles que foram de extrema importância nessa caminhada, Fladmy, Isabela, Jhielson, Thayane, Jody, André Souza, Anderson Marques, Nathalia e a Antônio Gabriel. Obrigado pelos bons momentos e pela união nos momentos de dificuldade, sejam eles nos PBLs, PAs, PET, TCC ou perdidos na Europa. Um agradecimento mais que especial a João Carlos, que além de ser um amigo, irmão e quase pai, me proporcionou a honra e satisfação de ser seu padrinho de casamento, também é meu afilhado!

Agradeço imensamente aos meus professores, dos quais eu tive a honra de ser aluno, em especial ao professor Matheus Giovanni Pires, pela orientação e paciência ao longo desse trabalho. Agradeço também àquele que, mais que professor, é também um grande amigo, o qual ainda devo uma rodada de Heineken, professor Delmar Broglio, que ao longo dos últimos anos foi meu professor, tutor e, principalmente, conselheiro para assuntos acadêmicos, profissionais e pessoais. Delmar foi o cara que abriu minha mente para o mundo, que me fez ver que lá fora as possibilidades são infinitas, que nunca devo deixar de tentar e que sou capaz de fazer aquilo que eu quiser fazer.

Por fim, sou grato à Deus, por existir, por ter me dado a melhor mãe, os melhores pais e a melhor irmã que alguém poderia ter, por ter me permitido conviver com as melhores avós do mundo, pela minha família, por meus amigos, por todos os meus mestres e por tudo que ainda está por vir.

(6)

A Navegação Autônoma de Robôs Móveis é uma área de estudo que cresce a cada dia mais, e hoje muitas são as soluções propostas para este problema. O grande interesse nessa área se deve ao fato de que esses sistemas autônomos podem automatizar tarefas do mundo real que podem colocar em risco a integridade humana. Neste sentido, este trabalho descreve um estudo, modelagem e implementação de um controlador fuzzy com o objetivo de melhorar a rota gerada pelo planejador de rotas, proporcionando ao robô um caminho mais seguro e menor, para que ele possa executar a sua tarefa de forma satisfatória. O robô em questão é o Pioneer-3AT produzido pela MobileRobots. Neste trabalho são apresentadas etapas importantes, tais como, um estudo acerca do Pioneer-3AT, dos simuladores disponíveis, da navegação de robôs móveis autônomos, da utilização de Curvas de Bézier para a suavização de rotas, além de apresentar o modelo de controlador fuzzy Mamdani. O sistema proposto e sua arquitetura também são detalhados. Por fim, são discutidos os resultados obtidos ao longo do desenvolvimento do projeto e dos experimentos realizados.

(7)

The Autonomous Navigation of Mobile Robots is a field of study that is growing more every day, and today there are many solutions proposed to solve this problem. The great interest in this area is due to the fact that these autonomous systems can automate real-world tasks that can endanger human integrity. Thus, this work describes a study, modeling and implementation of a fuzzy controller in order to improve the route generated by the route planner, giving the robot a more secure and smaller route, so it can perform its task satisfactorily . The robot in question is produced by Pioneer-3AT MobileRobots. This work presents important steps, such as a study of the Pioneer-3AT, the available simulators, navigation of autonomous mobile robots, the use of the Bezier curves to smoothing routes, in addition to presenting the Mamdani fuzzy controller. The proposed system and its architecture are also detailed. Finally, we discuss the results obtained during the development of the project and from experiments.

(8)

Figura 1 Pioneer 3-AT. 15 Figura 2 A arquitetura cliente/servidor da plataformas. 15 Figura 3 Exemplo de um Grafo Generalizado de Voronoi. 20

Figura 4 Exemplo de um Grid Regular. 20

Figura 5 Exemplo de um Quadtrees. 21

Figura 6 Funções Parametrizadas. 24

Figura 7 Variável linguística velocidade. 26

Figura 8 Estrutura básica de um sistema fuzzy. 28

Figura 9 Inferência no modelo Mamdani. 31

Figura 10 Arquitetura do Sistema. 34

Figura 11 Comparação entre interpretação do arquivo de mapa. 36

Figura 12 Organização dos sonares. 37

Figura 13 Representação dos valores vindos dos sonares. 38

Figura 14 Rota. 38

Figura 15 Erro associado a execução de dois trechos de uma rota. 39

Figura 16 Redução do número de pontos. 39

Figura 17 Utilização da Curva de Bézier 40

Figura 18 Melhorando a utilização da Curva de Bézier 40

Figura 19 Deslocando o segundo ponto de controle. 41

Figura 20 Variáveis Linguísticas. 42

Figura 21 Variável Linguística θ. 42

Figura 22 Variável Linguística distância ao terceiro ponto de controle. 43

Figura 23 Variável de saída do sistema Fuzzy. 43

Figura 24 Imprecisão ao navegar uma rota. 47

Figura 25 Interface do sistema desenvolvido 47

Figura 26 MobileSim 48

Figura 27 Mapeamento e rota. 48

Figura 28 Entrando no corredor 49

Figura 29 Trecho reto 50

Figura 30 Uma situação quase ideal. 50

(9)

Figura 33 Navegação sem levar em consideração o ambiente. 53

Figura 34 Navegação utilizando curvas de Bézier. 53

Figura 35 Navegação com o controlador fuzzy. 54

Figura 36 Comparação entre execuções. 55

Figura 37 (a) Mapa de um ambiente complexo. (b) Rota gerada. 56

(10)

Tabela 1 Comparativo das características dos simuladores pesquisados. 33

Tabela 2 Base de regras. 44

Tabela 3 Comparativo entre as duas abordagens. 55

(11)

1 INTRODUÇÃO …... 12

2 FUNDAMENTAÇÃO TEÓRICA …... 14

2.1 A PLATAFORMA ROBÓTICA PIONEER 3-AT ... 14

2.2 NAVEGAÇÃO ... 16

2.2.1 NAVEGAÇÃO QUALITATIVA E NAVEGAÇÃO QUANTITATIVA …... 17

2.2.2 PLANEJAMENTO DE ROTAS ... 18

2.2.3 REPRESENTAÇÃO DO AMBIENTE ... 19

2.2.3.1 GRAFO GENERALIZADO DE VORONOI ... 19

2.2.3.2 GRIDS REGULARES... 20

2.2.3.3 QUADTREES ... 21

2.2.4 SUAVIZAÇÃO DE ROTAS ... 21

2.3 LÓGICA FUZZY ... 23

2.3.1 CONCEITOS BÁSICOS DA TEORIA DOS CONJUNTOS FUZZY... 23

2.3.2 OPERAÇÕES BÁSICAS COM CONJUNTOS FUZZY ... 25

2.3.3 VARIÁVEIS LINGUÍSTICAS ... 25

3.3.4 SISTEMAS FUZZY ... 26

3.3.5 SISTEMA FUZZY MAMDANI ... 29

3 METODOLOGIA ... 32

3.1 ESCOLHA DO AMBIENTE DE SIMULAÇÃO ... 32

3.2 ARQUITETURA DO SISTEMA ... 34

3.2.1 REPRESENTAÇÃO DO AMBIENTE ... 35

3.2.2 PLANEJADOR DE ROTAS ... 36

4 DESENVOLVIMENTO ... 37

4.1 VISÃO GERAL DO PROJETO ... 37

4.2 O CONTROLADOR FUZZY ... 41

4.2.1 VARIÁVEIS LINGUÍSTICAS ... 41

4.2.2 CONJUNTO DE REGRAS ... 43

(12)

5.1 REPRESENTAÇÃO DA INFORMAÇÃO ... 46

5.3 TESTES DA BASE DE REGRAS ... 47

5.3 ANÁLISE DAS ESTRATÉGIAS ... 52

6 CONSIDERAÇÕES FINAIS ... 58

(13)

1. INTRODUÇÃO

Sistemas capazes de automatizar processos com o objetivo de preservar a integridade humana apresentam um apelo muito interessante do ponto de vista científico. Existem várias tarefas do mundo real que oferecem perigo a integridade humana, tais como, inspeção interna de dutos de transporte de petróleo, limpeza de sistemas de ar-condicionado, a pulverização de inseticidas em estufas (MANDOW et al., 1996), detecção e salvamento de pessoas soterradas em escombros de estruturas danificadas (MURPHY, 2000), etc. Neste contexto, os robôs móveis autônomos podem realizar tarefas que seriam impossíveis e/ou perigosas para os humanos (BAY, 1995).

Robôs móveis autônomos são robôs que possuem a capacidade de se movimentarem dentro de ambientes abertos ou fechados, sem a intervenção de nenhum usuário externo. O sistema robótico navega totalmente independente da intervenção externa, tomando as decisões necessárias para alcançar seu objetivo (SCATENA, 2008). Dessa forma, diante de um conhecimento parcial do ambiente, de um objetivo previamente definido, cabe ao sistema de navegação do robô agir baseado neste conhecimento e nos valores provenientes dos sensores para atingir o seu objetivo da forma mais eficiente e confiável possível (MURPHY, 2000).

Um grande número de abordagens têm sido propostas como solução para o problema da navegação de robôs móveis. A principal diferença entre elas está na forma em como cada uma decompõe o problema em partes menores (MURPHY, 2000), sendo que duas abordagens merecem destaque: a navegação qualitativa e a navegação quantitativa. Em ambas há a necessidade de determinar um caminho para um objetivo específico. A principal diferença é que a navegação quantitativa, ou métrica, favorece a utilização de técnicas que podem produzir uma rota ótima. Por outro lado, a navegação qualitativa avalia as características do ambiente, e a partir da identificação de pontos de referência determina-se um caminho (SIEGWART, 2004).

Independente da abordagem utilizada, duas competências adicionais são necessárias à navegação, o planejamento de rotas e o desvio de obstáculos. Dado um mapa e um objetivo, o planejamento de rotas envolve a identificação de uma trajetória que leve o robô à sua posição objetivo. A segunda competência, igualmente importante à primeira, significa agir em tempo real diante dos obstáculos a fim de evitar colisões (SIEGWART, 2004). Em relação ao planejamento de rotas, uma classe de problema interessante é o melhoramento do traçado de

(14)

curvas, ou seja, uma rota pode ser suavizada transformando-se em uma sequência de curvas harmônicas. Para isto, várias técnicas já foram propostas, como por exemplo, curvas de Bézier.

As maiores dificuldades encontradas no desenvolvimento de um sistema de navegação autônomo estão na existência de incerteza ou ruídos nos dados dos sensores; na aquisição de informações parciais sobre o ambiente; na produção de uma grande quantidade de dados vinda de sensores distintos e na dinâmica do ambiente (CORRÊA, 2011). Diante destas dificuldades, a Lógica Fuzzy é um ferramental matemático muito utilizado para o tratamento de informações imprecisas, a qual está fundamentada na Teoria de Conjuntos Fuzzy proposta por Lotfi A. Zadeh em 1965 (ZADEH, 1965).

Neste contexto, este trabalho visa o desenvolvimento de um sistema de suavização de rotas que irá utilizar curvas de Bézier e um sistema Fuzzy Mamdani. O sistema fuzzy receberá uma série de pontos, a qual compõe a rota gerada por um planejador de rotas, e a converterá em uma série de curvas de Bézier. A plataforma robótica que será usada neste trabalho para a realização dos experimentos é Pioneer P3-AT (MOBILEROBOTS, 2012).

Este documento está organizado da seguinte forma: no Capítulo 2, Fundamentação Teórica, são abordados os principais conceitos e técnicas utilizadas no decorrer do projeto. O Capítulo 3, Metodologia, apresenta as etapas do projeto e as suas respectivas descrições. O Capítulo 4, Desenvolvimento, descreve como foram implementados os módulos do sistema e também as decisões de projetos. O Capítulo 5, Resultados e Discussões, apresenta os resultados alcançados juntamente com uma análise dos mesmos. Por fim, no Capítulo 6, Considerações Finais, estão as conclusões finais do trabalho, dificuldades encontradas e possíveis melhorias como trabalhos futuros.

(15)

2. FUNDAMENTAÇÃO TEÓRICA

Neste capítulo serão abordados os principais conceitos envolvidos na concepção deste trabalho. Na seção 2.1 descreve-se de forma geral a plataforma robótica que será usada nos experimentos, a seção 2.2 apresenta um estudo a cerca do tema navegação de robôs móveis autônomos e seus desafios, e a seção 2.3 irá tratar da Lógica Fuzzy, com foco na sua aplicação em sistemas Fuzzy.

2.1 A PLATAFORMA ROBÓTICA PIONEER 3-AT

Considerando a classe dos robôs autônomos, o Pioneer 3-AT, produzido pela MobileRobots (MOBILEROBOTS, 2012), é uma plataforma robótica altamente versátil de quatro rodas. Atualmente, este robô é ferramenta de pesquisa e desenvolvimento de um grupo de alunos e pesquisadores que atuam na área de Robótica, Inteligência Artificial, Visão Computacional, entre outras.

O modelo 3-AT (ver Figura 1) da família Pioneer é uma plataforma robótica que possui oito sensores de toque (bumpers), 16 sonares, sendo oito na frente e oito na traseira, com alcance de 15cm a 7m. O Pioneer 3-AT pode carregar até três baterias e ainda pode ter uma série de outros acessórios, tais como laser, câmera estéreo, giroscópio, etc. Seus motores permitem uma velocidade de até 0,8 metros por segundo (ou 2,8 Km/h) e transporta uma carga de até 15Kg. O modelo ainda dispõe de um sistema de correção inercial para navegação estimada para compensar a derrapagem, aumentando a precisão na odometria (MOBILEROBOTS, 2011). Além de ter um sistema operacional livre embarcado, baseado no Debian, a plataforma vem com um conjunto de aplicações avançadas de controle remoto e ambientes para desenvolvimento de aplicações.

(16)

Figura 1. Pioneer 3-AT. Fonte: (MOBILEROBOTS, 2012)

Todas as plataformas da MobileRobots funcionam como um servidor em um ambiente cliente/servidor. Seu sistema embarcado trabalha como um servidor de informações de baixo nível, tais como, velocidade, nível da bateria, aquisição e tratamento de dados dos sensores. Para completar a arquitetura cliente/servidor, a plataforma requer um computador conectado, no qual um aplicativo de controle é executado. O computador cliente pode estar conectado tanto via porta serial, ou por uma conexão Ethernet, sendo que, quando embarcado no robô a comunicação será serial. A Figura 2 ilustra as possíveis configurações.

Figura 2. A arquitetura cliente/servidor da plataformas. Fonte: Adaptado de (MOBILEROBOTS, 2011).

A Adept MobileRobots fornece todo um conjunto de ferramentas para desenvolvimento de aplicações de controle e monitoramento do robô que permite ao programador uma abstração em alto nível do robô como a Interface de Programação de Aplicativos (API, de Application Programming Interface) Advanced Robotics Interface for Aplications (ARIA) e a API ARNetworking, lançadas sobre uma licença pública GNU, com bibliotecas e códigos fontes documentados disponíveis para programação em C++, Java e Python. Estas ferramentas são ideais para o desenvolvimento de aplicações de controle, uma vez que ele será manipulado no mais baixo nível de detalhes da interação cliente/servidor, da comunicação por rede ou serial, do processamento de pacotes, do controle multithreading e

(17)

do controle de uma variedade de acessórios disponíveis para a plataforma (MOBILEROBOTS, 2011). Ambas as ferramentas podem ser utilizadas em separado, sendo a grande diferença entre elas o nível de abstração. O ARNetworking fornece um nível de abstração maior para a programação, enquanto que com a ARIA o controle é feito de forma mais “próxima” do hardware do robô.

Outras ferramentas, desenvolvidas pela fabricante do robô, podem ser adquiridas como o Mapper3 para construção de mapas, o MobileEyes para monitoramento e controle simples do robô e o MobileSim para simulação. Destas, apenas o MobileSim tem licença livre.

2.2 NAVEGAÇÃO

Diante de um conhecimento parcial do ambiente e de um objetivo, que pode ser um ponto no ambiente ou uma série deles, cabe a navegação do robô agir baseado neste conhecimento e nos valores provenientes dos sensores para atingir o objetivo da forma mais eficiente e confiável possível. A comunidade científica que atua na área de navegação de robôs móveis já propôs um grande número de abordagens para a solução deste problema. A principal diferença entre elas está na forma em como cada uma decompõe o problema em partes menores (SIEGWART, 2004).

Segundo Robin R. Murphy (2000), a navegação ainda é considerada uma das funções mais difíceis de executar, em parte por envolver quase tudo que está relacionado à robôs artificialmente inteligentes: detecção, ação, planejamento, arquitetura, hardware, eficiência computacional e resolução de problemas. Ainda segundo Robin R.Murphy (2000), as funções da navegação podem ser expressas por quatro questionamentos:

Para onde estou indo? O que é geralmente determinado por um humano ou um planejador.

Qual o melhor caminho? Um problema de planejamento de rotas. Dado um mapa e uma posição do objetivo, planejar uma rota consiste em identificar uma trajetória que permita ao robô alcançar seu objetivo quando executada.

Por onde eu estive? Para um robô que explora ambientes desconhecidos saber onde esteve faz parte da missão de mapear o ambiente. Mas mesmo no caso de um robô que opera sobre um ambiente conhecido e já mapeado, este

(18)

questionamento é importante para que o robô seja capaz de perceber alterações no ambiente, como a inserção ou alteração de um obstáculo.

Onde estou? Tanto para seguir uma rota ou construir um mapa, o robô tem que saber onde ele está. Para essa questão é necessário ter cuidado com a forma que a localização é obtida, dada a existência de incerteza dos sensores.

Estas quatro questões chamam a atenção para a deliberação. O mapear e localizar implica em memorizar e classificar espaços que são representações simbólicas do ambiente e, portanto, também se enquadram na noção de deliberação.

Na Inteligência Artificial planejamento e reação são ações muitas vezes vistas como contrárias ou até mesmo opostas, no entanto, quando aplicadas à sistemas físicos como um robô móvel, elas se complementam, sendo uma responsável pelo sucesso da outra. O desafio da navegação para robôs envolve a execução de um conjunto de ações (ou plano) para atingir um objetivo. Durante a execução, o robô deve reagir diante de eventos inesperados e ainda assim não perder o foco no seu objetivo (SIEGWART, 2004).

Na seção 2.2.1 serão descritas duas estratégias de navegação de robôs móveis que ganharam destaque ao longo tempo: a navegação qualitativa e a navegação quantitativa. Na seção 2.2.2 é discutida uma competência necessária para a navegação de robôs móveis, o planejamento de rotas.

2.2.1 NAVEGAÇÃO QUALITATIVA E NAVEGAÇÃO QUANTITATIVA

Em ambas as abordagens o objetivo é alcançar um ponto específico da forma mais eficiente e segura possível. A navegação qualitativa (ou topológica) é vista como uma abordagem mais simples e natural, por tratar a navegação de uma forma mais próxima do comportamento humano. Nela um ambiente é representado pelas suas características topológicas, como a existência de salas, corredores, portas e etc. Nela o robô obedece comandos como: “siga até o fim do corredor, entre a direita, siga até a próxima porta a esquerda...”. Enquanto isso na navegação quantitativa ou métrica, o ambiente é representada de uma forma mais detalhada, um objeto que compõe um ambiente tem coordenadas, orientação e uma série de outras características, nesse tipo de navegação o robô segue pontos, com coordenadas definidas (MURPHY, 2000).

(19)

Segundo Robin R. Murphy (2000) a principal diferença é que a navegação quantitativa (ou métrica) favorece a utilização de técnicas que podem produzir uma rota ótima, enquanto que a navegação qualitativa avalia as características do ambiente, e a partir da identificação de pontos de referência define-se um caminho. Uma outra diferença é que na abordagem quantitativa a rota é geralmente dividida em submetas, denominadas way points ou pontos de passagem. Estes pontos são coordenadas x e y de um plano 2D. Enquanto isso, a navegação qualitativa é focada em submetas que são portas, corredores ou outros espaços e objetos. Nessa abordagem o robô obedece à um script ou conjunto de objetivos descritos em uma forma mais próxima da linguagem dos seres humanos. Por exemplo, “entre na segunda porta a direita, depois vá até o fim do corredor”.

Neste trabalho, devido ao escopo do projeto, será utilizada a abordagem quantitativa. Portanto, todos os próximos temas abordados serão baseados na abordagem quantitativa.

2.2.2 PLANEJAMENTO DE ROTAS

O planejamento de rotas desempenha um papel importante no campo da robótica, tanto para um ambiente estático quanto dinâmico, e muitas pesquisas têm sido feitas desde a década de 80 (HO;LIU, 2009). Para este trabalho o ambiente considerado é estático, sendo assim, esta seção terá foco em técnicas aplicadas em mapas estáticos.

Em uma navegação quantitativa, o planejamento de rotas tem dois componentes: a representação (estrutura de dados) e o algoritmo de planejamento. A representação consiste em modelar o ambiente em uma estrutura que facilite o planejamento da rota. Na literatura existe uma variedade de técnicas para a representação do mundo em que um robô está inserido, como por exemplo, Grids e grafos de Voronoi (MURPHY, 2000). O objetivo da representação é armazenar apenas as características necessárias ou a configuração de objetos relevantes para a navegabilidade do robô dentro do espaço de interesse. O algoritmo de planejamento de rotas geralmente pode ser aplicado em qualquer estrutura de representação do espaço, porém, alguns algoritmos são mais eficientes sobre uma determinada estrutura de dados do que em outras. Uma característica típica desses algoritmos é a de tratar o problema da navegação como um problema de busca em grafos (MURPHY, 2000), como por exemplo, utilizando o Algoritmo de Dijkstra (DIJKSTRA, 1959).

(20)

2.2.3 REPRESENTAÇÃO DO AMBIENTE

O espaço físico do robô e os obstáculos do ambiente podem ser vistos como um espaço de mundo (do Inglês, world space). O espaço de configuração, ou o Cspace (de Configuration Space), é uma estrutura de dados que permite especificar a pose (localização e orientação) de qualquer objeto e do robô (SIEGWART, 2004).

Uma boa representação do Cspace reduz o número de dimensões, o que simplifica o planejamento de uma rota. Uma pessoa pode especificar a localização de um objeto com as coordenadas x, y, z. No entanto, além destas informações, um objeto tem frente, costas, topo e base. Sendo assim, são necessários pelo menos mais três novas informações para determinar a localização de um determinado objeto, que seriam as coordenadas x, y, z e as informações sobre a frente, o lado e a orientação. Em geral, o algoritmo planejador de rotas para robôs móveis assume apenas duas informações, x e y (MURPHY, 2000).

Há inúmeras técnicas para a representação do espaço de configuração, tais como, o Grafo Generalizado de Voronoi, Grids Regulares, Quadtree, Campos Potenciais, Decomposição de Células, etc. (SIEGWART, 2004; MURPHY, 2000). As representações oferecem diferentes formas de representar o espaço livre, isto é, qualquer espaço aberto não ocupado por um objeto é espaço livre, e neste espaço livre o robô pode se mover sem colisões com obstáculos. Cada espaço livre pode receber um rótulo com informações adicionais, como por exemplo, as características do terreno (MURPHY, 2000).

A seguir são apresentadas três técnicas estudadas para a representação de ambientes, o Grafo Generalizado de Voronoi, Grids Regulares e Quadtree.

2.2.3.1 GRAFO GENERALIZADO DE VORONOI

O Grafo Generalizado de Voronoi (GGV) é uma técnica popular para a representação de espaços de configuração, o qual vem como resultado desta representação um grafo. Essa técnica objetiva gerar um mapa de rotas que tende a maximizar as distâncias entre o robô e os obstáculos (SIEGWART, 2004). A ideia básica de um GGV é gerar vértices e arestas equidistante aos obstáculos. Como pode ser visto na Figura 3, os pontos onde as arestas se encontram são conhecidos como vértices de Voronoi. Estes vértices estão ilustrados na Figura 3 como pequenos quadrados. Os vértices tem uma correspondência física em relação aos

(21)

objetos do ambiente, o que torna fácil para o robô seguir um caminho gerado por um GGV, uma vez que existe uma estratégia de controle implícita de ficar equidistante a todos os objetos (MURPHY, 2000).

Se um robô seguir uma linha de Voronoi, ele não irá colidir com nenhum obstáculo modelado, pois sempre estará entre dois obstáculos (MURPHY, 2000).

Figura 3: Exemplo de um Grafo Generalizado de Voronoi. Fonte: adaptado de (MURPHY, 2000).

2.2.3.2 GRIDS REGULARES

Outro método para representar um espaço de mundo é o Grid Regular. Este método é muito popular devido à sua simplicidade de implementação. O método sobrepõe um grid cartesiano 2D sobre o espaço de mundo, e se existir algum objeto na área determinada por uma célula do grid, esta célula é marcada como ocupada. Um exemplo da aplicação deste método é ilustrado na Figura 4.As células em cinza indicam que está ocupada parcialmente ou totalmente por um objeto ou parede, enquanto que as células em branco estão livres.

Figura 4. Exemplo de um Grid Regular. Fonte: adaptado de (MURPHY, 2000).

O centro de cada célula do grid pode ser considerado como um nó de um grafo, resultando em um grafo altamente conectado. Um dos problemas na utilização deste método é

(22)

que um objeto de tamanho quase que insignificante dentro de uma célula, fará com que toda a célula seja marcada como ocupada, e consequentemente, gerando um desperdício de espaço. Uma forma de reduzir esse desperdício é reduzir a granularidade do grid, isto é, reduzir o tamanho das células. Por outro lado, isto também pode aumentar o custo de armazenamento e de processamento no planejamento do melhor caminho (MURPHY, 2000).

2.2.3.3 QUADTREES

A técnica do Quadtrees é uma variação dos grids regulares, que tem como objetivo reduzir o espaço desperdiçado. A representação começa com um grid com apenas uma célula que representa toda a área. Caso há um objeto ou parte dele dentro da célula, esta então, será dividida em outras quatro células. E esse processo é feito recursivamente sobre cada nova célula até que se obtenha um célula de tamanho mínimo, sendo este tamanho definido pelo projetista. Quanto maior for esse valor, menor será a precisão da representação (MURPHY, 2000). A Figura 5 ilustra um exemplo da aplicação da técnica Quadtrees.

Figura 5. Exemplo de um Quadtrees. Fonte: adaptado de (MURPHY, 2000).

2.2.4 SUAVIZAÇÃO DE ROTAS

O caminho resultante de um planejador de rotas é, geralmente, um caminho composto por trechos lineares e/ou por trechos curvos que são aproximados em uma sequência de trechos lineares (HO; LIU, 2009). Percorrer um caminho deste tipo significa parar o robô, movê-lo, parar e rotacioná-lo a cada novo trecho. Isso representa um gasto adicional de energia, além de um desgaste maior do robô (HO; LIU, 2009). A fim de tornar um caminho mais suave, uma opção é a conversão de trechos lineares em uma sequência de curvas. Neste

(23)

sentido, algumas estratégias de curvas foram propostas, e entre as diferentes estratégias encontradas na literatura, destacou-se a utilização da curva de Bézier (HO; LIU, 2009).

A curva de Bézier foi proposta em 1962, pelo engenheiro Pierre Bézier, para auxiliar no desenho de partes de carros. Hoje essa técnica é vastamente utilizada na computação gráfica e em animações (CHOI, et al. 2012). A curva de Bézier de grau n pode ser representada como: P[t 0,t](t)=

n i=0 Bin(t),0≤t≤1, (1)

ondePi são pontos de controle, a cada novo valor de t, um novo ponto da curva é definido, tal

que, P

(

t0

)

=P0 e P

(

ti

)

=Pn , Bin(t) é um polinômio de Bernstein dado por:

Bin(t)=

(

n i

)

(

tit

)

(

tit0

)

n−1

(

t−t0

)

(

t1t0

)

i,i ∈0,1 , .. . ,n (2)

As curvas de Bézier tem propriedades interessantes, tais como:

Interpolação das extremidades. A curva de Bézier P(t) baseada nos pontos de controle P0,P1, . . .,Pn não necessariamente passa ou interpola todos os pontos, mas sempre interpola os pontos P0 e Pn. Esta é uma propriedade útil, pois sempre serão

conhecidos os pontos de início e fim da curva (HILL, 2001).

Polígono de controle. Os pontos de controle de uma curva de Bézier delimitam um polígono e a curva estará limitada ao espaço ocupado por esse polígono (HILL, 2001).

Precisão linear. Uma curva de Bézier pode gerar uma linha reta se todos os pontos de controles forem colineares (HILL, 2001).

Essas propriedades garantem um controle sobre o formato. Em seu trabalho, YI-Ju Ho e Jing-Sin (2009), utilizou essas características para definir com precisão um trecho curvo de uma rota, adicionando pontos de controle à curva, dessa forma obteve-se um controle sobre a curva que permitiu o desenvolvimento de um sistema de planejamento livre de colisões e ao mesmo tempo com transições suaves entre as curvas.

(24)

2.3 CONJUNTOS FUZZY

Segundo Sandri e Correa (1999),

Dois dos principais aspectos da imperfeição da informação são a imprecisão e a incerteza. Estas duas características são intrinsecamente ligadas e opostas entre si: quanto mais aumenta a incerteza mais se diminui a imprecisão e vice-versa. Por exemplo, supondo que seja seguro afirmar que um dado filme começa entre 3h e 4h. Se formos obrigados a afirmar de forma mais precisa, seria necessário aumentar a incerteza, por exemplo, o filme começará as 3h30m com uma probabilidade diferente de 1. Uma informação imprecisa também pode ser vaga, como por exemplo, quando afirmando que o filme começa “por volta das 3h30m” (SANDRI; CORREA, 1999).

Para tratar do aspecto vago da informação, Lofti A. Zadeh propôs a Teoria dos Conjuntos Fuzzy (nebuloso, em Português) (ZADEH, 1965). De acordo com Zadeh (1965), os conjuntos fuzzy são conjuntos com limites não precisos, ou seja, um objeto está associado a um conjunto fuzzy de acordo com o seu grau de pertinência, o qual é definido no intervalo [0,1]. A associação de um objeto à um conjunto fuzzy não é uma questão de pertencer ou não a este conjunto, mas sim uma questão de grau de compatibilidade. Portanto, quanto mais próximo de um o grau de pertinência estiver, maior a compatibilidade de um objeto ao conjunto fuzzy em questão.

Com base na teoria dos Conjuntos Fuzzy, a Lógica Fuzzy têm sido cada vez mais usada em sistemas que utilizam informações fornecidas por seres humanos para automatizar procedimentos quaisquer, como por exemplo no controle de processos, no auxílio à decisão, etc. (SANDRI e CORREA, 1999). Exemplos de aplicações da Lógica Fuzzy são vários, tais como, controle de eletrodomésticos, controle de satélites, mercado financeiro e medicina (SANDRI e CORREA, 1999).

(25)

2.3.1 CONCEITOS BÁSICOS DA TEORIA DOS CONJUNTOS FUZZY

A partir da teoria apresentada por Zadeh e de vários outros trabalhos publicados, um conjunto fuzzy tem sido definido como uma coleção de objetos com valores de pertinência entre 0 (exclusão completa) e 1 (inclusão completa) (ZIMMERMANN, 1990) Formalmente, um conjunto fuzzy A do universo U é definido por uma função de pertinência μA:U →

[

0,1

]

. Essa função associa a cada elemento x de U um grau de pertinência, onde a função de pertinência μA(x ) indica o grau de compatibilidade entre x e o conceito expresso pelo conjunto A, sendo que quando:

μA(x )=1, indica que x é completamente compatível com A;

μA(x)=0, indica que x é completamente incompatível com A;

0 <μA(x)<1,indica que x é parcialmente compatível com A, com grau μA(x ) .

Em princípio qualquer função da forma μA:U →

[

0,1

]

descreve uma função de pertinência associada a um conjunto fuzzy A, que depende não somente do conceito que representa, mas também do contexto no qual é utilizado. Dessa forma, os gráficos das funções podem ter diferentes formas e podem ter algumas propriedades específicas (por exemplo, continuidade). (KLIR; YUAN, 1995) Na prática é mais conveniente usar as funções de formato mais simples. Uma das formas mais utilizadas para representar conjuntos fuzzy é pelas famílias das funções parametrizadas, conforme ilustrado na Figura 6.

(26)

a) b)

c) d)

Figura 6: Funções Parametrizadas: (a) trapezoidal, (b) gaussiana, (c) triangular e (d) unitária (singleton).

2.3.2 OPERAÇÕES BÁSICAS COM CONJUNTOS FUZZY

Com base na teoria dos conjuntos clássicos, Zadeh (ZADEH, 1965) definiu as operações de união, interseção e complemento para conjuntos nebulosos, a partir da função de pertinência.

Sejam A e B dois conjuntos fuzzy definidos no universo U com suas funções de pertinência μA e μB , respectivamente. As funções de pertinência são definidas ponto a ponto para todo u  U.

União: μA∪B(μ )=max

{

μA(u) ,μB(u )

}

(3) Intersecção: μA∩B(μ )=min

{

μA(u ) ,μB(u )

}

(4) Complemento: A = 1 - A(u). (5)

(27)

As operações de união e intersecção apresentadas anteriormente podem ser generalizadas substituindo-se os operadores de mínimo e máximo por outros operadores das classes T-normas e T-conormas (KLIR; YUAN, 1995), respectivamente.

2.3.3 VARIÁVEIS LINGUÍSTICAS

Uma variável linguística pode ser definida, de uma maneira informal, como uma variável cujos valores são palavras ou sentenças, ao invés de números. Zadeh definiu formalmente uma variável linguística sendo como uma quíntupla denotada por (Pedrycz e Gomide, 1998):

X, T ( X ), U, G, M 〉 (6)

onde,

X é o nome da variável, cuja variável base é x;

T(X) é o conjunto de termos linguísticos. Cada elemento de T(X) representa um rótulo L dos termos que a variável X pode assumir;

U é o universo de discurso da variável linguística X;

G é a gramática para a geração dos termos ou rótulos;

M é a regra semântica que associa a cada rótulo L, um conjunto nebuloso no universo U, representando o seu significado M(L). Por exemplo, considere a variável linguística (ver Figura 7) velocidade (X = velocidade) com universo U = [0,150] e variável base x  X. Um possível conjunto de temos associados à variável velocidade poderia ser T(velocidade) = {muito baixa, baixa, média, alta, muito alta}.

Seja F(X) uma família de conjuntos nebulosos definidos no universo X. Então, a regra M mapeia T(X)  F(X), ou seja, associa a cada rótulo do conjunto de termos T(X), um conjunto nebuloso definido em X.

A gramática G define como os termos primários {baixa, média, alta} serão associados aos modificadores {muito, pouco, maior, menor, ou, não} para formar os nomes dos termos não primários (Pedrycz e Gomide, 1998).

(28)

Figura 7:Variável linguística velocidade. Fonte: Adaptado de Pedrycz e Gomide (1998).

3.3.4 SISTEMAS FUZZY

Em geral, um sistema fuzzy é qualquer sistema cujas variáveis (ou pelo menos, algumas delas) assumem estados que são conjuntos fuzzy. Para cada variável, os conjuntos nebulosos são definidos em algum universo relevante, o qual é frequentemente um intervalo de números reais. Neste caso, os conjuntos nebulosos são números nebulosos, e as variáveis associadas são variáveis linguísticas (KLIR; YUAN, 1995).

A maneira mais comum de armazenar informações em uma base de conhecimento de um sistema nebuloso é a representação por meio de regras nebulosas que estabelecem relações entre diversas variáveis nebulosas e um ou mais conjuntos nebulosos. Estas regras possuem o seguinte formato.

Se <antecedente> Então <conseqüente> (7) Os antecedentes descrevem uma condição (premissa), enquanto a parte consequente descreve uma conclusão ou uma ação que pode ser esboçada quando as premissas se verificam. Os antecedentes definem uma região nebulosa no espaço das variáveis de entrada do sistema. Já os consequentes descrevem uma região no espaço das variáveis de saída do sistema, qual seja a sua conclusão/ação.

0 0 1 150 x (velocidade) Variável base muito baixa

muito baixa baixabaixa médiamédia altaalta muito altamuito alta

Valores lingüísticos

velocidade

velocidade Variável lingüística

Regra semântica

(29)

Base de Conhecimento

Fuzificação

Fuzificação DesfuzificaçãoDesfuzificação

Motor de Inferência Motor de Inferência Base de Regras Base de Regras Base de Dados Base de Dados Entrada real Saída real

A estrutura básica de um sistema fuzzy é constituída por (ver Figura 8): um módulo de Fuzificação, que tem como função converter os valores de entrada do sistema (números reais) para termos linguísticos representados por conjuntos fuzzy; uma Base de Conhecimento (BC), onde todo o conhecimento sobre o domínio do problema em questão é armazenado. A BC é formada por uma Base de Regras (BR), que contém o conjunto de regras fuzzy e por uma Base de Dados (BD), que define as funções de pertinência usadas nas regras nebulosas; um Motor de Inferência, que é responsável pelo desenvolvimento do raciocínio nebuloso baseado no conhecimento representado na BC; e por um módulo de Desfuzificação, que realiza uma transformação da resposta do sistema fuzzy, a qual está representada por um conjunto fuzzy, em uma resposta não-fuzzy.

Figura 8: Estrutura básica de um sistema fuzzy.

Existem vários modelos de sistemas fuzzy. Na maioria dos casos, o antecedente é formado por proposições linguísticas e a distinção entre os modelos se dá no consequente das regras fuzzy. Entre os modelos mais conhecidos podemos destacar [Delgado 2002]:

Modelo de Mamdani [Mamdani e Assilian 1975], que utiliza conjuntos fuzzy também nos consequentes das regras nebulosas. A saída final é representada por um conjunto nebuloso resultante da agregação da saída inferida de cada regra. Para se obter uma saída final não nebulosa adota-se um dos métodos de transformação da saída nebulosa em não-nebulosa.

Modelo de Takagi-Sugeno [Takagi e Sugeno 1983], no qual o consequente é representado por uma função das variáveis de entrada. A saída final é obtida pela média ponderada das saídas inferidas de cada regra. Os coeficientes da ponderação são dados pelos graus de ativação das respectivas regras.

(30)

Modelo de Tsukamoto [Tsukamoto 1979], que utiliza funções de pertinência monotônicas no consequente. Assim como no modelo Tagaki-Sugeno, é inferido um valor não-fuzzy induzido pelo nível de ativação da regra. A saída final é obtida por média ponderada das saídas inferidas de cada regra.

3.2.3 SISTEMA FUZZY MAMDANI

A característica básica do modelo de Mamdani é o fato de utilizar conjuntos nebulosos nos antecedentes e consequentes das regras fuzzy. Uma regra típica deste modelo possui a forma como descrito em (7).

A estrutura de um sistema nebuloso Mamdani inclui todos os módulos ilustrados na Figura 8. Assim, o motor de inferência recebe os valores linguísticos provenientes do módulo de fuzificação, processa as regras existentes na base de regras e gera um conjunto nebuloso de saída para o módulo de desfuzificação, a partir da composição das saídas de todas as regras disparadas. Por uma regra disparada, entende-se uma regra cujo processamento do antecedente para as entradas atuais gerou graus de pertinência não-nulos, ou seja, a relação nebulosa entre as entradas e os termos primários do antecedente é maior que zero.

A obtenção da conclusão de cada regra depende da semântica escolhida e dos resultados da combinação e agregação dos antecedentes. Da agregação das conclusões inferidas de cada regra, resulta um conjunto fuzzy. A inferência tradicionalmente utilizada pelo modelo de Mamdani é chamada de inferência Max-Min. Ela utiliza as operações de união e intersecção entre conjuntos. Considerando uma regra nebulosa genérica como mostrada em (8), o método de inferência Máx-Min proposto por Mamdani será detalhado a seguir.

Se x1=Ai E x2=Aj E...E xp=Aj Então y1=Bi E y2=Bm (8)

Em 3.8, xi são as entradas do sistema (variáveis linguísticas), A1,...,Aj são conjuntos

nebulosos nos universos definidos de cada variável de entrada, y1 e y2 são variáveis de saída

(variáveis linguísticas) e B1,...,Bm são conjuntos nebulosos nos universos definidos de cada

(31)

Durante o processo de fuzificação, os antecedentes de cada regra são processados por meio da intersecção entre os graus de pertinência das entradas atuais nos termos primários definidos em cada uma. Este processo gera um grau de disparo para cada regra de produção. Em outras palavras, é calculado para a k-ésima regra da BR um coeficiente de disparo D(k),

definido em 3.22, onde os índices k nos conjuntos nebulosos denotam os termos primários que compõem a regra k na BR. Este processamento transforma informações quantitativas em informações qualitativas, e é chamado fuzificação.

D(k )=T

[

μA 1 k(x1)A 2 k(x2), .. . ,μA p k(xp)

]

=min

[

μA 1 k(x1)A 2 k(x2),. .. ,μA p k(xp)

]

(9)

Todas as regras para as quais o coeficiente de disparo for maior que zero são ditas regras que dispararam para as entradas atuais. Isto quer dizer que elas vão contribuir para o cálculo da saída correspondente do sistema de inferência. Os coeficientes de disparo, por sua vez, vão limitar os valores máximos dos conjuntos nebulosos de saída gerados por estas regras. Finalmente, uma operação global de união vai compor um conjunto nebuloso para cada variável de saída, contendo informações sobre todas as regras disparadas para as entradas atuais. Em (10), é mostrada a composição deste conjunto para o caso da saída y2,

apresentada na regra de produção nebulosa genérica anterior. O universo de discurso desta variável de saída é composto pelos elementos y  Uy2.

μB i '(y )=Sk=1. . n

[

T

(

D(k ),μB i(y )

)

]

=maxk= 1 .. n

[

min

(

D (k) Bi(y )

)

]

, ∀ y ∈Uy2 (10) O processo de inferência acima descrito transforma uma informação qualitativa em outra informação qualitativa, por meio de uma conversão. O conjunto nebuloso gerado durante o processo de inferência pode então ser utilizado diretamente em um diagnóstico qualitativo de tomada de decisão, ou será convertido em um valor escalar proporcional para atuação externa por meio de atuadores convencionais, no caso de um sistema de controle. A conversão nebuloso  escalar transforma informações qualitativas em uma informação quantitativa, conhecido como desfuzificação.

Existem vários métodos utilizados para converter um valor nebuloso em não-nebuloso, como por exemplo, o método do centro de massa. O método do centro de massa calcula, para um dado conjunto nebuloso, a abscissa (no universo de discurso definido para a variável em

(32)

u1 X1 u2 X2 1 1 A 1 2 A B1 y 1 1 A m 1 2 A m 1 B m u1 X1 u2 X2 2 1 A 2 2 A B2 y 2 1 A m 2 2 A m 2 B m U

[

1

]

2 1 1, min ) ( ' 1 A A m m y B =

[

2

]

2 2 1, min ) ( ' 2 A A m m y B =

[

( ), ( )

]

max ) (y B1' y B2' y B = y

questão) do ponto de centro de massa correspondente, e a utiliza como valor escalar de saída. A expressão analítica da implementação deste método é mostrada em (11).

y2=

y ∈Uy2 y . μB i '(y )

y ∈Uy2 μB i '(y ) (11)

Suponha um sistema nebuloso do tipo Mamdani, composto por duas regras na forma:

Ri: Se x1=A1i E x2=A2i Então y=Bi, i= 1,2 ,

onde x1 e x2 são as variáveis de entrada e A1i e Ai2 são conjuntos nebulosos nos

universos X1 e X2, respectivamente. A Figura 9 ilustra o processo de inferência para duas entradas não-nebulosas (representadas por valores em posições arbitrárias u1 e u2), utilizando

o Max-Min.

Analisando a Figura 9, na primeira regra o método de inferência Mamdani selecionou o menor valor de pertinência obtido para os valores de entrada u1 e u2 nos conjuntos A11 e

A21 , respectivamente, gerando o conjunto nebuloso B1 ' . Do mesmo modo com os conjuntos

A12 e A22 , o conjunto nebuloso resultante foi B2 ' . O conjunto nebuloso de saída B será a união dos conjuntos B1 ' e B2 ' .

(33)

3. METODOLOGIA

Para uma melhor organização do projeto, foi realizado um planejamento das atividades, dividindo-as em etapas e agrupando-as de acordo com suas especificidades. Dessa forma, as atividades foram divididas em:

1. Estado da Arte: pesquisa em livros, artigos e periódicos que abordam o problema da navegação em robôs móveis autônomos, os quais utilizam a Lógica Fuzzy como proposta de solução.

2. Escolha do Ambiente de Simulação: levantamento bibliográfico dos ambientes de simulação para robôs móveis. Analisar e definir qual deles será usado no desenvolvimento do trabalho proposto.

3. Preparação do ambiente para desenvolvimento: Estudar o funcionamento da plataforma robótica, do simulador e sua integração com os outros módulos do sistema.

4. Arquitetura do Sistema: definir os módulos do sistema de comunicação, mapeamento, traçado de rotas e o controlador fuzzy.

5. Experimentos: etapa na qual serão modelados e implementados os experimentos necessários à verificação da aplicabilidade e eficiência da abordagem proposta em um ambiente simulado.

3.1 ESCOLHA DO AMBIENTE DE SIMULAÇÃO

Como o projeto de pesquisa possui a plataforma Pioneer 3-AT, a primeira etapa do projeto foi um estudo criterioso desta plataforma. A primeira preocupação foi com a ferramenta de simulação, fator de extrema importância para o trabalho. Conforme apresentado no Capitulo 2, o robô Pionner 3-AT possui características e funcionalidades específicas. Em razão disto, um estudo foi feito para encontrar um simulador que representasse o mais confiável possível o robô e os ambientes que ele possa interagir, como também a existência ou não de ferramentas de análises. Além disso, outro fator importante considerado foi o valor da licença e a compatibilidade do simulador com os diferentes sistemas operacionais. Dessa

(34)

forma foram avaliados os simuladores mais citados na literatura: MobotSim, WeBots, Player/Stage e MobileSim.

Ao longo das pesquisas e análises, outras características também chamaram a atenção, como por exemplo, o tipo de representação do mapa (3D ou 2D), que aumentam a qualidade da simulação oferecendo mais de um ponto de vista da mesma, e se o simulador possui um suporte nativo ao Pioneer 3-AT. Esse suporte é interessante pelo seguinte motivo. O código que será testado com o simulador será depois testado no robô real, e quanto maior for a semelhança entre o robô real e o simulado, maior será a possibilidade de uma transição bem sucedida. Com base nas informações levantadas dos simuladores, a Tabela 1 ilustra as características de cada simulador pesquisado.

Tabela 1: Comparativo das características dos simuladores pesquisados.

Simulador MobotSim WeBots Player/Stage MobileSim

Licença entre 19 e 30 dólares 350 francos suíços, aproximadamente 380 dólares GNU General Public License GNU General Public License

SO Windows Windows, Linux e Mac OS X Linux Windows e Linux

Tipo de mapa 2D 2D e 3D 2D e 3D 2D

Tempo Real Não Sim Sim Sim

Suporte ao

Pioneer 3-AT Não Não Sim Sim

O MobotSim e o WeBots são simuladores simples, de fácil uso e muito bem difundido na comunidade científica. O WeBots oferece uma qualidade maior de simulação, por outro lado, sua licença é mais cara. Desses dois, apenas o WeBots oferece suporte ao Pioneer 3-AT. O Player/Stage e o MobileSim compartilham características de grande relevância, que são a compatibilidade com o Pioneer 3-AT, a qualidade de simulação, o fato de serem softwares livre e possuírem documentações abertas e um grande número de colaboradores e usuários ao redor do mundo. Ao contrário do Player/Stage, o MobileSim oferece somente um ambiente em 2D, porém, oferece ainda uma simulação com uma qualidade maior, já que simula também problemas inerentes ao processo real, como os ruídos sensoriais, modelados com base no hardware específico da plataforma, o que aumenta a garantia de uma boa transição entre os ambientes simulado e real.

(35)

Após o levantamento e análise das características dos simuladores pesquisados, o simulador escolhido foi o MobileSim, pela qualidade da simulação e pelo suporte nativo aos modelos da MobileRobots.

3.2 ARQUITETURA DO SISTEMA

A versão do robô Pioneer 3-AT disponível para o projeto possui um computador embarcado, com restrições de memória e processamento. Sendo assim, neste trabalho é proposta uma arquitetura seguindo um modelo cliente/servidor, onde o servidor estaria no computador embarcado no robô e o cliente é um aplicativo conectado ao mesmo via socket.

Neste trabalho foi usado a API ARIA (MOBILEROBOTS, 2011) para o desenvolvimento do aplicativo servidor em C++ utilizando a IDE Eclipse Helios. A função do servidor é a de fazer uma interface em alto nível entre o robô e o aplicativo cliente, ou seja, o servidor é responsável em realizar um pré-tratamento das informações recebidas da plataforma Pioneer 3-AT (robô real), as quais estão em baixo nível, convertendo-as para alto nível e transmitindo-as ao cliente (ver Figura 10).

O aplicativo cliente foi implementado em C++, com o framework Qt versão 4.6.4, utilizando a IDE Qt Creator versão 1.3.1. A função do aplicativo cliente é a de monitorar o robô e deliberar ações. As ações deliberadas pelo cliente estão em alto nível e são transmitidas ao servidor. O servidor então converte estas ações (comandos) em baixo nível e as transmite para o robô real (ver Figura 10).

Figura 10. Arquitetura do Sistema.

São dois tipos básicos de mensagens que o servidor recebe. Uma que solicita informações dos sensores do robô, como por exemplo, valores de odometria, nível de bateria e sonares. Outro tipo de mensagem é a de deliberação, na qual o cliente envia três pontos (os

(36)

pontos de controle da curva de Bézier. O robô, de posse desses três pontos, compõe a equação da curva e a executa logo em seguida.

Como pode ser visto na Figura 10, o aplicativo cliente desenvolvido neste trabalho possui dois módulos, (i) Planejador de Rotas e (ii) Controlador Fuzzy. As funcionalidades destes módulos serão detalhadas nas próximas sessões.

3.2.1 REPRESENTAÇÃO DO AMBIENTE

Para que um robô possa navegar em um ambiente qualquer, este necessita de um mapa, o qual conterá as informações de todos os obstáculos deste ambiente. É papel do aplicativo cliente mostrar a representação do ambiente no qual o robô está imerso além do próprio robô. Essa representação será útil para monitorar o robô durante a execução da rota.

As informações da representação de um determinado ambiente são armazenadas em um arquivo de texto simples, que contém basicamente linhas. O MobileSim utiliza um arquivo de extensão “.map”, que é um arquivo de texto que contem inúmeras informações sobre o ambiente, além de linhas e pontos. O módulo responsável pela representação do ambiente desenvolvido neste trabalho utiliza esse mesmo tipo de arquivo e processa o mesmo arquivo lido pelo MobileSim, no entanto, somente as linhas são interpretadas, pois as demais informações não são necessárias.

A criação de um arquivo “.map” é simples. Basta criar um arquivo de texto e na primeira linha do arquivo gravar o comando “LINES”. Nas próximas linhas do arquivo deve-se gravar as informações dos pontos iniciais e finais de cada linha do ambiente, no seguinte formato, “x1 y1 x2 y2”, isto é, números separados por espaço. Por fim, o arquivo deve ser salvo com a extensão “.map”.

A Figura 11 ilustra a diferença entre as representações feitas pelo MobileSim (a) e pelo módulo de representação desenvolvido neste trabalho (b). Na Figura 11a foi utilizado um mapa de um ambiente real construído com base em valores provenientes dos sensores de uma plataforma robótica. Na representação feita pelo MobileSim são utilizados linhas e pontos. Neste caso, os pontos são unidades infinitesimais que representam a imprecisão da informação proveniente dos sensores. Esse tipo de informação foi ignorado pelo sistema, (Figura 11b) pois o objetivo não foi o de simular o ambiente com máxima perfeição, e sim

(37)

representar o ambiente de forma simples e suficiente para monitorar o robô e seu comportamento.

(a) (b)

Figura 11. Comparação entre interpretação do arquivo de mapa. (a) Representação do ambiente realizada pelo MobileSim. (b) Representação do ambiente realizada pelo sistema desenvolvido

neste trabalho.

3.2.2 PLANEJADOR DE ROTAS

O módulo responsável em definir as rotas é o Planejador de Rotas, o qual deverá definir a melhor rota possível entre dois pontos. O planejador implementa um mapeamento baseado no grafo de Voronoi e o algoritmo de planejamento de rotas é baseado na abordagem de Colônia de Formigas (DORIGO; STÜTZLE, 2004). Este módulo foi desenvolvido por (DE MATOS e DIAS, 2013).

(38)

4. DESENVOLVIMENTO

Este capítulo descreve as atividades realizadas em cada uma das etapas mostradas no Capítulo 3. Para uma melhor compreensão, primeiramente será apresentada uma seção com a visão geral do projeto, e nas seções seguintes serão descritas as principais atividades descritas na metodologia deste trabalho.

4.1 VISÃO GERAL DO PROJETO

O robô usado neste trabalho possui 16 sonares, sendo sua configuração apresentada na Figura 12. Como o objetivo é que o robô siga uma rota de forma continua, não será a considerada a possibilidade dele dar a ré. Sendo assim ele estará sempre seguindo em frente. Dessa forma as informações dos sonares da traseira são desnecessárias. As informações do sonares serão importante no momento em que for necessário determinar o quanto seguro será utilizar um determinado ponto da rota durante o processo de suavização da rota.

Figura 12. Organização dos sonares.

O sonar fornece a distância ortogonal entre ele e o obstáculo mais próximo. Essa distância poderá variar entre 15 e 700 centímetros e os valores de cada conjunto de 8 sonares (frontais e traseiros) são atualizados a cada 40 milissegundos. Estes valores são estipulados pelo fabricante (MOBILEROBOTS, 2012). Quando em um ambiente qualquer, a representação dessa informação é semelhante à ilustrada na Figura 13. Analisando a Figura

(39)

13, percebe-se que se um obstáculo pequeno estiver localizado entre os feixes de dois sonares, este não será percebido pelo robô até que ele esteja muito próximo ou até que colida com o robô.

Figura 13. Representação dos valores vindos dos sonares.

O planejador de rotas representa o ambiente utilizando o grafo de Voronoi, o que garante que um ponto da rota está equidistante aos obstáculos, e depois executa uma busca pelo melhor caminho a partir do grafo resultante. Dessa forma, uma rota poderá ser executada sem colisão, se garantida que a distância mínima entre os obstáculos é suficiente para que o robô possa passar. A Figura 14 mostra como seria o mesmo ambiente da Figura 13 mais a rota.

Figura 14. Rota.

Cada intervalo entre pontos representam trechos a serem percorridos pelo robô. Como já foi citado na Fundamentação Teórica, na seção 2.2, percorrer trecho a trecho pode representa mover, parar, e rotacionar. no entanto, o sistema que atuará no robô foi configurado para não parar até que alcance o fim da rota. Ao invés de mover, parar e rotacionar, ele se move até o fim do trecho e então realiza um movimento continuo e curvo até que esteja alinhado ao trecho seguinte. Quando num movimento curvo, transitando entre trechos, a velocidade do robô é reduzida para que este movimento não influencie tanto na execução da rota. Essa influência, pode ser vista na Figura 15, onde ,na região circulada, pode

(40)

observar o instante onde o robô sai de um trecho (entre P1 E P2) para entrar em um outro (P2 a P3).

Figura 15. Erro associado a execução de dois trechos de uma rota.

Diante dessa situação, executar um caminho com vários pontos e com uma distância pequena entre eles minimizará esse erro, por outro lado, isso irá fazer com que o robô passe mais tempo fazendo curvas, o que devido poderá aumentar o tempo gasto para executar uma rota. Sendo assim, seria interessante reduzir o número de pontos na rota, mas não somente reduzir, como também garantir que o caminho a ser percorrido seja coerente com o que foi gerado pelo planejador. Então, uma forma de reduzir esse número de pontos é definindo uma distância mínima entre eles. Só que dessa forma essa distância mínima poderá modificar a rota gerada de tal forma que não poderá garantir a segurança do robô. Para esse problema a solução encontrada foi a de utilizar a informação vinda dos sonares para fazer essa seleção de pontos da rota, e a partir desses pontos definir uma curva de Bézier.

Figura 16. Redução do número de pontos.

Só que ainda assim, não é possível garantir segurança na execução do caminho. Como será ilustrado na Figura 17.

De posse de uma função que descreva a curva, fica fácil determinar uma distância mínima entre pontos, consequentemente, facilita definir a velocidade do robô de forma segura. Além da possibilidade de melhorar a rota original, pois o caminho resultante poderá

(41)

ter um comprimento menor. A Figura 17 mostra a curva resultante com três pontos de controle (o primeiro a posição do robô, o terceiro o último ponto visível e o segundo um ponto da rota que estava entre os dois). No entanto, para a situação exemplificada na figura, ainda assim não é garantida a segurança do robô, pois há um momento em que a curva resultante está muito próxima do obstáculo.

Figura 17. Utilização da Curva de Bézier

A solução para garantir a escolha de pontos de controle para criar uma curva de Bézier que seja segura, é deslocar um dos pontos de controle, de forma que esse deslocamento altere a forma da curva ao ponto de garantir uma distância segura entre rota e obstáculo. O ponto em questão, que será deslocado, é o segundo ponto de controle, que defini o comportamento da curva. O comportamento desejado da curva é apresentado na Figura 18.

Figura 18. Melhorando a utilização da Curva de Bézier. A nova curva após o deslocamento do segundo ponto permite uma passagem segura do robô.

O controlador fuzzy será responsável em deslocar este ponto, a partir das informações do ambiente, com o objetivo de tornar a rota mais segura.

(42)

O controlador fuzzy implementado segue o modelo Mamdani apresentado na Fundamentação Teórica, na seção 3.2.3. O seu propósito é determinar em quanto será o deslocamento do segundo ponto de controle da curva quadrática de Bézier (que possui apenas três pontos de controle), como é representado na Figura 19. Sendo que, o primeiro ponto de controle (P1) é a posição atual do robô, o último (P3) será o ponto mais externo selecionado

com o auxílio dos sonares, e o segundo ponto (P2) será aquele que estiver entre o primeiro e

último ponto da lista de pontos que compõe o trecho. Como é uma característica da rota determinada pelo planejador, uma rota com muitos pontos e com uma pequena distância entre eles, fazer a seleção desse segundo ponto permite afirmar que a distância entre P1 e P2 será

aproximadamente igual a distância entre P 2 e P3.

Figura 19. Deslocando o segundo ponto de controle.

Esse ponto é deslocado sobre uma reta imaginária que está paralela ao robô, como pode ser visto na Figura 19. Esse deslocamento é feito somente em um sentido, pois os testes feitos, os quais serão apresentados no Capítulo 5, mostraram que esta abordagem foi suficiente para se obter um bom resultado.

4.2.1 VARIÁVEIS LINGUÍSTICAS

As variáveis de entrada definidas para o sistema foram apenas duas, a distância entre o robô (primeiro ponto de controle) e o terceiro ponto, e a diferença de ângulo entre o segundo ponto e o terceiro ponto, como é apresentado na Figura 20.

(43)

Figura 20. Variáveis Linguísticas.

Uma outra possível variável seria a distância entre o primeiro ponto e o segundo, no entanto, essa informação foi desconsiderada pois o segundo ponto será sempre o ponto que está no meio entre os dois pontos da rota, logo, a sua localização foi estimada na construção da base de regras.

A Figura 21 mostra como foi representada a variável θ. O domínio de θ é um valor maior que 0º e menor igual a 100º. Valores maiores que 100º foram desconsiderados pois não é comum tal comportamento nas rotas geradas pelo planejador, e o valor igual a 0 foi desconsiderado, pois para essa situação a solução é óbvia, não deslocar. No caso de surgir um valor maior que 100º, esse será então considerado igual a 100º. Os seguintes conjuntos foram definidos: MP, muito pequeno; P, pequeno; M, médio; G, grande e MG, muito grande.

Figura 21. Variável Linguística θ.

A Figura 22 ilustra a representação da variável distância, para a qual foram definidos apenas três conjuntos: pequeno (P), médio (M) e grande (G). A distância máxima admitida é de 2 metros. Dessa forma, na hora de selecionar o terceiro ponto, um dos critérios de seleção será também a distância dele até o robô, que não poderá ser maior que 2 metros. Esse valor foi determinado a partir da análise do comportamento do robô ao executar uma rota, na qual verificou-se que esse critério tornou a rota mais segura. No caso do ponto estar a uma distância inferior a 50 centímetros, nenhuma regra será ativada e sendo assim, o trecho a ser executado não será alterado.

(44)

Figura 22. Variável Linguística distância ao terceiro ponto de controle.

A saída do controlador é o deslocamento do segundo ponto da curva de Bézier, podendo este ser negativo ou positivo, como apresentado na Figura 23. Há situações que o deslocamento do ponto é muito pequeno, como por exemplo, sobre um longo trecho reto, no qual o deslocamento será praticamente nulo (conjunto N). Em outras situações, o deslocamento será negativo, ou seja, uma curva muito aberta é ajustada para ser um pouco mais fechada.

Figura 23. Variável de saída do sistema Fuzzy.

4.2.2 CONJUNTO DE REGRAS

Após a definição das variáveis, resta definir a base de regras. Esta base de regras foi construída com base em experimentos, os quais foram testados e simulados pela interface do sistema. Se a curva traçada não era a esperada, as regras ativadas eram editadas e verificadas novamente até que se chegasse a um comportamento satisfatório da curva. Esse comportamento satisfatório significa modificar o trecho da rota, sem colocar em risco a segurança do robô e também diminuir o caminho, quando possível.

Referências

Documentos relacionados

Figura A53 - Produção e consumo de resinas termoplásticas 2000 - 2009 Fonte: Perfil da Indústria de Transformação de Material Plástico - Edição de 2009.. A Figura A54 exibe

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Se você vai para o mundo da fantasia e não está consciente de que está lá, você está se alienando da realidade (fugindo da realidade), você não está no aqui e

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

A Lei nº 2/2007 de 15 de janeiro, na alínea c) do Artigo 10º e Artigo 15º consagram que constitui receita do Município o produto da cobrança das taxas

Agulha muito fina (platina-ródio ou tungstênio) varre superfície de um condutor, com corrente determinada por tunelamento passando da agulha para a superfície.  Corrente

◦ Os filtros FIR implementados através de estruturas não recursivas têm menor propagação de erros. ◦ Ruído de quantificação inerente a

Mediante o impacto do paciente com o ambiente do centro cirúrgico, a equipe de enfermagem deve estar voltada para o aspecto humano do atendimento, centrando suas