Algoritmos de Percurso Aplicados à Robótica
-
Upload
lucas-oliveira -
Category
Documents
-
view
120 -
download
3
Transcript of Algoritmos de Percurso Aplicados à Robótica
![Page 1: Algoritmos de Percurso Aplicados à Robótica](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/1.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/2.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/3.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/4.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/5.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/6.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/7.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/8.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/9.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/10.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/11.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/12.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/13.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/14.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/15.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/16.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/17.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/18.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/19.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/20.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/21.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/22.jpg)
Grafos - Formas de Representação
Matricial
Lista Encadeada
![Page 23: Algoritmos de Percurso Aplicados à Robótica](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/23.jpg)
Algoritmo - BFS vs DFS
![Page 24: Algoritmos de Percurso Aplicados à Robótica](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/24.jpg)
Algoritmo - Dijkstra
![Page 25: Algoritmos de Percurso Aplicados à Robótica](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/25.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/26.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/27.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/28.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/29.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/30.jpg)
Proposta - Lógica de Zigue-Zague
![Page 31: Algoritmos de Percurso Aplicados à Robótica](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/31.jpg)
Proposta - Lógica de Zigue-Zague
![Page 32: Algoritmos de Percurso Aplicados à Robótica](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/32.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/33.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/34.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/35.jpg)
Proposta - Detecção de cor
![Page 36: Algoritmos de Percurso Aplicados à Robótica](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/36.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/37.jpg)
Proposta - Tráfego de dados (Ida)● Formato dos dados enviados:
● Exemplo:
○ 4
![Page 38: Algoritmos de Percurso Aplicados à Robótica](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/38.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/39.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/40.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/41.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/42.jpg)
Resultados Obtidos - Mapeamento
![Page 43: Algoritmos de Percurso Aplicados à Robótica](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/43.jpg)
Resultados Obtidos - DFS
![Page 44: Algoritmos de Percurso Aplicados à Robótica](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/44.jpg)
Resultados Obtidos - BFS
![Page 45: Algoritmos de Percurso Aplicados à Robótica](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/45.jpg)
Resultados Obtidos - Dijkstra
![Page 46: Algoritmos de Percurso Aplicados à Robótica](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/46.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/47.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/48.jpg)
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](https://reader030.fdocumentos.tips/reader030/viewer/2022020103/58813db61a28abf65a8b59d5/html5/thumbnails/49.jpg)
Obrigado!