Ir al contenido

P07 — Seguir el borde de una línea con el sensor de luz reflejada

Un EV3 sigue el borde de una cinta negra sobre una hoja blanca con el sensor de color en modo luz reflejada: el sensor enciende su LED y mide, de 0 a 100, cuánta luz devuelve la superficie. En el laboratorio mide 6 sobre la cinta y 58 sobre la hoja. El programa usa

umbral=negro+blanco2vr=Kp (umbral−lectura)\text{umbral} = \frac{\text{negro} + \text{blanco}}{2} \qquad v_r = K_p\,(\text{umbral} - \text{lectura})

donde vrv_r es la velocidad de giro que se suma a una rueda y se resta a la otra; vr>0v_r > 0 hace girar al robot hacia el lado blanco y vr<0v_r < 0 hacia el lado negro.

  1. Calcule el umbral. Con Kp=0.8K_p = 0.8, calcule vrv_r para lecturas de 20 y de 45. ¿Hacia dónde gira el robot en cada caso, y por qué eso lo devuelve al borde?
  2. ¿Por qué el sensor lee valores intermedios, como 20 o 45, si la cinta y la hoja solo tienen dos colores?
  3. Clasifique el sensor en este modo: ¿propioceptivo o exteroceptivo? ¿Activo o pasivo? ¿Y si se usa en modo luz ambiente (con el LED apagado)?
  4. El mismo robot se lleva a un salón más oscuro, donde mide 4 sobre la cinta y 46 sobre la hoja, pero el programa sigue con el umbral del laboratorio. ¿Cuál debería ser el umbral nuevo? Cuando el sensor está exactamente sobre el borde, ¿qué vrv_r calcula el programa con el umbral viejo? ¿Dónde termina siguiendo la línea el robot?
  5. Un compañero escribió por error vr=Kp (lectura−umbral)v_r = K_p\,(\text{lectura} - \text{umbral}). ¿Qué hace el robot cuando arranca un poco corrido del borde?
  6. Proponga una forma de que el programa no dependa de un umbral fijo medido a mano.
Mostrar solución
  1. Umbral =(6+58)/2=32= (6 + 58)/2 = 32.

    • Lectura 20: vr=0.8(32−20)=+9.6v_r = 0.8(32 - 20) = +9.6. El sensor está más sobre lo negro, y el robot gira hacia el blanco.
    • Lectura 45: vr=0.8(32−45)=−10.4v_r = 0.8(32 - 45) = -10.4. El sensor está más sobre lo blanco, y el robot gira hacia el negro.

    En los dos casos el robot gira hacia el borde, donde la lectura vale 32 y vr=0v_r = 0. Entre más lejos esté, más fuerte corrige: es un control proporcional.

  2. El sensor no mide un punto, sino una mancha de unos milímetros. Sobre el borde, parte de la mancha cae en la cinta y parte en la hoja, y la lectura es un promedio. Por eso el borde produce una transición continua de 6 a 58, que es justamente lo que permite un control proporcional.

  3. Con luz reflejada es exteroceptivo (mide el piso, no el estado interno del robot) y activo (emite luz con su LED y mide lo que vuelve). En luz ambiente sigue siendo exteroceptivo, pero pasivo: solo recibe la luz que ya hay en el salón.

  4. Umbral nuevo =(4+46)/2=25= (4 + 46)/2 = 25. Sobre el borde la lectura es 25, y con el umbral viejo vr=0.8(32−25)=+5.6v_r = 0.8(32 - 25) = +5.6: el programa corrige aunque el robot está bien. El robot se estabiliza donde la lectura vale 32, es decir, corrido hacia el lado blanco del borde. Si la transición es angosta o la línea es curva, puede perderla. Es un error sistemático causado por el cambio de iluminación.

  5. Con el signo cambiado, si el sensor está un poco sobre lo negro, vr<0v_r < 0 y el robot gira más hacia lo negro. El error crece en vez de corregirse: el robot se aleja del borde. Es una realimentación positiva, y el control es inestable.

  6. Calibrar al inicio: girar el robot sobre la línea unos segundos, guardar la lectura mínima y la máxima, y calcular el umbral con ellas. Otra opción es calcularlo continuamente con un promedio de las lecturas recientes, como hace el programa de la cámara, que usa el 70 % del promedio de la fila.