algoritmos de percurso aplicados à robótica

49
Algoritmos de Percurso Aplicados à Robótica Aluno: Lucas de Castro Oliveira Orientadora: Teresinha Arnauts Hachisuca Foz do Iguaçu - Fevereiro 2016

Upload: lucas-oliveira

Post on 14-Apr-2017

120 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Algoritmos de Percurso Aplicados à Robótica

Algoritmos de Percurso Aplicados à Robótica

Aluno: Lucas de Castro Oliveira

Orientadora: Teresinha Arnauts Hachisuca

Foz do Iguaçu - Fevereiro 2016

Page 2: Algoritmos de Percurso Aplicados à Robótica

Organização da Apresentação1. Objetivos;

2. Objetivos Específicos;

3. História da Robótica;

4. Materiais;

5. O robô ActivityBot;

6. Algoritmos;

7. Implementação da Proposta;

8. Resultados Obtidos;

9. Conclusão e Trabalhos Futuros.

Page 3: Algoritmos de Percurso Aplicados à Robótica

Objetivos

Dado o espectro de técnicas para processamento de grafos e para detecção de

rotas, estabelecer uma estratégia de mapeamento eficiente que será executada

por um robô em ambiente controlado. Após a execução bem sucedida deste

passo, tendo-se o ambiente mapeado, aplicar algoritmos de busca para que o

robô possa resolver o problema de forma direta, evitando os obstáculos do

percurso.

Page 4: Algoritmos de Percurso Aplicados à Robótica

Objetivos Específicos

1. Conhecer as propriedades do robô a ser utilizado para os estudos, como suas

limitações físicas e computacionais;

2. Fazer o robô efetuar um mapeamento satisfatório de um ambiente controlado que

permita a abstração em um grafo;

3. Fazer o robô determinar rotas para ir de um ponto A a um ponto B utilizando o

grafo produto da atividade de mapeamento;

4. Fazer o robô executar um percurso sem que entre em contato com um dos

obstáculos ou fique preso.

Page 5: Algoritmos de Percurso Aplicados à Robótica

História da RobóticaPara o dicionário Aurélio, robótica significa:

“Conjunto dos estudos e das técnicas tendentes a conceber sistemas capazes de substituírem o homem em suas

funções motoras, sensoriais e intelectuais.”

A vontade por buscar máquinas capazes de realizar tarefas independentes sempre foram presentes na história.

Uma infinidade de artefatos e dispositivos foram inventados ao longo dos anos. Artefatos que muitas vezes eram

muito complexos para a época em que foram desenvolvidos, sendo que alguns deles ainda estão em operação

até os dias de hoje.

Um robô consiste de uma invenção ou um dispositivo, que desempenha uma atividade, frequentemente

repetitiva automaticamente. Pela definição, não é necessário que um robô seja movido a energia elétrica para ser

classificado como tal. Ter esta ideia em mente é o necessário para se entender a busca da humanidade por

inventos que desempenham tarefas automatizadas.

Page 6: Algoritmos de Percurso Aplicados à Robótica

Robótica - Alguns marcosNa antiguidade:

● Medição de Tempo;

● Arquitas de Tarento - Pai da Engenharia Mecânica, inventor do parafuso e polia;

● Contribuições de DaVinci.

Robótica Moderna:

● Tesla: Criação motor elétrico de corrente alternada;

● Caixas musicais de Antoine Favre-Salomon + Tear programável de Jacquard ->

Cartões Perfurados;

● Em 1951 W Shockley inventa o transistor.

Page 7: Algoritmos de Percurso Aplicados à Robótica

Materiais● Computador com a Simple IDE, para

desenvolver a lógica de programação;

● Kit de Robótica ActivityBot da

empresa Parallax. Robô composto de

um microcontrolador multicore de 8

núcleos, suporte a micro SD, placa de

ensaio para montagem de circuitos

próprios, conexão USB e conversores

analógico/digital e digital/analógico;

Page 8: Algoritmos de Percurso Aplicados à Robótica

Materiais● Fototransistor, capacitor e resistor

para criar um circuito sensível a luz

visível;

● 1 Sensor ultrassônico para

referenciamento de posição.

Page 9: Algoritmos de Percurso Aplicados à Robótica

ActivityBot - Componentes Elétricos

● Configurar os jumpers para os encoders e servomotores;

