Você está na página 1de 4

Execução do robô modular omnidirecional para a competição

RoboCupJunior Rescue Maze


Arthur S. Siqueira, Isabela B.D. Rodrigues, e Marcus Vinícius H. Lima

Abstract—This paper presents a description of a modular processamento e a partir da leitura dos sensores ele envia para o Arduino
omnidirectional robot to be used on the 2016 RoboCupJunior Nano quais movimentos dos motores devem ser feitos; assim, o Arduino
Nano controla os motores e faz a leitura dos encoders para garantir a
Rescue Maze[1] competition. The algorithm used to control the
precisão do movimento.
robot was written in C++[2] and encompasses DFS[3] (Depth-
First Search) and a simplified ideia of PID[4] (proportional-
integral–derivative controller). It runs in an Arduino Mega[5] II. OBJETIVO
board. This Arduino board is responsible for the distance and O objetivo do projeto é construir um robô autônomo capaz
temperature sensors readings, and is connected to an Arduino
de percorrer um labirinto e identificar vítimas caracterizadas
Nano[6] board that uses this data to control the motor and their
encoders resulting in a higher accuracy. For the robot por pontos de calor que serão distribuídas ao longo das
alignment and obstacle detection, eight ultrasonic distance paredes do labirinto. Ao identificar uma vítima, o robô deve
sensors were used, two in each side of the squared chassi. The liberar um LED acesso simulando um kit de socorro.
robot mechanical structure was built using both acrylic and
III. EQUIPE
aluminum pieces in a modular frame so any necessary changes
are conducted easily. It has four omnidirectional wheels[7] that Visando um melhor aproveitamento dos membros da
allow the robot to move in any direction without the need of equipe, decidimos dividir as tarefas relacionadas à
turning itself. The robot was entirely designed, built and construção do robô. Cada pessoa ficou responsável pela área
programmed by the team students.
onde pudesse gerar melhor desempenho. Enquanto um
I. INTRODUÇÃO membro era responsável pelo planejamento da estrutura
mecânica do robô, outro desenvolvia o algoritmo utilizado
Este TDP foi feito para explicar a estratégia que a equipe
pelo mesmo. Dessa maneira fomos capazes de otimizar
Delta Robotics escolheu para resolver os desafios propostos
tempo e projetar um robô com uma maior qualidade, visto
pela competição RoboCupJunior Rescue Maze. O robô é
que cada membro atuava em sua área de melhor
basicamente feito a partir de um chassi de acrílico, é
desempenho.
utilizado o microcontrolador Arduino Mega e também um
IV. Ambiente
Arduino Nano, ambos programados com a programação
O desafio ocorre em uma arena modular, indicado na
original do Arduino, a arduino IDE[8]. Os arduinos se
figura 2, composta por dois andares e quatro salas
comunicam pelo protocolo I2C[9], como pode ser observado
principais. A disposição das paredes do labirinto, assim
na figura 1, a maneira como cada um está relacionado.
como seu desenho, são previamente desconhecidos.
Entretanto, o tamanho total da arena é conhecido, de forma
que o robô consegue se orientar lá. Simulando vítimas em
um resgate, serão colocados pontos de calor, alimentados
eletricamente, em algumas paredes desse labirinto. A
localização dessas vítimas é desconhecida, criando, assim,
um desafio ao robô: encontrá-las.
Além das paredes e dos pontos de calor, o labirinto
também possui os denominados black tiles, quadrados pretos
no chão que serão dispostos aleatoriamente antes do robô
começar o desafio. Esses quadrados indicam áreas que o robô
não pode cruzar, se ocorrer de ele passar por cima de um
quadrado desses, ele deve sair pelo mesmo lado que entrou.
Por fim, temos os checkpoints, quadrados prateados usados
para caso o robô se perca no labirinto. Nessas situações, ele
pode ser colocado de volta no último checkpoint visitado.

Figura 1. Mostra como é a relação entre os microcontroladores, feita


por I2C, e os sensores e atuadores. O Arduino Mega realiza todo o
Figura 2. Arena. Figura 4. Motor utilizado.

V. ESTRATÉGIA
Pensando na constante manutenção que deve ser feita ao
robô, decidimos construí-lo de maneira modular, isto é, ele é
dividido em módulos responsáveis por funções distintas;
assim, no momento em que precisemos modificar algo em
uma determinada função, fazê-lo-emos sem maiores
complicações.
Sua estrutura é composta basicamente por acrílico e
alumínio, materiais escolhidos por sua facilidade de
customização e resistência. O alumínio foi usado
especificamente para estruturas em que é necessária uma
melhor relação peso/resistência. Para evitar interferências
dos sensores ultrassônicos, as laterais do robô são cobertas
com espuma, que abafa o som.
Visando a uma maior precisão e eficiência energética,
optamos por construir um robô omnidirecional. Para tal,
utilizados as denominadas Mecanum Wheels[10], indicado na
figura 3. Devido ao sistema omnidirecional escolhido,
possuímos quatro motores de 5kgf, um indicado na figura 4,
com encoders e uma caixa de redução 80:1, que aumenta
bastante precisão, para controlar individualmente cada roda.
Na figura 5 é possível verificar a estrutura do robô.

Figura 5. Mostra como foi construída a estrutura do robô separada por


