DESENVOLVIMENTO DE UM ROBÔ PERSEGUIDOR...
Transcript of DESENVOLVIMENTO DE UM ROBÔ PERSEGUIDOR...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
ENGENHARIA DE COMPUTAÇÃO
FABIANO GUILHERME PRADO ARAÚJO
IGOR RODRIGUES PESSOA
RAFAEL GÓES TURCHENSKI
DESENVOLVIMENTO DE UM ROBÔ PERSEGUIDOR DE
OBJETOS
Trabalho Acadêmico
Curitiba, 2011
FABIANO GUILHERME PRADO ARAÚJO
IGOR RODRIGUES PESSOA
RAFAEL GÓES TURCHENSKI
DESENVOLVIMENTO DE UM ROBÔ PERSEGUIDOR DE
OBJETOS
Trabalho apresentado à matéria de O�cina de
Integração 2, do curso de Engenharia de Com-
putaçao da Universidade Tecnológica Federal do
Paraná.
Prof.Hugo Vieira Neto
Prof.Mário Sérgio Freitas
Curitiba, 2011
AGRADECIMENTOS
Agradecemos ao professor Hugo e ao professor Mario pela assitência dada durante as aulas
da disciplina. Agradecemos também aos nossos colegas pelo apoio e a ajuda oferecida
durante o desenvolvimento do projeto.
Agradecemos ao professor Hugo e ao aluno Fernando Padilha pelo empréstimo de
materiais (sensor e servomotor , respectivamente), o que viabilizou a construção do robô.
RESUMO
ARAÚJO, Fabiano; PESSOA, Igor; TURCHENSKI, Rafael.Desenvolvimento de um robô
perseguidor de Objetos. Trabalho Acadêmico �Curso de Engenharia de Computação,
Universidade Tecnológica Federal do Paraná. Curitiba, 2011.
O trabalho a seguir consiste na construção e programação de um robô com o objetivo
de seguir um certo objeto que entre em movimento. Através de dois sensores sharp ran-
ger, o robô identi�cará a localização do objeto e, a partir disso, o seguirá. Os sensores
estarão sobre um servo motor, utilizado para auxiliar a varrer o terreno e encontrar o
objeto a ser seguido. O robô possuirá dois motores de 3V cada para locomoção, duas
fontes de alimentação, duas pontes H, e um Arduino, que executará o algoritmo.
Lista de Figuras
1 Diagrama de Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2 Imagem de um arduino[1] . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Imagem de um motor DC[4] . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 Imagem de um servomotor[3] . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5 Esquema da ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6 Funcionamento da ponte H[9] . . . . . . . . . . . . . . . . . . . . . . . . . 14
7 Ilustração do processo de triangulação [6] . . . . . . . . . . . . . . . . . . . 15
8 Exemplos de PWM[2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
9 Esquemático da Ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
10 Chassi visto de cima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
11 Chassi visto de baixo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
12 Circuito completo do robô. Autoria Própria. . . . . . . . . . . . . . . . . . 22
13 Primeiro Cenário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
14 Segundo Cenário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
15 Detecção utilizando dois sensores . . . . . . . . . . . . . . . . . . . . . . . 25
SUMÁRIO
1 Introdução 7
1.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Fundamentação Teórica 10
2.1 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Motores DC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Servomotores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5 Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5.1 Sensor IR SharpRanger GP2D12 . . . . . . . . . . . . . . . . . . . 14
2.6 PWM - Modulação por largura de pulso . . . . . . . . . . . . . . . . . . . 15
3 Desenvolvimento 17
3.1 Montagem da ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1.1 Material Utilizado . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Montagem da parte mecânica do robô . . . . . . . . . . . . . . . . . . . . . 18
3.3 Montagem da parte eletrônica do robô . . . . . . . . . . . . . . . . . . . . 21
3.4 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4 Resultados 28
5 Considerações �nais 29
7
1 Introdução
1.1 Objetivo
Nosso projeto consiste na criação de um robô autônomo que utiliza dois sensores
de distância por infravermelho (IR Sharp Ranger) para seguir um objeto em movimento e
manter-se a uma distância pré determinada. Esta distância segura deverá se situar entre
o intervalo de alcance válido nos sensores.
1.2 Motivação
Sensores são dispositivos indispensáveis e onipresentes em aparelhos eletrônicos
modernos. Com a evolução da indústria eletrônica houve uma redução do tamanho e
custo dos componentes e circuitos integrados, o que abriu novas possibilidades para a
construção de sistemas móveis inteligentes autônomos. Na robótica existem dois modos
de controle de robôs: o comportamento plani�cado e o reativo. O primeiro baseia-se na
criação de um modelo de mundo armazenado previamente no robô, enquanto o segundo
na reação ao ambiente externo através de sensores. Iremos, com este projeto, criar um
robô reativo, baseado em sensores de distância por infravermelho. Este robô tem como
função seguir um objeto e �car a uma distância deste, podendo ser alterado para servir
como um sistema de vigilângia, se for acoplado uma câmera em sua estrutura.
Este projeto, por ambicionar a construção de um robô autônomo, gera desa�os
na área da eletrônica digital, programação de microcontroladores e mecânica.
1.3 Metodologia
Para o desenvolvimento do projeto, dividimos nossas tarefas em três áreas distin-
tas: eletrônica, programação e mecânica. Na primeira foram colocados todos os problemas
relativos ao circuito envolvido no sistema, assim como pré-requisitos para a construção
deste (entendimento de transistores, inversores, ampli�cadores, capacitores, ruído gerado,
picos de corrente, reguladores de tensão, etc.). Na segunda, o algoritmo de controle do
robô propriamente dito e na terceira o projeto e construção do chassi, além da compre-
ensão do funcionamento de motores DC (relações entre torque e RPM,entre outros).
Separamos uma boa parcela do tempo de projeto para o estudo do funcionamento
8
e características dos dispositivos pois não possuíamos qualquer base em eletrônica. Isto
foi necessário para que pudéssemos ter uma ideia mais concreta do escopo que nosso
projeto englobava e do tempo necessário para cumpri-lo. Após de�nirmos o objetivo do
projeto, de�nimos as barreiras abstratas que este objetivo acarretava e, gradualmente de-
compusemos estas barreiras em funcionalidades possivelmente adquiridas com hardwares
especí�cos [8].
Após estudo e discussão entre o grupo foram de�nidos os componentes principais
a serem utilizados no sistema:
• Protoboard
• Arduino
• 4 Pilhas
• Bateria
• 2 Motores
• 2 Servomotores
• 2 Sensores
• 2 Rodas
• Ballcaster
Estes componentes foram integrados de acordo com o Diagrama de Blocos, Figura 1.
Uma explicação mais detalhada dos componentes e do diagrama de blocos será
feita nos capítulos posteriores. E assim iniciamos os testes com os dispositivos e a escrita
da monogra�a.
9
Figura 1: Diagrama de Blocos
10
2 Fundamentação Teórica
2.1 Arduino
O Arduino Duemilanove foi utilizado como controle principal do nosso robô. É
uma placa baseada no microcontrolador Atmega328, possui 14 pinos para entrada ou
saída digital (dos quais 6 podem ser utilizados para gerarem sinais PWM de 8 bits) e 6
entradas analógicas. Para comunicação, o arduino dispõe de duas portas para a interface
assíncrona (UART). Uma grande vantagem desta plataforma é que o bootloader (interface
de programação para a placa) já vem incluso, logo não é necessário investir na compra
de um programador externo. O Arduino foi desenvolvido com o objetivo de ser de fácil
manipulação para aqueles que não têm experiência com software ou hardware. Tanto a
placa como o ambiente de desenvolvimento são chamados Arduino. Com ele é possível
criar projetos que reagem e interpretam fenômenos físicos mediante o uso de sensores. A
IDE (Integrated development environment) presente permite que o usuário possa escrever
e editar o código que será convertido em instruções para o microcontrolador executar.
A interface foi escrita na linguagem Java, que foi utilizada como base para os projetos
Processing e Wiring, e sua programação se assemelha muito à linguagem C/C++. A
placa Arduino pode ser vista na Figura 2.[1]
Figura 2: Imagem de um arduino[1]
2.2 Motores DC
O motor de corrente continua é uma máquina elétrica que transforma energia
elétrica em mecânica. Nesse caso, é fornecida energia elétrica aos condutores e ao campo
11
magnético para que seja gerada rotação através da força magnética. As máquinas elétricas
sempre serão compostas de duas estruturas magnéticas:
• Estator(parte estacionária): é composto de uma estrutura ferromagnética com pólos
aos quais são enroladas as bobinas que formam o campo, ou de um imã permanente.
• Rotor(parte que gira): é um eletroímã constituído por um núcleo de ferro com
enrolamentos em sua superfície que são alimentados por um sistema mecânico de
comutação.[7]
Podemos observar a parte interna do motor na Figura 3. Para ter torque su�ciente
Figura 3: Imagem de um motor DC[4]
para começar a rotação, o rotor necessita da interação de seus imãs com os do estator para
que o giro comece. As forças de atração e repulsão fazem com que eles puxem e empurrem
os pólos, e assim se da o torque necessário. Giram cada vez mais rapidamente até que
12
as cargas ou atrito ligados ao eixo reduzam o torque a zero. A partir daí, a velocidade
angular do motor se torna constante. Um motor simples consiste em uma bobina que
gira entre dois imãs permanentes. Os pólos magnéticos da bobinas são atraídos pelos
pólos opostos dos imãs �xos. Sendo assim, ela gira no sentido buscando �car mais perto
desse imã, mas quando está perto de alcançá-lo, o sentido da corrente muda, fazendo com
que seja atraído pelo outro imã e repelido pelo mais perto. Nos motores DC, como os
utilizados por nós em nosso trabalho, é necessário a utilização de um comutador em seu
interior para a mudança periódica de polaridade, necessário para a mudança do sentido da
corrente no momento certo. O comutador são duas placas condutoras curvadas e �xadas
no eixo do rotor. Os terminais do enrolamento da bobina são conectados nessas placas.
Através de escovas acopladas a ele, ocorre a mudança da corrente no momento em que o
comutador troca o contato entre as escovas.
2.3 Servomotores
Servo motor é uma máquina que recebe um sinal de controle, veri�ca a posição
original, e depois atua no sistema em busca da posição desejada. É um motor que não
gira inde�nidamente, pode fazer a rotação de apenas 180 graus, mas são extremamente
precisos. Ele é constituído por três partes principais: Sistema atuador, sensor e circuito
de controle. O primeiro é um motor, geralmente de corrente contínua, e um conjunto de
engrenagens que forma uma caixa de redução com uma relação longa, pra aumentar o
torque. O sensor é normalmente um potenciômetro acoplado ao eixo do servo, e através
da sua resistência, é possível determinar a sua posição. E o circuito de controle é um
circuito composto de componentes eletrônicos discretos ou circuitos integrados que tem a
capacidade de receber o sinal do sensor e o sinal de controle e posicionar o motor no eixo
da direção desejada. Na Figura 4 podemos observar um servomotor.
Figura 4: Imagem de um servomotor[3]
13
2.4 Ponte H
A ponte h é um circuito eletrônico formado por 4 chaves que com diferentes
combinações fazem com que uma corrente possa �uir em sentidos opostos. Esse circuito
é muito utilizado no controle de motores de corrente contínua, pois pode-se fazer o motor
girar tanto para o sentido horário quanto no sentido anti-horário. A ponte H pode ser
montada manualmente, mas também é possível encontrar circuitos integrados com essa
função. Na Figura 5 segue um esquema simpli�cado da mesma.
Figura 5: Esquema da ponte H
Quando as chaves C1 e C4 estiverem fechadas e C2 e C3 estiverem abertas, o
motor girará em um sentido. Caso contrário, C2 e C3 estiverem fechadas e C1 e C4 esti-
verem abertas, o motor girará no sentido oposto. É preciso ter um cuidado especial para
que as chaves C1 e C3 , assim como a C2 e a C4 não estejam fechadas simultaneamente,
o que causaria um curto na fonte. Isso é mostrado na Figura 6.
14
Figura 6: Funcionamento da ponte H[9]
Em nosso projeto, inicialmente foi cogitado usar o circuito integrado L298 para
realizar as funções da ponte H, porém após alguns problemas com seu funcionamento,
decidimos construí-la com componentes discretos. Em nosso circuito estão inclusas duas
pontes H, uma para cada motor, pois deste modo podemos controlar a direção e a inten-
sidade do movimento do nosso robô.
2.5 Sensores
Há diversos tipos de sensores: de luz, som, temperatura, calor, radiação e muitos
outros que tem inúmeras aplicações em eletrônicos comumente utilizados hoje em dia. Seu
comportamento se baseia em reagir aos fenômenos do mundo a sua volta e transformar
essas grandezas físicas em grandezas lógicas. Sendo assim, a informação que é passada
para um circuito, por exemplo, corresponde a uma representação de um conhecimento do
mundo real.[11]
2.5.1 Sensor IR SharpRanger GP2D12
Utilizamos esta classe de sensores devido ao preço reduzido em relação a outros
sensores e também devido a baixa interferência que fatores externos, como condições
de iluminação ambiente e características de re�exão luminosa dos objetos, têm sobre a
leitura. Este sensor é composto por um emissor e um receptor. O emissor, um LED de luz
infravermelha ( λ = 800nm), emite um pulso de luz que, quando atinge um objeto dentro
15
de seu alcance (10 a 80 cm) sofre re�exão e forma um triângulo ao atingir o receptor. A
partir dos dados da matriz linear de carga acoplada (CCD) calcula-se o ângulo de emissão
e, a partir deste, a distância do objeto. [5]
Figura 7: Ilustração do processo de triangulação [6]
2.6 PWM - Modulação por largura de pulso
PWM (Modulação por Largura de Pulso) é um método de emularmos um com-
portamento analógico a partir de uma porta digital. Para isto utilizamos um chaveamento
sobre a porta, ativando-a e desativando-a em um período de tempo. Geramos, deste modo,
uma onda retangular, onde o tempo do sinal em tensão alta é denominado �largura de
pulso�. Ao variarmos a relação entre o tempo da chave ligada e o período de oscilação
total, variamos também a tensão média que a carga recebe, ou seja, efetuamos uma modu-
lação da largura do pulso. A frequência escolhida para efetuarmos o PWM foi de 20kHz,
evitando assim a geração de ruído audível no motor. Na �gura 8, podemos visualizar
os pulsos gerados, utilizando a função analogWrite da biblioteca padrão do Arduino, que
fornece uma resolução de 8 bits para o controle da tensão de saida.[10]
16
Figura 8: Exemplos de PWM[2]
17
3 Desenvolvimento
3.1 Montagem da ponte H
3.1.1 Material Utilizado
Utilizamos os seguintes componentes para a montagem das Pontes-H:
• 1 Protoboard Pequena
• 4 Transistores TIP-31C
• 4 Transistores TIP-32B
• 8 Diodos N4007 (Resposta Rápida)
Na �gura 9 está o esquemático utilizado para a construção das Pontes-H. Os
transistores Q1, Q2, Q3 e Q4 são transistores TIP-32B do tipo PNP e os transistores da
parte inferior do esquemático (Q5, Q6, Q7 e Q8) são NPN. Foram utilizadas diferentes
classes de transistores com o objetivo de evitar um possível curto-circuito da fonte, pois,
acoplando em uma entrada lógica dois transistores NPN e PNP força-se que um transistor
esteja desativado, independentemente do nível lógico aplicado na entrada. As entradas
lógicas são realizadas pelos pontos A e B para uma ponte h e pelos pontos C e D para a
outra.
Figura 9: Esquemático da Ponte H
18
3.2 Montagem da parte mecânica do robô
Para montar o chassi do robô foi primeiramente feita uma lista dos itens que
deveriam estar presentes, para ter uma noção do espaço a ser utilizado. Segue abaixo a
lista dos itens:
• Protoboard
Utilizamos a protoboard para fazermos as conexões da parte eletrônica, e também
a montagem da ponte H.
• Arduino
Utilizado para controle do robô.
• 4 Pilhas
Quatro pilhas são necessárias para fornecer tensão su�ciente para alimentar os mo-
tores. Cada motor tem a alimentação ideal de 3V. Esta tensão, entretanto, não é
mantida constante e varia com a carga na pilha. Para obtermos um funcionamento
mais estável do motor, controlamos a tensão fornecida pela ponte h.
• Bateria
Bateria de 9V utilizada para alimentar o Arduino.
• 2 Motores e 2 Caixas de redução
Os motores em conjunto com as caixas de redução são utilizados para movimentar
o robô. As caixas de redução são utilizadas para transmitir torque ao eixo e para
balancearmos a relação entre torque e rpm do motor.
• 2 Servomotores
Cada um sustentará um sensor. Com o sensor acoplado ao servomotor o sensor
rotaciona junto com o servo, assim podendo varrer o objeto perseguido.
• 2 Sensores
Utilizado para detectar o objeto e monitorar sua borda.
• 2 Rodas
Utilizada para transformar o torque do eixo em movimento do robô.
19
• Ballcaster
Esfera metálica deslizante utilizada na parte inferior dianteira do robô, para queo
atrito entre o protótipo e o solo seja reduzido.
Visto a necessidade de todos esses itens serem colocados, foi feito um esquema que uti-
lizasse um espaço relativamente pequeno. Na Figura 10 temos uma ilustração do chassi
visto de cima e na Figura 11 uma ilustração do chassi visto de baixo.
Figura 10: Chassi visto de cima
20
Figura 11: Chassi visto de baixo
Como podemos notar nas ilustrações, o motor e o ballcaster estão �xados na parte
inferior do chassi, e o restante dos itens na parte superior, lembrando que cada sensor
será �xado em um servo motor para que possa ser movimentado. No chassi foram feitos
dois cortes ao lado do motor para que as rodas pudessem ser encaixadas diretamente no
motor, sem necessitar de um prolongamento do eixo.
21
3.3 Montagem da parte eletrônica do robô
Utilizamos a placa Arduino Duemilanueve como o controle principal do robô. Sua
função é controlar os motores DC, responsáveis pelo movimento do robô, e os servomoto-
res, responsáveis pelo movimento dos sensores de distância infravermelho, além de receber
e processar os dados vindos dos dois sensores de distância. No caso dos motores DC, o
controle ocorre através de duas pontes H, que recebem sinais PWM e assim controlam a
intensidade e o sentido das correntes passando pelos motores. No caso do servo motor, o
sinal é enviado diretamente já que este dispositivo possui uma ponte H embutida .
Utilizamos dois servo motores da série TURNIGY TG9e como bases móveis para
os sensores IR Sharp Rangers. Como os não oferecem grande carga mecânica para os
servos, a corrente fornecida pelo Arduino é su�ciente para a alimentação, não havendo
a necessidade de uma alimentação externa. Os servos foram ligados nas portas digitais
PWM do Arduino 3 e 5 e os sensores nas portas analógicas 1 e 2. Os sensores também
utilizam a corrente fornecida pelo Arduino e o esquemático da ligação pode ser visualizado
na Figura 12
Tanto a �xação dos servos no chassi quanto a dos sensores nos servos é feita
por meio de uma �ta adesiva de alta aderência. A Ponte H foi construída utilizando
transistores TIP-31C e TIP-32B além de diodos de resposta rápida N4007. A alimentação
dos motores é realizada por 4 pilhas de 1,5V ligadas em série e a corrente sobre cada motor
é controlada através do PWM sobre as os pontos A e B para o primeiro motor e C e D
para o segundo. O circuito completo do robô encontra-se na Figura 12.
22
Figura 12: Circuito completo do robô. Autoria Própria.
23
3.4 Algoritmo
O algoritmo utilizado para perseguir um objeto necessita de dois sensores IR. Seu
princípio de funcionamento é simples: ele faz um sensor IR (Sensor 1) oscilar em torno da
extremidade esquerda do objeto detectado enquanto o outro sensor IR(Sensor 2) oscila em
torno da extremidade direita. A rigor, é possível utilizar apenas um sensor para perseguir
o objeto, no entanto, enfrentaríamos um problema caso o objeto fosse detectado pela sua
extremidade direita, como iremos demonstrar nas Figuras 13 a 15.
O pseudocódigo do algoritmo usado para a detecção de objetos com apenas um
sensor está descrito abaixo e sua função é fazer com que o sensor oscile em torno da borda
de um objeto encontrado. Para isto, ao encontrar o objeto, o sensor vira para a esquerda,
até que este deixe de ser detectado. Quando isto ocorre, ele vira para a direita. Deste
modo, ele �cara oscilando em torno da borda direita do objeto.
Se (Sensor detectou um objeto)
Sensor vira para a esquerda
Se (Sensor não detectou)
Sensor vira para a direita
A detecção de um objeto pode ocorrer em dois cenários distintos. No primeiro,
ilustrado pelo diagrama da Figura 13, o sensor detecta o objeto pela extremidade esquerda.
Neste caso, se o objeto se mover para a direita, como exempli�cado pela �gura, irá sair
momentaneamente do alcance do sensor. O sensor, no entanto, responderá à ausência do
objeto, virando para a direita e reencontrando o objeto.
24
Figura 13: Primeiro Cenário
No segundo cenário, ilustrado pelo diagrama abaixo, o sensor detecta o objeto
pela extremidade direita. Deste modo, se o objeto se mover para esquerda o sensor irá
responder ao estímulo virando para a direita, direção oposta àquela escolhida pelo objeto,
o que é problemático.
Figura 14: Segundo Cenário
Para contornarmos este problema optamos pela adição de outro sensor, que �cou
responsável por monitorar a extremidade direita do objeto. Assim, o robô responderá
corretamente a qualquer movimento no plano executado pelo objeto. Isto ocorre porque
25
os 2 sensores possuem comportamentos opostos, ou seja, enquanto um ao detectar o objeto
vai para a esquerda o outro vai para a direita e, ao perder o objeto, o primeiro vai para
a direita e o segundo para a esquerda. Deste modo, um sensor oscila em torno da borda
direita enquanto o outro oscila em torno da borda esquerda.
Podemos visualizar este cenário na Figura 15. No instante t = 0 cada sensor
está oscilando em torno de uma borda. Após o deslocamento do objeto para a direita,
em t > 0 o sensor da esquerda perde o objeto de vista no entanto o da direita ainda o
detecta. Se o movimento do objeto fosse oposto, o sensor da direita perderia o objeto
de vista enquanto o da esquerda ainda o detectaria. Deste modo, não há uma borda
problemática na detecção.
Figura 15: Detecção utilizando dois sensores
26
Segue abaixo o pseudocódigo do algoritmo utilizado pelo robô.
//Para o Sensor 1
Se (Sensor detectou um objeto)
Sensor vira para a esquerda
Se (Sensor não detectou)
Sensor vira para a direita
//Para o Sensor 2
Se (Sensor detectou um objeto)
Sensor vira para a direita
Se (Sensor não detectou)
Sensor vira para a esquerda
//Controle de movimento
Se angulo do Sensor1 ou do Sensor2< Angulo Mínimo
Robo vira a direita
Se angulo do Sensor1 ou Sensor2 >Angulo Máximo
Robo vira a esquerda
Se angulo Minimo < angulo do Sensor1 e Sensor2 < angulo Maximo
e Distancia atual maior que Distancia Confortável
Robo segue reto
Os dois quatro primeiros condicionais do código dizem respeito ao comporta-
mento dos sensores perante a detecção do objeto. Como podemos ver, o Sensor 1 vai a
esquerda caso haja detecção e para a direita caso não haja enquanto o Sensor 2 reage
de forma oposta ao Sensor 1. O controle do movimento do robô se baseia no ângulo dos
servomotores. A cada iteração é testado se o ângulo dos servomotores está dentro de uma
faixa preestabelecida, entre um ângulo máximo e um mínimo. Se esse for o caso, o robô
segue reto. Se o ângulo de algum dos servomotores estiverem aquém do mínimo, o que
signi�ca que o objeto está indo para a direita, o robô vira a direita. E se o ângulo de
27
algum deles for maior que o ângulo máximo, o que indica uma trajetória do objeto para
a esquerda, o robô vira a esquerda.
O último condicional é o critério de parada e é o que faz com que o robô pare, caso
a distância para o objeto seja menor do que um limite pré-estipulado. Os ângulos esta-
becidos como máximo e mínimo foram 150◦ e 30◦, respectivamente e foram determinados
empiricamente.
28
4 Resultados
Conseguimos concluir parcialmente a proposta do projeto. Finalizamos com êxito
a construção mecânica do robô e a integração entre os componentes eletrônicos do projeto.
No entanto tivemos um problema com um dos sensores de distância. Não conseguimos
um padrão estável nos valores obtidos e, assim, só conseguimos testar o algoritmo de per-
seguição utilizando apenas um sensor. Assim não foi veri�cada a corretude do algoritmo
utilizando 2 sensores. Apesar das falhas, consideramos um êxito o projeto como um todo,
pois conseguimos montar um robô autônomo capaz de entender o meio e responder a ele.
29
5 Considerações �nais
Julgamos que o projeto foi bem instrutivo na medida em que adquirimos um
conhecimento razoável em eletrônica mas tivemos alguns problemas, gargalos que atrapa-
lharam o andamento do projeto. Um deles foi a tentativa fracassada de utilizar um CI de
dupla ponte H L298.
30
Referências
[1] Arduino. http://www.arduino.cc, Abril 2011.
[2] Luso robotica. http://lusorobotica.com/img/arduino/pwm.gif, Junho 2011.
[3] Pyroelectro. http://www.pyroelectro.com/tutorials/servo_motor/parts/
hitec_servo_b.jpg, Julho 2011.
[4] Saber eletronica. http://www.sabereletronica.com.br/files/image/figura_1_
controle_dc.jpg, Junho 2011.
[5] Sharp datasheet. http://www.sharpsma.com/webfm_send/1203, Abril 2011.
[6] Society of robots. http://www.societyofrobots.com/, Abril 2011.
[7] Flavio Honda. Motores de corrente contÃnua , guia rýpido para uma especi�-
ca�ÿo precisa. Junho 2011.
[8] Joseph L. Jones, Anita M.Flynn, and Bruce A.Seiger. Mobile Robots Inspiration to
Implementation. 2nd edition, Abril 2011.
[9] LuÃs Fernando Patsko. Tutorial Montagem da Ponte H, Junho 2006.
[10] Myke Predko Michael Predko. Programming robot controllers. MacGraw-Hill Com-
panies, 2003.
[11] L. L. Suarez. Conhecimento Sensorial - Uma Analise segundo a Perspectiva da Se-
miotica Computacional. Junho 2000.