● Instalar os resistores na borda da breardboard;

● Encaixar o porta pilhas e conectar no plug. (5 pilhas modelo AA de 1,5V).

Page 10: Algoritmos de Percurso Aplicados à Robótica

ActivityBot - Navegação● Utiliza encoders que informam ao

microcontrolador informações como velocidade

e aceleração;

● Formato da roda interage com o infravermelho

e cria um padrão de sinal digital que é utilizado

para obter as informações.

Page 11: Algoritmos de Percurso Aplicados à Robótica

ActivityBot - Navegação

● Antes de utilizar o robô, deve ser feita uma calibração dos encoders com o

ActvityBot na superfície onde será utilizado;

● O programa de calibração instrui o robô a dar umas voltas e fazer algumas curvas

a diferentes velocidades num espaço de 1m

2

por aproximadamente dois minutos a

fim de coletar dados;

● As informações coletadas são gravadas em uma tabela dentro da EEPROM. Estes

dados são utilizados para saber quanta força nos servomotores é necessária para se

atingir determinada velocidade. Uso de interpolação quando necessário.

Page 12: Algoritmos de Percurso Aplicados à Robótica

ActivityBot - Navegação

● Os dados são coletados

para cada servomotor;

● Esta calibração garante

maior precisão para que o

robô se movimento a

velocidade desejada (em

tiques por segundo).

Page 13: Algoritmos de Percurso Aplicados à Robótica

ActivityBot - Navegação

● Cada furo na roda representa um tique. Roda possui 64 tiques (combinação dos

furos da roda e do aro);

● Cada tique tem aproximadamente 3,25 mm de comprimento. Logo:

Tiques = deslocamento(mm) ÷ 3,25(mm)

Page 14: Algoritmos de Percurso Aplicados à Robótica

ActivityBot - Navegação

● Todo o movimento do robô é calculado em tiques. Isto inclui valores para aceleração, curvas

e velocidade. A tabela abaixo mostra as principais funções utilizadas para navegação.

drive_setRampStep(speed) Configura a acelação máxima

drive_setMaxStep(speed) Configura a velocidade máxima

drive_ramp() Acelera o robô até a velocidade máxima a uma taxa

definida em drive_setRampStep()

drive_rampStep() Acelera o robô no número de tiques pro segundo

definido em drive_setRamStep()

drive_goto(a,b) Desloca a roda da esquerda e da direita em “a” e “b”

tiques respectivamente

drive_speed(a,b) Faz as rodas da esquerda e da direita girarem “a” e “b”

tiques por segundo respectivamente

Page 15: Algoritmos de Percurso Aplicados à Robótica

ActivityBot - Navegação

● Parâmetros para fazer as principais rotações:

ωº Graus Tiques Comando para o ActivityBot

120º 34,090 drive_goto(34,-34)

90º 25,567 drive_goto(26,-25)

72º 20,454 drive_goto(21,-21)

60º 17,045 drive_goto(17,-17)

45º 12,783 drive_goto(13,-13)

36º 10,227 drive_goto(11,-11)

10º 2,840 drive_goto(3,-3)

Page 16: Algoritmos de Percurso Aplicados à Robótica

ActivityBot - Sensor de Ultrassom

● Utiliza reflexão de ondas sonoras para detecção de objetos. Análogo ao sonar em

morcegos e submarinos.

Page 17: Algoritmos de Percurso Aplicados à Robótica

ActivityBot - Sensor de Ultrassom● Vantagens

○ Consegue detectar entre 3 e 330 cm;○ Consegue detectar objetos de longe,

lógicas mais elaboradas podem ser utilizadas.

● Desvantagens○ Não detecta objetos alinhados

obliquamente ;○ Não detecta objetos muito pequenos;○ Algumas superfícies macias absorvem

o ultrassom em vez de refleti-lo.

Page 18: Algoritmos de Percurso Aplicados à Robótica

ActivityBot - Sensor de Luz Visível

● Utiliza um circuito composto de um fototransistor e um capacitor para detectar a

intensidade luminosa.

Page 19: Algoritmos de Percurso Aplicados à Robótica

ActivityBot - Sensor de Luz Visível● Vantagens

○ Bom para detectar preto e branco;

○ Pode detectar sombras e interagir com objetos luminosos.

● Desvantagens

○ Baixa precisão para distinguir cores;