módulos, onde cada quadrado representa um andar. No primeiro temos as
quatro Mecanum Wheels, seus respectivos motores e drivers, assim como o
dispositivo de lançamento do kit de resgate proposto pelo regulamento. No
segundo andar podemos ver os oito sensores ultrassônicos e infravermelhos
de temperatura e a bateria que alimenta os motores, por fim, no terceiro
andar, localiza-se os dois arduinos, Mega e Nano, juntamente com a fonte
que os alimenta.

VI. PROGRAMAÇÃO
A. Mapeamento

O sistema de mapeamento funciona a partir da


Figura 3. Mecanum Wheel. transformação do labirinto em um grafo, com isso, é possível
percorrer todo o mesmo, simulando um algoritmo de DFS
(Depth-First Search), representado pela figura 6, onde o robô
verifica se a próxima direção em que vai andar, já foi
“visitada” ou é possível de ir (caso os sensores ultrassônicos
não detectarem obstáculo/parede em tal direção). Como
funciona o DFS: O robô, ao ser colocado no labirinto, realiza
uma checagem do ambiente ao seu redor a partir dos sensores
de ultrassom, definindo possíveis módulos a serem visitados
(frente, trás, direita e esquerda), de forma que, quando o
sensor vê uma parede, ele elimina a possibilidade de visitar o
módulo equivalente àquela direção. Ao final da checagem, o
robô escolhe sua primeira opção de caminho, por exemplo,
se sua ordem de prioridade for: direita, frente, esquerda, trás,
e a direita ou estiver obstruída ou já tiver sido percorrida, ele
segue em frente e marca como visitado o último local em que
esteve. No módulo seguinte, o robô realiza novamente a
checagem e, assim, segue seu caminho no labirinto. Ao
atingir um local onde só haja como possibilidade visitar um
ponto por onde já passou, ele retrocede ao último módulo Figura 7. Representa o alinhamento do robô quanto a sua posição dentro de
cada módulo.
onde ainda haviam opções não visitadas. Entretanto, caso se
depare com um black tile, o robô não realiza sua checagem,
apenas retrocede e classifica aquele módulo com um ponto
aonde não deve mais voltar. Após percorrer todo o labirinto,
o robô volta ao ponto de início, completando, assim, a
rodada.

Figura 8. Representa o alinhamento do robô quanto a sua rotação dentro de


cada módulo.

C. Check Point

Figura. 6 Representa um esquema básico de como funciona o DFS. Cada No labirinto, haverá determinados módulos prateados que
círculo representa um módulo da pista e aqueles pintados de cinza, são indicam um checkpoint; no momento em que o robô perceber
equivalentes aos caminhos sem saída encontrados pelos sensores a cor diferente no piso, ele classifica aquele módulo como
ultrassônicos.
"especial". Caso o robô falhe em algum momento de seu
percurso e precisemos retorná-lo ao último checkpoint, ao
B. Alinhamento fazê-lo, pressionaremos um botão no chassi, de forma que o
robô saiba, ao ter aquele botão pressionado, que está
A partir de um algoritmo de controle, nosso robô é capaz localizado no módulo “especial”. Toda vez que ele se deparar
de alinhar-se continuamente às paredes do labirinto. Cada com um piso prateado, ele fará daquele o local do módulo
lateral do chassi é equipada com dois sensores ultrassônicos especial, esquecendo do último checkpoint pelo qual possa já
e, de acordo com a diferença entre os valores encontrados ter passado.
por esses sensores, o programa sabe se o robô está alinhado.
Caso não esteja, ele posiciona-se automaticamente partir de VII. CONCLUSÃO
um sistema de controle similar ao PID, como pode ser
observado nas figuras 7 e 8. Com o uso do DFS, nenhum módulo da arena deixa de ser
visitado, consequentemente, evitando que possíveis vítimas
sejam esquecidas. Além disso com a estrutura modular do
robô é possível fazer qualquer alteração ou conserto de
maneira rápida e eficiente, no caso de algum imprevisto.

VIII. AGRADECIMENTOS
A equipe Delta Robotics gostaria de agradecer ao colégio
Farias Brito[11], por todo o apoio fornecido, e ao professor
Israel Dourado que nós orientou durante a execução desse
escopo.

IX. REFERÊNCIAS BIBLIOGRÁFICAS


[1] RoboCupJunior Rescue Maze. Disponível em:
http://www.cbrobotica.org/?page_id=144.
[2] Linguagem C++. Disponível em:
https://pt.wikipedia.org/wiki/C%2B%2B.
[3] DFS, Depth-First Search. Disponível em:
https://en.wikipedia.org/wiki/Depth-first_search.
[4] PID, proportional-integral–derivative controller. Disponível em:
http://www.ni.com/white-paper/3782/pt/#toc2.
[5] Arduino Mega. Disponível em:
http://arduino.cc/en/Main/ArduinoBoardMega.
[6] Arduino Nano. Disponível em:
https://www.arduino.cc/en/Main/ArduinoBoardNano.
[7] Omnidirectional Wheels. Disponível em:
https://en.wikipedia.org/wiki/Omni_wheel.
[8] IDE, Integrated Development Environment. Disponível em:
https://www.arduino.cc/en/Main/Software.
[9] I2C. Disponível em: https://www.arduino.cc/en/Reference/Wire .
[10] Mecanum Wheels. Disponível em:
https://en.wikipedia.org/wiki/Mecanum_wheel
[11] Instituição de Ensino Farias Brito. Disponível em:
http://www.fariasbrito.com.br/

Você também pode gostar