Taller de Robótica en Colombia

Robot seguidor de línea

Info

  • Principiantes
  • Edades: 11+

 

Temas STEAM

  • Tecnología
  • Ingeniería

Introducción

Utiliza los sensores de línea del Innobot para construir, calibrar y programar un robot seguidor de línea.

¿Qué es un robot seguidor de línea?

Los robots seguidores de línea son robots cumplen una única misión: seguir una línea marcada en el suelo normalmente de color negro sobre un fondo blanco.

1. Calibración de Sensores
A continuación encontrarás los pasos para calibrar los sensores de línea y poder seguir la línea correctamente.

Paso 1

Para calibrar los sensores lo primero que debemos hacer es construir un programa que nos permita visualizar qué datos está midiendo cada sensor.

Sensor J1 (Sensor Derecho)

seguidor_linea_04

Sensor J2 (Sensor Izquierdo)

Paso 2

Se debe subir el programa a la tarjeta del Innobot en ambos casos, primero se prueba un sensor y luego otro.

Paso 3

Para visualizar la medición de un sensor se debe dar click derecho en el botón de la Consola – Serial. Adicionalmente, el robot debe estar conectado vía cable USB al computador todo el tiempo para realizar esta prueba.

Sensor J1 (Sensor Derecho)

Posiciona el robot de tal forma que el sensor J1 esté sobre la línea negra.

Sensor J2 (Sensor Izquierdo)

Posiciona el robot de tal forma que el sensor J2 esté sobre la línea negra.

Paso 4

Una vez se acceda a la Consola – Serial, el valor que detecta el sensor debe ser un valor considerablemente menor al que detecta en la superficie blanca,  usualmente es un valor variable y debe estar entre 0 (mínima reflexión)  y 1023 (máxima reflexión).
seguidor_linea_09

En este caso el valor de reflexión más alto del sensor de línea medido se acerca a 500 y por lo tanto el valor de referencia que se utilizará para dicho sensor será un poco mayor. En este caso utilizaremos como valor de referencia 600.

Esta prueba se debe hacer para cada sensor (J1 y J2), los valores de referencia pueden ser diferentes.

Paso 5

Como el valor de referencia elegido para el sensor J1 y J2 es 600, entonces ahora se procederá a crear la lógica necesaria para seguir la línea, según los casos expuestos en la primera parte del tutorial.

Caso 1

En el caso que ambos sensores detectan la superficie blanca, esto querrá decir que ambos sensores detectan un valor que está por encima del valor de referencia que se eligió es decir:

Sensor J1 > 600 Y Sensor J2 > 600
Si este caso se cumple, entonces el robot debe ir hacia adelante.

Caso 3

En este caso el sensor J1 detecta un valor por encima del valor de referencia, pero el sensor J2 detecta un valor por debajo del valor de referencia es decir detecta la línea negra:

Sensor J1 > 600 Y Sensor J2 < 600
Si este caso se cumple, entonces el robot debe girar hacia la izquierda, para no salirse del camino.

Caso 2

En este caso el sensor J2 detecta un valor por encima del valor de referencia, pero el sensor J1 detecta un valor por debajo del valor de referencia es decir detecta la línea negra:

Sensor J2 > 600 Y Sensor J1 < 600
Si este caso se cumple, entonces el robot debe girar hacia la derecha, para no salirse del camino.

2. Robot seguidor de línea
A continuación se construirá el código para que el Innobot pueda seguir una línea negra continua sin intersecciones.

La línea que debe seguir el robot debe diferenciarse de la superficie sobre la que fue trazada, por ejemplo: Fondo Blanco- Línea Negra, Fondo Negro – Línea Blanca.

Para este reto puedes adquirir en la tienda las pistas de Seguidor de Línea oficiales de RoboRAVE International.
Pista infantil
Veamos las casos que debe resolver el Innobot para poder seguir la línea correctamente:

Caso 1: Cuando el sensor J1 (Derecha) y el sensor J2 (Izquierda) detectan Blanco.

Cómo ningun sensor está detectando negro y además la línea negra pasa por la mitad entre ambos sensores de línea, entonces se deben encender ambos motores hacia adelante. Es decir ir hacia adelante.

Caso 2: Cuando el sensor J2 (Izquierda) detecta rango de radiación negro y el sensor J2 (Derecha) detecta Blanco