○ Muito sujeito a inteferências externas, como luz solar.

Page 20: Algoritmos de Percurso Aplicados à Robótica

Algoritmos

● Definição: Um algoritmo representa um conjunto específico de instruções para

realizar um procedimento ou realizar uma determinada tarefa, em um tempo

finito. Alguns algoritmos específicos também se chamam método, procedimento

ou técnica. A palavra algoritmo é uma distorção de al-Khwārizmī, um matemático

persa que escreveu um trabalho influente sobre métodos algébricos;

● O processo de de aplicar um algoritmo em dados de entrada afim de obter dados

de saída é chamado de computação.

Page 21: Algoritmos de Percurso Aplicados à Robótica

Algoritmos

● Função de Complexidade de Tempo: Modelagem matemática que busca informar

em quanto tempo determinado algoritmo executou uma determinada tarefa;

● Função de Complexidade de Espaço: Modelagem matemática que busca informar

o quanto de memória determinado algoritmo utilizou para a execução de

determinada tarefa.

Page 22: Algoritmos de Percurso Aplicados à Robótica

Grafos - Formas de Representação

Matricial

Lista Encadeada

Page 23: Algoritmos de Percurso Aplicados à Robótica

Algoritmo - BFS vs DFS

Page 24: Algoritmos de Percurso Aplicados à Robótica

Algoritmo - Dijkstra

Page 25: Algoritmos de Percurso Aplicados à Robótica

Algoritmos de Busca - Comparativo

Algoritmo DFS BFS Dijkstra-(Array) Dijkstra-(Heap)

Tempo de

Execução

O(E+V) O(E+V) O(V

2

+ E) O(( + ) log

2

)

Page 26: Algoritmos de Percurso Aplicados à Robótica

Proposta

● Dividir o que deve ser feito em duas tarefas:

a. Mapear o cenário proposto;

b. Voltar para o quadrado inicial pelo caminho elegido por um algoritmo de busca.

● Regras

a. Não pode sair do cenário e nem ficar preso na parede;

b. Na tarefa “a”, deve passar por todos os quadrados em um zigue-zague sistemático;

c. Na tarefa “b” não pode passar por cima de um quadrado preto.

Page 27: Algoritmos de Percurso Aplicados à Robótica

Proposta - Construção do Cenário

● Cenário composto de um papel Paraná na cor

branca de 60x80 cm. Composto de 20 quadrados,

dividindo os espaços. Em um total de 5 linhas por 4

colunas;

● Divisão dos quadrados feita com fita isolante preta;

● Paredes erguidas com isopor, com suportes de

palitos de churrasco;

● Cor preta dos quadrados preenchida com papel

camurça. Permite reconfigurar o cenário.

Page 28: Algoritmos de Percurso Aplicados à Robótica

Proposta - Configuração do Robô

● Utilização de sensor de ultrassom frontal para medir a distância da parede;

● Fototransistor isolado e apontado para baixo para ler o preto e o branco dos

percursos.

● Instalação do shield XBee e do cartão de memória.

Page 29: Algoritmos de Percurso Aplicados à Robótica

Proposta - Lógica de Zigue-Zague

● Primeiro adotou-se uma convenção sobre as direções em que o robô pode ir

conforme os quatro pontos cardeais: norte, sul, leste e oeste;

● Para realizar o escaneamento, o robô deve passar por todos os quadrados do

cenário e identificar a cor que cada um possui. Isto é possível de ser feito

programando o robô para realizar um percurso de zigue-zague ao longo de todo o

cenário.

Page 30: Algoritmos de Percurso Aplicados à Robótica

Proposta - Lógica de Zigue-Zague

Page 31: Algoritmos de Percurso Aplicados à Robótica

Proposta - Lógica de Zigue-Zague

Page 32: Algoritmos de Percurso Aplicados à Robótica

Proposta - Lógica de Zigue-Zague

● Esta lógica pode ser melhorada, ao se utilizar um vetor para armazenar uma

sequência de sentidos que se repetem em um padrão quando se faz um zigue-

zague.

Page 33: Algoritmos de Percurso Aplicados à Robótica

Proposta - Detecção de cor

● O programa utilizado para detectar a variação do preto para o branco ao percorrer o cenário

funciona em uma thread separada. Utiliza memória compartilhada através de variáveis

globais declaradas com a palavra chave volatile;

