Este documento apresenta um plano para usar um robô DETI PIC no concurso "Robô Bombeiro", descrevendo: (1) o equipamento do robô e componentes adicionais, (2) o algoritmo proposto para contornar paredes e encontrar/apagar uma vela em um labirinto, (3) o software DETInchanting usado para programar o robô.
1. Departamento de Electr´onica, Telecomunicac¸˜oes e Inform´atica
Curso: [8240] Mestrado Integrado em Eng. de Computadores e Telem´atica
Disciplina: [47137] Introdu¸c˜ao `a Eng. de Computadores e Telem´atica
Ano lectivo: 2012/2013
Planeamento de uma prova no concurso
Robˆo Bombeiro
Autores:
[68535] Bruno Silva
[68799] Rui Oliveira
Turma/Grupo:
T5B / Pr´atica 3
Docentes:
Andr´e Z´uquete
Jo˜ao Barraca
Data:
19 de Janeiro de 2013
2. Resumo:
Pretende-se atrav´es deste relat´orio demonstrar sob forma escrita, um estudo
preparat´orio, sem quaisquer tipos de testes pr´aticos, do uso do robˆo DETI PIC
desenvolvido pelo Departamento de Eletr´onica, Telecomunica¸c˜oes e Inform´atica
da Universidade de Aveiro, no concurso ”Robˆo Bombeiro”.
1
4. 0.1 Introdu¸c˜ao
Como sabemos, um robˆo ´e um dispositivo, ou conjunto de dispositivos, eletro-
mecˆanicos ou biomecˆanicos capazes de realizar uma determinada funcionalidade
de forma independente, para isso ter´a de ser pr´e-programado, ou ent˜ao controlado
por um ser humano. Primordialmente os robˆos foram programados para desen-
volver trabalhos de baixa complexidade, como por exemplo, deslocarem-se sobre
superf´ıcies planas, interagir com obst´aculos, entre outros. Atualmente, os robˆos
realizam tarefas muito completas, e em muitos dos casos substituindo o trabalho
humano. Embora, nem sempre se tira partido de todas as capacidades do robˆo.
Neste relat´orio pretendemos planear e elaborar um algoritmo que nos permitir´a
a participa¸c˜ao do robˆo utilizado nas aula de Introdu¸c˜ao `a Engenharia de Compu-
tadores e Telem´atica (DETI PIC1
) no concurso ”Robˆo Bombeiro”.
Mais `a frente iremos mostrar as principais caracter´ısticas deste robˆo, e alguns
dos equipamentos e materiais que nos s˜ao facultados para conseguir participar
neste concurso. Para a programa¸c˜ao de robˆo utilizando um software, tamb´em este
desenvolvido pelo DETI, chamado DETInchanting criado a partir de linguagem
JAVA e C++ e adaptado do Enchanting, desenvolvido para robˆos da LEGO2
.
Neste caso, necessit´amos de ter conhecimentos b´asicos de programa¸c˜ao em JAVA,
para conseguir testar as capacidades do robˆo, atrav´es da implementa¸c˜ao blocos
que permitem executar opera¸c˜oes do tipo: if... else...; forever... ; repeat until... ;
entre outros.
Ambicionamos com este relat´orio, apresentar um algoritmo v´alido para uma
possivel participa¸c˜ao do robˆo DETI PIC (embora com algumas adapta¸c˜oes) no
concurso ”Robˆo Bombeiro”, organizado pelo Institulo Polit´ecnico da Guarda. Este
concurso realiza-se desde o ano de 2003, na cidade da Guarda
O objetivo deste concurso consiste em descobrir uma vela num labirinto (igual
para todos os robˆos) e apag´a-la (mas n˜ao de qualquer forma!). O local de partida
do robˆo no labirinto pode ser fixo ou vari´avel, o local da vela ´e vari´avel dentro
de certo limites. A classifica¸c˜ao final ´e calculada tendo em conta o tempo gasto a
encontrar e apagar a vela e um conjunto vari´avel de b´onus e penalidades.
1
Desenvolvido pelo Departamento de Eletr´onica, Telecomunica¸c˜oes e Inform´atica - UA
2
Empresa conceituada no fabrico de brinquedos, e atualmente no desenvolvimento de robˆos.
3
5. 0.2 Descri¸c˜ao do problema
Pretendemos atrav´es deste relat´orio, tal como fis´amos na sec¸c˜ao anterior, preparar
um algoritmo v´alido, para uma poss´ıvel participa¸c˜ao do nosso robˆo no concurso
”Robˆo Bombeiro”, organizado pelo Institulo Polit´ecnico da Guarda.
Para que o nosso robˆo DETI PIC possa participar no presente concurso, ter´a
que possuir algumas adapta¸c˜oes que iremos demonstrar na pr´oxima sec¸c˜ao.
De seguida iremos enumerar os principais t´opicos que iremos defender nestre
relat´orio.
• Inicialmente o robˆo ser´a colocado num local pr´e-definido do labirinto. O juri
do concurso ao precionar o bot˜ao verde, o programa ser´a inicializado.
• O robˆo ter´a que percorrer as paredes do labirinto at´e encontrar um vela que
se encontrar´a no interior de um dos quartos.
• Quando o robˆo encontrar a vela, ter´a que a apagar utilizando para um dos
mecanismo de extin¸c˜ao existentes. Na pr´oxima sec¸c˜ao iremos descrever o
m´etodo que utiliz´amos.
• Tentaremos sumariar as op¸c˜oes base existentes e indicar as que s˜ao poss´ıveis
de explorar, neste concurso, com o robˆo DETI PIC e discutir as vantagens e
desvantagens das escolhas feitas.
• Programar, usando o DETInchanting, blocos de instru¸c˜ao para cada estado
(e blocos acess´orios ´uteis para v´arios estados).
Para al´em do problema acima descritos, pretendemos tamb´em adquirir alguns
dos conhecimentos introdut´orios do funcionamento e programa¸c˜ao da rob´otica uti-
lizando para isso o DETInchanting, programa este que iremos abordar mais `a
frente. Dado que nos foi imposto a realiza¸c˜ao deste relat´orio utilizando a lingua-
gem tipo LATEX, pretendemos tamb´em desenvolver as nossas competˆencias a n´ıvel
desta linguagem, alargando assim os nossos conhecimentos j´a adquiridos em aulas
anteriores.
4
6. 0.3 Aparelhagem e equipamento
0.3.1 Robˆo DETI PIC
A nossa base de trabalho ´e o robˆo DETI PIC. Este robˆo ´e constitu´ıdo por dois
motores DC3
sem realimenta¸c˜ao, trˆes sensores de distˆancia frontais cobrindo um
ˆangulo de aproximadamente 45 graus para cada lado do robˆo, cinco sensores de
brilho na parte inferior do robˆo e quatro led’s na parte superior. O robˆo disp˜oe
ainda de dois bot˜oes, um interruptor e uma porta USB. Todo este robˆo foi de-
senvolvido de forma pr´atica e intuitiva `a introdu¸c˜ao `a programa¸c˜ao deste tipo de
m´aquinas. Para fazer o upload entre o robˆo e o computador utiliz´a-mos um cabo
USB4
2.0.
Figura 1: Robˆo DETI PIC
Devido ao facto de o nosso robˆo n˜ao possuir um equipamento que nos permi-
tir´a extingir a vela, decidimos utilizar uma ventoinha que ir´a ”apagar”a vela. Para
al´em deste acr´escimo, iremos adicionar ao nosso robˆo um detetor de infravermelhos
que nos ir´a permitir detetar a vela acesa, teremos neste caso de ter especial aten¸c˜ao
`a direcionalidade da dete¸c˜ao dos infravermelhos (unidirecionalidade vs. ominidire-
cionalidade) e a existˆencia de interferˆencias no processo de dete¸c˜ao causadas pelo
ambiente da prova (luz, calor, etc.).
O nosso robˆo possui dois bot˜oes (preto e vermelho), mas neste caso para a
3
Corrente cont´ınua
4
Universal Serial Bus
5
7. participa¸c˜ao neste concurso, iremos considerar que o preto ser´a verde (que ir´a
permitir o robˆo iniciar o seu percurso).
0.3.2 Componentes adicionais ao robˆo DETI PIC
• Ventoinha como sistema de extin¸c˜ao da chama da vela:
Ventoinha simples, com um pequeno motor de 12v.
Figura 2: Ventoinha com motor de 12v.
• Detector de chama por Infravermelhos (IV)
Detector de Chama Triple IR cs-tie-l100. Este detector usa 3 sensores que
medem 3 diferentes bandas de energia, emitidas a partir de chamas.
Figura 3: Sensor de IV
6
8. 0.3.3 Software DETInchanting
O programa usado para a programa¸c˜ao de instru¸c˜oes a dar ao robˆo neste trabalho
foi o DETInchanting, uma adapta¸c˜ao do original Enchanting usado para progra-
mar robˆos da LEGO. Este interface foi desenvolvido na Universidade de Aveiro
com a inten¸c˜ao de facilitar a programa¸c˜ao dos robˆos utilizando um interface gr´afico
que se baseava em encaixes de blocos de c´odigo JAVA, na Figura 2 est´a represen-
tada o ambiente de trabalho deste programa. Este sofware usa um paradigma
gr´afico do tipo Scratch5
.
Figura 4: Ambiente do DETInchanting.
5
S˜ao interfaces gr´aficos que permitem que programas sejam criado atrav´es da sobreposi¸c˜ao de
blocos, tendo na sua base linguagens de programa¸c˜ao.
7
9. 0.3.4 Labirinto e respectivos constituintes
O labirinto, na sua base tem dimens˜oes quadradas (248cm x 248cm) formado por
4 quartos e corredores com uma fisionomia bem conhecida.
Cada quarto possui apenas uma porta e duas delas, podem, opcionalmente,
existir em dois locais distintos. O ch˜ao do labirinto ´e fundamentalmente preto,
mas podem existir algumas ´areas de cor vermelha, azul ou verde (n˜ao fixas). As
entradas de cada quarto (portas) est˜ao sinalizadas por uma linha branca.
A ´area de partida padr˜ao ´e uma ´area circular de cor branca situada num ˆangulo
de um corredor. Os robˆos s˜ao colocados nesta ´area pelo seu dono, com a orienta¸c˜ao
que desejarem; o in´ıcio da prova d´a-se quando um dos ju´ızes carrega no bot˜ao verde
do robˆo. O labirinto possui paredes cuja altura n˜ao pode ser excedida por parte
alguma dos robˆos, para impedir que os mesmos possam descobrir a vela observando
por cima das paredes.
Figura 5: Esquema base do labirinto.
8
10. A ´area padr˜ao de partida dos robˆos ´e o c´ırculo marcado com a letra H. As
´areas sombreadas s˜ao meros exemplos de zonas onde o ch˜ao pode n˜ao ser preto.
As linhas brancas nas entradas dos 4 quartos n˜ao s˜ao assinaladas (est˜ao por baixo
das legendas que indicam que as portas possuem uma largura de 46 cm). Ao
contr´ario do que o diagrama sugere, o fundo tem normalmente a cor preta.
9
11. 0.4 Procedimento
Para uma melhor interpreta¸c˜ao da nossa proposta de procedimento, decidimos
divir esta sec¸c˜ao em 2 subsec¸c˜oes descritas como ”Contornar paredes”, ”Entrar no
quarto, encontrar a vela e apag´a-la”.
0.4.1 Contornar paredes
O programa ir´a come¸car com o j´uri a pressionar o bot˜ao verde (que neste caso,
no nosso robˆo ser´a o preto). De seguida iremos introduzir um ciclo forever e no
interior desse ciclo iremos inserir:
• Dois blocos correspondentes aos motores em movimento para a frente com
velocidade igual a 60 unidades de velocidade.
• Num ciclo if se o sensor de distˆancia LEFT estiver entre 15 cm e 20 cm, ent˜ao
ser´a executado um bloco repeat until com a condi¸c˜ao ”Measure range dis-
tance from Left View sensor in cm (menor) 15”, ent˜ao o motor es-
querdo est´a parado enquanto que o motor direito continuar´a em movimentos
at´e que a condi¸c˜ao se deixe de verificar.
• Num novo ciclo if com a condi¸c˜ao ”Measure range distance from Left
View sensor in cm (menor) 15”, caso ela se verifique ent˜ao ir´a proceder
de forma an´aloga relativamente ao bloco anterior, ou seja, ser´a introduzido
um ciclo repeat until ”Measure range distance from Left View sensor
in cm (maior) 15”, caso esta condi¸c˜ao se verifique ent˜ao o motor direito
estar´a parado enquando que o esquerdo se encontrar´a em movimento `a ve-
locidade de 60.
• Por fim, no interior de um ciclo if iremos introduzir a condi¸c˜ao ”Measure
range distance from Left View sensor in cm (maior) 20”. De seguida
iremos introduzir um bloco ”reset timer”e de seguinda um ciclo repear until
com a condi¸c˜ao ”timer (maior) 600”, ent˜ao neste caso o motor direito e
esquerdo ir˜ao mover-se para frente embora com velocidade diferentes (isto
ter´a que acontecer devido ao facto do contorno no aresta da parede). Se-
guidamente introduzimos novamente um ciclo repeat until com as seguintes
10
12. condi¸c˜oes ”Measure range distance from Left View sensor in cm
(maior) 12” and ”Measure range distance from Left View sensor in
cm (menor) 20”, nesta situa¸c˜ao o motor direito ir´a mover-se `a velocidade
de 60 enquanto que o esquerdo ir´a mover-se `a velocidade de 95.
O resultado pretendido ´e o que se encontra esquematizado na figura abaixo.
Figura 6: Esquema do cortono da parede.
11
13. 0.4.2 Entrar no quarto, encontrar a vela e apag´a-la
• Entrar no quarto:
A parte do c´odigo relativa ao robˆo entrar no quarto ´e algo simples, uma vez
que o nosso robˆo esta programado para seguir as paredes ”a esquerda”ele
tem um if presente que quando o sensor far left detectar uma linha enquanto
que o far right ainda n˜ao encontrou ele sabe que est´a a entrar num quarto.
Figura 7: Esquema da entrada do robˆo no quarto. Legenda: A linha a tracejado
representa a linha branca que o robˆo ter´a que detectar.
12
14. • Encontrar a vela:
Assim que o robˆo entra no quarto ele liga o seu sensor infravermelhos e testa
a presen¸ca da vela, isto ´e feito atrav´es de uma adapta¸c˜ao nossa que passa
pela cria¸c˜ao de um bloco vazio do tipo sensing uma vez que o sensor n˜ao
existe de verdade. Caso o robˆo n˜ao sinta a presen¸ca da vela ela vai entrar no
else desse mesmo if e vai ordenar o robˆo a andar para tr´as por forma a corrigir
a sua posi¸c˜ao e voltar a o corredor onde tem ainda mais uma instru¸c˜ao que
o faz andar para a frente ate passar a entrada para o quarto por forma a n˜ao
voltar a entrar no mesmo quarto. Caso o robˆo cinta a presen¸ca da vela ele
vai voltar a activar o bloco de seguir as paredes ate que os seus sensores de
brilho centrais detectem a linha que existe a volta da vela.
Figura 8: Robˆo detecta vela utilizando para isso o um sensor de IV.
13
15. • Apagar a vela:
Nesta sec¸c˜ao mais uma vez vamos usar um bloco criado por n´os para o
efeito de ligar o motor que activa a ventoinha uma vez o nosso robˆo n˜ao
ter fisicamente uma ventoinha. Quando o robˆo se encontrar no estado onde
acaba na sec¸c˜ao anterior, isto ´e, ter encontrado a linha que contorna a vela
ele deve ligar a ventoinha por 2 segundo e ap´os isso deve desliga-la.
Figura 9: Robˆo apagar a vela utilizando a ventoinha.
14
16. 0.5 Resultados
0.5.1 Contornar paredes
O algoritmo que se apresenta de seguida foi elaborado atrav´es do DETInchanting
e pretende dar resposta a esta etapa da solu¸c˜ao do nosso problema.
Figura 10: Contornar a parede do labirinto.
15
17. 0.5.2 Entrar no quarto, encontrar a vela e apag´a-la
O algoritmo que se apresenta de seguida foi elaborado atrav´es do DETInchanting
e pretende dar resposta a esta etapa da solu¸c˜ao do nosso problema.
Figura 11: Entrar no quarto, encontrar a vela e apag´a-la.
16
18. 0.5.3 Diagrama de estados
Encontra-se representado na figura seguinte um diagrama que pretende demonstrar
a alternˆancia de estados presente neste conjunto de algoritmos.
Figura 12: Diagrama de estados
17
19. 0.6 An´alise dos Resultados
Dado que n˜ao nos foi poss´ıvel testar os nossos programas, n˜ao teremos hip´otese
de analisar os resultados da´ı provenientes. Contudo, esperamos que os resultados
estejam correctos de modo a possibilitarem uma participa¸c˜ao no concurso desti-
nado.
18
20. 0.7 Conclus˜oes
Chegado ao final deste relat´orio, ´e nossa inten¸c˜ao efetuar uma retrospetiva da
evolu¸c˜ao do mesmo, tendo em conta os problemas que nos depar´amos, objetivos,
e principais metodologias utilizadas.
Pensamos que os resultados que apresentamos neste relat´orio s˜ao v´alidos para
uma poss´ıvel participa¸c˜ao no concurso “Robˆo Bombeiro”, desenvolvido pelo IP
de Braga. Algumas das op¸c˜oes que tom´amos para que o nosso robˆo DETI PIC
conseguisse participar neste concurso foram as introdu¸c˜ao de:
• Sensor de infravermelhos: este sensor permitiu detetar a vela quando o
robˆo entrava em cada quarto (pois s´o aqui ´e que era acionado), n˜ao sabemos
qual o desempenho do sensor que decidimos utilizar, mas estamos convictos
que (caso test´assemos) iria resultar, embora com in´umeros problemas em
rela¸c˜ao `a dire¸c˜ao, que s´o poder˜ao ser corrigidos ap´os v´arios testes realizados.
• Ventoinha com motor: quando o sensor de IV detetar a vela ent˜ao a
ventoinha ser´a acionada de modo a extinguir a vela durantes algum tempo.
Poder´ıamos ter utilizado uma bomba de ´agua que seria acionada ap´os a
deten¸c˜ao da chama, mas neste caso ter´ıamos que ter aten¸c˜ao `a poss´ıvel da-
nifica¸c˜ao que poderia causar.
Tent´amos, na medida do poss´ıvel, que o robˆo voltasse (ap´os apagar a vela) a
iniciar o seu percurso, contornando sempre as paredes existentes `a sua direita, e
verificar se a vela estaria mesmo extinta naquele quarto, e caso n˜ao acontecesse
voltasse a acionar o mecanismo de extin¸c˜ao, deste modo o robˆo tentaria corrigir
uma eventual falha na efic´acia do mecanismo.
Durante todo o relat´orio n˜ao abord´amos um assunto de poss´ıvel ocorrˆencia: a
existˆencia de escadas. Neste caso o robˆo teria subir ou descer as escadas, contor-
nando de igual forma as paredes, pensamos que o robˆo DETI PIC n˜ao iria proceder
de forma eficaz pois precisaria de um modo de desloca¸c˜ao diferente, por exemplo
tipo caterpillar.
Sumariamente, ach´amos este trabalho muito interessante no ponto de vista de
uma poss´ıvel participa¸c˜ao num concurso deste tipo, e tamb´em permitiu-nos abrir
novos horizontes em rela¸c˜ao `a rob´otica e ao que nos espera ao longo do nosso curso,
19
21. que agora come¸ca. Em rela¸c˜ao `a produ¸c˜ao destes trabalho em linguagem LATEX,
ach´amos ter sido uma mais-valia, tanto a n´ıvel pessoal como a n´ıvel acad´emico
20
22. Bibliografia
[1] A.V.C.M. Z´uquete , Site da Unidade Curicular - Introdu¸c˜ao `a Engenharia de
Computadores e Telem´atica (10 Janeiro 2013). Diapositivos: robˆo DETI PIC
[Online] Available: http://www.ieeta.pt/ avz/Aulas/IECT/12-13/docs/6-
robo.pdf
[2] J. Barraca, D. Gomes, A. Z´uquete , Site da Unidade Curicu-
lar - Introdu¸c˜ao `a Engenharia de Computadores e Telem´atica (12
Dezembro 2012). Gui˜ao da aula pr´atica 9 [Online] Available:
http://www.ieeta.pt/ avz/Aulas/IECT/12-13/docs/projeto.pdf
[3] IPG, Robˆo Bombeiro 2012 Rules (12 Dezembro
2012). Fire-Fighting Robot Contest[Online] Available:
http://robobombeiro.ipg.pt/RB/pt/RulesRB2012.pdf
21