Trabalho Prático II

O Trabalho Prático II consiste em adicionar sensores óticos (sensor infravermelho e LDR).

Caracterização dos sensores infravermelho

A caracterização dos sensores é a feita através da realização de diversas medidas para um ponto de operação. Construimos um programa capaz de enviar para porta serial do computador as medidas dos sensores ligados na Handy Board. Utilizando esse programa, colocamos uma peça de Lego localizada a 2mm dos sensores e cobrimos todo o conjunto com uma caixa de papelão. Realizamos 100 medidas e contruimos a gaussiana abaixo: :cursos:introrobotica:2006-2:grupo3:gaussianaSensor3Coberto.jpg

:cursos:introrobotica:2006-2:grupo3:gaussianaSensor5Coberto.jpg

Analizando a curva acima, percebemos que nossos dados possuem um desvio padrão pequeno.

Em seguida, repetimos o procedimento acima com a luminosidade do ambiente (sem cobrir a montagem). A gaussiana, média e desvio padrão das medidadas são mostrados abaixo: :cursos:introrobotica:2006-2:grupo3:gaussianaSensor3ComLuz.jpg

:cursos:introrobotica:2006-2:grupo3:gaussianaSensor5ComLuz.jpg

Analisando os gráficos acima, percebemos que a luminosidade do ambiente causou um “offset” nos dados(sensor 3 em 1,3% e sensor 5 em 3,4%). Além disso o desvio padrão também aumentou no sensor 3 em 1,3% e diminuiu no sensor 5 em 19,4%.

Agora realizando diversas medidas para uma distância e variando esta distância entre 1mm e 15mm, constrimos o gráfico de gaussianas e a tabela com as médias e desvio padrão:

:cursos:introrobotica:2006-2:grupo3:gaussianaSensor3.jpg

:cursos:introrobotica:2006-2:grupo3:gaussianaSensor5.jpg

Distância(mm) 1 2 3 4 6 8 10 13 15
Media Sensor3 229.4600 194.2500 168.9400 200.8600 223.0990 233.6040 246.0792 249.0594 249.9500
Sigma Sensor3 0.5009 0.4352 0.3120 0.3487 1.2042 0.5306 0.5601 0.4652 0.4352
Media Sensor5 226.1616 185.9600 141.0200 178.4600 218.7647 234.9412 247.3235 250.4412 251.1324
Sigma Sensor5 0.4451 0.1969 0.1407 0.5009 0.4273 0.5431 0.6094 0.6320 0.7104

Também plotamos os gráficos de Luminosidade X Distância:

:cursos:introrobotica:2006-2:grupo3:regressaoSensor3.jpg

:cursos:introrobotica:2006-2:grupo3:regressaoSensor5.jpg

Percebe-se que os gráficos de Luminosidade X Distância se comportam como uma função exponencial p/ valores entre 3mm e 15mm. A função poderia ser linearizada em torno da distância 5mm, sendo válido para os valores entre 3mm e 6mm.

A validação dos modelos exponencias foi realizada colocando o bloco utilizado a 4 distâncias diferentes das usadas anteriormente. Calulamos o erro médio entre o valor medido pelo sensor e o valor calculado pela sua função para cada medida:

Distancia(mm) 5 7 9 11
Luminosidade Sen.3 (medida) 209 232 241 247
Luminosidade Sen.3 (calculada) 211.8591 231.8159 241.3306 245.8668
Erro Sensor 3 -2.8591 0.1841 -0.3306 1.1332
Luminosidade Sen.5 (medida) 199 228 244 249
Luminosidade Sen.5 (calculada) 201.3360 228.8753 241.4451 247.1824
Erro Sensor 5 -2.3360 -0.8753 2.5549 1.8176

Identificação de cores

Desejamos identificar blocos de diferentes cores com os sensores de infravermelho. Descobrimos a distância ideal entre o bloco e o sensor, plotando os gráficos de luminosidade média e desvio padrão X distância. :cursos:introrobotica:2006-2:grupo3:luminosidadeMedia.jpg

:cursos:introrobotica:2006-2:grupo3:desvioPadrao.jpg

Observando ambos os gráficos, percebemos que o valor mínimo da luminosidade média e desvio padrão ocorrem em 3mm para os dois sensores. Portanto, usaremos esta distância para identificar as cores dos blocos. Coletamos 1000 medidas para cada cor e construimos os histogramas abaixo: :cursos:introrobotica:2006-2:grupo3:histogramaAmarelaSensor3.jpg

:cursos:introrobotica:2006-2:grupo3:histogramaAmarelaSensor5.jpg

:cursos:introrobotica:2006-2:grupo3:histogramaAzulSensor3.jpg

:cursos:introrobotica:2006-2:grupo3:histogramaAzulSensor5.jpg

:cursos:introrobotica:2006-2:grupo3:histogramaVermelhaSensor3.jpg

:cursos:introrobotica:2006-2:grupo3:histogramaVermelhaSensor5.jpg

Criamos um programa capaz de identificar as cores amarela, azul e vermelha. Inicialmente calibra-se o sensor, informando a intensidade mínima e máxima de cada cor. Quando solicitado para identificar uma cor, o programa coleta várias medidas durante 5 segundos e utiliza a média desses valores para determinar a cor.

Sensores LDR

Inicialmente ligamos os sensores na Handy Board e a cada segundo mostravamos na tela o valor lido destes. Utilizamos o programa do livro normal.c e percebemos que poderiamos atuar no motor com um valor proporcional a leitura de um sensor. Realizamos diversos teste e verificamos a influência da luz do ambiente e sombras. Decidimos criar uma interface de calibração para estes sensores, dessa forma podemos compensar a variação da luminosidade do ambiente.

Andando na linha

Utilizamos os sensores LDR para fazer o robô seguir a linha preta. O programa criado atua nos motores proporcionalmente ao tempo, ou seja, quando um sensor toca a linha, um sinal de atuação cresce a medida que o tempo aumenta. Esse algoritmo é capaz de seguir uma linha preta. Quando ocorre uma bifurcação, giramos o robô 90 graus. Optamos por não utilizar a média de variás medidas (como foi feito para identificar as cores) devido não ocorrer problema caso uma leitura isolada do sensor esteja incorreta. O código do programa em *.ic está disponível no link abaixo.

:cursos:introrobotica:2006-2:grupo3:TP2.zip

cursos/introrobotica/2006-2/grupo3/tpii.txt · Última modificação: 2006/10/04 09:22 (edição externa)