Universidade Federal de Minas Gerais
Departamento de Ciência da Computação
Introdução à Robótica

Professor: Mário Fernando Montenegro Campos (mario@dcc.ufmg.br)
Monitor: Matheus Caldas Santos (matheuscs@gmail.com)

Trabalho Prático 2

Percepção: Sensores.

Data da apresentação/entrega: 26/09/2011
Data da apresentação/entrega: 03/10/2011

Objetivos:

Familiarizar o aluno com sensores, pela construção, avaliação e processamento dos sinais medidos. Esses sinais, devidamente processados serão utilizados em algumas tarefas a serem realizadas pelo robô.

Material para consulta:

  • Robotics Explorations - A Hands-on Introduction to Engineering - Fred Martin (RE)
  • The Handy Board Technical Reference, Fred Martin. (HTR)
  • Mobile Robots - Inspiration to Implementation, Jones & Flynn. (MB)
  • Diversos links na página do curso.

Instruções:

  1. O trabalho desenvolvido deve ser mostrado em funcionamento na data marcada para a apresentação e todo grupo deve estar presente e ser capaz de responder perguntas.
  2. Todos os programas desenvolvidos no trabalho devem ser interativos, ou seja, deve ser possível monitorar o seu comportamento por algum tipo de informação visual ou sonora e além disso deve ser possível interromper a sua execução de maneira simples e rápida com o acionamento do botão “stop”.
  3. Além dos itens de qualidade de montagem mecânica e elétrica, a avaliação do trabalho será feita com base no funcionamento correto dos programas e, portanto, não é necessário entregar impresso o código fonte do programa. No entanto, o código deve estar disponível na página do grupo.
  4. O relatório deve ser entregue para o monitor por email e postado na página do grupo até a data da apresentação. O relatório deve conter as principais decisões tomadas e desafios encontrados, assim como uma pequena explicação do funcionamento do robô. Fotos e vídeos devem ser utilizados para ilustrar os principais detalhes.

Melhorias no Robô

  1. Como foi sugerido no último trabalho, implemente de controle PD (proporcional e derivativo) dos motores usando a leitura do shaft encoder. Afim de melhorar o controle dos motores é possível substituir a biblioteca padrão do IC que controla os motores por uma biblioteca cutomizada por Julian Skidmore para obter maior resolução na gradação de potência do motor. Com a biblioteca padrão é possível variar a potência do motor em apenas 8 estágios, enquanto na biblioteca poroposta é possível varia a potência do motor em 100 estágios. Isso deve melhorar consideravelmente a sensibilidade do controle PD. A biblioteca está disponível em http://handyboard.com/oldhb/software/contrib.html na seção “Smooth PWM Routines”. Mais informações sobre o controle PD pode ser encontrado no seguinte PDF (COLOCAR PDF DO LIVRO).
  2. A implementação do controle PD com a nova biblioteca não será avaliada com o resultado do trabalho prático 2 mas poderá influir profundamente no desempenho do robô na competição, pois essas melhorias podem impactar muito na odometria do robô.

Tarefa

  1. Para as tarefas a seguir é necessário utilizar os recursos de Multithread da Handyboard. Uma sugestão é usar uma thread para a leitura dos sensores opticos, uma thread para o controle dos motores e uma thread para ler o encoder.
  1. Construção de sensores ópticos ativos:
    1. (Seção 3.4 RE) Sensores ópticos ativos podem ser construídos a partir de pares led/foto-diodo; led/foto-transistor ou de um led/LDR (LDR- Light Dependent Resistor). Nos dois primeiros casos, os componentes do par devem ter o mesmo comprimento de onda, tipicamente na região do infra-vermelho. O LDR, no entanto, tem melhor resposta no espectro visível, com o máximo em torno de 450nm. Um exemplo interessante de sensor para estimação de cor pode ser visto em http://www.philohome.com/sensors/colorsensor.htm (observe, no entanto, que a interface do sensor descrito nessa página é para o RCX da Lego, e não para a HandyBoard). O(s) led(s) desse sensor devem ser conectados à porta SPI da HandyBoard e acionados com o código descrito na Seção 3.6.2.
  1. Caracterização do sensor:
    1. Monte um sensor óptico ativo no seu robô (i.e. uma par led/foto-diodo ou led/foto-transistor);
    2. Coloque um bloco de isopor pintado (fornecido pelo monitor) a uma distância de cerca de 3mm do sensor;
    3. Mantenha as condições de iluminação constantes (i.e. sem interferências externas), cobrindo a montagem (robô + objeto) com uma caixa de papelão grosso;
    4. Adquira dados do sensor por cerca de 10 segundos;
    5. Plote o gráfico dos dados adquiridos, no qual devem constar o valor médio e o desvio padrão das medidas.
    6. Repita os itens (a) a (e) removendo a caixa. Examine o novo gráfico. Determine a influência da (variação) da iluminação ambiente nos dados e sugira maneiras para evitar tais influências.
    7. Repita os itens anteriores, mas agora com ambos os motores acionados. Descreva e explique o resultado (i.e. os motores influenciaram as medidas? Caso positivo, de que maneira?).
  1. Influência da distância e cor do objeto:
    1. Coloque o mesmo objeto utilizado a 3 distâncias diferentes do sensor das usadas anteriormente e determine o erro médio entre o valor medido pelo sensor e o valor calculado pela sua função.
    2. Utilizando blocos de isopor coloridos do laboratório, determine qual a melhor distância para se identificar blocos de diferentes cores.
  1. Sensores diferenciais:
    1. (Seção 3.4.1 RE) Utilize um foto-resistor (LDR). Teste esse sensor, conectando-o a uma das portas analógicas da Handy Board (leia atentamente o texto na página 72 : “Not All Ports Are Created Equal”) e escreva um programa para imprimir continuamente o valor medido (veja exemplo na página 110). Observe como as leituras variam dependendo da qualidade da isolação da luz externa (a luz incidente na parte traseira dos LDRs interfere nas medições).
    2. (Seção 3.4.2 RE) Construa um sensor diferencial com 2 LDRs. Cada LDR será coberto por um filtro polarizador (Seção 3.4.3 RE). A orientação de cada filtro deverá ser ajustada de forma a produzir a melhor resposta para cada uma das fontes de luz polarizada do campo de competição do laboratório. A resposta desse sensor deverá ser ótima para ambas as fontes de luz polarizada.
  1. Tarefas a serem demonstradas no dia da apresentação:
    1. Localização. Utilizando o sensor diferencial, o robô deverá demonstrar que sabe localizar 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). (Seção 6.5 RE tem diversas dicas de como fazer isto).
    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. Por exemplo: Bloco Azul → contorne o bloco pela direita (sem bater); Bloco Amarelo → contorne o bloco pela esquerda (sem bater); Bloco Vermelho → Pare; Bloco Verde → Siga em frente por X segundos empurrando o bloco (O valor de X deverá poder ser ajustado no menu).
    4. O Menu deverá conter pelo menos a seleção dos programas do robô e a configuração deste mesmo programa(qual a polarização e o tempo empurrando o bloco verde).
cursos/introrobotica/2011-2/tp2.txt · Última modificação: 2011/09/21 19:20 por matheus