Construya un robot seguidor de línea: simulación a pista
Un robot seguidor de línea funcional y comprendido en su totalidad: desde la lectura óptica hasta el lazo PID de dirección validado previamente en simulación.
Un seguidor de línea es el mejor primer robot: sensing, decide y se mueve, y aun así cada una de sus partes es lo bastante simple para entenderla por completo. Esta ruta de construcción lo trata exactamente así: como una ruta. En lugar de una lista de piezas y una foto de cableado para copiar, desbloqueas un nodo cada vez, aprendiendo el mecanismo que hay detrás de cada paso antes de construirlo.
Empiezas entendiendo cómo una fila de sensores infrarrojos (IR) se convierte en un único error de dirección, y cómo un lazo proporcional-integral-derivativo (PID) convierte ese error en movimiento suave. Cinco sensores son el punto óptimo para una primera construcción: tres funcionan a baja velocidad pero dan una posición grosera, ocho dan una resolución más fina a alta velocidad pero complican el cableado y la calibración. La media ponderada que colapsa esas lecturas en un único número con signo —negativo cuando la línea está a la izquierda, positivo cuando está a la derecha— es la única señal que el lazo de dirección llega a ver, y por eso acertar ese número importa más que elegir una placa concreta.
Esa señal tiene que convertirse después en dos velocidades de rueda distintas. La tracción diferencial significa que el robot dirige haciendo girar sus ruedas a distinto ritmo, y el árbol tecnológico te lleva desde el controlador de motor en bruto, pasando por la modulación de anchura de pulso (PWM), hasta la cinemática que convierte una única corrección en comandos de izquierda y derecha. También verás dónde encaja la odometría: contar el movimiento de las ruedas te dice cuánto has recorrido, y por qué esa estimación se desvía sin referencia externa —un tema que reaparece en cada robot de laberinto.
Antes de gastar nada o arriesgarte a un cableado mal hecho, ajustas el comportamiento en el simulador del navegador, dibujando un recorrido, cambiando el número y la separación de sensores y arrastrando las ganancias proporcional, integral y derivativa mientras observas el error, el tiempo por vuelta y el tiempo sobre la pista. El simulador es un modelo didáctico, no hardware: supone una pista binaria plana y de alto contraste, calibración ideal, ningún cambio de luz ambiente y un lazo perfectamente periódico sin patinaje. Las ganancias encontradas aquí transfieren como un punto de partida cercano, pero aún tendrás que calibrar la matriz real y reajustar sobre tu propia cinta.
Solo entonces cableas el robot real: salidas de reflectancia a pines capaces de leer analógico, PWM y dirección al L298N (los pines lógicos no pueden entregar corriente de motor: el puente en H dual conmuta la corriente real), una alimentación de motor separada en su propio raíl, y una masa común que ate todos los módulos. El nodo final es el montaje y la iteración sobre un recorrido real pegado con cinta, donde transfieres las ganancias del simulador y ajustas por superficie, tensión de batería y temporización del lazo. La misma estructura reaparece más tarde en el solucionador de laberintos sobre línea —que añade una capa de decisión sobre este seguidor—, así que hacer sólida esta base te ahorra tiempo dos veces.
Sigue el árbol tecnológico de abajo de arriba abajo. Cada nodo se abre cuando sus prerrequisitos están cumplidos, y tu progreso se guarda en este dispositivo, para que puedas construir el robot a lo largo de un fin de semana sin perder el hilo.
Lista de materiales
| Componente | Cant. | Coste aprox. | Notas |
|---|---|---|---|
| Arduino Uno o Nano | 1 | $5–8 | Un Nano es mejor opción aquí: saca A6 y A7, así que cabe una matriz de 8 canales |
| Matriz IR de reflectancia | 1 | $4–10 | 5 canales para aprender, 8 si quieres velocidad después. Insiste en salida analógica |
| L298N o TB6612FNG | 1 | $2–4 | TB6612FNG si compras: conserva los ~1,5 V que el L298N quema como calor |
| Motorreductor TT | 2 | $4 | Los amarillos. Las versiones con encoder cuestan $2 más y te ahorran una reconstrucción |
| Chasis 2WD con ruedas y rueda libre | 1 | $6–10 | Suele venderse como kit junto con los motores |
| Pack de baterías | 1 | $3–8 | 6×AA NiMH, o 2×18650 con portapilas protegido. No una pila de 9 V |
| Cables jumper, cinta, interruptor | — | $5 | Cinta eléctrica mate de 19 mm para la pista |
Total: unos $30–45. La mejora más valiosa de esa lista son los motores con encoders —no para este proyecto, que no los necesita, sino porque un seguidor de línea casi siempre se convierte en un solucionador de laberintos sobre línea, y ese sí los necesita.
Para la pista: cinta negra mate sobre un suelo claro mate. La cinta brillante refleja como si fuera blanca en el ángulo equivocado, y un suelo brillante hace lo mismo, lo que produce un robot que funciona en una superficie y en otra no por razones que parecen de software.
Cómo se conecta todo
| Desde | Hacia | Por qué importa |
|---|---|---|
Matriz VCC, GND |
Arduino 5 V, GND | Los emisores son el consumo aquí: 100–200 mA en una matriz de 8 canales |
Matriz OUT1–8 |
A0–A7 | Analógico, un canal cada uno. Por eso un Nano le gana a un Uno |
Driver PWMA, PWMB |
D9, D3 | Pines que deban admitir PWM |
| Pines de dirección del driver | D8, D7, D5, D4 | Cualquier pin digital |
STBY del driver (solo TB6612FNG) |
D12, en HIGH | Si lo dejas al aire no pasa absolutamente nada, en silencio |
Batería + |
VM / +12V del driver |
Nunca el pin de 5 V del Arduino |
Batería − |
GND del driver, GND del Arduino, GND de la matriz | Una masa común, en estrella hasta un solo punto |
Dos fallos explican casi todos los problemas de la primera puesta en marcha, y ninguno produce un mensaje de error. Una masa común ausente significa que las señales de dirección no tienen referencia, así que nada se mueve mientras todo parece cableado correctamente. Corriente de motor pasando por el Arduino Hunde el raíl de 5 V, reinicia la placa y se manifiesta como un fallo de software.
Constrúyelo por hitos
No cablees el robot entero y luego lo depures. Cada etapa de abajo tiene una prueba, y una etapa que no supera su prueba se esconderá dentro de la siguiente.
| # | Hito | La prueba | Superado se ve así |
|---|---|---|---|
| 1 | Los motores giran | Manda cada rueda adelante y atrás a duty 200, con el robot en tacos | Ambas giran en ambos sentidos; anota el duty en el que cada una arranca |
| 2 | Zona muerta medida | Sube el duty desde 0 en pasos de 5 | Tienes dos números, y difieren: a menudo en 5–10 |
| 3 | Recta | Manda ambas ruedas hacia delante 2 m por el suelo | Menos de 10 cm de deriva; si no, ajusta un motor en software |
| 4 | Los sensores leen | Imprime todos los canales sobre la línea y sobre el suelo | Las dos lecturas de cada canal difieren en cientos de cuentas |
| 5 | Calibración | Barre transversalmente la línea durante 3 s y luego imprime los valores normalizados | 0 en el suelo, cerca de 1000 sobre la línea, en todos los canales |
| 6 | Posición | Mueve el robot a mano cruzando la línea e imprime la posición ponderada | Suave y monótona: sin saltos cuando la línea cruza el límite entre sensores |
| 7 | Solo P | Conduce solo con ganancia proporcional, sin I ni D | Sigue una curva suave, serpenteando un poco. El serpenteo aquí es lo esperado |
| 8 | Añade D | Sube la derivativa hasta que el serpenteo se amortigüe | Seguimiento suave en rectas y curvas suaves |
| 9 | Pista completa | Ejecuta un lazo cerrado con una esquina cerrada | Completa vueltas sin perder la línea |
| 10 | Recuperación al perder la línea | Levanta el robot de la línea a mitad de ejecución | Gira del lado que ya estaba girando, en lugar de seguir recto |
El hito 6 es el que la gente se salta y no debería. Si la señal de posición da saltos cuando la línea cruza entre dos sensores, ningún lazo de control se puede ajustar: la discontinuidad parece un error súbito enorme, y el robot dará un tirón exactamente ahí en cada vuelta. Un salto ahí significa que o la matriz no está calibrada por canal, o el umbral de un canal lo está descartando demasiado pronto.
Qué significa hacerlo bien
| Medida | Montaje de principiante | Bien ajustado |
|---|---|---|
| Velocidad en rectas | 0.15–0.25 m/s | 0.4–0.6 m/s |
| Amplitud de serpenteo en recta | ±15 mm | Menos de ±5 mm |
| Esquina más cerrada que sostiene | ~30 cm de radio | ~15 cm de radio |
| Frecuencia del lazo | 50 Hz | 200 Hz o mejor |
| Vueltas antes de perder la línea | Unas cuantas | Indefinidamente, hasta que la batería flojee |
La frecuencia del lazo merece atención porque limita en silencio todo lo demás. Un lazo de
control a 50 Hz ve la línea cada 20 ms, y a 0.5 m/s eso son 10 mm de recorrido entre decisiones.
Quitar todos los delay() del lazo y leer solo los sensores que usas suele llevar una primera
construcción de 50 Hz a varios cientos, y el seguimiento mejora sin tocar ninguna ganancia.
Resolución de problemas
| Síntoma | Causa probable | Solución |
|---|---|---|
| No se mueve nada | Sin masa común, o STBY a nivel bajo |
Une todas las masas; lleva STBY a HIGH |
| La placa se reinicia al empezar a conducir | Corriente de motor pasando por el Arduino | Alimentación de motor separada; solo se comparte la masa |
| Pasa de largo la línea | Matriz sin calibrar, o demasiado alta | Recalibra sobre esta superficie; pon la altura de cruce a 3–8 mm |
| Sigue, pero serpentea mucho | P demasiado alta, o D demasiado baja | Reduce P a la mitad y luego sube D |
| Oscila cada vez más rápido | P demasiado alta | Reduce hasta que se estabilice y ajusta desde ahí |
| Se desvía en las rectas | Desajuste entre motores | Ajusta en software y vuelve a comprobar a tu velocidad de trabajo |
| Solo se desvía a baja velocidad | Dos umbrales de estanqueidad distintos | Mide la zona muerta de cada motor y compensa por separado |
| Pierde la línea en las curvas cerradas | Va demasiado rápido, o la matriz está muy cerca de las ruedas | Reduce la velocidad y adelanta la matriz para ganar tiempo de anticipación |
| Se aleja cuando pierde la línea | Error puesto a 0 al perder la línea | Conserva el último error: cero significa “centrado” |
| Funciona y luego se degrada durante la ejecución | La batería flojea, así que las ganancias ya no valen | Lo esperado; cierra un lazo de velocidad o acepta una ejecución más corta |
| Falla cerca de una ventana | Infrarrojo ambiente | Resta la lectura con emisor apagado, o protege la matriz |
Hacia dónde llevarlo después
El seguidor de línea es deliberadamente una base, y tres direcciones se construyen directamente sobre él.
Añade detección de cruces y se convierte en un solucionador de laberintos sobre línea —el mismo lazo PID debajo, con una capa de decisión fina encima que clasifica las ramas y recuerda la ruta. Este es el mejor proyecto siguiente, porque reutiliza todo esto y añade una idea realmente nueva.
Añade encoders y podrás mantener una velocidad comandada en vez de un duty comandado, lo que elimina por completo el problema de “se degrada cuando se descarga la batería” y hace que el ajuste sea estable durante toda la ejecución.
Ve más rápido, que es más difícil de lo que parece y es lo que más enseña. La velocidad descubre todas las aproximaciones: la frecuencia del lazo pasa a ser el límite, la matriz necesita estar más adelante para ganar tiempo de anticipación, las esquinas hay que frenarlas antes de llegar en lugar de después, y los neumáticos empiezan a patinar. Esa última es la pared: mira patinaje de rueda y tracción para ver dónde está.
Hoja de ruta del proyecto
La ruta de construcción
Sigue el árbol tecnológico desde las piezas hasta un robot que funciona. Cada nodo se desbloquea cuando completas sus requisitos previos, y tu progreso se guarda en este dispositivo.
0 / 15 completados
Componentes
- ControladorArduino UnoLa tolerante placa de 8 bits con la que la mayoría descubre la robótica.
- SensorIR Reflectance Sensor ArrayEl sensor óptico esencial para seguidores de línea y resolución de laberintos.
- DriverL298N Motor DriverEl clásico módulo de puente H dual para mover motores de continua y paso a paso.
- ActuadorDC GearmotorEl motorreductor compacto que convierte alta velocidad en el par necesario para mover un robot.
- Chasis2WD Robot ChassisLa plataforma donde se atornillan dos motores, una rueda loca y toda tu electrónica.
- AlimentaciónBattery Power PackLa fuente de energía determinante: por qué la química y la resistencia interna importan más que los voltios.
Tutoriales de esta ruta
- Principiante · 20 min de lecturaConstruye un robot seguidor de línea: de sensores a dirección PIDDe sensores de reflectancia IR a un error ponderado a una dirección PID suave: cómo funciona realmente un seguidor de línea.
- Principiante · 20 minLeer una matriz de sensores IR de reflectancia para seguir líneasConvierte una fila de sensores IR en una posición de línea única y suave sobre la que dirigir.
- Principiante · 18 min de lecturaControla motores de CC con PWM y un puente HCablea y controla un motor de CC con escobillas con seguridad usando PWM, un puente H y límites de corriente realistas.
- Intermedio · 20 min de lecturaOdometria diferencial con codificadores de ruedaIntegra el movimiento de las ruedas izquierda y derecha en la pose de un robot movil y despues identifica y calibra la deriva.
- Principiante · 18 min de lecturaCómo sintonizar un controlador PID: guía práctica paso a pasoUn orden riguroso y práctico para sintonizar ganancias P, I y D sin tanteos a ciegas.
Practica antes de cablear
Ajústalo en el simulador en vivo
La ruta de construcción pasa por un laboratorio en el navegador. Consigue aquí el comportamiento correcto y luego traslada tus ajustes al robot real.
Preguntas frecuentes
¿Es indispensable comprar los componentes antes de comenzar?
No. Toda la fase de percepción sensorial, media ponderada y sintonización del lazo PID se ejecuta interactivamente en el simulador web. Puede comprender la física del sistema y ajustar las ganancias antes de invertir en componentes. Solo los pasos finales de montaje físico requieren el Arduino, la matriz IR y el controlador de motores.
¿Cuánto tiempo toma construir este robot seguidor de línea?
Disponiendo de los materiales, es un proyecto realizable en un fin de semana: una sesión para asimilar los principios de control y sintonizar el simulador interactivo, y unas pocas horas para cablear el circuito físico y realizar pruebas sobre la pista de cinta. Las ganancias obtenidas en simulación sirven de punto de partida directo, minimizando el ensayo y error.
¿Cuál es la dificultad principal al construir un seguidor de línea?
Casi siempre radica en la estabilidad del bucle de control PID y no en el conexionado eléctrico. Lograr que el robot trace curvas sin oscilaciones divergentes exige equilibrar las ganancias proporcional y derivativa para la velocidad y geometría concretas de su chasis. El simulador interactivo permite consolidar esa intuición antes de poner el móvil en pista.
¿Por qué el robot oscila continuamente de un lado a otro sobre la línea?
La oscilación constante obedece habitualmente a una ganancia proporcional (Kp) excesiva, amortiguación derivativa (Kd) insuficiente o una velocidad de avance demasiado alta para la frecuencia de muestreo de los sensores. Reduzca la velocidad base, disminuya Kp un 20 % e incremente ligeramente Kd. En el hardware, evite funciones bloqueantes tipo delay() que degradan la acción derivativa.
¿Cuántos sensores ópticos infrarrojos requiere el vehículo?
Cinco sensores constituyen la configuración óptima de inicio: suficiente resolución para calcular una media ponderada continua e identificar el sentido de curvatura, manteniendo un conexionado directo y fácil de depurar. Tres sensores bastan para trazados amplios a baja velocidad; los prototipos de competición suelen montar ocho sensores para velocidades elevadas.
¿Cómo se calibra la matriz de sensores infrarrojos?
Antes de iniciar la marcha, desplace manualmente la barra de sensores transversalmente sobre la cinta negra y el fondo blanco durante varios segundos, registrando los valores mínimos y máximos leídos en cada fototransistor. Esta calibración normaliza las lecturas entre 0 y 1000, compensando irregularidades de iluminación ambiental o tolerancias de fabricación entre componentes.