SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
Algoritmos de Percurso
Aplicados à Robótica
Aluno: Lucas de Castro Oliveira
Orientadora: Teresinha Arnauts Hachisuca
Foz do Iguaçu - Fevereiro 2016
Organização da Apresentação
1. 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.
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.
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.
História da Robótica
Para 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.
Robótica - Alguns marcos
Na 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.
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;
Materiais
● Fototransistor, capacitor e resistor
para criar um circuito sensível a luz
visível;
● 1 Sensor ultrassônico para
referenciamento de posição.
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).
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.
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 1m2
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.
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).
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)
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
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)
ActivityBot - Sensor de Ultrassom
● Utiliza reflexão de ondas sonoras para detecção de objetos. Análogo ao sonar em
morcegos e submarinos.
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.
ActivityBot - Sensor de Luz Visível
● Utiliza um circuito composto de um fototransistor e um capacitor para detectar a
intensidade luminosa.
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.
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.
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.
Grafos - Formas de Representação
Matricial
Lista Encadeada
Algoritmo - BFS vs DFS
Algoritmo - Dijkstra
Algoritmos de Busca - Comparativo
Algoritmo DFS BFS Dijkstra-(Array) Dijkstra-(Heap)
Tempo de
Execução
O(E+V) O(E+V) O(V2
+ E) O(( + ) log2
)
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.
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.
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.
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.
Proposta - Lógica de Zigue-Zague
Proposta - Lógica de Zigue-Zague
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.
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.
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.
Proposta - Detecção de cor
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.
Proposta - Tráfego de dados (Ida)
● Formato dos dados enviados:
● Exemplo:
○ 4
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.
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.
Proposta - Execução dos Algorítmos
● 19 - 18 - 17 - 16 - 12 … se torna Oeste Oeste
Oeste, Sul … e é transmitido ao Robô.
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.
Resultados Obtidos - Mapeamento
Resultados Obtidos - DFS
Resultados Obtidos - BFS
Resultados Obtidos - Dijkstra
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
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.
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.
Obrigado!

Mais conteúdo relacionado

Semelhante a Algoritmos de Percurso para Mapeamento e Busca com Robô

Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Fernando Passold
 
Robótica avançada II
Robótica avançada IIRobótica avançada II
Robótica avançada IIsanduel
 
Implementação de um robot móvel
Implementação de um robot móvelImplementação de um robot móvel
Implementação de um robot móvelpjclima
 
Navegacao de Robótica Autônoma em Ambientes Dinâmicos
Navegacao de Robótica Autônoma em Ambientes DinâmicosNavegacao de Robótica Autônoma em Ambientes Dinâmicos
Navegacao de Robótica Autônoma em Ambientes DinâmicosLCoN Mackenzie
 
Robô seguidor de linha
Robô seguidor de linhaRobô seguidor de linha
Robô seguidor de linhaIsvaldo Souza
 
Apressentação SBIAGRO 2015
Apressentação SBIAGRO 2015Apressentação SBIAGRO 2015
Apressentação SBIAGRO 2015Roberson Alves
 
Entendendo o Modelo de Atores
Entendendo o Modelo de AtoresEntendendo o Modelo de Atores
Entendendo o Modelo de AtoresPaulo Siqueira
 
Palestra campus party - julho 2015
Palestra   campus party - julho 2015Palestra   campus party - julho 2015
Palestra campus party - julho 2015Murilo Pontes
 
Apresentação da Dissertação
Apresentação da DissertaçãoApresentação da Dissertação
Apresentação da DissertaçãoRoberson Alves
 
Roteamento Intra-SA e Inter-SA
Roteamento Intra-SA e Inter-SARoteamento Intra-SA e Inter-SA
Roteamento Intra-SA e Inter-SAClaudio Eckert
 
Realidade aumentada para dispositivos móveis
Realidade aumentada para dispositivos móveisRealidade aumentada para dispositivos móveis
Realidade aumentada para dispositivos móveisMarcelo Maia
 
[PRJ32][Christopher] Aula 14 – controle
[PRJ32][Christopher] Aula 14 – controle[PRJ32][Christopher] Aula 14 – controle
[PRJ32][Christopher] Aula 14 – controleChristopher Cerqueira
 

Semelhante a Algoritmos de Percurso para Mapeamento e Busca com Robô (20)

Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
 
Robótica avançada II
Robótica avançada IIRobótica avançada II
Robótica avançada II
 
Implementação de um robot móvel
Implementação de um robot móvelImplementação de um robot móvel
Implementação de um robot móvel
 
Robotica 2016 2
Robotica 2016 2Robotica 2016 2
Robotica 2016 2
 
