Post on 27-May-2020
UNIVERSIDADE TECNOLOGICA FEDERAL DO PARANA
ENGENHARIA DE COMPUTACAO
BRUNO EDUARDO DE OLIVEIRA MENEGUELE
FERNANDO PADILHA FERREIRA
VINICIUS DA SILVA ARCANJO
ROBO EXPLORADOR DE LABIRINTOS 2D
MONOGRAFIA
CURITIBA
2011
BRUNO EDUARDO DE OLIVEIRA MENEGUELE
FERNANDO PADILHA FERREIRA
VINICIUS DA SILVA ARCANJO
ROBO EXPLORADOR DE LABIRINTOS 2D
Monografia apresentada a materia de Oficina
de Integracao 2, no curso de Engenharia de
Computacao da Universidade Tecnologica Federal
do Parana, como requisito parcial a aprovacao na
disciplina.
Orientador: Prof. Luciano Scandelari
CURITIBA
2011
BRUNO EDUARDO DE OLIVEIRA MENEGUELE
FERNANDO PADILHA FERREIRA
VINICIUS DA SILVA ARCANJO
ROBO EXPLORADOR DE LABIRINTOS 2D
Monografia do projeto de Oficinas de Integracao 2, com apresentacao prevista para 15
de Junho de 2011 na Universidade Tecnologica Federal do Parana, como requisito
parcial a aprovacao na disciplina. Aprovada por:
Orientador:
Prof. Luciano Scandelari
Banca:
Prof. Mario Sergio Teixeira de Freitas
Prof. Miguel Antonio Sovierzoski
Francisco Otavio Coelho Sturm Antunes
CURITIBA
2011
4
Agradecimentos
Agradecemos ao professor, e nosso orientador, Luciano Scandelari (Departamento
de Eletronica - UTFPR) por sua atencao e orientacao, assim como por apresentar solucoes
de extrema importancia ao projeto. Creditamos grande agradecimento tambem ao pro-
fessor Hugo Vieira Neto (Departamento de Eletronica - UTFPR) que nos ajudou ao inıcio
do projeto, principalmente em relacao a funcionamente e dicas de componentes a serem
utilizados no decorrer do projeto.
Ainda agradecemos ao professor Hugo Vieira Neto que nos convidou, a partir
do projeto que estavamos desenvolvendo, a participar da competicao de robotica The
Freescale Cup: Intelligent Car Racing, na qual temos como orientador o professor Joao
Alberto Fabro (Departamento de Informatica - UTFPR) ao qual agradecemos por algumas
conversas e dicas ao decorrer do desenvolvimento do robo proposto, assim como pela
disposicao de ir a Sao Paulo na abertura da competicao citada acima.
Para finalizar, agradecemos ao companheiro de turma Fabiano Guilherme Prado
Araujo por disponibilizar sua camera digital por alguns dias para registrarmos a finalizacao
do projeto com sucesso, assim como os demais companheiros que nos apoiaram durante
o desenvolvimento.
Resumo
Este projeto consiste na construcao de um robo autonomo capaz de, a partir de
um ponto qualquer e sem previo conhecimento, explorar e solucionar um labirinto 2D. O
labirinto sera composto por linhas pretas ortogonais em fundo branco e um ponto final,
sendo obrigatorio ao robo percorre-lo sobre as linhas pretas. Seu sistema de deteccao sera
composto por um conjunto de sensores de luz infravermelha e a tomada de decisao sera
baseada no algoritmo Seguidor de Parede (Wall follower), tambem conhecido como Regra
da Mao Esquerda/Direita.
Lista de Figuras
1 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2 Diagrama de Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 Arduino Duemilanove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 Estrutura de um fototransistor . . . . . . . . . . . . . . . . . . . . . . . . . 13
5 Princıpio de funcionamento do motor . . . . . . . . . . . . . . . . . . . . . 15
6 Ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
7 Fluxo de corrente em uma Ponte H . . . . . . . . . . . . . . . . . . . . . . 18
8 Circuito esquematico da ponte H . . . . . . . . . . . . . . . . . . . . . . . 19
9 Disco do encoder de 36 faixas . . . . . . . . . . . . . . . . . . . . . . . . . 20
10 Controle por PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
11 Funcionamento dos sensores de refletancia . . . . . . . . . . . . . . . . . . 22
12 Circuito esquematico dos sensores de refletancia . . . . . . . . . . . . . . . 23
13 Regra da mao esquerda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
14 Metodo de simplificacao de caminhos . . . . . . . . . . . . . . . . . . . . . 27
15 Chassi inicial - primeiros testes . . . . . . . . . . . . . . . . . . . . . . . . 29
16 Projeto CAD: Segundo chassi utilizado . . . . . . . . . . . . . . . . . . . . 30
17 Segundo chassi utilizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
18 Chassi atual - visao superior . . . . . . . . . . . . . . . . . . . . . . . . . . 31
19 Chassi atual - visao inferior . . . . . . . . . . . . . . . . . . . . . . . . . . 31
20 Chassi atual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
21 Saıda de curva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
22 Placa com 3 sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
23 Placa com 5 sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
24 Casos de tomada de decisao . . . . . . . . . . . . . . . . . . . . . . . . . . 37
25 Transicao - definindo fim de curva . . . . . . . . . . . . . . . . . . . . . . . 38
26 Variacao da rotacao do motor CC em relacao a tensao aplicada . . . . . . . 41
27 Exemplo de loop problematico . . . . . . . . . . . . . . . . . . . . . . . . . 42
28 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Lista de Tabelas
1 Ativacao da ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2 Comparacao entre os algoritmos . . . . . . . . . . . . . . . . . . . . . . . . 23
3 Simplificacoes tabeladas pela equipe . . . . . . . . . . . . . . . . . . . . . . 27
4 Simplificacoes nao tabeladas pela equipe . . . . . . . . . . . . . . . . . . . 28
5 Orcamento - Projeto proposto . . . . . . . . . . . . . . . . . . . . . . . . . 47
Sumario
1 Introducao 9
1.1 Motivacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4 Diagrama em Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2 Fundamentos teoricos 12
2.1 Plataforma Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Diodos Emissores de Luz - LEDs . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Fototransistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Motores CC e Caixa de Reducao . . . . . . . . . . . . . . . . . . . . . . . 14
2.4.1 Princıpio de funcionamento . . . . . . . . . . . . . . . . . . . . . . 15
2.4.2 Motores Utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.3 Caixa de Reducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5 Ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.6 Encoders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.7 Modulacao por Largura de Pulso - PWM . . . . . . . . . . . . . . . . . . . 20
2.8 Sensores de Refletancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.9 Algoritmos de decisao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.9.1 Busca em largura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.9.2 Algoritmo de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.9.3 Algoritmo “Regra da mao” . . . . . . . . . . . . . . . . . . . . . . . 25
3 Desenvolvimento do projeto 29
3.1 Infraestrutura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.1 Chassi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.2 Labirinto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2 Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.1 Controle por PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.2 Disposicao dos sensores . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.3 Definindo final de curva - transicao . . . . . . . . . . . . . . . . . . 36
9
4 Problemas Encontrados 40
5 Conclusao 43
A Cronograma 46
B Orcamento 47
C Relatorio reunioes 48
10
1 Introducao
AGV (do ingles, Veıculos Guiados Automaticamente) sao essencialmente robos
moveis utilizados em areas industriais para mover materiais de um ponto a outro. Sao
bastante utilizados em grandes industrias, porem, recentemente seu uso esta se estendendo
para hospitais, para o transporte de comida e medicamentos, e tambem em outros ambi-
entes com alto ındice de insalubridade ou nocivos para o ser humano. Sua alimentacao
e feita por baterias, a movimentacao por motores eletricos e seu controle e feito por um
microcontrolador aliado a diversos tipos de sensores. As implementacoes de baixo custo
utilizam guias no piso para demarcar a trajetoria e um conjunto de sensores opticos faz a
deteccao desta linha. Ja em implementacoes mais complexas, e caras, sao utilizados lasers
ou comunicacao sem fio (GPS, Bluetooth e GSM) para estabelecer a trajetoria (Souza,
2011; Dietsch e Torrens, 2007; Ali et al., 2010).
Este documento apresenta os passos tracados pela equipe para o desenvolvimento
de um robo autonomo capaz de definir seu proprio trajeto em um ambiente guiado. Serao
desenvolvidos tanto a parte fısica como seu algoritmo de decisao, que simulara, por meio
de um labirinto de linhas pretas ortogonais, um ambiente no qual o robo tera que explorar
ate encontrar o ponto final, o qual e o unico ponto distinto reconhecido pelo robo.
1.1 Motivacao
A equipe teve por motivacao o desafio da construcao de um robo autonomo capaz
de resolver labirintos.
1.2 Objetivo
Desenvolvimento e controle de um robo seguidor de linhas capacitado a explo-
rar e solucionar labirintos 2D, utilizando sensores de refletancia - objetivo principal da
disciplina.
Construcao do labirinto que sera formado por retas ortogonais apropriadas a
infraestrutura do robo. A partir de um ponto inicial o robo ira explorar o labirinto ate
um ponto final, sem o conhecimento do mesmo. Em seguida, posto uma segunda vez no
mesmo ponto inicial o robo sera capaz de percorrer o menor caminho obtido atraves da
exploracao.
11
1.3 Metodologia
Apoiando-se no cronograma e atraves dos objetivos existentes no projeto, uti-
lizamos o fluxograma abaixo para atingir com os objetivos.
Figura 1: Metodologia
Fonte: Autoria propria
1.4 Diagrama em Blocos
Segue na Figura 2 o diagrama de blocos do robo. Atraves deste diagrama e
possıvel uma melhor visualizacao da interacao entre os componentes do mesmo.
12
Figura 2: Diagrama de Blocos
Fonte: Autoria propria
13
2 Fundamentos teoricos
2.1 Plataforma Arduino
O Arduino e uma plataforma open-source de desenvolvimento criada com o ob-
jetivo de oferecer facil comunicacao usuario-hardware. Este pode receber informacoes de
uma variedade de sensores e interagir com o ambiente, controlando luzes, motores, e out-
ros atuadores. O microcontrolador e programado usando a linguagem de programacao e
o ambiente de desenvolvimento Arduino.
Uma das maiores vantagens do sistema de desenvolvimento do Arduino e que
ele pode ser executado em sistemas operacionais variados, como “Windows”, “MacOS” e
“GNU/Linux”, enquanto outros sao limitados a um unico sistema.
Na Figura 3 encontra-se o Arduino utilizado neste projeto, modelo “Duemi-
lanove”, com micro-controlador ATMega328. Ele contem 14 entradas/saıdas digitais
(sendo que 6 funcionam como PWM), 6 entradas analogicas, 32Kb de memoria Flash
e 2Kb de memoria RAM. A comunicacao e feita por cabo USB, com isso requer o uso de
um computador para envio/recebimento das informacoes (Arduino Team, 2011).
Figura 3: Arduino Duemilanove
Fonte: (Arduino Team, 2011)
2.2 Diodos Emissores de Luz - LEDs
Assim como e necessario fornecer energia para gerar o par eletron-lacuna - para
um diodo comecar a conduzir - da mesma maneira, a energia e liberada quando um
eletron se recombina com uma lacuna. Essa energia pode ser emitida na forma de calor,
para o cristal - estrutura atomica repetitiva que compoe o substrato do diodo - ou na
14
forma de fotons. No silıcio e germanio, a maior parte e emitida na forma de calor.
Entretanto, em outros semicondutores tais como o arseneto de galio ou fosfeto de galio
ha uma quantidade de fotons gerados suficiente para criar uma fonte de luz bem visıvel.
Este processo de emissao de luz aplicando-se uma fonte eletrica de energia e chamado
de eletroluminescencia. Um diodo que funciona nestas condicoes e denominado diodo
emissor de luz (LED) (Millman e Halkias, 1981; Boylestad e Nashelsky, 1999).
2.3 Fototransistor
O fototransistor e um fotodispositivo semicondutor bem mais sensıvel que o fo-
todıodo. Este dispositivo, e normalmente ligado em uma configuracao emissor comum,
com a base aberta, e uma radiacao e concentrada em uma regiao proxima da juncao
coletor JC , como mostra a Figura 4. A operacao deste dispositivo pode ser entendida
considerando que a juncao JE (juncao emissor) e polarizada no sentido direto, e a juncao
JC e polarizada reversamente (isto e, o transistor esta polarizado na regiao ativa) (Millman
e Halkias, 1981).
Figura 4: Estrutura de um fototransistor
Fonte: (Millman e Halkias, 1981)
Sem que exista uma radiacao de excitacao, portadores minoritarios - moleculas
com carga oposta a carga predominante do material - sao gerados termicamente e os
eletrons atravessam a base, indo para o coletor, da mesma maneira que as lacunas atrav-
essam o coletor indo para a base, constituindo a corrente de saturacao reversa de coletor
15
ICO; a corrente no coletor (IC) e dada pela expressao 1 (Millman e Halkias, 1981):
IC = (β + 1)ICO (1)
onde β representa o ganho de corrente para um transistor em configuracao emissor comum.
Se um feixe luminoso incidir no dispositivo, ocorrera geracao de portadores mi-
noritarios adicionais por foto geracao, que contribuirao para a corrente de saturacao re-
versa, da mesma maneira que as cargas minoritarias geradas termicamente. Portanto,
ira surgir uma corrente de saturacao reversa devida a luz incidente, designada por IL, na
formula acima, que resulta na formula 2 (Millman e Halkias, 1981):
IC = (β + 1)(ICO + IL) (2)
Sucintamente, com a ausencia de luz e inversamente polarizadas, as juncoes nao conduzem
corrente eletrica (resistencia eletrica extremamente alta). Se incidirmos luz nestas juncoes,
a sua resistencia eletrica diminui muito, havendo conducao de corrente eletrica.
2.4 Motores CC e Caixa de Reducao
Segundo KOSOW (Kosow, 1982), pode-se entender por motor tudo que trans-
forma energia eletrica em energia mecanica, os quais fazem parte de um conjunto maior
denominado de maquinas eletricas, dividindo este grupo juntamente com geradores, porem
os geradores sao contrarios quanto a transformacao de energia, ja que estes transformam
energia mecanica em eletrica. Toda maquina eletrica e composta por duas partes, sendo
a parte estacionaria o estator e a parte rotatoria o rotor.
O rotor e construıdo de um material ferromagnetico, o qual e envolvido por um
enrolamento denominado de enrolamento de armadura e em seu interior ha o anel comu-
tador, sendo este ultimo responsavel por realizar a inversao das correntes que circulam no
enrolamento de armadura. Este anel comutador e montado e gira junto ao eixo do motor.
O estator e a parte estatica do motor, montada em torno do rotor, de uma forma a
permitir o giro livre do rotor internamente. E constituido de um material ferromagnetico,
assim como o rotor, e e envolto por um enrolamento denominado enrolamento de campo,
o qual possui a funcao de produzir um campo magnetico fixo, interagindo com o campo
do enrolamento de armadura.
16
E possıvel destacar tres caracterısticas principais para o rotor, sendo estas:
1. Permite a rotacao para acao motora mecanica;
2. Em virtude desta rotacao, produz a acao de chaveamento necessario para a co-
mutacao (comutator);
3. Contem os condutores que induzem a tensao ou providenciam um torque eletro-
magnetico, o qual produz/mantem a rotacao do eixo.
O funcionamento do conjunto que compoe o motor sera apresentado na subsecao
abaixo.
2.4.1 Princıpio de funcionamento
Uma bobina - o rotor - quando possui uma determinada diferenca de potencial
entre seus polos, possui uma corrente em um sentido que gera um campo magnetico;
ao inverter essa diferenca de potencial, o sentido da corrente se inverte e a polarizacao
magnetica tambem. Portanto, fazendo o uso desta inversao magnetica atraves de uma
diferenca de potencial e utilizando os conceitos de atracao e repulsao entre os polos de um
ima, consiste o princıpio de funcionamento de um motor de corrente contınua (Honda,
2006).
Na Figura 5 e explicado este princıpio de funcionamento:
Figura 5: Princıpio de funcionamento do motor
Fonte: (Honda, 2006)
Na situacao a), a bobina esta horizontal. Devido a atracao dos polos opostos,
existe um torque que ira forcar a rotacao da bobina no sentido anti-horario. A bobina
sofre aceleracao angular e continua seu giro anti-horario, como se ilustra em b).
17
Esse torque continua ate que os polos da bobina alcancem os polos opostos dos
ımas fixos (estator). Na situacao c) - a bobina girou 90 graus - nao ha torque algum, uma
vez que o rotor esta em equilıbrio devido a atracao do estator, resultando em uma forca
de atracao nula. Este e o momento de inverter o sentido da corrente no rotor, que ira
polarizar reversamente seus polos magneticos - para ocorrer uma grande repulsao entre
os polos do rotor e do estator. Devido a inercia do rotor a bobina ira girar no sentido
anti-horario e o novo torque e gerado atraves destas forcas repulsivas como exibido em d).
Mesmo apos a bobina ter sido girada de 180 graus, o movimento continua, a
bobina chega na “vertical” - giro de 270 graus - o torque novamente se anula, a corrente
novamente inverte seu sentido. Ha um novo torque e a bobina chega novamente a situacao
a) - giro de 360 graus. E o ciclo se repete (Honda, 2006).
2.4.2 Motores Utilizados
O robo possui dois motores de corrente contınua (CC) FA-130RA da empresa
Mabuchi, o mesmo possui 12300 rpm, sem carga, e um torque de 36 gf.cm. A tensao
nominal e de 3V e a corrente mınima necessaria para seu funcionamento e de 150mA.
2.4.3 Caixa de Reducao
Utilizando uma caixa de reducao, atraves de combinacoes de determinadas en-
grenagens, pode-se diminuir a quantidade de rotacoes por minuto dos motores utilizados
para obter um maior torque.
Na caixa de reducao utilizada neste projeto, sao possıveis as seguintes com-
binacoes: 12,7:1, 38:1, 115:1 e 344:1. Uma taxa de reducao X:Y, significa que o motor
roda X voltas para o eixo rodar Y voltas. Portanto, utilizando a reducao 344:1, com
um motor de 12300 rpm, isto significa que a cada segundo o motor completa 205 voltas,
enquanto o eixo de rotacao, o qual a roda esta acoplada, completa 0,6 voltas.
Sabendo que a roda completa 0,6 voltas por segundo e que seu raio e 2,5 cm,
entao sua velocidade escalar e 15,7 cm/s.
2.5 Ponte H
Conforme dito na secao 2.4, a polarizacao aplicada em seus terminais que deter-
mina o sentido de rotacao do motor. Sendo assim, para alternar o sentido de rotacao
18
do motor, basta inverter a diferenca de potencial existente entre os terminais do motor.
Portanto, pode-se utilizar uma chave para inverter essa tensao aplicada aos terminais. E
razoavel sugerir o uso de transistores, na regiao de saturacao, para operar como chave
eletronica.
Um circuito que foi desenvolvido justamente para esse proposito de conseguir
chavear o sentido de rotacao dos motores, e denominado como Ponte H. Uma ponte H e
composta por 4 chaves posicionados formando a letra H, sendo que cada uma localiza-se
num extremo e o motor e posicionado no meio (Patsko, 2006), conforme a Figura 6.
Figura 6: Ponte H
Fonte: (Patsko, 2006)
Para que o motor funcione, basta ativar um par de chaves diagonalmente opostas,
o que faz com que a corrente flua do polo positivo para o negativo da fonte, atravessando
o motor e fazendo-o girar. Para inverter a rotacao, basta ativar o outro par de chaves e
desativar o par que estava anteriormente ativado. Consequentemente, o sentido de rotacao
sera invertido, conforme a Figura 7.
Quando a base do transistor e devidamente polarizada, ele e capaz de conduzir
uma corrente entre seus terminais coletor e emissor, sendo que nos transistores NPN, a
conducao da corrente se dara do coletor para o emissor, enquanto que nos transistores
PNP, a corrente sera conduzida do emissor para o coletor (Patsko, 2006). Para ocorrer
esta conducao, a base do transistor NPN deve estar polarizada em, pelo menos, +0,6V
da tensao do emissor (barreira de tensao de um diodo de silıcio), enquanto que em um
transistor PNP essa tensao deve ser -0,6V (Millman e Halkias, 1981). Desta maneira, a
ativacao dos transistores NPN e feita usando um sinal logico alto (HIGH) e dos PNP com
19
Figura 7: Fluxo de corrente em uma Ponte H
Fonte: (Patsko, 2006)
sinal logico baixo (LOW).
Portanto, pode-se utilizar a polaridade de ativacao dos pares NPN e PNP para
utilizar estes como sendo chaves eletronicas que operam na regiao de saturacao. Sendo
que a ativacao dos transistores sera feita atraves das saıdas logicas do microcontrolador.
Segundo PATSKO, quando os transistores sao desligados, interrompendo a pas-
sagem de corrente do circuito, as propriedades indutivas do motor forcam a corrente a
continuar fluindo, o que pode danificar os transistores. Portanto, para evitar os possıveis
danos, e adicionado um diodo em paralelo com cada transistor, com a finalidade de drenar
a corrente que poderia forcar a passagem atraves dos transistores.
A ponte H que utilizamos foi construıda atraves de componentes discretos, ini-
cialmente conectados a uma protoboard e posteriormente soldados a uma placa de cir-
cuito impresso (PCI), a qual fica acoplada ao Arduino (denominada ”shield”), como visto
Figura 20.
Na Figura 8 pode-se ver o diagrama esquematico da ponte H construıda. Os
transistores TIP 31 e 32, PNP e NPN respectivamente, realizam a funcao de chaves
eletronicas e os transistores BC 548 e 558, NPN e PNP respectivamente, sao utilizados
para amplificar a corrente fornecida pelo microcontrolador, pois o mesmo suporta, no
maximo, 40mA em cada pino digital e sao necessarios de 50 a 100mA para saturar os
TIPs. Com essa configuracao, a queda de tensao entre coletor e emissor dos TIPs e de
aproximadamente 0,2V, totalizando uma diferenca de apenas 0,4V entre tensao a fornecida
pela bateria e a que chega aos motores. As regras de ativacao da ponte sao descritas na
Tabela 1.
20
Figura 8: Circuito esquematico da ponte H
Fonte: Autoria Propria
Pino1 Pino2 MovimentoLOW LOW ParadoHIGH LOW Frente HIGH = 5V
LOW HIGH Tras LOW = 0V
HIGH HIGH Parado
Tabela 1: Ativacao da ponte H
2.6 Encoders
Embora as especificacoes dos motores (CC) sejam iguais, na pratica, sempre terao
uma diferenca de rotacao em cada um devido a imperfeicoes dos materiais e da tolerancia
dos componentes do circuito de controle. Dessa forma, este fator atrapalha muito o
projeto, ja que um seguidor de linha deve seguir precisamente a linha. Uma solucao para
este problema e conseguir um sensor capaz de detectar o defasamento da rotacao dos
motores.
O encoder e um sensor preso a um objeto em rotacao (como uma roda) para medir
sua rotacao (Society Of Robots, 2010). O encoder ira contar a quantidade de faixas pretas
e brancas, por exemplo, em um disco acoplado no eixo de rotacao. A quantidade de faixas
esta diretamente relacionada a precisao do encoder, sendo que um encoder com precisao
de 10 graus, deve ter 36 faixas alternadas entre preto e branco, ja que o disco possui 360
graus.
21
Segue o exemplo de um disco do encoder de precisao de 10 graus, na Figura 9,
que construımos para o projeto:
Figura 9: Disco do encoder de 36 faixas
Fonte: Autoria propria
Portanto, utilizando um encoder em cada eixo dos motores, e possıvel medir
sua defasagem em graus e, consequentemente, a diferenca de velocidade entre as rodas.
Sabendo disso, atraves de um controle de tensao pode-se diminuir a rotacao mais rapida
para regular esta defasagem. Neste projeto, o controle foi feito atraves de PWM.
2.7 Modulacao por Largura de Pulso - PWM
O Arduino Duemilanove possui determinadas saıdas digitais que sao capazes de
utilizar modulacao por largura de pulso. Esta e uma tecnica usada para gerar sinais de
ondas retangular com largura do ciclo de trabalho ajustavel, que e o tempo que o sinal
fica em nivel logico alto, durante um intervalo de tempo. A frequencia de Modulacao de
Largura de Pulso (PWM) do Arduino Duemilanove e 500 Hz, perıodo de 2 milisegundos.
A Largura do pulso de trabalho pode ser ajustada na saıda digital em uma escala crescente
de 0 a 255, sendo estes valores o ciclo de trabalho nulo e completo respectivamente (Hirzel,
2011). Portanto, um valor de 127 tem um ciclo de trabalho de 50% do total, sendo esta
uma onda que permanece 1 milisegundo em nıvel alto e 1 milissegundo em nıvel baixo.
Para um melhor entendimento sobre esta escala, a Figura 10 contem exemplos de
PWM com valores variados. Cada linha verde na vertical representa 2 milisegundos.
22
Figura 10: Controle por PWM
Fonte: (Hirzel, 2011)
A utilidade de se utilizar PWM e que atraves desta escala de ciclo de trabalho
e possıvel conseguir controlar o nıvel de tensao media. Portanto, este efeito poderia ser
utilizado para acender um LED, utilizando PWM desde 0 ate 255, durante um intervalo
de tempo o que daria um efeito de degrade de luminosidade crescente ao LED.
2.8 Sensores de Refletancia
Um sensor de refletancia consiste em um circuito eletronico que seja capaz de
detectar o quao reflexiva e a superfıcie atraves de um raio de luz incidente. Sendo assim,
um LED, ver secao 2.2, infravermelho sera o emissor do feixe de luz a uma determi-
nada superfıcie, que neste projeto sera o labirinto composto por regioes pretas e brancas.
Sabendo, atraves da Fısica, que uma superfıcie preta absorve grande parte da luz incidente
enquanto a superfıcie branca reflete grande parte, pode-se usar o fototransistor, devido
suas caracterısticas explicadas na Secao 2.3, como receptor dos raios de luz refletidos em
ambas as superfıcies.
Na Figura 11 sao ilustrados dois pares de sensores, sendo que cada par consiste
em um receptor - fototransistor - e um emissor - LED infravermelho. O emissor incide
um feixe de luz sobre a superfıcie, representado atraves das linhas contınuas, o qual e
formado por varios raios de luz. Na superfıcie preta grande parte da luz e absorvida,
23
porem ha uma fina camada de plastico sobre a fita utilizada, o que faz com que parte da
luz reflita no mesmo angulo incidido, de acordo com a lei da reflexao. Essa luz refletida
tem baixa intensidade, logo nao influencia muito a leitura. Ja na superfıcie branca grande
parte da luz e refletida, de modo difuso por ser uma superfıcie irregular, o que nao nos
garante exatamente qual a porcentagem da luz incidente que sera refletida ao receptor.
Entretanto, quanto mais perto do emissor ele tera uma maior probabilidade de receber
os raios refletidos. E atraves desse princıpio que e possıvel detectar as linhas pretas do
labirinto, ou seja, caminhos possıveis pelos quais o robo pode percorrer.
Figura 11: Funcionamento dos sensores de refletancia
Fonte: Autoria propria
Um problema detectado foi que os primeiros fototransistores comprados tinham
alta sensibilidade em suas laterais, o que fazia com que eles detectassem raios refletidos
por outros emissores alem do seu par e tambem que detecte raios emitidos pela lateral do
seu par emissor, independente da superfıcie. Os emissores foram envoltos com fita preta,
para diminuir seu angulo de incidencia, e o problema foi resolvido. Porem, posteriormente,
a placa com os sensores foi perdida e novos componentes foram comprados. Esses novos
fototransistores nao apresentaram o mesmo problema e a protecao externa foi deixada de
lado.
A Figura 12 representa o diagrama esquematico do circuito utilizado como sensor
de refletancia. Cada par de sensores corresponde a um circuito deste, sendo que sua
alimentacao e a leitura analogica do pino Vout e feita pelo Arduino.
24
Figura 12: Circuito esquematico dos sensores de refletancia
Fonte: Autoria propria
2.9 Algoritmos de decisao
O algoritmo de decisao e responsavel por receber dados provenientes dos sensores
e realizar a decisao de continuar reto ou de fazer alguma curva. Porem, essa decisao nao
e tao trivial ja que se trata de um labirinto e, caso for encontrada alguma encruzilhada, o
robo deve decidir por qual caminho seguir. Alem destas tomadas de decisoes, e importante
que o algoritmo, de alguma forma, forneca um caminho direto ate o ponto final. Nesta
secao serao explicados os algoritmos estudados para a resolucao do labirinto.
Inicialmente a equipe pensou em duas solucoes: o algoritmo do caminho mınimo
de Dijkstra (Cormen et al., 2002) e o de Busca em largura (Cormen et al., 2002), porem,
mais tarde foi encontrado e adotado um terceiro algoritmo denominado de “Regra da
mao” (Vannoy, 2009). A Tabela 2 mostra as principais vantagens e desvantagens de cada
algoritmo. Em seguida, sera apresentada uma breve explicacao de cada um desses e o
motivo de ter sido ou nao escolhido.
2.9.1 Busca em largura
A primeira ideia apresentada pela equipe foi o algoritmo de busca em largura em
uma matriz de caminhos possıveis entre o ponto inicial e final do labirinto, o qual seria
percorrido pelo robo.
O funcionamento deste algoritmo e uma ideia basica: a partir de um ponto inicial,
e feita uma busca em todos os nos (caminhos) adjacentes - vizinhos - e para cada um
desses a busca se repete para todos os proximos nos adjacentes, e assim sucessivamente
25
Busca em Largura Dijkstra Regra da Mao
VantangensDetermina o menorcaminho geral.
Determina o menorcaminho geral.
Determina o menorcaminho, do percor-rido.
Nao requer trata-mento de ciclos.
Nao requer trata-mento de ciclos.
Baixo consumo dememoria.Simplicidade.
DesvantagensAlto consumo dememoria.
Requer o mapa dolabirinto.
Requer tratamento deciclos.
Requer o mapa dolabirinto.
Nao determina omenor caminho geral.
Tabela 2: Comparacao entre os algoritmos
ate encontrar o ponto desejado, tornando-se uma especie de forca bruta, ja que a busca e
feita em todos os caminhos existentes, e o escolhido e o que achar o ponto final primeiro.
Para o armazenamento dos nos ja percorridos e a fim de obter o menor caminho possıvel
foi utilizada uma fila para auxiliar no gerenciamento de prioridade dos nos adjacentes. Ao
final do processo, isto e, quando o no final e encontrado, basta que um caminho contrario,
ou seja, do ponto final para o ponto inicial, seja percorrido para saber qual caminho da
matriz foi resultante do menor caminho atraves da forca bruta.
Com a matriz montada e executado o algoritmo e obtido o caminho mınimo, mas
isso nos limitaria quanto a forma do labirinto, ja que a cada simples modificacao feita
nos labirintos a matriz de caminhos teria que ser reconstruıda e o algoritmo executado
novamente. O principal problema encontrado foi o consumo de memoria para o armazena-
mento e processamento deste algoritmo, ja que o aumento nao seria linear ao crescimento
do labirinto, nos limitando assim ao tamanho do labirinto utilizado. Um outro problema e
a necessidade do conhecimento antecipado da matriz para poder executar este algoritmo,
sendo necessario a intervencao humana a cada modificacao no labirinto.
O proximo algoritmo que sera apresentado foi capaz de solucionar o problema
de memoria, ja que nao percorre toda a matriz, ou seja, todos os nos vizinhos do grafo,
apenas o caminho mınimo que liga dois pontos.
26
2.9.2 Algoritmo de Dijkstra
O algoritmo de Dijkstra e um dentre varios que calcula o caminho mınimo en-
tre dois pontos distintos de um grafo, onde cada caminho possui um determinado peso,
pode-se pensar nesses pesos como sendo a distancia entre dois pontos que limitam este
caminho. O que torna esse algoritmo muito usado e eficiente e seu custo a maquina
(complexidade) e sua tomada de decisao partindo do princıpio dos algoritmos gulosos,
buscando sempre a decisao que parece otima no momento. Porem, para a execucao deste
algoritmo e necessario o conhecimento de todo o grafo antecipadamente, como no algo-
ritmo apresentado anteriormente.
Por um bom tempo esta foi a opcao escolhida pela equipe, porem, posterior-
mente foi encontrada uma nova solucao, a qual foi escolhida, pois nao era necessario o
conhecimento antecipado da matriz de caminhos e o consumo de memoria era menor ao
do algoritmo de Dijkstra.
2.9.3 Algoritmo “Regra da mao”
Este algoritmo foi considerado o mais adequado, ate o momento, para a solucao
dos problemas que a equipe possuıa, tanto com relacao a memoria, tanto quanto em
relacao ao processamento do microcontrolador. Alem de solucionar este problema, sua
ideia e implementacao sao simples. Porem, ha uma condicao: o robo primeiro tera que
explorar o labirinto, a fim de achar o ponto final, antes de realizar o calculo do caminho
mınimo a partir de um metodo de simplificacao; a exploracao e dada de acordo a regra
escolhida, que sera apresentada posteriormente. Pode-se dizer que este algoritmo tambem
e de forca bruta, porem, apenas na exploracao, ja que a partir da segunda vez que o robo
for colocado no mesmo ponto inicial ele ira percorrer o menor caminho a partir dos quais
ele explorou.
Para explorar o labirinto estipula-se qual regra usar, da mao esquerda ou da mao
direita:
• Mao esquerda
1. Sempre prefira virar a esquerda do que ir reto ou virar a direita.
2. Sempre prefira ir reto do que virar a direita.
27
• Mao direita
1. Sempre prefira virar a direita do que ir reto ou virar a esquerda.
2. Sempre prefira ir reto do que virar a esquerda.
Figura 13: Regra da mao esquerda
Fonte: Autoria propria
Por mais que nao haja caminho a esquerda, como na Figura 13 na situacao 5), o
caminho tomado tende a esquerda, que no caso seria continuar reto.
Conforme e detectada uma decisao feita pelo robo (virar a esquerda, ir reto, virar
a direta ou voltar), a mesma e armazenada em um vetor, onde simultaneamente ocorrem
as simplificacoes para obter o menor caminho possıvel sobre os caminhos explorados. Estas
simplificacoes sao feitas da seguinte forma: caso o robo virar a esquerda, e armazenada a
letra ‘E’ no vetor, na proxima decisao supoe-se que o robo encontre o final de um caminho,
porem, nao e final do labirinto, entao ele volta (giro de 180o em cima de seu eixo) e e
armazenado ‘V’. Supoe-se novamente que a proxima decisao tomada e virar a esquerda,
armazena-se ‘E’ e e verificado que ocorreu a sequencia ‘E’, ‘V’ e ‘E’, a qual pode ser
simplificada com ‘R’ indicando que na proxima vez que o robo passar por este ponto ele
devera continuar reto.
Para facilitar o entendimento do que foi dito sobre o metodo de simplificacao dos
caminhos, observe a Figura 14.
Todos os passos, do 1) ao 4), poderiam ser simplificados como mostra no passo 5).
Utilizando este metodo o uso de memoria e consideravelmente inferior ao dos algoritmos
apresentados anteriormente, sendo este o escolhido pela equipe para resolucao do labirinto.
28
Figura 14: Metodo de simplificacao de caminhos
Fonte: Autoria propria
A simplificacao apresentada na Figura 14 e apenas uma de um total de 12 out-
ras. Todas foram tabeladas pela equipe, como mostra a Tabela 3, porem, nesta tabela
as letras utilizadas para representar as tomadas de decisao foram expressas de acordo
a lıngua inglesa, ou seja, “L” para esquerda (left), “R” para direita (right), “S” para
frente (straight) e “U” para voltar (turn), diferentemente as letras utilizadas nas figuras
apresentadas anteriormente.
Conjunto SimplificacaoS U L RL U S RL U L SR U R SS U R LR U S LR U L UL U R U
L R R R S US R R R L UR L L L S US L L L R U
Tabela 3: Simplificacoes tabeladas pela equipe
Porem, algum dos loops encontrados pela equipe poderiam ser resolvidos com
algumas simplificacoes que nao foram implementadas no robo, as quais foram apresentadas
29
na Tabela 4. Estas simplificacoes sao referentes a quadrados que sao explorados a partir
do centro de uma de suas arestas, ou seja, o robo comeca a explorar o quadrado ao
“meio”. Estas nao foram utilizadas devido a algumas regras que a equipe estipulou para
desenvolver o labirinto, fazendo com que este tipo de loop nao fosse implementado, embora
sao facilmente simplificados.
Conjunto SimplificacaoL R R R R L UR L L L L R U
Tabela 4: Simplificacoes nao tabeladas pela equipe
30
3 Desenvolvimento do projeto
3.1 Infraestrutura
3.1.1 Chassi
A princıpio era necessaria uma infraestrutura mecanica para carregar o microcon-
trolador e os componentes eletronicos. Alem disso, era importante decidir a localizacao
do eixo central da caixa de reducao, que ira acoplar as duas rodas juntamente com os
dois motores. Era necessario tambem definir a localizacao dos sensores de refletancia.
Alem destas decisoes quanto a localizacao, a equipe nao conhecia a quantidade exata de
componentes eletronicos a serem utilizados. Por fim, foi montada uma estrutura simples,
apenas com o intuito de organizar o Arduino juntamente com a matriz de contatos e os
motores para ver como seria o comportamento do robo em movimento. Essa montagem
foi feita com papelao, conforme a Figura 15.
Figura 15: Chassi inicial - primeiros testes
Fonte: Autoria propria
Com a construcao desse prototipo a equipe concebeu uma forma inicial ao robo.
O proximo passo foi criar um chassi que suportasse tudo o que fosse preciso, inclusive
os sensores de refletancia que ficariam abaixo do carro. Um primeiro projeto formal do
chassi foi criado utilizando o software AutoCAD, o qual ficou como a Figura 16.
31
Figura 16: Projeto CAD: Segundo chassi utilizado
Fonte: Autoria propria
Com estas medidas, foi feito o novo chassi, utilizando uma prancheta de madeira
que e utilizada normalmente como suporte para folha A4. O resultado e apresentado na
Figura 17.
Figura 17: Segundo chassi utilizado
Fonte: Autoria propria
32
A equipe utilizou por algum tempo o chassi da Figura 17. Entretanto, apos
concluıda uma nova ideia de como fazer uma curva de 90 graus de forma eficiente, foi
necessario um novo chassi que tivesse o eixo de rotacao centrado. A explicacao da neces-
sidade do eixo no centro do chassi sera detalhada na Secao 3.2.3, que mostra o mecanismo
de transicao para iniciar/finalizar as curvas. Portanto, foi desenvolvido um novo chassi,
que atendesse esse requisito, dessa forma, segue na Figura 18 e a Figura 19, as quais
mostram uma visao superior e inferior, respectivamente, do projeto CAD.
Figura 18: Chassi atual - visao superior
Fonte: Autoria propria
Figura 19: Chassi atual - visao inferior
Fonte: Autoria propria
33
Com o projeto CAD pronto a equipe pode montar defenitivamente o chassi final
(atual) do robo, o qual e mostrado na Figura 20.
Figura 20: Chassi atual
Fonte: Autoria propria
3.1.2 Labirinto
O labirinto e construıdo utilizando-se de um material para ser usado como fundo
branco (cartolina) e outro para os caminhos possıveis que sao demarcados por linhas
pretas (fita isolante). O mesmo sera constituıdo de linhas ortogonais e sem inclinacao;
deve existir um espacamento mınimo a cada segmento de linha para que o robo consiga
realizar a curva. Inicialmente o lairinto nao possuıa loops, ou seja, nao havia a preocupacao
de o robo entrar em ciclos, porem, com adaptacoes no algoritmo de decisao foi possıvel a
incorporacao destes.
Com a incorporacao de ciclos no labirinto houve uma preocupacao a ser levada
em conta: nao se construir ciclos infinitos, ou seja, aqueles que, por mais que o robo
mude sua regra de decisao, nunca conseguira sair do mesmo. A equipe tentou observar
padroes para se definir esse tipo de ciclo, a fim de quando fosse detectado o padrao, o robo
tomaria uma decisao diferente. Porem, todos padroes encontrados nao eram verdadeiros,
34
ou seja, sempre havia um contraexemplo que se aplicado este padrao poderia acarretar
serios problemas em simplificacoes futuras.
Com este problema foi decidido que nao poderia haver loops infinitos, apenas
ciclos que o robo poderia entrar e sair, como por exemplo: um quadrado em que a entrada
seja a mesma que a saıda.
3.2 Controle
O objetivo desta secao consiste em explicar a parte logica e funcional de controle
denvolvida neste projeto. Sucintamente, as variaveis de controle do hardware sao os
dados obtidos dos sensores de refletancia juntamente com o controle de PWM, conforme
o esquema na Figura 2.
3.2.1 Controle por PWM
Neste projeto o PWM foi utilizado para manter o robo movendo-se em linha reta,
fazendo o controle de tensao em cada um dos motores atraves de dois pares de sensores
de refletancia que detectarao quando o robo nao esta centralizado em relacao a linha,
suprindo a necessidade de se utilizar encoders. Estes dois sensores foram posicionados
estrategicamente, exatamente na extremidade da largura da linha, para alinhar o centro
do robo com o centro da faixa que o robo deve seguir. Dessa forma, sempre que a leitura for
de uma superfıcie branca e indicado que o robo esta caminhando em linha reta. Quando
um dos sensores faz a leitura de uma superfıcie preta, significa que o robo nao esta alinhado
e o vetor direcao e dado por este sensor que esta fazendo a leitura da superfıcie preta.
Foi utilizado o conceito de que quando o robo esta andando em linha reta o
vetor direcao do mesmo e paralelo ao vetor direcao do centro da linha. Portanto, toda
vez que este vetor nao estiver centralizado uma rotina e disparada no microcontrolador,
verificando para onde o vetor direcao esta apontando e o corrige a velocidade dos motores
ate obter a direcao paralela ao centro da linha. Esta correcao e feita aplicando uma escala
de PWM decrescente no motor localizado no mesmo lado do sensor que esta fazendo
a leitura de superfıcie preta. Isto faz com que o robo mude levemente sua trajetoria,
corrigindo a direcao ate que este sensor faca a leitura de uma superfıcie branca. Dessa
forma, conclui-se que o vetor direcao do robo esta paralelo ao vetor direcao do centro da
fita.
35
Normalmente, apos o robo fazer uma curva, o vetor direcao nao estara central-
izado com a linha, tal como e exemplificado na Figura 21.
Figura 21: Saıda de curva
Fonte: Autoria propria
Na Figura 21, os dois sensores sao formados por retangulos verde e cinza, sendo
o receptor e o emissor respectivamente. No instante 1), o robo estava virando para a
direita e percebe a descentralizacao, atraves da leitura da superfıcie preta no sensor do
lado do motor direito. No instante 2), a escala decrescente de PWM e aplicada no motor
do mesmo lado do sensor que esta lendo a superfıcie preta, no caso, o motor direito.
Portanto, os motores estao com velocidades diferentes, o que vai provocar uma rotacao
para o lado do motor que esta com a escala reduzida, conforme e indicado atraves das
setas na imagem. No instante 3), como o robo ainda esta descentralizado, a escala de
PWM e ainda mais reduzida. No instante 4), o robo percebe que o vetor direcao esta
paralelo ao vetor direcao central da linha e portanto, desativa a escala de reducao de
PWM.
Na Figura 21 e mostrada uma situacao em que o robo detecta uma curva para
a direita e a faz na forma determinada, porem, para a realizacao da mesma nao e tao
simples como mostra a figura. Na Secao 3.2.3 sera apresentado com detalhes a forma que
o robo define o fim de uma curva, a fim de iniciar o controle de PWM como e mostrado
na Figura 21. Porem, primeiramente sera mostrado como estao dispostos os sensores de
refletancia, para depois apresentar o conceito de Transicao para fim de curva.
36
3.2.2 Disposicao dos sensores
Os sensores de refletancia devem ser dispostos de uma forma que permita a mel-
hor deteccao das linhas pretas possıvel ao robo, ja que com a velocidade do mesmo a
leitura dos sensores nem sempre sera 100% precisa como prevista na teoria. Inicialmente
a configuracao utilizava tres pares de sensores alinhados um ao lado do outro por um
espacamento de 1 cm, como mostra a Figura 22. A equipe acreditava que com esta
disposicao era possıvel fazer o controle e o alinhamento. O controle foi possıvel, mas o
problema encontrado foi quanto ao alinhamento: por mais reto que fosse o caminho, o
robo nao conseguia permanecer alinhado, pois o espacamento entre os sensores era grande
comparado a largura da faixa preta e ao espacamento utilizado na placa de sensores ao
atual, que sera explicada posteriormente, assim como a diferenca na rotacao dos motores
(ja que nao sao identicos), fazendo com que o mesmo se movesse em zig zag.
Figura 22: Placa com 3 sensores
Fonte: Autoria propria
Para tentar contornar este problema, a equipe optou por acrescentar mais dois
pares de sensores. Estes pares sao exclusivamente para fazer o controle do PWM, man-
tendo o alinhamento. Atualmente ha 5 sensores, sendo um central e dois laterais, para
fazer controle e tomada de decisao de curvas e outros dois, denominados pela equipe como
“meios”, para controlar o PWM. A Figura 23 mostra a atual placa de sensores, com a
identificacao de cada.
Sera detalhado o funcionamento dos sensores laterais juntamente com o central
para a tomada de decisao pelo algoritmo utilizado. A seguir sera mostrada uma imagem
contendo todos os 8 possıveis casos em que os sensores atraves de seus valores de leituras
aonde deverao tomar uma decisao.
Conforme o Algoritmo Regra da Mao (Vannoy, 2009) para tomada de decisao, os
37
Figura 23: Placa com 5 sensores
Fonte: Autoria propria
tres sensores (laterais e central) sao exibidos na Figura 24. Nesta figura, em cada quadro
sao mostrados duas setas, uma azul e uma vermelha, sendo respectivamente o estado
anterior da decisao e posterior a decisao tomada devido a multipla escolha existente. Esta
decisao e tomada de acordo com a leitura dos sensores, conforme indicado na legenda,
sendo que “1” ou “0” significam respectivamente leitura de superfıcie preta e branca.
Existem 5 casos de decisao que permitem multipla escolha, isto e, o robo tem a
opcao de escolher por no mınimo 2 caminhos. Entretanto, a escolha a ser tomada depende
de qual Regra da Mao que o robo adotou, direita ou esquerda. Partimos do pressuposto
que o robo esta utilizando a Regra da Mao esquerda e portanto, na Figura 24, os quadros
enumerados de 1 a 5 ilustram esses casos, observe tambem a leitura dos sensores na
legenda para entender porque a decisao foi tomada de acordo com o Algoritmo.
Alem destes 5 casos, existem mais 3 casos basicos, enumerados de 6 a 8, que
possuem apenas uma escolha, conforme explicado na decisao do Algoritmo.
3.2.3 Definindo final de curva - transicao
Foi citado na Secao 3.2.1 sobre a definicao de fim de curva que e necessario fazer
para o inıcio do controle de PWM apos o termino de uma curva e tambem, na Secao 3.1.1,
sobre a necessidade de desenvolver um chassi que contenha o eixo de rotacao centralizado,
para a realizacao mais eficiente de uma curva de 90 graus desde o inıcio ate o termino da
mesma. Ambas citacoes apresentam o conceito de “Transicao” para definir o fim de uma
curva, o qual sera apresentado nesta secao.
O conceito de transicao e referente ao estado em que o robo tem que se apre-
sentar para que seja decidido quando uma curva terminou. Esta informacao e de plena
38
Figura 24: Casos de tomada de decisao
Fonte: Autoria propria
importancia devido a forma em que a programacao do robo foi implementada, deixando
evidente quando o mesmo esta em linha reta ou em curva, a fim de evitar decisoes inde-
sejadas enquanto se realiza a curva, devido ao movimento dos sensores sobre a superfıcie
branca ou preta.
Quando o robo esta em linha reta o controle de PWM esta agindo com o intuito
de alinhar o mesmo; quando e detectada uma tomada de decisao, onde um ou os dois
sensores laterais estao avistando preto, o robo passa por uma lista de possıveis decisoes,
dependentes das leituras dos sensores, e caso a decisao seja realizar uma curva o robo entra
em um estado em que, independente do que os sensores leiam, nao deve tomar nenhuma
decisao, a menos que se complete uma transicao especıfica, ou seja, quando um conjunto
de sensores (que sera mostrado posteriormente) passa de uma leitura de branco para uma
leitura de preto.
Este conjunto de sensores sempre e composto pelo sensor central e o sensor do
meio (os mesmos que controlam o PWM) referente ao lado da curva feita, como por
exemplo: caso a curva seja para a direita, os sensores que deverao indicar se a transicao
foi completa ou nao sao o sensor central e o sensor direito do meio.
39
Uma vez que se inicia a curva para a direita o sensor direito do meio esperara ate
que sua leitura passe de branco para preto, nao dando importancia para a mudanca de
preto para branco. Quando o mesmo detecta essa mudanca o proximo a esperar por essa
mesma transicao (branco para preto) e o sensor central, sendo que quando este realizar
esta deteccao a transicao e dita “completa” e o estado do robo passa de “curva” para
“reta” ativando o controle de PWM e a permissao de tomadas de decisoes novamente.
Todo este processo pode ser melhor observado na Figura 25 onde a faixa em
formato de “L” e em azul representa a curva e as setas indicam quais sensores fazem
parte do conjunto que devem completar a transicao.
Figura 25: Transicao - definindo fim de curva
Fonte: Autoria propria
Este metodo foi adotado devido a forma com que o robo termina a curva, sendo
necessario um controle de PWM sutil, evitando que o mesmo venha a andar na forma
de zig zag por um perıodo de tempo, possibilitando a deteccao de curva mesmo em uma
reta, caso o controle de PWM nao conseguir estabilizar o robo rapidamente.
40
Para que este metodo seja aplicado controladamente e de uma forma um tanto
quanto perfeita foi necessario aplicar uma frenagem brusca ao robo antes de realizar a
curva e ao termino da mesma, possibilitando uma leitura mais precisa dos sensores e
evitando que a inercia atrapalhasse a movimentacao correta do carro.
41
4 Problemas Encontrados
Ponte H A construcao da ponte H, a princıpio, foi problematica porque ate o momento
a equipe nao tinha estudado transistores. Dessa forma, ficou complicado o entendimento
do circuito. Mesmo com a explanacao de PATSKO, foram encontrados problemas porque
os transistores sugeridos sao BC548 e BC558, que nao conseguiram ativar devidamente
os motores. A solucao foi encontrada atraves da sugestao do professor Hugo Viera Neto
(Departamento Academico de Eletronica - UTFPR), que era substituir os transistores
BC558 e BC548 por TIP32 e TIP31. No entanto, o circuito estava consumindo muita
corrente da bateria 9V (nao recarregavel) para ativar os TIPs, gerando um alto custo com
baterias. Por isso, a equipe teve que pesquisar outras configuracoes de ponte H. A primeira
tentativa foi utilizar a configuracao Darlington, mas a queda de tensao nos transistores
era muito alta, em seguida encontrou-se outra solucao que, com algumas sugestoes do
orientador, se tornou a configuracao final.
Alinhamento sobre o caminho Inicialmente, a ideia era usar apenas 3 pares de
sensores infravermelhos, a qual a equipe havia confianca sobre o funcionamento, porem,
apos os primeiros testes foi constatado o problema de alinhamento do robo sobre a linha
dos caminhos. Seu movimento era em forma de zig zag fazendo com que muitas vezes o
robo nao detectasse a curva, devido a sua inclinacao em relacao a trajetoria. A solucao
encontrada, a partir de uma conversa com o orientador, e utilizada na versao atual do
robo foi a utilizacao de 5 pares de sensores, sendo 2 para o controle por PWM e outros
3 para controle da tomada de decisao atraves do algoritmo. Porem, houve tambem a
tentativa de utilizacao de enconders, os quais geraram novos problemas.
Encoders O principal problema encontrado em utilizar encoders foi conseguir um su-
porte mecanico fixo, em uma boa posicao dos sensores, para se fazer uma leitura precisa
do disco preto e branco. Outro problema consiste na criacao do disco do encoder e sua
eficiencia, tal como dito na secao 2.6. Foi utilizado um disco com precisao de 10 graus,
portanto o disco do encoder possui 36 faixas, sendo que o tamanho do sensor que fara a
leitura dos faixas ja estava praticamente no limiar de uma faixa. Dessa forma, a precisao
da parte mecanica onde se acopla o disco e extremamente essencial ja que o sensor que
fara a leitura esta em uma regiao bem limitada. O resultado de tudo isso foi que nao
42
houve sucesso na construcao do suporte, preso com cola quente, gerando oscilacoes na
leitura dos sensores. Felizmente, o controle por PWM supriu a necessidade dos encoders.
Posicao dos Sensores Apesar da equipe ter planejado a posicao e a disposicao ideal
dos sensores no chassi, ao testar o robo, o tempo de resposta dos motores faz com que os
movimentos nao ocorram como foram idealizados. Ao detectar uma curva, por exemplo,
o robo deveria parar imediatamente uma roda e continuar a outra, porem a roda que
deveria parar ainda se move por inercia alguns centımetros, o necessario para o robo
perder o alinhamento com a faixa. Para resolver esse problema a equipe desenvolveu
um sistema de frenagem para as rodas, invertendo sua corrente por alguns milisegundos,
determinados empiricamente, sem que elas realmente rodem para tras.
Motores Utilizados Um problema grave encontrado foi em relacao aos motores de
corrente contınua utilizados; quando este recebe uma tensao maior que a nominal ira
gerar mais rotacoes, sendo que, na Figura 26 percebe-se a nao-linearidade da variacao de
tensao em relacao a rotacao do motor. Dessa forma, este problema e grave porque o robo
nao possui um regulador de tensao para a alimentacao ideal dos motores que e 3V. Sendo
assim, quando a tensao das baterias e superior a 3V, a direcao do robo torna-se, de certa
forma, instavel e prejudicial para as leituras dos sensores, influenciando desde tomadas de
decisao e a realizacao da curva, por instabilidade da rotacao independente dos motores,
ate o controle de PWM, ja que este controle foi calibrado a tensao nominal dos motores.
Figura 26: Variacao da rotacao do motor CC em relacao a tensao aplicada
Fonte: (Borrell, 2009)
43
Loops problematicos Outro problema importante observado e a que o labirinto pode
conter loops problematicos para o Algoritmo Seguidor de Parede, como por exemplo na
Figura 27.
Figura 27: Exemplo de loop problematico
Fonte: Autoria propria
Para entender o problema, basta tomar qualquer referencial inicial em uma das
pontas neste labirinto e colocar o ponto final no interior do quadrado, tal como e indicado
pelo vetor na Figura 27. Executando o Algoritmo da Regra da Mao Esquerda, percebe-se
que o robo literalmente entrara em loop, fazendo o seguinte percurso: left, left, turn, left,
left, turn, left, left, turn, e assim continuara. Se o Algoritmo da Regra da Mao Direita
fosse utilizado, o problema persistiria. Dessa forma, este loop deveria ser tratado de outra
forma para encontrar o caminho final. Forma esta que a equipe desconhece ate a data de
conclusao deste documento.
44
5 Conclusao
Com o esforco individual de cada um dos integrantes e o compartilhamento de
conhecimentos e ideias foi possıvel realizar todos os objetivos propostos pela equipe sobre
o projeto. Desde uma simples montagem de um chassi para suportar os componentes
basicos do robo, ate ao ponto de o mesmo ser qualificado como seguidor de linha. Em
seguida, o planejamento para possibilitar o robo a fazer curvas de 90 graus e tomadas de
decisoes, incluindo a desenvolvimento de uma placa com a disposicao dos sensores, e a
construcao de um shield sobre o Arduino para minimizar espaco e problemas de conexao
entre componentes. Por fim, o robo foi qualificado como solucionador de labiritos 2D,
sendo submetido a varios testes sobre os mais diversos trajetos e labirintos, como foi
proposto no inıcio do desenvolvimento do projeto, abrangendo quase a totalidade das
possıveis simplificacoes, inclusive loops.
Alguns fatores ainda podem ser melhorados no robo, a fim de aumentar seu
desempenho e diminuir a necessidade de correcoes da trajetoria. Os principais sao: con-
strucao de um suporte mais apropriado para o ajuste de altura e deslocamento da placa de
sensores; elaboracao de um sistema de controle de tensao das baterias, fazendo com que
chegue uma tensao mais constante possıvel nos motores e que indique quando elas estejam
descarregadas; e tambem a substituicao das rodas atuais (off-road) por um modelo mais
estreito, com o intuito de diminuir o atrito com a superfıcie, facilitando a realizacao das
curvas.
Em fim, a realizacao deste projeto foi de grande satisfacao a equipe, pois, desde
o inıcio do curso de Engenharia de Computacao os integrantes da equipe possuiam um
objetivo em comum: produzir algo concreto, que poderia ser mostrado como fruto de
um trabalho longo e difıcil. Principalmente por estes estarem no inıcio do curso e terem
pouca experiencia com a parte mecanica. Porem, a dedicacao e esforco, assim como a
curiosidade, de todos os integrantes foram fundamentais a realizacao bem sucedida deste
projeto.
45
Referencias
M. Yakut Ali, S. G. M Hossain, H. Jamil, e M. Z. Haq. Development of Automated
Guided Vehicles for Industrial Logistics Applications in Developing Countries Using
Appropriate Technology. www.ijens.org/108702-1919%20IJMME-IJENS.pdf, Marco
2010.
Arduino Team. http://arduino.cc, Abril 2011.
Adam Borrell. Tamya “Toy” Motor Testing. http://www.pololu.com/docs/0J11/all,
2009.
Robert Boylestad e Louis Nashelsky. Dispositivos Eletronicos e Teoria dos Circuitos.
LTC, 6a edition, 1999.
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, e Clifford Stein. Algoritmos:
teoria e pratica. Campus, 2a edition, 2002.
Jeanne Dietsch e Bill Torrens. Self-Guided Vehicle with Enhanced Con-
trol System. http://www.growthconsulting.frost.com/web/images.nsf/0/
40254B68ACBF00CF652572BF00405F85/$File/TI%20Alert%20NA.htm, Janeiro 2007.
Timothy Hirzel. PWM. http://www.arduino.cc/en/Tutorial/PWM, Marco 2011.
Flavio Honda. Motores de Corrente Contınua - Guia rapido para uma especificacao pre-
cisa. Technical report, Siemens, 2006.
Irving L. Kosow. Maquinas Eletricas e Transformadores. Globo, 4a edition, 1982.
Jacob Millman e Christos C. Halkias. Eletronica - Dispositivos e Circuitos, volume 1.
McGraw Hill do Brasil, 1981.
Luıs Fernando Patsko. Tutorial Montagem da Ponte H. http://www.maxwellbohr.com.
br/downloads/robotica/mec1000_kdr5000/tutorial_eletronica_-_montagem_
de_uma_ponte_h.pdf, Dezembro 2006.
Society Of Robots. Sensors - Robot Encoder (Slot, Rotary, Linear). http://www.
societyofrobots.com/sensors_encoder.shtml, 2010.
46
Rodrigo Ferreira De Souza. Fabricacao de AGVs (Veıculos Guiados Automaticamente) de
Baixo Custo. http://www.mecatronicaatual.com.br/secoes/leitura/700, Janeiro
2011.
Richard T. Vannoy. Teaching a Robot to Solve a Line Maze. http://www.pololu.com/
file/download/line-maze-algorithm.pdf?file_id=0J195, Abril 2009.
47
A Cronograma
Figura 28: Cronograma
48
B Orcamento
Na Tabela 5 sera apresentado o orcamento feito para o desenvolvimento do projeto
proposto pela equipe. Todo material utilizado para a producao do robo do inıcio ao
atual foi computado no orcamento abaixo, incluindo a quantia comprada apos a falha ou
desgaste dos mesmos.
Produto Quantidade Valor (R$)Transistor TIP31C 4x 0,87Transistor TIP32C 4x 1,08Transistor BC558 4x 0,80Transistor BC548 4x 0,70Emissor infravermelho 20x 0,74Receptor infravermelho 20x 0,75Diodo 1N4007 10x 0,10Resistores 20x 0,03Protoboard 550 furos 1x 14,65Fita isolante 1x 4,70Cartolina branca 4x 0,80Caixa de reducao 1x 57,00Motores 2x 10,00Rodas 3x 25,00Arduino 1x 100,00Bateria 9V 4x 10,00Pilhas Recarregaveis 4x 6,25Total R$ 364,75
Tabela 5: Orcamento - Projeto proposto
49
C Relatorio reunioes
05/03 Pesquisamos o que era preciso para construir um robo, pois todos tinham interesse
em projetar um.
Como todos ja tinhamos experiencia com Arduino, e ja temos este microcontrolador
iremos adotar esse para o controle do robo.
Decidimos fazer um robo seguidor de linha capaz de resolver um labirinto formado
por segmentos de linhas ortogonais.
Analisamos brevemente se o projeto que queremos fazer seria economicamente vi-
avel.
Estudamos algoritmos que resolvem labirinto.
09/03 Definimos a lista de componentes que seriam necessarios para infraestrutura:
– 5 fototransistors (receptor);
– 5 LED’s infravermelhos (emissor);
– 2 motores DC ate 6V;
– 2 Rodas + eixo;
– Caixa de reducao;
– Chassi para acomodacao dos componentes;
– 1 protoboard;
– 4 Transistores NPN e PNP (pontes H);
– Arduino - ATMega328 Duemilanove;
– Fios de diversas cores;
– Resistores e Diodos;
– Fita Isolante e cartolinas brancas (labirinto);
Foram aproveitados alguns componentes que ja possuiamos, por exemplo, rodas,
caixa de reducao e motores DC.
12/03 Projetamos o diagrama eletrico do circuito. Interacao com os sensores, que sao
emissores e receptores infravermelho e tambem a organizacao do chassi.
50
Primeiramente projetamos um prototipo do chassi em CAD para suportar o acopla-
mento de um protoboard evitando a necessidade de um circuito impresso inicial-
mente.
Construcao das pontes H utilizando transistores BC548 e BC558, porem foi detec-
tado insuficiencia de corrente nos motores levando a procura de um novo modelo de
transistor para tal tarefa.
19/03 Foi escolhido, com a ajuda do professor Hugo, transistores do modelo TIP31C e 32C
para a construcao das pontes H. O circuito foi montado na protoboard e testado o
seu funcionamento com o arduino e os motores. Ao medirmos a tensao nos motores
vericamos que ele estava trabalhando com 4V, sendo que o especificado era 3V,
entao colocamos um diodo 1N4007 na entrada da alimentacao para diminuir essa
subretensao.
Montamos a primeira placa com os sensores de refletancia. O circuito foi soldado
em uma placa perfurada, contendo 3 pares de fototransistores e LEDs em linha.
26/03 Orientacao do Scandelari sobre as especificacoes do esquema dos sensores (intensi-
dade em relacao a sensibilidade) e tambem sobre o arranjo dos sensores.
Discutimos os algoritmos para resolucao do labirinto. Inicialmente tinhamos a ideia
de mapear todo o labirinto e, em seguida, aplicar o algoritmo de Dijkstra para
encontrar o menor caminho, porem isso exigiria um grande processamento e bastante
memoria do microcontrolador. Porem, encontramos umalgoritmo chamado “Regra
da Mao Esquerda”, no qual o robo segue a linha como se fosse um muro, mantendo
sempre a mao esquerda nele. Deste modo, em um labirinto simplemente conexo,
com pouco processamento o robo consegue chegar ao final e, aplicando algumas
simplificacoes no caminho percorrido, e possıvel determinar o menor caminho obtido
durante a exploracao.
02/04 O circuito foi totalmente montado e testado. O robo conseguiu seguir uma linha,
porem tinha dificuldade em fazer curvas orotgonais e em andar em linha reta.
A dificuldade em seguir linha reta se deve a defasagem da rotacao entre os dois
motores, entao foi levado em conta a possibilidade do uso de Encoders e/ou controle
por PWM para sanar tal problema.
51
Ja a dificudade em fazer curvas ortogonais e devido a haver apenas 3 sensores, o
que nao permite identificar todas as interseccoes possıveis. Para isso planejamos a
contrucao de um circuito com 5 sensores.
09/04 Foi testada a hipotese do uso de Encoders para controlar a defasagem nas rotacoes
dos motores, para evitar o ”samba”do robo. Porem a ideia foi totalmente descartada
com a utilizacao do controle por PWM, ja presente no Arduino, levando a equipe
grandes avancos quanto ao controle da defasagem.
Em funcao da utilizacao do PWM e dos novos sensores (5 no total), a programacao
e tomadas de decisao na trajetoria do robo foi totalmente reestruturada.
16-23/04 Apesar do grande avanco alcancado com os 5 sensores, o robo ainda apresentava
um problema em fazer curvas ortogonais. O seu eixo de rotacao nem a posicao dos
sensores foram planejados e, deste modo, ao terminar uma curva ele se encontrava
muito inclinado em relacao a linha, tendo trabalho para se realinhar.
Entao a equipe comecou a planejar outro chassi e uma nova configuracao para os
sensores, porem intercalando com a escrita da qualificacao.
07/05 Montagem do novo chassi em acrılico e placa de circuito impresso dos sensores. Para
acoplar esta placa ao chassi foram utilizados dois conjuntos de parafusos, porcas e
aroelas, fixos ao chassi, permitindo o ajuste do seu posicionamento.
09/05 Montagem da ponte H Darlington.
Enquanto nao esta pronto o “shield” da ponte H, a protoboard fica improvisada
acima do Arduino, apoiado pelas baterias.
11/05 Implementacao do algoritmo de simplificacao, ajuste da disposicao dos sensores e
tambem a implementacao da frenagem do motor como solucao para curvas eficientes.
14/05 Novas simplificacoes foram “descobertas” pela equipe, dando maior liberdade e se-
guranca na montagem do labirinto.
Planejamento de um labirinto definitivo, que sera utilizado ate o termino do projeto.
A utilizacao da protoboard suspensa sobre o Arduino esta influenciando mais do
que o esperado sobre o robo, principalmente nas frenagens pre e pos curva, princi-
palmente por seu peso e distribuicao sobre o Arduino, levando a equipe fazer varios
52
ajustes a fim de testar o algoritmo de decisao e simplificacao em busca de possıveis
erros.
21/05 Foi montado o “shield” com as duas pontes H, o qual substitui a protoboard e reduz
significamente o volume e peso do robo. Substituimos o pack com 4 pilhas de Ni-MH
(4,8V) por duas baterias de Li-Ion em paralelo (3,7V). Com a nova configuracao da
ponte H a perda de tensao diminuiu de aproximadamente 1V para aproximadamente
0,3V.
28/05 Montamos outra PCI para colocar os Leds indicadores de direcao e um Buzzer para
alertar a tensao na bateria, e tambem tocara um musica ao final do percurso.
01-02/05 Um componente do carregador das baterias de Li-Ion entrou em combustao. Como
nao conseguimos identifica-lo, voltaremos a utilizar as pilhas de Ni-MH.
Implementamos a dupla verificacao para cada decisao a ser tomada. Isto se tornou
necessario para evitar decisoes precipitadas, devido ao ma posicionamento do robo,
identificado durante a verificacao dos dados salvos na EEPROM do Arduino. Tambem
foi implementado um metodo para que ele nao salvasse mais de uma vez a mesma
decisao, para salvar uma nova decisao ele deve ter vindo de uma reta.
O robo, agora ja pode ser chamado de Dijkstra Movel (ou UTcom1), resolveu pela
primeira vez um labirinto, mas ainda esta instavel.
03-04/06 Quando as pilhas estao com a carga completa (aproximadamente 4V), o robo nao
responde como o esperado, porem, apos abaixar um pouco a tensao (aproximada-
mente 3,7V), ele volta ao normal. Isso devido a curva de resposta dos motores.
Foram gravados e editados alguns vıdeos do robo percorrendo o labirinto para a apre-
sentacao. Tambem foram definidos alguns topicos importantes para a apresentacao
e os assuntos pendentes da monografia.