Programação LEGO EV3: Exercícios de seguimento de linha
1. Clube de Programação e Eletrónica
26
Lego Ev3 – Exercícios introdutórios
PROJETO LEGO MINDSTORMS EV3
5. Exercícios seguidores de linha
Neste capítulo, exploraremos alguns exercícios seguidores de linha com robôs EV3.
5.1. Usando um sensor de cor, seguir a linha pela direita
O programa mais simples que se pode fazer é usando um sensor de cor – modo intensidade de luz refletida - junto ao
chão (como na figura ao lado) e colocar o robô de um dos lados da linha. Neste exercício, vamos colocá-lo do lado
direito.
Se movermos o robô para fora e para cima da linha, podemos medir a luz refletida no Port View do software do EV3
(canto inferior direito). Quando o robô se encontra fora da linha, a superfície deve ser branca e a luz refletida encontra-
se perto do valor 100. Esse valor baixa muito à medida que pomos o robô sobre a linha preta.
Como decidimos fazer o robô contornar a linha pela direita, quando o valor da intensidade luminosa refletida aumenta,
significa que o robô se está a afastar da linha e deve rodar para a esquerda; caso o valor da intensidade luminosa
refletida diminua, significa que o robô está a colocar-se sobre a linha preta e, por isso, deve rodar para a direita.
Está disponível em https://www.youtube.com/watch?v=lqU8BTAvkOg um vídeo com a
demonstração dos exercícios propostos neste capítulo.
2. Clube de Programação e Eletrónica
27
Lego Ev3 – Exercícios introdutórios
Um programa possível para concretizar a ideia proposta é:
Resultados: O movimento revela-se pouco suave; a velocidade do robô tem de ser baixa; a capacidade de realizar ângulos apertados é reduzida.
3. Clube de Programação e Eletrónica
28
Lego Ev3 – Exercícios introdutórios
5.2. Usando dois sensores de cor
O uso de dois sensores de cor – modo intensidade de luz refletida – instalados como se indica na figura ao lado, simplifica
a programação. Os sensores têm de estar instalados de forma a que a linha que o robô deve seguir se encontre no meio
dos dois.
Se a deteção de luz refletida do sensor da direita for superior à deteção da luz do sensor da esquerda, o robô deve rodar
para a esquerda; caso a deteção de luz refletida pelo sensor da esquerda seja superior ao valor detetado pelo sensor da
esquerda, o robô deve rodar para a direita.
Um programa possível para concretizar a ideia proposta é:
Resultados: O movimento é ainda pouco
suave; a velocidade do robô tem de ser
baixa; a capacidade de realizar ângulos
apertados é reduzida. Tem a vantagem,
relativamente ao programa anterior, de
não ter de definir qual o lado da linha que
vai ser contornado.
4. Clube de Programação e Eletrónica
29
Lego Ev3 – Exercícios introdutórios
5.3. Usando dois sensores de cor e suavizando o movimento
O movimento do robô com dois sensores como o descrito em 5.2., pode ser suavizado se for calculada a diferença entre os valores lidos pelos dois sensores. Caso essa
diferença seja muito grande, o robô deve rodar com um ângulo apertado. Caso a diferença seja pequena, o robô deve rodar com um valor de ângulo pequeno; finalmente,
caso a diferença entre as medidas da luz refletida seja nula, o robô deve seguir em frente. O sentido da rotação é determinado pelo sinal da operação de subtração
realizada.
Um programa possível para concretizar a ideia proposta é:
Resultados: O movimento suaviza bastante relativamente aos exercícios anteriores. Tem o inconveniente de , caso perca a linha, de seguir em frente.
5. Clube de Programação e Eletrónica
30
Lego Ev3 – Exercícios introdutórios
5.4. Usando dois sensores de cor, suavizando o movimento e procurando a linha caso “a perca”
No exercício 5.3., quando o robô “perdia a linha”, como a diferença entre as intensidades medidas pelos dois robôs era nula, o robô seguia em frente. Neste exercício, a
diferença entre os valores medidos pelos sensores é calculada. Caso esse valor seja superior, em módulo, a 10, o robô é sujeito a instruções iguais às do exercício anterior.
Caso esse valor seja inferior, significa que o valor lido pelos dois sensores é muito próximo. Nesse caso, os valores medidos são somados. Caso a soma seja superior a
180, significa que robô se encontra sobre a superfície branca (o valor lido pelos sensores é elevado) e deve rodar até encontrar de novo a linha; caso a soma seja inferior
a 180, significa que o robô se encontra sobre a linha preta (o valor lido pelos sensores é baixo) e por isso deve seguir em frente.
Um programa possível para concretizar a ideia proposta é:
Resultados: O movimento mantém-se suave. Caso o
robô “perca a linha”, gira sobre si próprio até que a
encontre de novo.
6. Clube de Programação e Eletrónica
31
Lego Ev3 – Exercícios introdutórios
5.5. Usando um sensor de cor, suavizando o movimento
Este exercício baseia-se na proposta do canal de Youtube Blue Angel: https://www.youtube.com/watch?v=ODAGVeeDagk
Esta proposta, que assume o robô com apenas um sensor de cor – modo intensidade de luz refletida – e que o contorno da linha será feito pelo lado direito da mesma, a
velocidade de cada um dos motores é controlada individualmente. Para tal, recorre-se à diferença entre o valor lido pelo sensor e o valor que seria lido caso este estivesse
sobre a parte branca da pista e à diferença entre o valor lido pelo sensor e o valor que seria lido caso este estivesse sobre a linha preta. Cada uma destas diferenças é
multiplicada por um fator de 0,3 e enviada para a velocidade com que os motores da direita e da esquerda, respetivamente, se devem movimentar. O fator de 0,3 pretende
reduzir a velocidade do motor (relativamente à obtida caso a diferença fosse colocada “em bruto” na velocidade de cada motor) e pode ser modificado.
O programa proposto é o seguinte:
Resultados: O movimento mantém-se suave, mas menos rigoroso no seguimento da linha que o obtido no exercício 5.4.