Navegacao de Robótica Autônoma em Ambientes Dinâmicos
Navegacao de Robótica Autônoma em Ambientes DinâmicosNavegacao de Robótica Autônoma em Ambientes Dinâmicos
Navegacao de Robótica Autônoma em Ambientes Dinâmicos
 
Robô seguidor de linha
Robô seguidor de linhaRobô seguidor de linha
Robô seguidor de linha
 
Robotica1 ok
Robotica1 okRobotica1 ok
Robotica1 ok
 
Robotica1
Robotica1Robotica1
Robotica1
 
Apressentação SBIAGRO 2015
Apressentação SBIAGRO 2015Apressentação SBIAGRO 2015
Apressentação SBIAGRO 2015
 
Artigo final 2
Artigo final 2Artigo final 2
Artigo final 2
 
Entendendo o Modelo de Atores
Entendendo o Modelo de AtoresEntendendo o Modelo de Atores
Entendendo o Modelo de Atores
 
Palestra campus party - julho 2015
Palestra   campus party - julho 2015Palestra   campus party - julho 2015
Palestra campus party - julho 2015
 
Apresentação da Dissertação
Apresentação da DissertaçãoApresentação da Dissertação
Apresentação da Dissertação
 
Roteamento Intra-SA e Inter-SA
Roteamento Intra-SA e Inter-SARoteamento Intra-SA e Inter-SA
Roteamento Intra-SA e Inter-SA
 
TDP_2013
TDP_2013TDP_2013
TDP_2013
 
Sr aula1 robos_industriais
Sr aula1 robos_industriaisSr aula1 robos_industriais
Sr aula1 robos_industriais
 
Otimizador de Rotas - PythonBrasil[6]
Otimizador de Rotas - PythonBrasil[6]Otimizador de Rotas - PythonBrasil[6]
Otimizador de Rotas - PythonBrasil[6]
 
Realidade aumentada para dispositivos móveis
Realidade aumentada para dispositivos móveisRealidade aumentada para dispositivos móveis
Realidade aumentada para dispositivos móveis
 
[PRJ32][Christopher] Aula 14 – controle
[PRJ32][Christopher] Aula 14 – controle[PRJ32][Christopher] Aula 14 – controle
[PRJ32][Christopher] Aula 14 – controle
 
Inct Programando Robos
Inct Programando RobosInct Programando Robos
Inct Programando Robos
 

Algoritmos de Percurso para Mapeamento e Busca com Robô

  • 1. Algoritmos de Percurso Aplicados à Robótica Aluno: Lucas de Castro Oliveira Orientadora: Teresinha Arnauts Hachisuca Foz do Iguaçu - Fevereiro 2016
  • 2. Organização da Apresentação 1. 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.
  • 3. 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.
  • 4. 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.
  • 5. História da Robótica Para 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.
  • 6. Robótica - Alguns marcos Na 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.
  • 7. 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;
  • 8. Materiais ● Fototransistor, capacitor e resistor para criar um circuito sensível a luz visível; ● 1 Sensor ultrassônico para referenciamento de posição.
  • 9. 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).
  • 10. 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.
  • 11. 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 1m2 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.
  • 12. 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).
  • 13. 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)
  • 14. 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
  • 15. 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)
  • 16. ActivityBot - Sensor de Ultrassom ● Utiliza reflexão de ondas sonoras para detecção de objetos. Análogo ao sonar em morcegos e submarinos.
  • 17. 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.
  • 18. ActivityBot - Sensor de Luz Visível ● Utiliza um circuito composto de um fototransistor e um capacitor para detectar a intensidade luminosa.
  • 19. 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.
  • 20. 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.
  • 21. 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.
  • 22. Grafos - Formas de Representação Matricial Lista Encadeada
  • 23. Algoritmo - BFS vs DFS
  • 25. Algoritmos de Busca - Comparativo Algoritmo DFS BFS Dijkstra-(Array) Dijkstra-(Heap) Tempo de Execução O(E+V) O(E+V) O(V2 + E) O(( + ) log2 )
  • 26. 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.
  • 27. 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.
  • 28. 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.
  • 29. 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.
  • 30. Proposta - Lógica de Zigue-Zague
  • 31. Proposta - Lógica de Zigue-Zague
  • 32. 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.
  • 33. 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.
  • 34. 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.
  • 36. 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.
  • 37. Proposta - Tráfego de dados (Ida) ● Formato dos dados enviados: ● Exemplo: ○ 4
  • 38. 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.
  • 39. 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.
  • 40. Proposta - Execução dos Algorítmos ● 19 - 18 - 17 - 16 - 12 … se torna Oeste Oeste Oeste, Sul … e é transmitido ao Robô.
  • 41. 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.
  • 42. Resultados Obtidos - Mapeamento
  • 46. 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
  • 47. 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.
  • 48. 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.