Team Description Paper – Equipe BACK
Amanda Souza Fernandes, Bruno Hashimoto Kenji Miura, Cainã Setti Galante, Karina Lin Abstract - Este documento tem por
finalidade descrever os processos de montagem e programação de um robô híbrido criado pela equipe BACK. O principal controle do robô foi escrito em linguagem C e é processado numa placa de Arduino MEGA à qual foi acoplada uma placa NXShield. O robô: se move com 4 Mecanum Wheels, rotacionadas por 4 motores NXT; detecta as vítimas com 3 MLX90614 Infrared Thermometers (sensores de calor); detecta tiles
pretos/pratas com um QTR-1A Reflectance Sensor (sensor de refletância); mede a distância dele até a parede com 6 SHARP 4-30cm (sonares); resgata a vítima utilizando um motor Servo.
I. INTRODUÇÃO
O Rescue Maze (Resgate B - Labirinto) é uma competição de robótica da LARC (Latin American Robotics Competition), em que os participantes devem localizar, detectar (por meio de sensores de calor dispostos nas laterais e na dianteira do robô) e resgatar as vítimas espalhadas por um labirinto (uma arena, que simula um ambiente hostil).
Foi decidido que o robô deverá ser programado para percorrer e mapear o
labirinto inteiro e consequentemente encontrar todas as vítimas.
A equipe espera, por meio deste
documento, estimular a comunidade e futuras gerações a tomar interesse pela robótica e pelas competições nesta área, e que este documento possa servir de referência e/ou ajuda para qualquer competidor nos próximos torneios de Resgate-B.
II. EQUIPE
A equipe é formada por quatro integrantes, dentre os quais foram divididas as tarefas.
Amanda e Karina: responsáveis pela construção do robô;
Bruno e Cainã: responsáveis pela programação.
III. ARENA
A arena é composta por 2 (dois) patamares (olhar Imagem 1), sendo um deles maior em área e disposto num nível inferior ao outro, e ambos são conectados por uma rampa.
A arena é também constituída por tiles (placas de madeira de 30cm x 30cm, podendo ser brancas, pretas ou pratas) e por paredes (lineares ou flutuantes, vide Imagem 2).
Paredes lineares (marcadas em verde na Imagem 2) são aquelas que levam à
entrada/saída da arena, enquanto que as flutuantes não (paredes marcadas em vermelho).
Ao longo do percurso, o robô poderá também encontrar objetos e detritos aleatoriamente dispostos pela arena, que representam eventuais obstáculos que o robô poderia encontrar num ambiente hostil.
Imagem 1-Arena
Imagem 2-Esquemática Paredes A. Vítimas
As vítimas são representadas por fontes de calor e podem estar presas tanto em paredes lineares como em flutuantes (mais difíceis de serem encontradas, dando, portanto, uma pontuação maior), a uma altura de aproximadamente 7cm do chão.
IV. MECÂNICA A estrutura geral foi feita por peças
LEGO® (como os dois motores da Imagem 3), incrementada com algumas peças mecânicas e componentes eletrônicas não pertencentes à companhia (Servo, SHARP, Arduino MEGA, Placa NXShield, Termômetro, Sensor de Refletância). Estas outras peças cumprem as tarefas que o robô não faz somente com LEGO® (por insuficiência ou inexistência de portas na placa NXShield, mostrada na Imagem 4).
A equipe decidiu que a melhor opção de construção era montar um robô híbrido pois a montagem é relativamente mais fácil e rápida que a de um robô feito inteiramente sem componentes da LEGO®, poupando mais tempo para que a equipe desenvolvesse um programa melhor.
A placa NXShield, acoplada à placa Arduino (Imagem 5), é uma adaptação para robôs híbridos e dispõe de 4 portas para motores e 4 portas para sensores da LEGO®.
A forma do robô é retangular (ilustrado na Imagem 6 e 7), embora o grupo a tenha idealizada como quadrada, pois foi
considerada a mais adequada já que o robô terá de se locomover de tile em tile, ou seja, de quadrado em quadrado.
Imagem 3 - Vista Frontal
Imagem 4 – Vista Lateral
Imagem 5- Vista Traseira
Imagem 6 – Vista Superior
Imagem 7- Esquema do Robô
A. Motores LEGO® NXT Temos 4 motores (Imagem 8),
posicionados verticalmente nos quatro cantos do robô, que rotacionam as rodas Mecanum NEXUS (Item seguinte).
B. Rodas Mecanum NEXUS
Nome completo: 60mm Aluminum LEGO® compatible Mecanum Wheel.
São 4 rodas ao todo, 2 direitas e 2
esquerdas. Este modelo de roda foi escolhido pois é muito útil nos pequenos ajustes de alinhamento com as paredes, sem a
necessidade de rotacioná-lo, como ilustrado na Imagem 11.
Assim como os motores, já que é a eles que estão conectadas, as rodas estão nos quatro cantos do robô e seus roletes (8 pequenos rolos de borracha, como mostra as Imagens 3, 4 e 10) apontam para o centro (esquema da Imagem 9, em que os traços vermelhos representam os roletes).
As rodas são posicionadas desta maneira pois, dependendo da direção e velocidade de cada roda, o vetor resultante de todas as forças individuais pode apontar em qualquer direção e sentido e consequentemente o robô pode se mover da maneira que for desejada, sem mudar as rodas em si.
Imagem 9-Posicionamento de rodas
Imagem 10 - Roda Mecanum
Imagem 11-Funcionamento das Rodas C. Sensor de Refletância QTR-1A
O sensor analógico de refletância (modelo da Imagem 12), localizado na dianteira do robô bem próximo ao chão, serve para identificar os tiles pratas (checkpoints) e pretos.
Imagem 12-Sensor QTR1A D. Sonares SHARP 4-30cm
São sensores analógicos de distância, iguais ao representado na Imagem 13, cujo alcance máximo é 30cm, que é o ideal e suficiente para a arena já que os tiles tem tamanho 30cm x 30cm.
Esses sensores obtêm, a cada determinado número de interações no programa, a
distância entre o robô e uma parede ou outro determinado objeto (um obstáculo por exemplo).
São 6 sensores ao todo: um na frente, um atrás e 2 em cada uma das laterais. Outra utilidade destes sonares (no caso, apenas dos que estão nas laterais) é o alinhamento do robô com as paredes a cada vez que ele desloca de um tile para outro. Foi decidido que o robô pode se alinhar utilizando apenas os sensores nas laterais já que na maioria das situações de posicionamento possíveis
Imagem 13 - Sensor SHARP
E. Sensores de Calor (MLX90614 Infrared Thermometer)
São três sensores como o da Imagem 14, um na frente e em cada lateral do robô, a uma altura de aproximadamente 7cm e são
responsáveis por detectar a vítima (também, como já mencionado, há 7cm de altura do chão).
F. Motor Servo
O Servo (Imagem 15) é um motor que gira em graus (da posição 0 a 180 graus), utilizado no kit dropper e se encontra no centro do robô.
Imagem 15- Motor Servo V. KIT DROPPER
O kit dropper é uma estrutura no robô com a função de entregar o kit de resgate para a vítima. Fazem parte dele o Servo, o gancho, uma rampa (feita de vigas da LEGO®, como mostra as Imagens 6 e 16) e 12 kits de resgate.
A. Rampa
Na rampa, estão dispostos, em linha, os 12 kits de resgate (explicação abaixo), ficando todos retidos por uma peça no final (que os impede de deslizar para fora do robô). Nessa mesma parte (a mais baixa da rampa) há uma pequena abertura que permite a entrada da ponta do gancho.
Imagem 16 B. Gancho
Uma peça original cuja forma lembra uma foice, criada pela própria equipe para ser exclusivamente conectada ao Servo (pode-se ver na Imagem 17 os furos especialmente feitos para o encaixe ao motor). A peça foi projetada no programa SolidWorks, fatiada no software Simplify 3D (na Imagem 18, o modelo 3D da peça no software de fatiar a
peça para enviar à impressora) e impressa na 3DMachine One.
O servo rotaciona o gancho que então empurra um kit (apenas) para cima, elevando-o acima da peça que segura elevando-os elevando-outrelevando-os kits, permitindo este kit cair. Depois, o gancho volta para sua posição original.
Imagem 17-Gancho
Imagem 18-Gancho fatiado C. Kits de Resgate
Segundo as regras da competição, a única condição para a construção de um kit de resgate é que ele tenha um centímetro cúbico de volume.
Logo, nós pretendemos construí-lo da maneira mais simples possível: blocos feitos na impressora 3D com dimensões 1cm x 2,3cm x 0,9cm (resultando em
aproximadamente 1,9 cm3
), segundo o projeto feito no SolidWorks (Imagem 19).
VI. PROGRAMAÇÃO O programa está sendo escrito em linguagem C. Como já foi mencionado, a equipe preferiu usar um híbrido de Arduino e LEGO®. Por este motivo, na programação está sendo utilizando a biblioteca NXShield.
Nosso código por enquanto é capaz de fazer o robô se mover por tiles, se alinhar com a parede, identificar os tiles pretos e pratas, percorrer o labirinto com o método de seguir por parede (dando preferência para um lado) e dispensar o kit de resgate.
A priori, utilizaremos este simples método de seguir paredes para resolver o labirinto (uma solução que diversas equipes já
utilizaram). No entanto, estamos no processo de desenvolver um novo algoritmo, ou seja, um novo método que, caso obtenha sucesso na resolução do labirinto, será utilizado na competição no lugar do método provisório.
Para mais informações a respeito do método de resolução de labirintos (seguir por parede) olhar a Referência [3].
VII. CONCLUSÃO
Concluímos que o desafio proposto, apesar de estar à frente do que costumamos
enfrentar, nos fez e fará evoluir
consideravelmente nas áreas de habilidade mecânica e programação. Além de acrescentar experiência, a competição nos prepara para futuros projetos, estejam eles dentro ainda do âmbito escolar ou mesmo no âmbito
profissional.
A criação do robô híbrido nos obrigou a buscar alternativas, mas, ao mesmo tempo, nos dá mais tempo para desenvolver um algoritmo próprio para percorrer e mapear o labirinto da maneira mais rápida e eficiente possível.
AGRADECIMENTOS
Somos gratos aos nossos pais e ao colégio ETAPA por terem nos propiciado a
oportunidade de participar desta competição. Agradecemos também nosso professor Raphael Correia e os alunos veteranos Henrique Martinez e Rafael Geromel, que, além de nos guiarem durante nossa
aprendizagem, foram verdadeiros companheiros. REFERÊNCIAS [1]http://rcj.robocup.org/rcj2016/rescue_maze _2016.pdf [2]http://www.cbrobotica.org [3]https://en.m.wikipedia.org/wiki/Maze_solv ing_algorithm