Como la idea es no abandonar el camino delimitado y seguir la línea, entonces se debe encender hacia adelante el motor M1 y el motor M2 hacia atrás. Es decir girar a la izquierda.

Caso 3: Cuando el sensor J1 (Derecha) detecta rango de radiación negro y el sensor J1 (Izquierda) detecta Blanco

Nuevamente, como la idea es no abandonar el camino delimitado y seguir la línea, entonces se debe encender hacia adelante el motor M2 y el motor M1 hacia atrás. Es decir girar a la derecha.

Paso 1

Traslada un bloque de si_hacer de la categoría Control/Lógica hasta el Ciclo Infinito.

seguidor_linea_10

Paso 2

En el bloque de si_hacer que se traslado al Ciclo Infinito, agregar dos bloques si no si y un bloque si no.

seguidor_linea_11

Paso 3

Ahora se trasladaran tres bloques Y desde la categoría Control/Lógica. 

Paso 4

Luego se agregan seis bloques igual a desde la categoría Control/Lógica, hasta cada uno de los bloques Y, que se han trasladado en el paso anterior.

Paso 5

Ahora cambiaremos los dos primeros bloques de igual a por mayor que.

seguidor_linea_14

Paso 6

Ahora trasladamos dos bloques Leer Sensor desde la categoría Sensores, hasta el primer bloque si_hacer en el bloque principal Ciclo Infinito, un bloque para J1 y otro para J2.

seguidor_linea_15

Paso 6

Ahora trasladamos dos bloques Número desde la categoría de Variables y escribimos el valor de referencia que se encontró para cada sensor en la etapa de calibración de sensores.

seguidor_linea_16

Paso 7

Para el caso en que ambos sensores detectan un valor por encima del de referencia (es decir que ambos sensores leen blanco) entonces el Innobot debe ir hacia adelante.

seguidor_linea_17

Paso 8

Ahora cambiaremos los dos bloques del próximo condicional si_hacer por menor que y mayor que.

seguidor_linea_18

 

Paso 9

Luego agregaremos los dos bloques de Leer Sensor y Número con el respectivo valor de referencia de los sensores.

seguidor_linea_19

Paso 10

Como en este caso el Innobot detecta la línea negra en el sensor derecho J1, debe girar a la derecha para no salirse del camino y seguir la línea.

seguidor_linea_20

Paso 11

Ahora que ya hemos construido los dos primeros casos, sabemos que el tercer caso es el contrario del segundo por lo tanto el robot debe girar a la izquierda.

seguidor_linea_21

Paso 12

Finalmente, si no se cumplen ninguno de los casos anteriores determinaremos que el Innobot debe detenerse si encuentra un rango inferior en ambos sensores al tiempo, es decir, si ambos sensores están leyendo negro.

seguidor_linea_22

Paso 13

Para mayor precisión en los movimientos, te recomendamos disminuir la velocidad de ambos motores como se muestra a continuación:

seguidor_linea_23

1. Calibración de Sensores
A continuación encontrarás los pasos para calibrar los sensores de línea y poder seguir la línea correctamente.

Paso 1

Para calibrar los sensores lo primero que debemos hacer es construir un programa que nos permita visualizar qué datos está midiendo cada sensor.

void setup() {

}


void loop(){
  
  Serial.print("J2 = ");
  Serial.print(sensorRead(J2));

  Serial.print("        ");
  
  Serial.print("J1 = ");  
  Serial.println(sensorRead(J1));
  
  delay(50);
}

Paso 2

Se debe cargar el programa a la tarjeta del Innobot.

seguidor_linea_24

Paso 3

Para visualizar la medición de un sensor se debe dar click derecho en el botón de la Monitor Serial.

 seguidor_linea_25

Adicionalmente, el robot debe estar conectado vía cable USB al computador todo el tiempo para realizar esta prueba.

Sensor J1 (Sensor Derecho)

Posiciona el robot de tal forma que el sensor J1 esté sobre la línea negra.

Sensor J2 (Sensor Izquierdo)

Posiciona el robot de tal forma que el sensor J2 esté sobre la línea negra.

Paso 4

