• Nenhum resultado encontrado

UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA BACHARELADO EM ENGENHARIA DE COMPUTAÇÃO JHIELSON MONTINO PIMENTEL DESENVOLVIMENTO DE UM SISTEMA ROBÓTICO PARA DETECÇÃO E TRANSPORTE DE OBJETOS FEIRA DE SANTANA 2013

N/A
N/A
Protected

Academic year: 2021

Share "UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA BACHARELADO EM ENGENHARIA DE COMPUTAÇÃO JHIELSON MONTINO PIMENTEL DESENVOLVIMENTO DE UM SISTEMA ROBÓTICO PARA DETECÇÃO E TRANSPORTE DE OBJETOS FEIRA DE SANTANA 2013"

Copied!
51
0
0

Texto

(1)

BACHARELADO EM ENGENHARIA DE COMPUTAÇÃO

JHIELSON MONTINO PIMENTEL

DESENVOLVIMENTO DE UM SISTEMA ROBÓTICO PARA DETECÇÃO E TRANSPORTE DE OBJETOS

FEIRA DE SANTANA 2013

(2)

JHIELSON MONTINO PIMENTEL

DESENVOLVIMENTO DE UM SISTEMA ROBÓTICO PARA DETECÇÃO E TRANSPORTE DE OBJETOS

Trabalho de Conclusão de Curso apresentado ao Colegiado de Engenharia de Computação como requisito parcial para obtenção do grau de Bacharel no Engenharia de Computação da Universidade Estadual de Feira de Santana.

Orientador: Profa Dra Fabiana Cristina Bertoni

FEIRA DE SANTANA 2013

(3)
(4)

AGRADECIMENTOS

Sou extremamente grato a minha vida. Em todos os caminhos percorridos nos meus 26 anos, fui abençoado por momentos inesquecíveis junto a minha família e amigos. Momentos de dificuldade foram superados e momentos de bons frutos foram compartilhados. Afinal, semeando com paciência, um dia, os frutos podem ser colhidos.

Agradeço a Deus, por ter sempre me abençoado e iluminado nos desafios do dia-a-dia, me guiando para uma vida na sociedade com dignidade e bastante orgulho. Ter tantos bons amigos e uma família tão bem estruturada é, sem dúvida, uma benção.

Agradeço aos meus pais, Carlos Queiroz Pimentel e Ana Célia dos Santos Montino Pimentel, pelo amor e suporte incondicional. Acreditando sempre na minha capacidade como futuro Engenheiro e confiando em mim como filho. Apesar de me quererem sempre por perto, me apoiaram e entenderam a importância das mobilidades para mim, tanto na questão profissional como pessoal. Aos meus irmão, Carlison e Ana Carla, agradeço por serem especiais em minha vida. Vocês não sabem, mas estou sempre aprendendo com vocês. Além dos nossos pais, vocês são as minhas grandes referências.

Agradeço a Universidade Estadual de Feira de Santana (UEFS), pelas oportunidades no âmbito acadêmico. Excelentes professores que, durante cinco anos de UEFS, contribuíram para minha formação. Ao grupo PET-EComp, minha segunda família, pelo apoio nas diversas etapas do curso e por despertar em mim o fomento à pesquisa. Ao tutor, conselheiro e amigo, Prof. Dr. Delmar Broglio Carvalho, pela paciência e atenção dada, motivando o grupo na execução de diversas atividades que não só enriqueceram os nossos currículos, mas que, para mim, ajudou bastante no despertar pela corrida da vida.

Aos amigos, agradeço a Antonio Gabriel Pereira de Andrade, Fernando Alberto Correia dos Santos Jr., Fladmy Alves, Isabela Gonçalves, João Carlos Nunes Bittencourt e Thayane Brito de Santana. Grandes guerreiros que me ajudaram a enfrentar tantas provas, trabalhos e atividades extracurriculares na graduação.

(5)

de curso. Pelas sugestões e paciência em tantas mudanças no percorrer do desenvolvimento do trabalho.

Por fim, agradeço a todos que me apoiaram e contribuíram por mais uma conquista pessoal.

(6)

RESUMO

Robôs tem se tornado cada vez mais sofisticados, e com o rápido avanço tecnológico, novas categorias da robótica tem surgido. Robôs móveis e autônomos compõe uma das categorias que tem adquirido uma atenção especial na comunidade científica. Uma das atividades regulares executadas por robôs móveis e autônomos é a de transporte de objetos. Na utilização de apenas um agente robótico, é comum o uso da estratégia de empurrar objetos entre pontos pré-estabelecidos, isso quando o agente não possui atuadores que permitam agarrar ou levantar o objeto. Alguns projetos são aptos a usar múltiplos robôs, sendo que a escolha depende do propósito ao qual o sistema é destinado. Nesse contexto, este trabalho propõe um sistema que permite um agente robótico autônomo identificar um objeto desejado em um ambiente desconhecido e transportá-lo a uma região desejada. O sistema foi desenvolvido com base em três grandes blocos: exploração do ambiente, identificação do objeto e o transporte do objeto. Na seção de testes, foi verificado o funcionamento dos blocos separadamente para depois o sistema ser integrado. O algoritmo desenvolvido para o transporte do objeto obteve resultados satisfatórios em todos os testes realizados.

(7)

Robots have become increasingly sophisticated, and with the rapid advancement of technology, new categories of robotics have emerged. Mobile and autonomous robots compose a category that has gained a special attention in the scientific community. One of the regular activities performed by mobile and autonomous robots is the transport of objects. With only one robotic agent, it is commonly used the strategy of pushing objects into desired destinations in case the agent does not have actuators that allow the robot to grab or lift the object. Some projects are able to use multiple robots, but the choice depends on the purpose on which the system is intended. In this context, this paper proposes a system that allows an autonomous robotic agent to identify a desired object in an unknown environment and transport it to a desired region. The system was developed based on three main blocks, exploration of the environment, object identification and transport of the object. On the test section, it was verified each block separately and then the system integrated. The algorithm developed for the transport of the object obtained satisfactory results in all tests.

(8)

LISTA DE FIGURAS

Figura 1 Típica grade de ocupação obtida em situações em que uma células está parcialmente ocupada (esquerda) e um mapa de cobertura contendo o valor de cobertura correspondente

(direita). 15

Figura 2 Exploração Baseada em Fronteira de um escritório. 17

Figura 3 A essência do problema SLAM. Uma estimativa simultânea do robô e das referências espacias são necessárias. A reais localizações nunca são conhecidas ou medidas diretamente. Observações são feitas entre o robô e as localizações das

referências. 19

Figura 4 O TurtlebotTM e seus principais componentes físicos. 25

Figura 5 iRobot Create .R 25

Figura 6 Disposição física dos componentes do iRobot Create . VisãoR inferior (esquerda) e superior (direita). 26

Figura 7 KinectTM (esquerda) e seus componentes internos (direita). 27

Figura 8 Posicionamento desejado para que seja possível ao robô empurrar o objeto em linha reta até o ponto final. 28

Figura 9 Os três modos de manipulação para o reposicionamento do

objeto. 28

Figura 10 Diagrama representando todas as etapas do algoritmo no mapa: verificação do objeto em relação ao ponto final (A), criação de pontos auxiliares para a futura manipulação do objeto (B), identificação do modo de manipulação a ser aplicado (C) e a

(9)

Figura 11 Diagrama representando o modelo de rede aplicado. 31

Figura 12 TurtlebotTM e o objeto (fita laranja) a ser empurrado. 32

Figura 13 Limites em RGB para a detecção do objeto. 34

Figura 14 Diagrama representando as etapas para o transporte do objeto. 35

Figura 15 Momento de transição entre o processo de exploração e o

transporte do objeto, objeto detectado. 35

Figura 16 Alinhamento do robô através dos sensores de toque. Primeiro momento, colisão do robô com o objeto (seta preta). Depois, resposta do robô à colisão (setas vermelha). 36

Figura 17 Identificando as extremidades do objeto usando o

infra-vermelho do KinectTM 37

Figura 18 Estado inicial de exploração. Representação do mapa (acima) e imagem real do ambiente de teste (abaixo). 39

Figura 19 Explorando o ambiente após aproximadamente dois minutos de

execução. 40

Figura 20 Mapa gerado após aproximadamente oito minutos de execução. 40

Figura 21 Terminal da estação de trabalho exibindo o momento da

detectação do objeto. 41