● Verifica variações de cor a cada 50 ms. Caso haja uma variação muito grande entre duas

leituras detecta a mudança de cor.

Page 34: Algoritmos de Percurso Aplicados à Robótica

Proposta - Detecção de cor

● Utiliza uma borda ao redor dos quadrados negros para que o robô saiba

diferenciar o preto de uma linha para o preto de um quadrado;

● Faz uso de uma máquina de estados para saber a fronteira que separa os

quadrados e mapear corretamente a cor dos mesmos.

Page 35: Algoritmos de Percurso Aplicados à Robótica

Proposta - Detecção de cor

Page 36: Algoritmos de Percurso Aplicados à Robótica

Proposta - Tráfego de dados (Ida)

● Limitações de memória no robô quanto ao tamanho do código;

● Melhor solução aplicada: Utilizar XBee para realizar processamento remoto;

● Dessa forma o ActivityBot somente portaria o códigos de navegação e

escaneamento, enquanto a modelagem de grafos e a aplicação dos algoritmos de

busca caberia ao computador;

● Uma vez que as informações estiverem processadas, traduzir para coordenadas e

enviar de volta ao robô para que ele execute a rota escolhida.

Page 37: Algoritmos de Percurso Aplicados à Robótica

Proposta - Tráfego de dados (Ida)● Formato dos dados enviados:

● Exemplo:

○ 4

Page 38: Algoritmos de Percurso Aplicados à Robótica

Proposta - Execução dos Algorítmos

● Criação de uma matriz auxiliar antes de criar o grafo;

● Levar em conta o movimento de zigue-zague.

Page 39: Algoritmos de Percurso Aplicados à Robótica

Proposta - Execução dos Algorítmos

● Criar o grafo, estrutura de dados e algoritmos obtidos através do site do professor

Ziviani;

● Adaptar os dados da matriz para poder criar o grafo e conectar os seus vértices;

● Executar um dos algoritmos de busca no grafo;

● Converter o caminho obtido em coordenadas para que os dados sejam

transmitidos de volta ao ActivityBot.

Page 40: Algoritmos de Percurso Aplicados à Robótica

Proposta - Execução dos Algorítmos

● 19 - 18 - 17 - 16 - 12 … se torna Oeste Oeste

Oeste, Sul … e é transmitido ao Robô.

Page 41: Algoritmos de Percurso Aplicados à Robótica

Proposta - Tráfego de dados (volta)

● Uma vez que os

resultados com

as coordenadas

chegam ao

robô, basta

executar as

intruções

conforme o

trecho de

código ao lado.

Page 42: Algoritmos de Percurso Aplicados à Robótica

Resultados Obtidos - Mapeamento

Page 43: Algoritmos de Percurso Aplicados à Robótica

Resultados Obtidos - DFS

Page 44: Algoritmos de Percurso Aplicados à Robótica

Resultados Obtidos - BFS

Page 45: Algoritmos de Percurso Aplicados à Robótica

Resultados Obtidos - Dijkstra

Page 46: Algoritmos de Percurso Aplicados à Robótica

Resultados Obtidos● Apanhado Geral:

Algoritmo Tempo do

escaneamento

Tamanho do

caminho (em

quadrados)

Caminho

ótimo

Tempo de

volta

Total de

Curvas

DFS 90 segundos 14 Não 65

segundos

5

BFS 91 segundos 8 Sim 37

segundos

4

Dijkstra 91 segundos 8 Sim 32

segundos

2

Page 47: Algoritmos de Percurso Aplicados à Robótica

Conclusões

● Oportunidade para trabalhar com robótica (e todos os seus efeitos);

● Trabalhar com transmissão sem fio via XBee;

● Papel de algoritmos na resolução de problemas, comportamento das técnicas

utilizadas em harmonia com a teoria;

● Limitações do ActivityBot;

● Foi possível demonstrar o que foi proposto.

Page 48: Algoritmos de Percurso Aplicados à Robótica

Trabalhos Futuros

● Utilizar outras técnicas de busca. A* utilizando número de curvas como heurística;

● Aplicar o mesmo conceitos a outros modelos de robôs, com hardware mais

potente ou movimentos mais precisos;

● Aplicar técnicas de varredura mais avançadas, tal como problemas SLAM.

Page 49: Algoritmos de Percurso Aplicados à Robótica

Obrigado!