Una vez se acceda a la Consola – Serial, el valor que detecta el sensor debe ser un valor considerablemente menor al que detecta en la superficie blanca,  usualmente es un valor variable y debe estar entre 0 (mínima reflexión)  y 1023 (máxima reflexión).

En este caso el valor de reflexión más alto del sensor de línea medido se acerca a 600 y por lo tanto el valor de referencia que se utilizará para dicho sensor será un poco mayor, en este caso utilizaremos 700.

Esta prueba se debe hacer para cada sensor (J1 y J2), los valores de referencia pueden ser diferentes.

Paso 5

Como el valor de referencia elegido para el sensor J1 y J2 es 700, entonces ahora se procederá a crear la lógica necesaria para seguir la línea, según los casos expuestos en la primera parte del tutorial.

Caso 1

En el caso que ambos sensores detectan la superficie blanca, esto querrá decir que ambos sensores detectan un valor que está por encima del valor de referencia que se eligió es decir:

Sensor J1 > 700 Y Sensor J2 > 700
Si este caso se cumple, entonces el robot debe ir hacia adelante.

Caso 3

En este caso el sensor J1 detecta un valor por encima del valor de referencia, pero el sensor J2 detecta un valor por debajo del valor de referencia es decir detecta la línea negra:

Sensor J1 > 700 Y Sensor J2 < 700
Si este caso se cumple, entonces el robot debe girar hacia la izquierda, para no salirse del camino.

Caso 2

En este caso el sensor J2 detecta un valor por encima del valor de referencia, pero el sensor J1 detecta un valor por debajo del valor de referencia es decir detecta la línea negra:

Sensor J2 > 700 Y Sensor J1 < 700
Si este caso se cumple, entonces el robot debe girar hacia la derecha, para no salirse del camino.

2. Robot Seguidor de Línea
A continuación se construirá el código para que el Innobot pueda seguir una línea negra continua sin intersecciones.

La línea que debe seguir el robot debe diferenciarse de la superficie sobre la que fue trazada, por ejemplo: Fondo Blanco- Línea Negra, Fondo Negro – Línea Blanca.

Para este reto puedes adquirir en la tienda las pistas de Seguidor de Línea oficiales de RoboRAVE International.
Pista infantil
Veamos las casos que debe resolver el Innobot para poder seguir la línea correctamente:

Caso 1: Cuando el sensor J1 (Derecha) y el sensor J2 (Izquierda) detectan Blanco.

Cómo ningun sensor está detectando negro y además la línea negra pasa por la mitad entre ambos sensores de línea, entonces se deben encender ambos motores hacia adelante. Es decir ir hacia adelante.

Caso 2: Cuando el sensor J2 (Izquierda) detecta rango de radiación negro y el sensor J2 (Derecha) detecta Blanco

Como la idea es no abandonar el camino delimitado y seguir la línea, entonces se debe encender hacia adelante el motor M1 y el motor M2 hacia atrás. Es decir girar a la izquierda.

Caso 3: Cuando el sensor J1 (Derecha) detecta rango de radiación negro y el sensor J1 (Izquierda) detecta Blanco

Nuevamente, como la idea es no abandonar el camino delimitado y seguir la línea, entonces se debe encender hacia adelante el motor M2 y el motor M1 hacia atrás. Es decir girar a la derecha.

Paso 1

Construye el siguiente código en CODE.

  • El primer if corresponde al caso en el que ambos sensores detectan un valor mayor al de referencia, es decir, ambos están leyendo BLANCO.
  • Los dos else if, corresponden a los casos donde un sensor está leyendo un valor menor al de referencia, es decir NEGRO y el otro está leyendo BLANCO.
  • El último condicional else, corresponde a una situación hipotética donde ambos sensores estén leyendo NEGRO. Este caso por ejemplo se puede dar si la pista tiene intersecciones.
void setup () {
  motorSpeed(M1,70);
  motorSpeed(M2,70);

}
void loop () {
  if (sensorRead(J1) > 600 && sensorRead(J2) > 600) {
     goForward(M1,M2);
  } else if (sensorRead(J1) < 600 && sensorRead(J2) > 600) {
      turnRight(M2 , M1);
  } else if (sensorRead(J1) > 600 && sensorRead(J2) < 600) {
      turnLeft(M2 , M1);
  } else {
      motorsOff(M1 , M2);
  }
}