Figura 22 Alinhamento do robô em relação ao objeto. Posicionamento do robô antes do alinhamento (imagem superior) e depois (imagem

(10)

Figura 23 Etapa de verificação: configuração do robô após alinhamento. 43

Figura 24 Representação do estado de verificação no terminal da estação

de trabalho. 43

Figura 25 Empurrando o objeto com a parte de trás do robô. 44

(11)

ROS Robot Operating System

m2 metro quadrado

SLAM Localização e Mapeamento Simultâneo

EFK Filtro Extendido de Kalman

PSD Diagrama de Empurrões Estáveis

RRT Exploração Rápida de Árvores Aleatórias Ni-MH Níquel-Hidreto Metálico

mAh miliampere-hora

V Volts

A Ampere

GB Gigabyte

HD Disco Rígido

RGB Vermelho Verde Azul

FPS Frames por Segundo

USB Universal Serial Bus

RAM Random Access Memory

(12)

SUMÁRIO

1 INTRODUÇÃO. . . 11

1.1 ESTRUTURA DO TRABALHO . . . 12

2 FUNDAMENTAÇÃO TEÓRICA . . . 13

2.1 ROBÔS MÓVEIS E AUTÔNOMOS . . . 13

2.2 EXPLORAÇÃO DE AMBIENTES . . . 14

2.2.1 EXPLORAÇÃO BASEADA EM FRONTEIRA . . . 16

2.3 PROBLEMA DE LOCALIZAÇÃO E MAPEAMENTO SIMULTÂNEO . . 18

2.4 TRANSPORTE DE OBJETOS . . . 20

2.4.1 EMPURRAR UM OBJETO COM UM ROBÔ . . . 21

2.4.2 EMPURRAR UM OBJETO COM MÚLTIPLOS ROBÔS . . . 22

3 MATERIAIS E MÉTODOS . . . 24

3.1 TURTLEBOTTM . . . 24

3.1.1 IROBOT CREATE . . . 25R 3.1.2 KINECTTM. . . 26

3.2 ESTRATÉGIA PARA O TRANSPORTE DO OBJETO . . . 27

4 DESENVOLVIMENTO . . . 31

4.1 CENÁRIO . . . 31

4.1.1 ROBOT OPERATING SYSTEM (ROS) . . . 32

4.2 EXPLORANDO O AMBIENTE . . . 33 4.3 IDENTIFICANDO O OBJETO . . . 33 4.4 TRANSPORTANDO O OBJETO . . . 34 5 RESULTADOS E DISCUSSÕES . . . 38 5.1 EXPLORANDO O AMBIENTE . . . 38 5.2 DETECTANDO O OBJETO . . . 40 5.3 TRANSPORTANDO O OBJETO . . . 41 5.4 SISTEMA INTEGRADO . . . 45 6 CONCLUSÃO . . . 46 REFERÊNCIAS . . . 48

(13)

1 INTRODUÇÃO

Transporte e manipulação de objetos através de robôs móveis tem sido extensivamente discutido na literatura (PEREIRA et al., 2002). Os sistemas que realizam estas operações são encontrados atualmente em diversos ambientes, tais como fábricas, depósitos e até mesmo casas.

O sistema pode ser desenvolvido para um próposito simples, como o transporte de um objeto pequeno em um plano liso sem obstáculos, e para um propósito mais complexo, como o transporte de um objeto grande em um cenário em três dimensões com diversos obstáculos. Dessa forma, as configurações para o desenvolvimento do sistema são definidas de acordo com a finalidade da atividade.

Uma das principais configurações consiste no formato de manipulação. A forma mais básica, porém não menos importante, é a de empurrar o objeto. A técnica de empurrar é usada para mudar tanto a posição como a orientação do objeto (SHAHAR; RIVLIN, 1998). Se este for bastante largo ou pesado, um robô com manipuladores pode não ser capaz de agarrar e transportá-lo. Nesse caso, a operação de empurrar tornaria possível ao robô realizar tal tarefa (KURISU; YOSHIKAWA, 1997). A simplicidade do método permite que robôs com uma estrutura simples e barata, comparadas a de robôs que usam o método de agarrar, sejam utilizados (SHAHAR; RIVLIN, 1998).

Através do método de empurrar, o robô define um planejamento de rota que permite o transporte da configuração inicial do objeto à configuração final, evitando obstáculos. Um sistema de controle deve ser desenvolvido para que se verifique o posicionamento do objeto a cada empurrão realizado pelo robô.

Com base nos estudos feitos sobre agentes móveis e autônomos e as estratégias para o transporte de objetos em ambientes estáticos, este projeto foi desenvolvido com o objetivo de elaborar um sistema robótico capaz de identificar um objeto desejado num cenário estruturado, reconhecer o cenário e transportá-lo a uma região de destino de forma autônoma. Para alcançar tal objetivo foram necessárias as seguintes etapas:

1. Conhecer os recursos fornecidos pelo robô Turtlebot;

2. Estudar o funcionamento da plataforma ROS (Robot Operating System); 3. Estabelecer a comunicação sem fio entre o Robô e uma Estação de

(14)

12

4. Implementar nós testes na Estação de Trabalho para manipular as informações obtidas pelos sensores do robô;

5. Levantar os métodos para exploração de ambientes;

6. Verificar a existência de pacotes com o método de exploração já implementado;

7. Definir e configurar o pacote com o método de exploração desejado; 8. Realizar testes no pacote que efetua a exploração do ambiente;

9. Estudar técnicas para identificação de objetos em um cenário desconhecido através da captura de imagens pelo KinectTM;

10. Implementar um nó (ROS) que permita a identificação do objeto pelo Kinect;

11. Realizar testes no nó implementado;

12. Buscar métodos que realizam transporte de objetos; 13. Desenvolver um algoritmo para o transporte do objeto; 14. Implementar um nó que execute o algoritmo desenvolvido; 15. Realizar testes no nó;

16. Reunir as etapas de exploração, detecção e transporte num único sistema;

17. Realizar os testes finais; 1.1 ESTRUTURA DO TRABALHO

Este trabalho está distribuído em seis capítulos. O capítulo 1 apresenta uma breve introdução à robótica com foco em robôs móveis para o transporte autônomo de objetos. No capítulo seguinte (capítulo 2) são apresentados os principais fundamentos envolvidos na execução de todas as etapas do trabalho. No capítulo 3, é apresentado os materiais utilizados durante o desenvolvimento do trabalho e o método elaborado para o transporte do objeto. O capítulo 4 demonstra as principais estapas de desenvolvimento do trabalho. Por fim, os capítulos 5 e 6 encerram o documento com a discussão dos resultados e a conclusão.

(15)

2 FUNDAMENTAÇÃO TEÓRICA

O objetivo desse capítulo é apresentar a fundamentação teórica necessária para a compreensão das etapas do trabalho desenvolvido. Inicia-se com a descrição sobre robôs móveis e autônomos. Em seguida, é introduzido os métodos para exploração e mapeamento de ambientes e, por fim, o capítulo se encerra com a apresentação de trabalhos relacionados ao transporte de objetos.

2.1 ROBÔS MÓVEIS E AUTÔNOMOS

A principal característica dos robôs móveis é a presença de uma base móvel que permite ao robô se locomover livremente no ambiente (SICILIANO et al., 2009). Existe uma grande variedade de possíveis mecanismos de locomoção. Em laboratório, por exemplo, alguns robôs de pesquisa podem andar, pular, correr, deslizar, nadar, voar e rolar (SIEGWART; NOURBAKHSH, 2004).

Segundo Siegwart e Nourbakhsh (2004), a roda tem sido, de longe, o método de locomoção mais popular na robótica móvel, pois alcança uma boa eficiência através de uma implementação mecânica relativamente simples. Além disso, o equilíbrio não é geralmente um problema em projetos de robôs com rodas, pois são quase sempre projetados de forma que todas as rodas estejam em contato com o solo a todo instante.

Quanto a autonomia de um robô móvel, Lozano-Pérez (1990) caracteriza por ser uma conexão inteligente entre as operações de percepção e ação, que define seu comportamento e o permite chegar à execução dos objetivos programados sobre o ambiente com alguma incerteza.

As operações de percepção envolvem um sistema sensorial que pode adquirir dados sobre a situação interna do sistema mecânico (sensores proprioceptivos, tais como o girômetro e o acelerômetro), bem como sobre o estado externo do ambiente (sensores exteroceptivos, tais como os sensores de toque e as câmeras). A capacidade de exercer uma ação, tanto a de locomoção como manipulação, é proporcionada por um sistema de atuadores (por exemplo, o motor de passo e um braço robótico) que interage com os componentes mecânicos do robô (SICILIANO et al., 2009).

(16)

14

robô para abstrair o entorno e converter a informação obtida em ordens, de tal modo que, aplicadas sobre os atuadores do sistema de locomoção, garanta a realização eficaz de sua tarefa. Desse modo, as duas grandes características que o afastam de qualquer tipo de veículo são (LOZANO-PÉREZ, 1990).

• Percepção: O robô móvel deve ser capaz de determinar a relação com seu ambiente de trabalho através do sistema sensorial a bordo. A capacidade de percepção do robô móvel se traduz na síntese de toda a informação oferecida pelos sensores, com o objetivo de gerar mapas globais e locais do ambiente de acordo aos diversos níveis de controle. • Raciocínio: O robô móvel deve ser capaz de decidir que ações são

solicitadas em cada momento, segundo o estado do robô e o de seu entorno, para alcançar seu(s) objetivo(s). A capacidade de raciocínio do robô móvel traduz-se no planejamento de trajetórias globais seguras e na habilidade para modificá-las no caso de obstáculos inesperados para permitir, ao robô, a execução dos objetivos solicitados.

2.2 EXPLORAÇÃO DE AMBIENTES

De acordo com Yamauchi (1997), enquanto que muitos robôs podem navegar usando mapas, poucos podem construir seus próprios mapas. É comum o ser humano mapear o território por antecedência, fornecendo a localização exata dos obstáculos (para mapas métrico) ou um gráfico representando a conectividade entre as regiões abertas (para mapas topológicos). Na situação em que um mapa não é fornecido previamente, a maioria dos robôs móveis tornam-se incapazes de navegar de forma eficiente quando inseridos em ambientes desconhecidos.

A exploração tem o potencial de libertar robôs dessa limitação. O ato de explorar é definido pela ação de mover através de um ambiente desconhecido enquanto constrói um mapa que pode ser usado em uma navegação subsequente. Uma boa estratégia de exploração é aquela que gera um mapa completo ou quase completo em um período de tempo razoável (YAMAUCHI, 1997).

Um dos métodos de exploração de ambientes que se tornou bastante popular nos anos 80 foi o Wall-Following. O método consiste em mover o robô a uma velocidade constante mantendo sempre a uma distância fixa da

(17)

parede (LEE, 2003). Se o robô se afastar ou se aproximar de mais da parede, o sensor deve detectar essa variação e corrigir a posição do robô. Caso se depare com um canto de uma sala ou uma curva, o robô deve realizar uma verificação de 360oaté identificar a continuidade da parede e, assim, continuar a segui-la. Esta estratégia possui pontos positivos devido a sua simplicidade em ser implementada e por ser um método que se recupera fácil de um erro. No entanto, em ambientes que não possuam longas e retas paredes, o robô irá realizar diversas verificações para cada parte irregular, tornando-se inapropriado para ambientes com elementos próximos as paredes, como um escritório (LEE, 2003).

Algumas estratégias de exploração fazem uso de um mapa de cobertura para a tomada de decisões. Diferente dos métodos que analisam um mapa como uma grade de ocupação, em que cada célula é caracterizada por ser um espaço livre ou ocupado, um mapa de cobertura supera essa limitação, armazenando para cada célula um valor que representa a provável ocupação do espaço (Figura 1). Sempre que os valores dos sensores forem carregados, um filtro bayesiano é aplicado para obtenção dos novos valores no mapa (STACHNISS, 2009).

Figura 1: Típica grade de ocupação obtida em situações em que uma células está parcialmente ocupada (esquerda) e um mapa de cobertura contendo o valor de cobertura correspondente (direita).

Fonte: (STACHNISS, 2009)

A estratégia mais simples consiste em conduzir o robô a um local próximo para coletar informações sobre células que não tenham sido suficientemente exploradas. Devido ao ruído de alguns sensores, o robô deve reanalisar algumas células para garantir uma precisão. Uma segunda estratégia utiliza o ganho de informação para direcionar o robô com o intuito de minimizar as incertezas. Este ganho de informação é computado pela variação do valor de entropia do mapa. Por último, uma estratégia que se utiliza do ganho de informação semelhante a anterior, mas que, dessa vez, limita o

(18)

16

mapa em pequenas regiões. Apenas quando uma região for completamente explorada, o sistema passa para outra. A exploração é finalizada quando o valor de entropia do mapa se aproxima a zero. Os métodos de exploração usando mapa de cobertura mostram que é possível explorar e construir um mapa preciso mesmo que se utilize de robôs com sensores bastante ruidosos, como por exemplo um sonar (STACHNISS, 2009).

O método a seguir será descrito mais detalhadamente por ter sido o método utilizado no projeto. Os principais motivos da escolha foram a precisão dos sensores utilizados no trabalho, o ambiente onde foram realizados os testes (escritório) e pela facilidade de compreensão.

2.2.1 Exploração Baseada em Fronteira

A idéia central do método de exploração baseada em fronteira consiste em mover o robô em direção a uma fronteira, região limite entre uma área desconhecida e livre no mapa, para obter o máximo de novas informações sobre o mundo. Ao alcançar a fronteira, o robô irá observar a região inexplorada e adicionar as novas informações ao mapa. Como resultado, o território mapeado é expandido, empurrando, assim, o limite que representa a fronteira (YAMAUCHI; SCHULTZ; ADAMS, 1998).

Se um robô com um mapa puder navegar até um determinado ponto no espaço, este ponto é considerado acessível. E todo o espaço acessível é contíguo, pois um caminho deve existir a partir da posição inicial do robô até qualquer outro ponto nesse espaço. Cada caminho deve estar, pelo menos, parcialmente no território mapeado, uma vez que o espaço em torno da posição inicial do robô é mapeado no instante que se inicia a exploração. Os caminhos que estiverem parcialmente em território desconhecido irão sempre atravessar uma fronteira. Quando o robô navegar em direção a essa fronteira, ele vai incorporar mais informação ao mapa. Se o robô não incorpora todo o caminho num só momento, uma nova fronteira irá existir ao longo do caminho, separando os segmentos conhecidos e desconhecidos e proporcionando um novo destino para a exploração. Deste modo, utilizando o método de exploração baseada em fronteira, eventualmente o robô irá explorar todo o espaço acessível no ambiente (YAMAUCHI; SCHULTZ; ADAMS, 1998).

A Figura 2 mostra o resultado de um teste utilizando o método de exploração baseada em fronteira onde um robô, ao ser inserido no ambiente

(19)

desconhecido, percorre um corredor e explora um escritório com as dimensões de 42 m2 .

Figura 2: Exploração Baseada em Fronteira de um escritório.

Fonte: (YAMAUCHI; SCHULTZ; ADAMS, 1998)

As células com baixa probabilidade de ocupação são representadas por um espaço em branco; células com probabilidade de ocupação desconhecida são representadas por pontos mais claros; e as células com alta probabilidade de ocupação são representadas por pontos mais escuros. A posição do robô é revelada por um círculo seguido de um traçado que sinaliza a trajetória a ser percorrida pelo agente. Esta trajetória parte sempre da posição atual do robô em direção a uma das fronteiras. Cada fronteira está representada por um círculo com dois traçados perpendiculares internamente junto a um número de referência (YAMAUCHI; SCHULTZ; ADAMS, 1998).

(20)

18

Na Figura 2.a, o robô é inserido no centro de um corredor, em seguida, constrói um mapa com base nas informações obtidas pelo sonar e identifica três fronteiras. Na Figura 2.b, o robô chega a fronteira mais próxima e adiciona as observações da nova localização no mapa. O robô detecta duas fronteiras e navega em direção a fronteira 0. Esta fronteira corresponde a uma porta que leva para um escritório não explorado. Na Figura 2.c, o robô atravessa a porta detectando uma nova fronteira no centro do escritório no limite da capacidade de alcance do sonar (YAMAUCHI; SCHULTZ; ADAMS, 1998).

A Figura 2.d mostra o robô depois de explorar um pouco mais o escritório. O robô detecta cinco fronteiras no mapa, e navega para a mais próxima, a fronteira 2. Na Figura 2.e, o robô detectou seis fronteiras, mas as duas mais próximas são inacessíveis, ou seja, não possuem espaço suficiente para navegação do robô à fronteira. Neste caso, o robô navega para a fronteira mais próxima e acessível, a fronteira 0. Por fim, a exploração do escritório é finalizada conforme exibido na Figura 2.f (YAMAUCHI; SCHULTZ; ADAMS, 1998).

2.3 PROBLEMA DE LOCALIZAÇÃO E MAPEAMENTO SIMULTÂNEO

O problema de localização e mapeamento simultâneo ( SLAM ) questiona se é possível para um robô móvel ser alocado em uma localização e ambiente desconhecido e ainda assim construir incrementalmente um mapa consistente desse ambiente enquanto simultaneamente determina sua própria localização no mapa. No SLAM, ambas as trajetórias da plataforma e a localização das referencias espaciais são estimadas em tempo real sem a necessidade de qualquer conhecimento prêvio da localização (DURRANT-WHYTE; BAILEY, 2006).

A solução para o problema tem sido um dos mais notáveis sucessos na comunidade da robótica nas últimas decadas. SLAM tem sido formulado e solucionado como um problema teórico em inúmeras formas. SLAM também tem sido implementado em inúmeros domínios desde ambientes internos a externos, aquáticos e até sistemas aérios. De acordo com DURRANT-WHYTE e BAILEY (2006), num nível conceitual e teórico, SLAM pode agora ser considerado um problema resolvido. No entanto, problemas substanciais permanecem na realização de soluções mais genéricas e notavelmente na

(21)

construção e uso de mapas perceptivamente ricos, com alta semelhança ao mundo real, como parte de um algoritmo SLAM.

Considere um robô móvel se movendo através do ambiente e tomando observações relativas às referências com base nos sensores localizados no robô, conforme demonstrado na Figura 3.

Figura 3: A essência do problema SLAM. Uma estimativa simultânea do robô e das referências espacias são necessárias. A reais localizações nunca são conhecidas ou medidas diretamente. Observações são feitas entre o robô e as localizações das referências.

Fonte: (DURRANT-WHYTE; BAILEY, 2006)

No instante de tempo k, os seguintes valores são definidos (DURRANT-WHYTE; BAILEY, 2006):

xk: o vetor de estados descrevendo a localização e orientação do veículo uk: o vetor de controle, aplicado no tempo de k-1 para mover o veículo ao estadoxk no tempo k

mi: um vetor descrevendo a localização da referência i, na qual sua posição real é tomada independente do tempo

zik: uma observação tomada pelo veículo que define a localização da referência i no tempo k. Quando existem multiplas referências observadas em um momento ou quando uma referência específica não é relevante para a análise, a observação será escrita simplesmente comozk.

Em adição, os seguintes conjuntos são também definidos:

(22)

20

U0:k = {u1,u2,...,uk} = {U0:k−1,uk}: o histórico da entradas de controle m = {m1,m2, ... ,mn} o conjunto de todas as referências

Z0:k = {z1, z2, ... , zk} = {Z0:k−1, zk}: o conjunto de todas as referências observadas.

No formato probabilístico, o problema de mapeamento e localização simultâneo requer que a probabilidade distribuída

P(xk,m|Z0:k,U0:k,x0) (1) seja computada para todo os instantes k. Essa probabilidade distribuída descreve a densidade posterior conjunta das localizações das referências e o estado do veículo (DURRANT-WHYTE; BAILEY, 2006).

Soluções para o problema probabilístico SLAM envolvem encontrar uma representação apropriada para ambos os modelos de observação e locomoção que permitam uma computação eficiente e consistente da distribuição a priori e posteriori. Até então, a representação mais comum é a do formato do modelo estado-espaço com ruído aditivo Gaussiano, que conduz para o uso do Filtro Extendido de Kalman ( EFK )1 na solução do problema SLAM (DURRANT-WHYTE; BAILEY, 2006).

2.4 TRANSPORTE DE OBJETOS

No transporte de um objeto, o objetivo do robô é fazer com que um objeto passivo, ao invés do próprio robô, chegue a um determinado destino. Para isso, é necessária a realização de um planejamento de rotas com foco na manipulação do objeto. Esse planejamento consiste em encontrar uma ou mais rotas de navegação no ambiente a partir da configuração inicial do objeto a uma determinada configuração de destino, sem esbarrar nos obstáculos e respeitando o método de manipulação aplicado (BERG; GERRITS, 2010).

Vários tipos diferentes de manipulação existem, como agarrar, apertar, rolar, e até mesmo jogar (BERG; GERRITS, 2010). Para esse trabalho foi utilizada a estratégia de manipulação que consiste em empurrar objetos. Empurrar é uma importante e básica manipulação robótica. Como o método de agarrar, empurrar é utilizado para alterar a posição e a orientação do objeto. 1Mais informações sobre o Filtro Extendido de Kalman pode ser encontrado na página 103

(23)

No entanto, Berg e Gerrits (2010) afirmam que empurrar tem várias vantagens sobre agarrar, por exemplo, permite uma manipulação mais fácil e simultânea de um grupo de objetos, possibilita a manipulação de objetos maiores e mais pesados, e, mais importante, requer uma estrutura robôtica simples e mais barata comparada a do método de agarrar.

Para que o método de empurrar seja aplicado, Lynch e Mason (1996) definem três vertentes para análise: identificar um formato que permita o objeto ser empurrado de forma estável nas direções desejadas; saber se é possível empurrar o objeto para a configuração de destino dadas as limitações do espaço; e definir uma trajetória que permita uma sequência de empurrôes estáveis no objeto até a configuração de destino.

A seguir, estão apresentados alguns trabalhos relacionados sobre o transporte de objetos com um ou mais robôs usando a técnica de empurrar. 2.4.1 Empurrar um Objeto Com um Robô

De acordo com Shahar e Rivlin (1998), na literatura que se dedica a planejamento de movimentos, poucos estudos relatam o problema de planejamento do transporte de objetos usando o método de empurrar com um único agente. A seguir, uma breve descrição de algumas dessas técnicas (maiores informações são encontradas nas referências).

O estudo realizado por Lynch e Mason (1995) utiliza, na etapa de planejamento, o método de busca Best-First que identifica caminhos acessíveis para o transporte do objeto. O sistema de controle analisa os caminhos de acordo com as limitações do espaço e define uma rota para ser executada. Por fim, o transporte é iniciado tendo a todo instante uma verificação na estabilidade do movimento que empurra o objeto (mecânica) (LYNCH; MASON, 1995).

O resultado de um planejamento para o transpote do objeto através do método de empurrar foi descrito por Shahar e Rivlin (1998) como uma rota num espaço composto por todos os objetos não estáticos, um robô e os objetos móveis. Essa rota é resultado de um algoritmo formado por dois passos: primeiro, um contexto sensitivo de propagação reversa mapeia cada configuração livre com o custo da execução do transporte à configuração final; segundo, este mapeamento é usado para restaurar um planejamento específico do transporte de uma configuração inicial à final usando a busca

(24)

22

Hill-Climbing. Uma função de custo permite determinar imediatamente se tal planejamento existe ou não (SHAHAR; RIVLIN, 1998).

Akella e Mason (1992) descrevem o planejamento como uma sequência de empurrões que rotacionam e transladam o objeto até atigir a configuração de destino. Os ângulos para a reorientação são definidos através da heurística chamada de Angle-Eating e por um Diagrama de Empurrões Estáveis ( PSD ) proposto por Brost em 1988. Com base na sequência de empurrões fornecidos pelo algortimo, o objeto é empurrado até alcançar a posição e orientação de destino (AKELLA; MASON, 1992).

Por último, Berg e Gerrits (2010) desenvolveram um trabalho para o transporte de objetos também pelo método de empurrar. A diferença que neste trabalho, o objeto selecionado possui um formato de um disco e não de um polígono como nos trabalhos acima. Este trabalho teve como base o algoritmo desenvolvido por Nieuwenhuisen et al. (2006) que consiste no planejamento de rotas usando a estrutura de dados conhecida como Rapidly-exploring Random Trees ( RRT ). Este algoritmo constrói uma árvore com os caminhos que podem ser alcançáveis no mapa e uma subrotima em paralelo que realiza o transporte do objeto por um dos caminhos da árvore (BERG; GERRITS, 2010).

2.4.2 Empurrar um Objeto Com Múltiplos Robôs

Existem diversas abordagens sobre o problema do transporte de objetos por um grupo de robôs. Alguns trabalhos tem sido desenvolvidos no modo que toda a comunicação entre os robôs é omitida e substituída por mecanismos comportamentais baseados na informação local (YAMADA; SAITO, 2001). Por outro lado, existem trabalhos em que a comunicação é fundamental (Muñoz Melendez; DROGOUL, 2004), quando os robôs precisam determinar a estratégia do transporte, a força, direção e magnitude (deslocamento e velocidade) a ser aplicada nos movimentos de cada robô com a finalidade de alcançar um objetivo em comum (WANG; SILVA, 2005).

Existem algumas estratégias bem conhecidas como a "Encerramento de Objeto" (WANG; KUMAR, 2002) onde a posição do objeto pode ser controlada por um time de robôs que envolve o objeto, fazendo com que o formato de confinamento seja controlado pelos movimentos de cada robô envolto. Outra abordagem também comum é o "Empurrador-Observador" (GERKEY; MATARIC; SIMSARIAN, 1995) onde um robô (observador) observa o

(25)

movimento do objeto enquanto coordena as operações realizadas por um time de robôs (empurrador) que manipulam fisicamente o objeto.

Alguns trabalhos recentes utilizam o modelo de "Inteligência Coletiva", (LI; CHEN, 2004), onde sistemas de robôs homogêneos auto-organizáveis são construídos obtendo um comportamento global, descentralizado e inteligente. Além disso, algumas abordagens são baseadas em ferramentas de inteligência artificial, como o reforço de aprendizagem ou "Q-Learning" (WANG; SILVA, 2006).

(26)

24

3 MATERIAIS E MÉTODOS

Este capítulo é dedicado à descrição dos materiais usados no desenvolvimento do trabalho e na apresentação do método desenvolvido para o transporte do objeto. O agente robótico utilizado para a execução das atividades foi o TurtlebotTM desenvolvido pela empresa Willow Garage. A seguir, uma breve descrição do TurtlebotTM e de seus principais componentes. O capítulo se encerra com a apresentação do método aplicado no transporte do objeto.

3.1 TURTLEBOTTM

O TurtlebotTM é um projeto de hardware aberto baseado na plataforma iRobot Create . Possui componentes de hardware de baixo custo, integradosR para tirar o máximo proveito de cada um, constituindo uma plataforma eficaz para o desenvolvimento de aplicações para robôs. Múltiplas estruturas de montagem permitem que o robô seja personalizado de acordo com as necessidades do projeto (GARAGE, 2013).

A Figura 4 apresenta o TurtlebotTM com marcações nos principais componentes físicos (GARAGE, 2013). A base móvel, marcada pela letra A, é formada pelo iRobot Create , uma bateria de Ni-MH com a capacidadeR nominal de 3000 mAh , um giroscópio e uma fonte de alimentação de 12 V e 1.5 A usada na alimentação do Kinect. A marcação B representa o próprio Kinect com o cabo de alimentação. O componente marcado pela letra C é composto por um netbook ASUS 1215N com um processador Intel AtomR TM D525 Dual Core, memória de 2 GB , uma placa gráfica NVIDIA IONR TM e um HD com capacidade de 250GB. Por último, a marcação com a letra D representa a estrutura do TurtlebotTM composta por placas e barras para o suporte dos componentes fixados acima do iRobotCreate.

(27)

Figura 4: O TurtlebotTMe seus principais componentes físicos.

Fonte: (GARAGE, 2013)

3.1.1 IRobot Create R

O iRobot Create (Figura 5) foi desenvolvido pela empresa iRobot, comR base no robô RoombaTM. Trata-se de um kit completo para o desenvolvimento robótico que, combinado com uma plataforma de programação robótica (ROS - Robot Operating System), permite aos desenvolvedores e estudantes acessarem os diversos sensores e atuadores do robô por meio de uma interface aberta. Essa plataforma possibilita controlar o robô através dos aplicativos desenvolvidos pelos usuários, bem como instalar novos componentes, como um braço mecânico, usando as interfaces de conexões (IROBOT, 2013).

Figura 5: iRobot Create .R

Fonte: (IROBOT, 2013)

O iRobot Create é uma plataforma robótica barata equipada com umR conjunto de sensores e atuadores. A seguir (Figura 6), a disposição dos sensores e outros componetes. Neste trabalho foram utilizados apenas os sensores de toque e o odômetro.

(28)

26

Figura 6: Disposição física dos componentes do iRobot Create . Visão inferiorR

(esquerda) e superior (direita).

Fonte: (IROBOT, 2013) (modificado)

Os dois sensores de toque do iRobot Create definem, após umaR colisão, qual parte do robô ocorreu o choque. Por exemplo, caso apenas um dos sensores tenha sido ativado, significa que o lado deste sensor corresponde ao lado de contato na colisão; caso os dois sensores tenham sido ativados, significa que o robô estabeleceu um contato frontal com outro elemento. Estes sensores são úteis na execução do transporte, na etapa de alinhamento do robô com o objeto a ser transportado.

O odômetro auxilia na verificação da distância percorrida pelo robô durante o deslocamento no ambiente. A imprecisão no valor da distância depende da superfície em que o robô é inserido. Quanto mais lisa for essa superfície, maior será o erro devido ao deslisamento das rodas sem causar o delocamento do robô. Esse sensor foi utilizado na etapa de exploração e mapeamento do ambiente.

3.1.2 KinectTM

O Microsoft KinectTM (Figura 7) foi projetado como um controle para o console do vídeo-game XBOX 360, no entanto, tem sido útil como um sensor de vídeo/profundidade na robótica.

Nesse trabaho, o KinectTM foi essêncial em todas as etapas de desenvolvimento. A imagem colorida ( RGB ) foi utilizada para a detecção do objeto, a imagem de profundidade usada na localização da posição do objeto no mapa e o laser infra-vermelho para a exploração e o transporte do objeto.

(29)

Figura 7: KinectTM(esquerda) e seus componentes internos (direita).

Fonte: (MICROSOFT, 2013)

A lista a seguir exibe algumas das informações técnicas do sensor (MICROSOFT, 2013):

• Câmera RGB: resolução de 1280x960

• Sensor de Profundidade: laser infra-vermelho • Alcance: de 0,7 metros até 6 metros

• Ângulo do Campo de Visão - Horizontal: 57o • Ângulo do Campo de Visão - Vertical: 43o • Base Motorizada: inclinação do sensor de 27o • Taxa de frame: 30 Hz ( FPS )

• Programação: C/C++/C# • Conexão USB

3.2 ESTRATÉGIA PARA O TRANSPORTE DO OBJETO

O algoritmo desenvolvido possui dois requisitos para o seu adequado funcionamento. Primeiro, o objeto deve ser no formato de um cubo, com dimensões um pouco maiores que a do robô; e segundo, o objeto, ao ser detectado durante a exploração do ambiente, deve paralizar todos os processos anteriores do robô e inicializar um alinhamento dele com o objeto. Dessa forma, o robô estará parada, de frente (perpendicular) ao objeto e pronto para iniciar o transporte.

Assim, foi elaborado um algoritmo que permite o deslocamento do objeto de forma menos complexa e de fácil programação. O objetivo principal do algoritmo é fazer com que uma das faces do objeto fique perpendicular ao ponto final ou de destino (Figura 8). Quando essa etapa é atingida, o robô precisa apenas empurrar o objeto em linha reta, desde que não possua obstáculos, até o ponto final, finalizando o processo.

(30)

28

Figura 8: Posicionamento desejado para que seja possível ao robô empurrar o objeto em linha reta até o ponto final.

Fonte: Próprio autor

Mas para que o objeto fique posicionado na forma demonstrada na Figura 8, é necessário que este seja manipulado através de três movimentos básicos, como ilustrados na (Figura 9). A movimentação do objeto, em linha reta, deve ser realizada pelo centro da face e os movimentos de posicionamento em curva devem ser realizados pelas extremidades. Por exemplo, para mover o objeto realizando uma curva à direita, deve-se empurrar a extremidade esquerdo da face do objeto.

Figura 9: Os três modos de manipulação para o reposicionamento do objeto.

Fonte: Próprio autor

Com base nos movimentos citados, foi elaborado um algoritmo que desloca o objeto até a posição demonstrada na Figura 8. Nesse algoritmo, se estabelece uma área (região de aceitação) entorno do ponto final com dimensões de 1m2 com o objetivo de facilitar a verificação do posicionamento do objeto em relação ao ponto final. A seguir, as etapas do algoritmo:

1. Localizar o robô e o ponto final no mapa (Figura 10.A); 2. Identificar a distância d entre estas duas referências;

(31)

3. No mapa, definir um ponto PC a uma distância d à frente do robô;

4. Verificar se este ponto PCse encontra dentro da região de aceitação (RA). Se estiver, o algoritmo deve ser finalizado, pois o objeto já se encontra na posição desejada podendo ser empurrado em linha reta à posição final; 5. Caso contrário (Figura 10.B), o robô precisa definir o melhor modo para

a manipulação do objeto. Assim, o robô deve se mover 45o à esquerda e definir um novo ponto PE a uma mesma distância d à frente do robô. Depois, deve mover-se 90o à direita e definir o ponto PD também a uma distância d à frente do robô. Por fim (Figura 10.C), calcular as distâncias entre os pontos PE e PD até o ponto final (para o ponto PE, a distância será representada pela sigla dE e para o ponto PD, pela sigla dD).

6. Se dE > dD, deve-se empurrar o objeto levemente pela extremidade do lado esquerdo do objeto para que se mova para o lado direito (Figura 10.D).

7. Se dE < dD, deve-se então realizar o movimento contrário ao do item anterior.

8. Ao término da manipulação do objeto, alinhe o robô e retorne ao passo 3. As primeiras etapas do algoritmo consistem em definir no mapa um ponto à frente do robô com a mesma distância entre o robô e o ponto final. Caso o novo ponto definido esteja dentro da região de aceitação, o algoritmo é finalizado com êxito. Caso contrário, iniciam-se as etapas de verificação do algoritmo. Nessa fase, o robô precisa identificar o movimento mais adequado que viabilize uma maior aproximação do objeto à região de aceitação. Para isso, o robô realiza uma rotação de 45o à esquerda, define um novo ponto PE a uma mesma distância d à frente do robô e retorna a posição anterior. Depois realiza o mesmo processo para a direita criando o ponto PD. Após identificar os dois pontos, calculam-se as distâncias entre estes pontos e o ponto final (no exemplo abaixo, o ponto final é a própria origem do mapa). Seguindo as etapas 6 e 7, o algoritmo identifica o melhor movimento para deslocar o objeto naquele instante. No exemplo da Figura 10.C, a distância referente ao ponto PD é menor que a do ponto PE. Assim, o movimento mais apropriado para esta configuração é o de empurrar levemente o objeto pelo canto esquerdo da face do objeto fazendo com que o mesmo se mova numa curva suave à direita. Finalizada essa etapa, o robô se alinha em relação ao objeto e retorna para a

(32)

30

etapa de número três do algoritmo onde se calcula o novo valor da distância entre o robô e o ponto de destino.

Figura 10: Diagrama representando todas as etapas do algoritmo no mapa: verificação do objeto em relação ao ponto final (A), criação de pontos auxiliares para a futura manipulação do objeto (B), identificação do modo de manipulação a ser aplicado (C) e a manipulação do objeto (D).

(33)

4 DESENVOLVIMENTO

Nesta seção será descrito o desenvolvimento de um sistema robótico para detecção e transporte de um objeto. O capítulo se inicia com a descrição do ambiente de trabalho, a escolha do objeto para o transporte e a configuração da plataforma de desenvolvimento. Em seguida, é apresentada a etapa de exploração do ambiente, na qual o robô irá percorrer o laboratório explorando regiões desconhecidas até que o objeto seja detectado. O processo de detecção é descrito brevemente e, por fim, a etapa do transporte do objeto finaliza o capítulo.

4.1 CENÁRIO

O trabalho foi desenvolvido no laboratório de robótica da Universidade da Carolina do Sul - EUA. O ambiente do laboratório se assemelha ao de um escritório, com mesas e cadeiras lado a lado e um largo corredor ao centro. Nesse corredor foram efetuados todos os testes do trabalho. Em uma das mesas, foi instalada a estação de trabalho contendo um notebook com processador Intel CoreR TM i7 e 8GB de memória RAM e um roteador wireless.

Diversas opções para estabelecer uma comunicação entre a estação de trabalho e o TurtlebotTM foram analisadas. Para que nenhum computador (sem placa de rede sem fio) do laboratório fosse desconectado, foi recomendada a opção da Figura 11. Nessa configuração, uma rede local sem fio é criada pelo Access Point estabelecendo a comunicação entre a estação e o robô. Por último, uma conexão via ethernet é estabelecida permitindo ao desenvolvedor ter acesso tanto à internet (via cabo) como à rede local sem fio.

Figura 11: Diagrama representando o modelo de rede aplicado.

(34)

32

Após ajustar o ambiente de trabalho, foi necessário definir qual objeto seria usado para ser deslocado e de que modo o robô iria identificá-lo. Devido à ausência de atuadores no TurtlebotTM para manipulação de objetos, foi discutido o uso de uma caixa com faces um pouco maiores que as dimensões do robô tanto em altura como em largura (Figura 12). Isso facilitaria a ação do robô de empurrar o objeto, permitindo um maior controle no transporte. Pensando na forma mais simples de se identificar o objeto, surgiu a ideia da utilização do sistema de cores na análise de imagens. Assim, foi definida uma cor (laranja), não comum no ambiente do laboratório, para a marcação das faces do objeto. Além da identificação, a marcação também auxilia o agente no posicionamento do robô para as futuras ações, como a de empurrar o objeto.

Figura 12: TurtlebotTM e o objeto (fita laranja) a ser empurrado.

Fonte: Próprio autor

4.1.1 Robot Operating System (ROS)

Após definir o formato do objeto e configurar o ambiente de trabalho, foram iniciados os primeiros passos usando a plataforma ROS. A versão usada durante o desenvolvimento do sistema foi a ROS Groovy Galapagos [http://wiki.ros.org/groovy]. Esta versão foi instalada tanto no netbook embutido no TurtlebotTM quanto na estação de trabalho. Ambos operando na mesma distribuição GNU/Linux (Ubuntu 12.04 – 64 bits). Após instalar todos os pacotes necessários para o adequado funcionamento da plataforma, foi criado duas áreas de trabalho, uma no netbook para configurar e executar as aplicações necessárias para a exploração do ambiente de forma autônoma e outra na estação de trabalho para os nós desenvolvidos referentes ao transporte e detecção do objeto.

(35)

4.2 EXPLORANDO O AMBIENTE

Ao ser inserido no ambiente para detecção e transporte do objeto, o TurtlebotTM, inicia a etapa de exploração. No entanto, uma das características do trabalho torna essa tarefa um pouco mais complexa que o usual. Como visto anteriormente, o robô não irá saber sua localização por não possuir um sensor que forneça tal informação, e além disso, não será fornecido ao robô um mapa local com a descrição do ambiente em que o robô está inserido. Configura-se, assim, o problema de mapeamento e localização simultânea (SLAM).

O pacote slam_gmapping aplicado para solucionar o problema de mapeamento e localização simultânea faz uso de um sistema que define a probabilidade de cada célula do mapa de estar ocupada ou livre de acordo com as referências espaciais definidas a cada passo pelo robô em tempo real. O sistema se baseia nas ações tomadas pelo robô e o que os sensores recebem de informação do momento inicial até o atual. Vale ressaltar que o robô conhece as ações tomadas a cada passo, mas desconhece as posições exatas alcançadas. Este pacote pode ser encontrado e baixado no site da plataforma ROS (http://wiki.ros.org/).

Ao mesmo tempo em que o mapa vai sendo construído, com a devida localização do robô, outro aplicativo é executado para a exploração do ambiente, pois o algoritmo que soluciona o problema de mapeamento e localização simultâneo apenas obtém informações dos sensores, sem gerar ações para que o robô se mova pelo mapa em construção. Dessa forma, o pacote Explore é executado afim de identificar regiões no mapa não exploradas e mover o robô com o intuito de alcançar tais regiões. Este pacote faz uso do método Exploração Baseada em Fronteiras (Capítulo 2.2.1). Tal pacote pode ser encontrado através do serviço GitHub (https://github.com/LadyZayin/explore).

4.3 IDENTIFICANDO O OBJETO

A detecção de um objeto por um robô é normalmente feita através da análise de imagens obtidas por uma ou mais câmeras. O objeto pode ser identificado pelo formato, textura ou combinação dos dois. No entanto, a forma mais simples consiste no uso de uma marcação no objeto com uma única cor e que essa cor, de preferência, não exista no ambiente em que o robô será

(36)

34

inserido.

Na etapa de exploração do ambiente, o kinectTMcaptura constantemente imagens do ambiente e as transmite para a estação de trabalho para a identificação do objeto. Com a finalidade de diminuir o tempo de processamento das imagens, a região de análise deve ser reduzida. A imagem em tamanho original possui a resolução de 480 linhas por 640 colunas e a região para análise passa a ser limitada entre as colunas 220-420. Essa região resgata apenas os objetos à frente do robô. Outro ponto que ajuda na redução do tempo de processamento da imagem consiste em analisar apenas os pixels que representam objetos até uma distância de 1,5 metros do robô. O KinectTM além de fornecer a imagem em RGB, também fornece uma imagem de profundidade onde cada pixel contém a informação da distância do robô ao “pixel”. Assim, os pixels com valores maiores que 1,5 metros são ignorados.

Cada pixel da imagem RGB é representado pelo modelo de cor formado pelos componentes vermelho, verde e azul. Com base nesses parâmetros, foram definidos os limites que representam a formação da cor laranja das fitas usadas para marcar o objeto (Figura 13). Um único pixel da cor laranja não é suficiente para garantir que o objeto seja detectado na imagem. No entanto, uma sequência de pixels dentro dos limites da função garante a identificação do objeto.

Figura 13: Limites em RGB para a detecção do objeto.

Fonte: Próprio autor

4.4 TRANSPORTANDO O OBJETO

Após a identificação do objeto, o robô finaliza o processo de exploração e inicia a estratégia para o transporte do objeto. Para a simplificação do algoritmo descrito na seção 3.2, foi construído um diagrama (Figura 14) que define os passos para a execução do transporte do objeto.

(37)

Figura 14: Diagrama representando as etapas para o transporte do objeto.

Fonte: Próprio autor

Quando o robô identifica o objeto (Figura 15), inicia-se o estado de alinhamento. Tal alinhamento é necessário para a realização dos cálculos que verificam o posicionamento do objeto em relação à região de aceitação. Esta análise é feita com base no posicionamento da fita laranja nas imagens obtidas pelo KinectTM, além do uso dos sensores de toque, localizados à frente do robô.

Figura 15: Momento de transição entre o processo de exploração e o transporte do objeto, objeto detectado.

Fonte: Próprio autor

A seguir, os passos para o alinhamento do robô tendo o objeto como referência:

(38)

36

pela Figura 16. A seta preta representa este movimento para cada configuração do robô diante do objeto.

2. Verificar a resposta dos sensores de toque após colisão;

3. Se o sensor do lado esquerdo ou direito for ativado, o robô deve girar levemente para o lado oposto e mover-se para trás, retornando assim para a etapa inicial;

4. Se o sensor central for ativado, significa que o robô já se encontra a frente do objeto sendo necessário apenas centralizar a sua posição usando como referência a fita laranja. Assim, é verificada a posição da fita em cada imagem recebida pelo kinect.

5. Se a fita estiver entre as colunas 260 e 380 das imagens, o robô se encontra alinhado.

6. Caso contrário, o robô verifica o quanto deve girar para centralizar a fita laranja. Ao fim do movimento, volta para a etapa 1.

Este algoritmo é executado até que o robô se posicione de modo alinhado. Finalizando essa etapa e iniciando o estado de verificação.

Figura 16: Alinhamento do robô através dos sensores de toque. Primeiro momento, colisão do robô com o objeto (seta preta). Depois, resposta do robô à colisão (setas vermelha).

Fonte: Próprio autor

No estado de verificação, o robô deve analisar se o objeto se encontra de frente a região de aceitação (Figura 10.A). Caso esteja, o robô deve empurrar levemente o objeto em linha reta em um único passo e retornar ao estado de alinhamento. Isso porque o objeto ao ser empurrado a uma longa distância pode se curvar a esquerda ou à direita perdendo assim a marcação de destino. Quando o objeto atingir a região de aceitação, o transporte é finalizado. Caso

(39)

o objeto não se encontre de frente a região de aceitação, o diagrama indica o próximo estado, manipulação do objeto.

Neste estado são criados dois novos pontos para verificar qual dos lados do objeto deve ser empurrado de forma a posicionar melhor o objeto em relação à região de aceitação, conforme Figura 10.B. Como o robô não possui manipuladores para girar o objeto, a solução identificada consiste em fazer o robô empurrar uma das extremidades da face do objeto, causando um giro no lado oposto.

Para identificar a extremidade do objeto a ser empurrado, o robô faz uso do sensor infra-vermelho do KinectTM. Assim, é fornecido um vetor contendo as distâncias de 256 pontos a frente do robô. Na Figura 17, é representado os valores adquiridos pelo KinectTM, sendo os pontos em destaque (marcados em vermelho) correspondem a transição entre o objeto (1,53 m e 1,54m) e pontos fora do objeto (4,26m e 3,32m).

Figura 17: Identificando as extremidades do objeto usando o infra-vermelho do KinectTM

Fonte: Próprio autor

Após o robô identificar a extremidade da face do objeto a ser empurrada, ele deve realizar um giro 180o no seu próprio eixo e mover-se de ré até atingir o objeto e assim girá-lo pro lado desejado. Depois, deve realizar o giro novamente de 180o e retornar pro estado de alinhamento. Este giro de 180o é necessário pois o robô possui sensores de toque (Figura 6) que, ao serem acionados, não permitem o movimento do robô. Assim, para empurrar o objeto, o robô precisa girar 180o e mover-se de ré.

Finalizada essa etapa, o robô retorna para o estado de alinhamento, para depois efetuar uma nova verificação que indicará se o objeto já está posicionado de frente para a região de aceitação. Caso esteja, resta apenas empurrar em linha reta o objeto com a finalidade de alcançar a região de destino.

(40)

38

5 RESULTADOS E DISCUSSÕES

Antes de integrar os blocos do sistema, alguns testes foram realizados para verificação e correção de possíveis falhas. A seção 4.1 apresenta os resultados dos testes no bloco referente à exploração do ambiente. Nessa etapa, os testes verificam se o robô, ao ser inserido em um ambiente desconhecido, consegue explorar o cenário gerando um mapa local. A seção 4.2 apresenta os resultados do bloco que efetua a detecção do objeto e é responsável pela transição do processo de exploração do ambiente para o de transporte do objeto. Nessa etapa, o robô deve detectar o objeto através da captura e análise das imagens fornecidas pelo Kinect. A seção 4.3 apresenta os resultados relacionados ao transporte do objeto. O teste dessa etapa verifica se o objeto foi transportado até a região de aceitação com sucesso. Por fim, os blocos do sistema foram integrados, tendo na seção 4.4, os resultados dos últimos testes no sistema.

5.1 EXPLORANDO O AMBIENTE

Para os testes dessa etapa, foi criado um cenário estático com diversos obstáculos para exploração e, consequentemente, construção de um mapa local usando um TurtlebotTM. Os obstáculos inseridos no ambiente foram semelhantes ao objeto demonstrado na Figura 12, porém alguns sem as fitas laranja de identificação.

O robô foi então inserido no ambiente para execução do processo de exploração conforme demonstrado na Figura 18. A imagem de cima é uma representação do mapa, onde a configuração do robô é indicada pelo próprio TurtlebotTM, a área em cinza-claro consiste no espaço livre, cinza-escuro na região desconhecida, a preta os obstáculos e a azul as referências espaciais para solucionar o problema do SLAM. A imagem de baixo representa o ambiente real, detalhado pela imagem acima no primeiro momento de exploração. O robô marcado pela letra ‘X’ em vermelho não foi utilizado no teste.

(41)

Figura 18: Estado inicial de exploração. Representação do mapa (acima) e imagem real do ambiente de teste (abaixo).

Fonte: Próprio autor

Inicialmente, o robô realiza a primeira análise espacial através dos valores obtidos pela varredura usando o infra-vermelho do KinectTM. Nesse instante, os primeiros obstáculos próximos ao robô são caracterizados como pontos de referência espacial. Esses pontos são essenciais para a construção do mapa no momento em que o robô inicia a exploração.

Antes de verificar as regiões de fronteira para a criação de uma rota de deslocamento, o robô realizou um giro de 360o no próprio eixo com a finalidade de identificar outros pontos de referência. Em seguida, o robô iniciou o processo de exploração utilizando o algoritmo da seção 2.2.1.

A Figura 19 apresenta o mapa formado após aproximadamente dois minutos de exploração. Como pode ser visto, o mapa ainda possui áreas não exploradas, mas já se assemelha bastante a região em volta do robô. As regiões em que o robô obteve uma maior aproximação durante a exploração possuem uma precisão maior na descrição do cenário. Isso pode ser visto através do traçado das bordas dos obstáculos, pois quanto mais distante os sensores detectam os obstáculos, mais imprecisa se torna a construção do mapa.

(42)

40

Figura 19: Explorando o ambiente após aproximadamente dois minutos de execução.

Fonte: Próprio autor

Por fim, o processo foi finalizado manualmente na estação de trabalho obtendo o mapa da Figura 20 como resultado, após aproximadamente oito minutos de execução. O processo poderia continuar em execução, no entanto não haveria variações significativas no mapa. Como pode ser visto na Figura abaixo, o mapa continua semelhante ao cenário em que o robô foi inserido.

Figura 20: Mapa gerado após aproximadamente oito minutos de execução.

Fonte: Próprio autor

5.2 DETECTANDO O OBJETO

Os testes realizados nessa etapa têm como objetivo a identificação do objeto através da análise das imagens capturadas pelo KinectTM. Caso quatro pixels com a mesma faixa de cor (laranja) fossem identificados em ordem em

(43)

uma das colunas das imagens capturadas, o robô exibiria no terminal a posição do objeto encontrado em relação à origem do mapa e, assim, finalizaria o processo de exploração.

Na Figura 21, é apresentado todos os pixels laranja identificados nas imagens capturadas pelo KinectTM. Cada pixel é exibido no terminal com o valor correspondente em RGB. Nessa imagem, os três primeiros pixels laranja identificados não estavam em ordem, ou seja, outros pixels de outras cores foram encontrados entre eles. Quando um pixel laranja é identificado logo após outro, a contagem é inicializada. Assim, se a contagem chegar ao número dois, isso significa que quatro pixels laranja foram identificado em ordem, o que significa que o objeto foi detectado. Caso algum pixel de outra cor fosse identificado no meio da contagem, o sistema zerava a contagem e continuava a análise da imagem. Como o KinectTM também fornece a imagem de profundidade, torna-se fácil saber a posição do objeto no mapa. Primeiro, deve localizar a configuração do robô no mapa, posição e orientação, e depois definir um ponto à frente do robô com a distância obtida pela imagem de profundidade. Esse novo ponto será a provável posição do objeto no mapa. Por fim, como o objeto foi detectado, não é necessário continuar a execução do explorer, assim, o processo é finalizado.

Figura 21: Terminal da estação de trabalho exibindo o momento da detectação do objeto.

Fonte: Próprio autor

5.3 TRANSPORTANDO O OBJETO

Para este teste, o robô foi posicionado de modo que o objeto fosse facilmente identificado, inicializando a etapa de transporte. Como discutido na seção 4.4, essa etapa consiste basicamente em uma sequência de passos que guia o robô entre os estados até conquistar o objetivo final, deslocar o objeto

(44)

42

para dentro da região de aceitação.

No primeiro momento, o robô deve se alinhar tomando como base os sensores de toque e o posicionamento da fita laranja nas imagens capturadas pelo KinectTM. A Figura 22 representa a transição entre o momento em que o robô identifica o objeto e o fim do processo de alinhamento.

Figura 22: Alinhamento do robô em relação ao objeto. Posicionamento do robô antes do alinhamento (imagem superior) e depois (imagem inferior).

Fonte: Próprio autor

Após alinhamento, o robô inicia o estado de verificação (Figura 23). Nesse estado, é analisado se o objeto encontra-se dentro da região de aceitação pré-definida. Isso pode ser observado apenas constatando se a posição do objeto no mapa está dentro dos limites dessa região. Como não está, é realizada mais uma verificação para a situação em que o objeto já se encontra posicionado de frente a região de aceitação. Conforme demonstrado na seção 3.2, o sistema cria um ponto PC à frente do robô e verifica se este ponto se encontra dentro dessa região. Como também não se encontra, o sistema inicia o estado para a manipulação do objeto.

(45)

Figura 23: Etapa de verificação: configuração do robô após alinhamento.

Fonte: Próprio autor

Conforme o algoritmo explicado na seção 3.2, o robô verifica qual dos dois lados do objeto deve ser empurrado para melhor posicioná-lo em relação a região de aceitação. Na Figura 24, o melhor lado a ser empurrado é indicado após o cálculo das distâncias. O ponto no lado esquerdo encontra-se a aproximadamente um metro da região de aceitação e o ponto do lado direito encontra-se a aproximadamente um metro e meio. Dessa forma, o ponto do lado esquerdo possui uma distância menor, fazendo com que o robô inicie o processo que empurra a extremidade direita do objeto.

Figura 24: Representação do estado de verificação no terminal da estação de trabalho.

Fonte: Próprio autor

Como o robô possui sensores de toque que não permitem o deslocamento quando acionados, foi decidido, então, empurrar o objeto usando a parte de trás do robô (Figura 25). Para isso, o robô precisa identificar uma das extremidades do objeto para ser empurrada, se posicionar de frente a essa extremidade, girar 180o no seu próprio eixo e, por fim, se deslocar de ré empurrando o objeto levemente em um curto passo, suficiente para girar o objeto ao lado desejado.

(46)

44

Figura 25: Empurrando o objeto com a parte de trás do robô.

Fonte: Próprio autor

Após o robô empurrar o lado direito do objeto, o sistema retorna para o estado de alinhamento. Esse ciclo é realizado repetidas vezes até que o objeto se posicione dentro da região de aceitação. A figura 26 demonstra o transporte do objeto durante todo o teste. Em alguns momentos, o robô perde a localização do objeto, mas logo em seguida se recupera do erro e continua a execução com êxito.

Figura 26: Todo o processo do transporte do objeto.

(47)

5.4 SISTEMA INTEGRADO

Para os últimos testes, o sistema foi integrado. Primeiro, o bloco de exploração é executado em paralelo ao de detecção do objeto. Assim, quando o objeto é identificado, a exploração é finalizada e o bloco para o transporte do objeto é inicializado. Durante os testes, ocorreram falhas na exploração sempre que o sistema de detecção era inicializado. O robô sempre perdia a própria localização no mapa, o que o impedia de criar novas rotas para exploração. A solução encontrada foi a retirada do processo de exploração autônoma, realizando o movimento manualmente até o objeto ser detectado. O controle dos movimentos manuais foi feito através de um processo de teleoperação na estação de trabalho. Como o pacote de exploração não possui uma documentação adequada, não foi possível corrigir o problema da perda da localização do robô.

Outro problema com o pacote de exploração é que ele funciona de forma satisfatória em ambientes estáticos conforme demonstrado no teste apresentado na seção 5.1. Porém para este trabalho, observou-se que o objeto, ao ser transportado pelo robô, passa a ser um elemento dinâmico, tornando-se um problema ao sistema. Isso porque o objeto não pode ser tomado como referência espacial por não ser um ponto fixo no mapa. Devido a este fator, em alguns momentos, o robô perdia a própria localização quando tomava o objeto como referência. A solução para esse problema seria abandonar este pacote e identificar outro que possua uma documentação completa, permitindo ao desenvolvedor corrigir possíveis falhas no pacote.

Por fim, o sistema para o transporte do objeto funcionou adequadamente quando testado os três blocos integrados modificando apenas a etapa de exploração. O bloco de exploração continua com a construção do mapa, mas não gera as rotas que viabilizam a exploração autônoma, sendo essa etapa feita manualmente na estação de trabalho. Foram realizados seis testes no espaço do laboratório de robótica da USC, com dimensões de aproximadamente 2,5m X 4,0m. A média de tempo para o transporte do objeto foi de 30 minutos com o sucesso na maioria dos testes.

(48)

46

6 CONCLUSÃO

O trabalho foi desenvolvido com o objetivo de construir um sistema robótico capaz de identificar um objeto desejado num cenário estruturado, reconhecer o cenário e transportá-lo a uma região de destino de forma autônoma. Para isso, foram planejados três blocos para serem integrados em um único sistema. O bloco de exploração, responsável pela criação do mapa a partir de uma região desconhecida; o de detecção, responsável pela identificação do objeto através da análise de imagens obtidas pelo KinectTM; e o de transporte do objeto, responsável por empurrar o objeto até a posição de destino pré-estabelecida.

Os resultados mostram que o algoritmo para o transporte do objeto funciona de forma eficaz, conforme demonstrado nos testes do capítulo anterior. Separadamente, todos os blocos funcionaram corretamente e quando integrados, os blocos implementados garantiram o funcionamento da etapa de detecção até o transporte autônomo do objeto. Simplesmente, o sistema não é eficiente. Para todos os testes realizados, o sistema demonstrou um atraso na execução.

Os problemas identificados nos testes estavam relacionados à etapa de exploração. Os pacotes usados falharam sempre que os blocos de exploração e detecção eram executados em paralelo. Durante os testes, o robô perdia a localização rapidamente, não permitindo assim construir um mapa adequado, que por sua vez, não efetuava uma exploração autônoma eficaz. Devido a uma documentação fraca e, em partes, inexistente, não foi possível identificar especificamente o erro e assim corrigi-lo. Outro problema foi a estrutura do próprio TurtlebotTM. Por não possuir atuadores que permitam a manipulação do objeto e pelo formato circular da base que dificulta o movimento de empurrar o objeto em linha reta, o TurtlebotTM não foi uma boa escolha de agente robôtico para esse trabalho.

Por último, o algoritmo elaborado nesse trabalho possui uma limitação. Entre a posição do objeto e a área de aceitação, não deve possuir obstáculos, visto que o objeto ao se posicionar de frente a região de aceitação, deve ser empurrado em linha reta até alcançar o destino. Para trabalhos futuros, o mapa gerado deve formar um grafo, que, por sua vez, identificará rotas entre o objeto e a região de aceitação. Este grafo deve possuir seus vértices e arestas sempre

(49)

dentro de regiões de livre acesso. Assim, o algoritmo desenvolvido, ao invés de ser executado entre a posição do robô e a região de aceitação, irá percorrer os vértices da rota, até deslocar o objeto à posição de destino. Também fica como trabalhos futuros a correção dos pacotes para exploração do ambiente ou a busca por outros pacotes mais eficientes e com uma boa documentação.

Referências

Documentos relacionados

insights into the effects of small obstacles on riverine habitat and fish community structure of two Iberian streams with different levels of impact from the

Os dados referentes aos sentimentos dos acadêmicos de enfermagem durante a realização do banho de leito, a preparação destes para a realização, a atribuição

[r]

De acordo com o Consed (2011), o cursista deve ter em mente os pressupostos básicos que sustentam a formulação do Progestão, tanto do ponto de vista do gerenciamento

Na apropriação do PROEB em três anos consecutivos na Escola Estadual JF, foi possível notar que o trabalho ora realizado naquele local foi mais voltado à

Este questionário tem o objetivo de conhecer sua opinião sobre o processo de codificação no preenchimento do RP1. Nossa intenção é conhecer a sua visão sobre as dificuldades e

forficata recém-colhidas foram tratadas com escarificação mecânica, imersão em ácido sulfúrico concentrado durante 5 e 10 minutos, sementes armazenadas na geladeira (3 ± 1

A dissertação se alicerça nas normas do Programa de Pós-Graduação em Enfermagem da Universidade Federal de Pernambuco - UFPE (anexo A), estruturada em