Grupo 2 - Manolos
Membros:
André Martins Vaz
Eduardo de Carvalho Pereira
Henrique Gomes Moutinho
Plinio Rodrigues Pereira
Trabalhos Práticos (TP)
TP2
O objetivo deste módulo é implementar sensores de luminosidade para que o robô seja capaz de seguir uma linha preta e identificar algumas cores de objetos próximos.
Desenvolvimento
Os desafios do TP2 são:
- Fazer o robô seguir uma linha preta
- Reconhecer algumas cores
Para a realização das tarefas optamos por utilizar sensores baseados no resistor LDR.
O LDR tem sua resistência variável de acordo com a intensidade da luz que incide sobre seu invólucro. Utilizando este componente em um divisor de tensão, é possível converter as variações na intensidade da luz em sinal elétrico que poderá ser medido pela porta analógica da Handyboard e teremos então uma estimativa da quantidade de luz que está incidindo no sensor. A leitura obtida é a conversão analógica (0 a 5v) para digital que resulta em um numero de 8 bits (0 a 255).
Para a cumprir cada tarefa, construímos dois sensores diferentes.
Sensor de linha: Para seguir a linha, construímos um sensor com um LED branco e dois resistores LDR. O led emite luz que refletirá no plano onde o robô está situado. A luz refletida é captada pelo LDR e dependendo da intensidade, o robô é capaz de identificar se ele está sobre a linha (fita preta) ou fora dela (parte branca do campo).
Sensor de cor: Para a identificação das cores, construímos um sensor com 4 leds (2 verdes, 1 azul, 1 vermelho) e um resistor LDR. Cada cor do sensor pode ser acendida de maneira independente e, da mesma forma que outro sensor, o LDR capta a luz refletida pelo objeto que à frente do sensor.
Entretanto, para que os sensores sejam capazes funcionar de acordo com o esperado, é necessário calibrá-lo antes de coloca-lo para trabalhar.
Calibração dos sensores:
Sensor de linha:
O LED do sensor de linha permanece aceso constantemente.
Para calibrar o sensor de linha, a Handyboard realiza diversas leituras das portas analógicas de cada LDR salvando os dados em dois vetores. Tirando a média de cada vetor, verificamos a resposta de cada LDR à variação preto-branco.
Algoritmo segue linha.
O sensor de linha foi construído de tal forma que os dois LDR ficam a uma distancia um do outro menor que a largura da linha que o robô deve seguir. Quando um dos sensores identificam que a leitura não é da linha, a orientação do robô é corrigida, afim de manter o robô na trajetória correta.
Sensor de cor:
A calibração do sensor de cor é um tanto mais complexa. Seguindo o algoritmo em tópicos:
-Uma cor de led do sensor é acendida
-Handyboard realiza diversas leituras da porta analógica referente ao LDR do sensor de cor salvando os dados em um vetor
-Os passos acima são repetidos para as outras cores de led
Tirando a media de cada vetor gerado, temos uma estimativa da resposta de cada cor ao padrão RGB, ou seja, para cada cor a ser reconhecida, criamos uma identidade composta pela resposta a cada tipo do luz (vermelho, verde, azul) que incide.
Na prática tivemos que identificar blocos de cores diferentes e texturas diferentes, assim, o sensor foi calibrado para cada bloco.
Algoritmo identifica cor Para identificar as cores, o sensor aciona as cores dos leds independentes e realiza algumas medidas da característica RGB do objeto. Depois é tirada uma média dos valores obtidos e comparado com os valores da calibração, identificando a cor do objeto.
O gráficos a seguir ilustra os dados do processo de calibração.
No gráfico:
A abscissa mostra cada tipos de bloco caracterizado.
A ordenada mostra a média de cada valor obtido para as luzes vermelho, verde e azul, juntamente com os valores máximo e mínimo das diversas calibragens. Cada tipo de luz com sua respectiva cor no gráfico.
Por exemplo, o bloco Verde Espuma responde à luz verde com valor médio de 133, máximo de 137 e mínimo de 124.
Este gráfico ilustra também que podemos facilmente diferenciar as cores.
Observando por exemplo o bloco Amarelo, ele responde ao verde com valores muito baixos em relação aos outros blocos. Fazendo analises deste tipo é possível diferenciar todos os blocos.
TP3
Nessa etapa o objetivo é construir três sensores, um sensor óptico ativo para identificação de cores, um sensor diferencial para reconhecer luzes com diferentes polarizações, e um shaft-encoder para medir a velocidade de cada roda do robô o que permite a utilização de um controlador PD para controlar o movimento do robô.
Desenvolvimento
Os desafios do TP3 são:
- Fazer o robô encontrar uma fonte de luz polarizada especificada no menu, e mover-se em direção a ela.
- Seguir em uma linha preta e, quando encontrar um bloco no caminho, reconhecer a cor e executar uma sequência de comandos especificada para aquela cor no menu.
- Implementar um controlador PD para que o robô ande em linha reta por um tempo predefinido.
Para a realização das tarefas optamos por utilizar sensores baseados no resistor LDR.
O sensor óptico ativo foi implementado no TP2, sua construção, calibragem e funcionamento foram explicados acima (seção TP2).
Para a cumprir cada tarefa, construímos dois sensores diferentes.
Sensor diferencial: Para identificar a luz polarizada, construímos um sensor com dois resistores LDR, a frente de cada um há uma lente polarizada com diferentes orientações, dessa forma a intensidade luminosa em cada LDR depende da polarização da luz incidente. No sensor diferencial os LDR são conectados da seguinte forma:
Isso nos permite identificar onde há maior incidência de luz, pelo valor de tensão lido na entrada analógica,
Se RLDR2=RLDR1 Vout=2.5v
Se RLDR2«RLDR1 Vou~t=5v
Se RLDR2»RLDR1 Vout~=gnd
Obs: A leitura obtida é a conversão analógica (0 a 5v) para digital que resulta em um número de 8 bits (0 a 255).
Conhecendo a polarização das lentes em cada LDR é possível identificar uma fonte de luz polarizada desejada.
Shaft-encoder: Para medir a velocidade nas rodas, montamos um sensor shaft encoder em cada uma, o sensor foi montado utilizando uma roda de mouse e sensores óptico reflexivos, as rodas de mouse foram acopladas ao eixo de cada roda e o sensores posicionados de forma a perceber as ranhuras na roda de mouse.
Calibração dos sensores:
Sensor diferencial:
Foi uma calibração relativamente simples, a Handyboard realiza varias leituras da porta analógica do sensor, isso é repetido com o robô em várias orientações e posições diferentes. Como cada fonte de luz tem uma orientação, os valores lidos são bem característicos para cada orientação do robô, por exemplo, se posicionarmos o robô no meio do campo temos as seguintes medições, de acordo com a orientação:
-Orientado para a luz 1: leitura de aproximadamente 90.
-Orientado para a luz 2: leitura de aproximadamente 190.
-Orientado ortogonal as duas fontes de luz: leitura de aproximadamente 140.
A medida que se aproxima de cada fonte, a diferença na leitura fica cada vez maior.
Algoritmo de localização:
o robô faz um giro de 360° realizando leituras com o sensor diferencial, então determina em qual ponto a leitura foi maior ou menor, dependendo da fonte luz determinada para localização, para aumentar a precisão ele faz outro giro de 90° na região encontrada para a fonte que deseja encontrar, determinada a direção certa ele segue para a fonte. Para controlar o giro foi utilizado o shaft-encoder.
Shaft-encoder:
A calibração foi feita da seguinte forma, os dois motores são acionados por um tempo determidao e a Handyboard faz a leitura de cada sensor, registrando o número de pulsos lidos em cada encoder, se o número de pulsos contados em cada um é diferente, a velocidade dos motores é ajustada e as leituras são refeitas, esse processo se repete até que os valores obtidos para cada sensor sejam iguais, ou muito próximos, assim, foi definido uma velocidade inicial padrão para cada motor.
Algoritmo linha reta:
A medida que o robô se move a Handyboard faz a leitura de cada shaft-encoder, se o número de pulsos lidos num determinado tempo é diferente do esperado, a velocidade do motor e ajustada, assim o robô ajusta a velocidade de cada roda dinamicamente, e é possível seguir uma linha reta.
Tarefas:
O método utilizado para a localização e para andar em linha reta foi descrito acima.
Para seguir uma linha preta o robô utiliza o mesmo método descrito no TP2, para o TP3 a única alteração foi a inclusão de um sensor óptico ativo de presença que consiste em dois LEDs, um emissor e um receptor, com a mesma faixa de comprimento de onda no infra-vermelho, os dois são posicionados de frente um para o outro, assim se algo entrar entre eles será detectado. Esse sensor foi posicionado na parte da frente do robô, quando um bloco entra no meio dos LEDs, o robô sabe que há um bloco e inicia o processo de reconhecimento e realização da tarefa predeterminada.
Outra alteração foi a adição de direcionadores para posicionar e uma garra para prender os blocos, a garra foi montada com uma articulação em sua base e um fio de linha conectado a um motor para levantar e abaixar a garra.
Ao iniciar a procura pelos blocos o robô recolhe a garra para que ela não atrapalhe o movimento, o recolhimento consiste em girar o motor tempo o suficiente para levantar a garra duas vezes, dessa forma se o fio foi enrolado no sentido errado, garantimos que a garra foi realmente recolhida. Ao detectar um bloco a garra é liberada (motor gira no sentido oposto ao anterior) e o bloco fica preso no robô.
Prévia da Competição – Robô Marte
Essa etapa consiste em realizar algumas tarefas, utilizando as soluções encontradas anteriormente.
Método para realização das tarefas
O robô realiza todas as tarefas em um único programa, descrito a seguir:
Calibragem: a única calibragem necessária é determinar qual fonte de luz polarizada será a base. Feito isso o robô entra em modo de espera para ser posicionado e aguardar o sinal de start.
Start: os sensores utilizados para seguir a linha preta detectam quando a luz abaixo do robô é acionada e então o robô inicia as tarefas.
Localização: o robô localiza a direção da luz base predeterminada utilizando o sensor diferencial, não importando a orientação que o robô foi colocado no campo.
Coleta de blocos: a partir do momento que o robô conhece a posição da base inicia a busca por uma linha preta, como conhecemos o campo, ele apenas segue em frente até encontrar a linha, a partir daí ele segue a linha até encontrar um bloco, utilizando o sensor de presença implementado no TP3.
Ao encontrar o bloco o robô o prende com a garra e faz o reconhecimento de cor.
Retorno: o robô mantém o bloco preso e inicia novamente o processo de localização, ao encontrar a base ele se dirige até ela fazendo a leitura do sensor diferencial, quando essa leitura atinge um valor de threshold determinado para a base o robô sabe que pode soltar o bloco, então a garra é recolhida e o robô da meia, evitando arrastar o bloco e volta para buscar outro bloco.
Limite de tempo: independente do estado que o robô se encontra, ao atingir o limite de 60s de execução, todos os processos são finalizados e o robô para, isso foi implementado da seguinte forma, todos os processos após o sinal de start são iniciados em um outro processo que tem um limite de tempo para execução, como esse processo possui todos outros, ao finalizar o tempo o robô finaliza a execução de todas as tarefas.
Subindo e descendo rampa: A mecânica do robô foi refeita para que fosse possível subir a rampa do campo, o anterior era muito baixo, portanto isso não era possível. Durante a execução da tarefa o robô acaba por subir a rampa, ao encontrar um bloco em cima da rampa ele retorna a base, então também é capaz de descer a rampa. Segue o link de um vídeo foi feito para demostrar a subida, utilizando uma inclinação ainda maior que a necessária.
https://www.dropbox.com/s/9bmi76jvp7rz4hu/Video%2008-12-12%2013%2046%2051.mov
Fotos da nova montagem:
Competição – Robô Marte
A competição é o trabalho final onde devemos agregar todo o conhecimento adquirido durante o semestre e aplica-lo na ultima configuração do robô. O torneio consiste basicamente em coletar o maior numero de blocos não pretos em 60 segundos e lavá-los à base.
Desenvolvimento
No inicio o robô estará posicionado na base (sobre a lâmpada de start) orientado em uma posição arbitrária. Quando a lâmpada é acesa o robô se orienta segundo às fontes de luz polarizada e então sai da base à procura dos blocos não pretos (bloco preto no contexto da competição é pedra radioativa). A estratégia adotada pelo grupo para controle do robô é a seguinte:
- Depois de sair da base, robô segue linha sobre rampa e coleta bloco azul (água) e volta para a base.
- Robô sai da base novamente na linha da rampa em busca de outros blocos
- Caso não ache, entra em modo aleatório.