Trabalho Prático 2

O objetivo deste trabalho prático é familiarizar o aluno com sensores, sua aplicação e utilidade através da construção, avaliação e processamento dos sinais medidos. Após isso, esses sinais serão processados e utilizados com o propósito de auxiliar o robô nas suas tarefas.

Objetivos

O robô deve ser capaz de:

  1. Localização. Utilizando o sensor diferencial, o robô deverá demonstrar que sabe localizar-se e mover-se em direção à fonte de luz especificada no menu (selecionar polarização desejada) a partir de qualquer ponto do campo;
  2. Seguir linha. O robô deverá demonstrar que consegue seguir linhas marcadas no campo de competição. Para isso deverá utilizar sensor(es) óptico(s);
  3. Utilizando o sensor de identificação de blocos, o robô deverá locomover-se seguindo uma das linhas pretas da mesa de competição no laboratório sobre a qual estarão blocos de isopor coloridos. O robô tomará ações com base na cor do bloco identificado. A ação correspondente ao bloco será selecionada no menu. Bloco Azul → vire à direita 90 graus; Bloco Amarelo → vire à esquerda 90 graus; Bloco Vermelho → Pare; Bloco Verde → Siga em frente por X segundos (O valor de X deverá poder ser ajustado no menu).

Desenvolvimento do Robo

Construção de Sensores Ópticos Ativos

Nesta etapa, optamos por construir sensores ópticos ativos a partir de pares led/LDR(Light Dependent Resistor). Os sensores responsáveis pela localização foram constituídos de LDR+Polarizador de forma que os polarizadores estejam defasados de 90º, permitindo que um sensor seja sempre mais sensível a determinada lâmpada polarizada(presente nas extremidades do campo de competição) do que o outro.

Os sensor responsável pela identificação das cores consiste de um LDR unido à quatro LEDs: vermelho, amarelo, azul e verde. Isso permite uma maior exatidão na determinação das cores dos blocos, já que pressupõe-se que o bloco verde, por exemplo, reflita mais a luz verde do que a luz das outras cores.

Já para a detecção das linhas marcadas no campo de competição foram utilizadas duas montagens. A primeira contém dois LDRs e dois LEDs brancos. A segunda utiliza um sensor pronto, constituído de um emissor infravermelho e um receptor responsável pela captação do sinal.

Caracterização do sensor

Nesta etapa, colocamos o bloco de cor verde a uma distância de cerca de 3mm do sensor e, mantendo as condições de iluminação constantes, adquirimos dados do sensor por cerca de 10 segundos. Obtivemos o seguinte gráfico:

Removendo a caixa de papelão que mantinha as condições de iluminação constantes, efetuamos um novo teste e obtivemos o seguinte gráfico:

A influência da variação da luz ambiente altera a qualidade das medições e para isso utilizamos tubos de termo retráteis fixados à frente dos LDRs na tentativa de “isolar” o sensor destas perturbações não desejadas.

Repetindo os testes com os motores acionados, obtivemos os seguintes resultados:

Observamos que o movimento dos motores alterou as medidas fornecidas pelo sensor, o que comprova o efeito da perturbação introduzida pelo motor.

Influência da distância e cor do objeto

Colocamos o bloco colorido a 3 distâncias diferentes: 1cm, 1.5cm e 2cm. O erro médio entre a medida fornecida pelo sensor e o valor médio calculado anteriormente para a distância 3mm são visualizados nos gráficos seguintes:

A partir dos vários testes realizados pudemos definir uma distância “ótima” para a determinação das cores dos blocos. Para todos os blocos essa distância foi d = 3mm. A tabela abaixo resume o comportamento do sensor nesse caso:

Sensores diferenciais

Utilizando um LDR, conectamos este sensor a uma das portas analógicas da Handy Board e observamos a variação da leitura do sensor relacionada à qualidade da luz externa.

Para o sensor que fará a localização do robô no campo, construímos um sensor diferencial com 2 LDRs. Cada LDR foi coberto por um tubo de termo retrátil contendo um polarizador na extremidade. A orientação destes polarizadores foi ajustada de forma a obter a melhor medição para cada uma das fontes de luz polarizada presentes no campo de competição

Localização

Para executar a tarefa de localização em relação às luzes polarizadas, utilizamos o seguinte princípio: o robô gira 360º e registra o maior valor lido (ou menor dependendo da polaridade da luz de destino). Após um giro completo, o robô volta até o ponto da leitura de interesse e realiza um movimento de translação na direção da luz polarizada. Durante o movimento de translação, o valor lido pelo sensor é analisado. Caso sua intensidade sofra uma grande variação, o robô interrompe o movimento de translação e inicia novamente o processo, ou seja, gira 360º registrando o maior valor lido.

Detecção das linhas marcadas

Para executar a tarefa de seguir reta utilizamos três sensores. Dois na parte traseira do robô são responsáveis por identificar o erro no trajeto do robô e o sentido em que ocorreu esse erro. O sensor dianteiro é responsável por realocar o robô na linha caso os outros sensores detectem o erro na trajetória. Além disso, o sensor dianteiro é responsável pela orientação do robô em trajetos curvilíneos.

Identificação de cores

A execução dessa tarefa foi feita da seguinte maneira. Foi criado um algoritmo de calibração do sensor. Insere-se o bloco da cor de interesse na frente do sensor e executa-se o algoritmo. Então são feitas várias medidas e extraída a média dos valores (os valores iniciais são descartados porque são sobrecarregados de ruído). Esse valor é registrado como uma identificação para aquela cor. Para identificar as cores, o sensor faz várias medidas e analisa o erro médio em relação aos valores calibrados. A cor visualizada é, portanto, aquela cujo erro médio possui a menor amplitude.

Conclusões

Este trabalho nos permitiu uma maior familiarização com os sensores, suas características e detalhes de instalação. Um dos maiores problemas foi a escolha dos sensores, sua construção no robô e respectiva calibração, que era influenciada por detalhes do ambiente, como luminosidade e distância dos objetos. Apesar disso, foi interessante analisar como o processo de identificar cores/linha preta alterava a saída dos sensores, assim como a variabilidade das medições fornecidas, o que nos permitiu concluir que não é possível confiar em somente uma medição do sensor. Várias medidas devem ser levadas em conta e manipuladas de forma que o robô tome as decisões de forma correta.

Código fonte

Main.c – Função principal que abre o menu.

Sensor.c – Engloba todas as funções que controlam as leituras dos sensores.

Led.c – Engloba funções que controlam os leds.

Calibra.c – Engloba funções e menus de calibração.

cursos/introrobotica/2008-2/grupo2/tp2.txt · Última modificação: 2008/11/12 15:19 por introrobg02