Robô Móvel II

  • Objetivo

O primeiro objetivo do trabalho prático 3 é modificar o robô móvel I adicionando sensores ao robô. Um sensor LDR apontado para o chão para detecção do caminho, linha, a ser percorrida, e um outro sensor LDR junto a 3 leds para detecção da cor de cubos de lado igual a 5cm.


  • Decisões de Implementação

Decidimos por colocar o sensor de leitura da linha o mais protegido da luz ambiente quanto foi possível para evitar que ela atrapalhasse a leitura do robô. A mesma premissa foi usada para o sensor de detecção de cor. Foi construído todo um aparato para que a luz ambiente interferisse o mínimo possível na leitura.

Optamos por posicionar o sensor para leitura da linha centralizado na parte frontal do robô Spark. Com isso, a programação foi implementada da seguinte maneira: um dos motores possuía uma potência ligeiramente maior do que o outro. Com isso, Spark se movimentava um pouco mais para o lado contrário a este motor. Assim que sua parte frontal (onde o sensor estava) saísse da linha, este ficava parado por um curto período de tempo, suficiente para que o motor que estava mais lento girasse e deixasse o robô “reto”, ou seja, paralelo com a linha. Desta forma, o movimento se repetia, mas com as potências dos motores invertidas, fazendo com que o robô fosse para o outro lado da linha. Com esta implementação, garantiu-se que o robô percorresse o trajeto enquanto este fosse existente.

Utilizamos ainda esteiras para auxiliar no movimento. Fizemos esta escolha por que, apesar de as rodas proporcionarem um atrito que talvez implicasse em uma melhor performance do robô, com seu uso os sensores, especialmente o de identificação de cor, ficava em uma posição que dificultava a leitura. Embora o sensor de leitura de linha também ficasse alto, sua manipulação era possível devido à estrutura do robô.

  1. Identificação de Cor

Para detecção da cor do bloco usamos uma função de calibração da cor que decora a média coletada das cores com a incidência dos 3 leds (uma matriz 5×3), a partir desses valores ao colocar o bloco na frente do Robô Spark ele verifica se o valor coletado está dentro do valor de uma gaussiana centrada no valor da matriz e de variância igual a 4.

Abaixo temos 2 gráficos, onde cada valor do eixo x equivale a um bloco de cor distinta e o eixo y o valor coletado pelo sensor.O primeiro gráfico é para o teste com os motores desligados e o segundo gráfico com os motores ligados.

 Leituras do sensor de cor para cada led feitas com os motores desligados  Leituras do sensor de cor para cada led feitas com os motores ligados

A seguinte tabela relaciona o numero no gráfico à cor do bloco:

Número Cor do Bloco
1 preto
2 Amarelo
3 Azul
4 Verde
5 Vermelho

Não vemos grande diferença entre os dois gráficos, logo a detecção da cor independe do funcionamento dos motores.

A detecção da cor está inteiramente ligada à distancia do bloco, vemos pelo gráfico a seguir que a medida que afastamos o bloco a leitura torna mais fraca, isto é, diminui a acurácia de reconhecer a cor. No gráfico temos o eixo x a distância, em cm e o eixo y representa o valor coletado pelo sensor.

  1. Line Following

A função de seguir a linha funciona com o robô detectando o que é cor branca(piso) e cor preta(linha a ser seguida), a partir disso ele tenta ficar com o sensor sempre sobre a linha preta, conforme explicado previamente, e toda vez que detecta cor branca ele inverte a direção do movimento para permanecer dentro da linha.


  • Dificuldades Encontradas

Uma grande dificuldade deste trabalho foi acertar os valores das potências dos motores para que o robô seguisse a linha, sem um feedback da velocidade de cada motor foram necessários vários testes para que valores razoáveis fossem encontrados.

Uma segunda dificuldade encontrada foi a implementação de rodas que deixassem o robô em uma altura adequada para utilizar os sensores em sua maior eficiência. Como foi feita uma estrutura que impedia a entrada de luz externa nos sensores, era mais difícil realizar sua manipulação do que utilizar esteiras para substituir as rodas.

Por fim, encontramos certa dificuldade no percurso. Esta estava relacionada ao ângulo, que ia sempre aumentando, que o robô fazia com a linha quando sua parte frontal encontrava uma parte branca. Este problema foi solucionado fazendo com que o robô realizasse uma leve parada e girasse, de tal forma a ficar paralelo com a linha, todas as vezes que seu sensor detectasse uma parte branca, ou seja, quando saísse levemente do trajeto.


  • Resultados

Quanto à parte de identificação de cor, o robô realizou a tarefa sem maiores empecilhos. Embora sua calibração demorasse um pouco, era realizada de forma automática e de simples acesso para o usuário, além de ser totalmente eficiente.

Já na parte de identificação da linha, alguns problemas ocorreram, como ao realizar curvas bruscas (curvas no formato de T por exemplo). Apesar disso, o robô conseguia andar sobre a linha sem maiores erros.

cursos/introrobotica/2015-1/grupo04/tp3.txt · Última modificação: 2015/05/18 22:44 por introrobotica-grupo4