¿Por qué construir un robot de acompañamiento de líneas?

Construir un robot de seguimiento de línea es uno de los puntos de entrada más gratificantes en robótica y sistemas integrados. El proyecto te enseña la integración de sensores, el control de motores, los bucles de retroalimentación y la práctica depuración de componentes; todo mientras crea una máquina que navega por completo por sí misma. El hardware de código abierto hace que esto sea accesible a cualquiera con un hierro soldante y una disposición para experimentar.

Ya sea que sea estudiante que se prepare para una competencia robótica, un hobbyista que busque un proyecto de fin de semana, o un educador que busque una actividad STEM práctica, un seguidor de línea ofrece resultados inmediatos y visibles. Puede comenzar de forma sencilla y progresiva añadir complejidad: Control PID, velocidades más rápidas, lógica de lavado o telemetría inalámbrica.

Cómo funcionan los robots de seguimiento de línea

Un robot que sigue la línea lee el contraste entre una línea oscura y un fondo ligero (o viceversa) utilizando sensores ópticos desgastados. La mayoría de los diseños utilizan sensores de reflectancia infrarrojos (IR), que emiten luz IR y miden cuánto se refleja. Una superficie oscura absorbe IR, devolviendo una señal baja; una superficie de luz la refleja, devolviendo una señal alta.

El microcontrolador lee estos valores de sensores, aplica un algoritmo de decisión y ordena motores para dirigir el robot a lo largo de la ruta. El enfoque más simple utiliza dos sensores y un controlador de flequillo: gire a la izquierda cuando el sensor derecho ve la línea, gire a la derecha cuando el sensor izquierdo lo ve, y vaya recto cuando ambos vean la línea. Los sistemas más avanzados usan tres, cinco, o incluso ocho sensores dispuestos en un array para estimar la posición de la línea

Sensor Placement y óptica

Sensores de altura y espaciado. Montar los sensores 5 comprimidos;15 mm sobre el suelo, lo suficientemente cerca como para obtener una lectura limpia pero lo suficientemente alta como para evitar raspar en superficies irregulares. Espaciarlos para que cuando el robot se centra en la línea, el sensor izquierdo está justo fuera de la línea a la izquierda y el sensor derecho está justo fuera de la línea a la derecha.

Componentes de hardware de alta gama

El ecosistema de código abierto ofrece una amplia gama de partes compatibles y asequibles. A continuación se presenta una factura recomendada de materiales para un robusto bisensor-sor-sor-siguiente. Los precios varían por región y proveedor, pero el total es normalmente inferior a $50 USD.

  • Microcontrolador: Arduino Uno R3, Arduino Nano, o un clon (por ejemplo, Elegoo, Robotdyn). El Nano es más pequeño y más fácil de montar en un chasis compacto.
  • Sensores de línea: Dos módulos de sensores IR basados en TCRT5000 (a menudo vendidos como "modulos de sensores de rastreo"). Estos tienen potenciómetros ajustables para sensibilidad.
  • Motores: Dos motores de DC engranados (normalmente 100 lindash;300 RPM a 6V) con ruedas. Los micromotores de engranajes de metal N20 son populares para pequeños robots.
  • Motor driver: Módulo L298N para motores más grandes o L9110S o DRV8833 para los más pequeños. El L298N es voluminoso pero indulgente. El DRV8833 es compacto y eficiente.
  • Chasis: Un kit de chasis acrílico o plástico de dos capas (muchos están disponibles en AliExpress o Amazon). También puede cortar con láser o imprimir su propio 3D.
  • Fuente de alimentación: Un paquete de baterías 6V o 7.4V (por ejemplo, 4x AA NiMH o 2S LiPo). Incluye un interruptor de potencia y un regulador de tensión si sus componentes requieren 5V.
  • Ruedas y ruedas: Dos ruedas con motor (40 curvas; 65 mm de diámetro) y una rueda de bola o una pequeña rueda giratoria para el frente o la parte trasera.
  • Panteón, alambres de puente, y hardware de montaje: M3 nylon o desmontes de latón, tornillos, lazos de cremallera y cinta de espuma doble cara.

Elegir un conductor de motor

El conductor del motor puentea la lógica de baja corriente del microcontrolador (5V, 40 mA max per pin) y los motores de mayor corriente. Busque un controlador que pueda manejar la corriente de los motores (normalmente 0,5 unidades;2 A por canal). Los pines de la capacidad le permiten utilizar PWM para el control de velocidad. El L298N requiere un voltaje de desplegable más alto (alredo 2V), así que alimentarlo

Selección de un microcontrolador

Las tablas compatibles con Arduino dominan el espacio inicial debido a su gran comunidad, extensas bibliotecas y IDE simple. Para un seguidor de línea, necesita al menos cuatro pines de entrada digitales/análog (dos para sensores) y cuatro pines de salida (dos para dirección motor, dos para velocidad PWM). El Arduino Uno proporciona un amplio I/O, pero el código Nano o Pro Mini es más compacto.

Assembling the Robot

Trabajar metódicamente. Assemble el chasis primero, luego montar los motores, luego añadir la electrónica. Pruebe cada subsistema antes de conectar todo.

Asamblea mecánica

Adjuntar los motores al chasis utilizando los soportes proporcionados en su kit o con tornillos M3 y soportes. Asegúrese de que los ejes de motor son paralelos y las ruedas giran libremente. Adjuntar la rueda de la rueda de la rueda o la rueda de la bola en el extremo opuesto del chasis. El robot debe sentarse nivel con todas las ruedas que tocan el suelo. Si utiliza un chasis de dos niveles, montar los motores y la batería en el nivel inferior de control y el pan.

Arroje los motores a las terminales de salida del conductor motor. Acopla los cables del motor juntos o asegúrese con los lazos de cremallera para evitar que se atrapen en los obstáculos.

Asamblea electrónica

Coloca el microcontrolador en el chasis. Si utiliza un Arduino Uno, una placa de montaje con soportes funciona bien. Para un Nano, una pequeña panadería o un PCB personalizado puede mantenerlo de forma segura. Conecte los pines de la lógica del conductor motor a los pines digitales de Arduino. Un pinout típico:

  • Dirección del motor izquierdo: pin 7
  • Motor izquierdo PWM: pin 6 (o cualquier pin de PWM)
  • Dirección del motor derecha: pin 8
  • Motor derecho PWM: pin 5 (o cualquier pin de PWM)

Conecte los módulos de sensores IR. Cada módulo tiene VCC, GND y un pin de salida analógico o digital. Para la lectura analógica, conecte la salida a una entrada analógica en el Arduino (A0 y A1 son convenientes).Para la salida digital, conéctese a los pines digitales.

Aclarar el suministro de energía. Conectar la batería positiva a la entrada de potencia del motor y, a través de un regulador de tensión 5V (si es necesario), al pin Arduino VIN. Conectar todos los terrenos juntos. Un terreno común entre la lógica y las secciones de potencia es esencial.

Pruebas de cada subsistema

Antes de cargar el código completo de seguimiento de línea, prueba cada parte individualmente:

  • Sensores: Sube un simple bosquejo que lee los valores analógicos e imprímalos al Monitor de serie. Coloca el sensor sobre una superficie oscura y una superficie ligera y observa las lecturas. Ajusta el potenciómetro en cada módulo de sensor hasta que la diferencia supere los 200 conteos (en una escala 0 comprimidos; 1023).
  • Motores: Sube un boceto que recorre cada motor hacia adelante y hacia atrás a una velocidad fija. Verifique que ambas ruedas giran en la dirección correcta y que el robot se mueve directamente cuando ambos motores corren a valores iguales de PWM.
  • Poder: Medir el voltaje en el microcontrolador y el conductor motor con un multimetro bajo carga. Asegúrese de que el voltaje se mantenga dentro de la especificaciones. Una gota de tensión debajo de 4.8V en un carril 5V puede hacer que el Arduino se reinicio.

Programación del Robot

El algoritmo de control determina cuan graciosa y fiable es el robot que sigue la línea. Comience con un simple controlador de flequillo, luego actualice a control proporcional o PID a medida que su confianza crece.

Bang-Bang (Two-State) Control

Este es el enfoque más simple: cada sensor devuelve un valor binario (línea o no línea). La tabla lógica es:

  • Sensor izquierdo en línea, sensor derecho en línea: gire a la izquierda (detenga o ralentice el motor derecho, ejecute el motor izquierdo hacia adelante).
  • Sensor derecho en línea, sensor izquierdo fuera de línea: gire a la derecha.
  • Ambos sensores en línea: ir derecho.
  • No hay sensor en línea: parar y buscar (rotar en el lugar hasta que un sensor detecte la línea).

Este controlador funciona en curvas suaves y secciones rectas pero puede oscilar en giros agudos o a velocidades superiores. Reduzca la velocidad y agrande el espaciamiento del sensor para mejorar el rendimiento.

Control proporcional

Con sensores analógicos, puede calcular la posición de la línea más precisamente. Para una configuración de dos sensores, calcula una simple señal de error: . Cuando se centra, el error está cerca de cero. Cuando el robot se desvía, el sensor derecho ve más línea y produce un valor más alto, dando un error negativo y viceversa. Utilice este error para ajustar las velocidades del motor:

donde Kp es una ganancia proporcional que sintoniza experimentalmente. Comience con un pequeño Kp (0.1 manzanas;1.0) y aumentarlo hasta que las pistas de robot sin sobresuelva suavemente.

PID Control

Para robots de alta velocidad o competitivos, agregue términos integrales y derivados para eliminar errores de estado fijo y oscilaciones de amortiguación. El término integral acumula errores pasados para corregir la deriva persistente, mientras que el término deriva anticipa error futuro basado en la tasa actual de cambio. Una matriz de tres sensores o cinco sensores da mejores estimaciones de posición y permite una afinación PID más agresiva. Biblioteca PID de Arduino simplificar la aplicación.

Calibración y Tuning

Un robot bien calibrado puede manejar diferentes colores del suelo, condiciones de iluminación y anchos de línea. Calibrar sus sensores cada vez que cambia el ambiente.

Ajuste de los puntos de contacto del sensor

Coloca el robot con todos los sensores sobre una sección blanca (o ligera) de la pista. Lee y registra los valores analógicos. Luego colóquelo sobre la línea negra (o oscura) y registra esos valores. Establece el umbral digital en el punto medio entre las dos lecturas. Si utiliza el control analógico, normaliza las lecturas de los sensores a un 0 bordendash; escala del 100% basada en estos valores de calibración.

Motor de Tuning Speed y PID Constants

Comience a ajustar a baja velocidad (30 ndash;40% de PWM máximo). Ajuste hasta que el robot siga una línea recta sin temblar excesivamente. Si el robot oscila, reduzca Kp. Si responde sluggishly, aumente Kp. Una vez que Kp es satisfactorio, agregue un pequeño Kindash (0,01 Ø;0.1) para corregir las largas curvas.

Ajustes mecánicos

Si el robot se desplaza constantemente hacia un lado, compruebe que ambos motores reciben el mismo valor PWM para el movimiento recto. La arrastre mecánica de un rodamiento de rueda ajustado o una rueda montada desigualmente puede causar sesgo. Ajuste el offset PWM en software o fijar el problema mecánico. También verifique que las ruedas están centradas y que el peso del chasis es equilibrado.

Técnicas avanzadas

Una vez que su aspirante básico de línea está funcionando de forma fiable, puede explorar varias actualizaciones que enseñan conceptos robóticos más profundos.

Arrays multi-sensor

El uso de tres, cinco o ocho sensores en un array permite al robot estimar el centro de línea con resolución del sub-sensor. Un enfoque común es asignar a cada sensor un peso (por ejemplo, -3, -2, -1, 0, 1, 2, 3 para un array de siete sensores) y calcular el promedio ponderado de los sensores que detectan la línea. Esto da un valor de posición de punto flotante entre -3 y +3 que alimenta directamente. Sensores de QTR Pololu maneje la calibración y lectura para usted.

PID Tuning con Ziegler-Nichols

Si desea un método sistemático para encontrar ganancias PID, utilice el método de afinación de cierre de cremas Ziegler-Nichols. Set Ki y Kd a cero. Aumentar Kp hasta que el robot oscila con amplitud constante (el "ganancia íntima" Ku). Medir el período de oscilación (Tu). Luego establecer Kp = 0.6 * Ku, Ki = 2 * Kp / Tu, y Kd = Manual de inicio

Amplificadores de control de velocidad y aceleración

Los cambios de velocidad del motor repentino causan movimiento de la tibia y pueden tirar el robot de la línea. Implementar rampas de aceleración que aumentan suavemente la velocidad de cero al valor objetivo en unos pocos cientos milisegundos. De manera similar, rampas de desaceleración antes de un giro agudo mejorar la tracción y la fijación de líneas. Usted puede implementar esto con una máquina estatal simple basada en el temporizador o mediante la función para avanzar gradualmente el punto de velocidad.

Laberinto de solución y navegación de la red de líneas

Un robot que puede seguir una línea también puede aprender a navegar por una red de caminos. Usa un algoritmo basado en pilas (primera búsqueda) o la "regla de izquierda" para resolver laberintos de extremo muerto. Recorda cada decisión de unión y el camino entre las uniones. Después de la primera carrera, el robot puede volver a rastrear el camino óptimo. Esta es la base para muchas competiciones robóticas como el laberinado Micromouse o los desafíos detallados.

Pololu's Line Maze tutorial de solución.

Monitoreo y Telemetría Inalámbrico

Añadir un módulo HC-05 Bluetooth o un módulo ESP8266 Wi-Fi para transmitir valores de sensores, velocidades de motor y error PID a un ordenador portátil o teléfono inteligente. Esto le permite sintonizar el robot en tiempo real sin detenerlo. Parcela los datos en una herramienta como SerialPlot o Python Matplotlib para visualizar cómo el circuito de control se comporta bajo diferentes condiciones de salida.

Problemas comunes y solución de problemas

Incluso los constructores experimentados encuentran problemas. Aquí están los más comunes y cómo resolverlos.

Robot no se mueve

Controle el voltaje de la batería bajo carga. Si el voltaje está por debajo del voltaje mínimo del conductor, los motores no girarán. Verifique todas las conexiones terrestres son sólidas. Pruebe el conductor del motor enviando una señal manual del Arduino (HIGH/LOW) en los pines de dirección y un valor PWM de 200 en los pines de habilitación. Si los motores todavía no se mueven, el controlador puede ser o el motorizado.

Robot Veers fuera de la línea

Esto usualmente indica un problema de calibración de sensores o un sesgo mecánico. Recalibra los sensores utilizando el procedimiento descrito anteriormente. Luego, compruebe la alineación de la rueda: levante el robot y ejecute los motores a valores idénticos de PWM; ambas ruedas deben girar a la misma velocidad. Si una rueda es más lenta, cambie los canales de conductores para ver si el problema sigue el canal (problema de software) o se mantiene con el motor (problema de fijación).

Oscilación en secciones rectas

La oscilación es causada por una ganancia proporcional demasiado (Kp) o una ganancia derivada insuficiente (Kd). Reduzca Kp por 20 unidades;30% y vea si el robot se estabiliza. Si el robot todavía se wobbles, aumente gradualmente Kd. También compruebe que sus lecturas de sensores no son ruidosas. Agregue una pequeña cantidad de suavizado analógico (por ejemplo, un filtro promedio móvil de 3 unidades de control de ruido antes de la alimentación).

Robot Misses Sharp Turns

Las curvas de afilado requieren que el robot se desacelere. Introduce una reducción de velocidad cuando el error supera un determinado umbral. Por ejemplo, si el valor de posición de línea indica una curva afilada, reduce la velocidad de base por 30 unidades;50%. También puedes aumentar la velocidad del motor diferencial utilizando un Kp más grande para situaciones de alto riesgo (una técnica llamada programación de ganancia).

Desempeño inconsistente en iluminación diferente

Los sensores IR son sensibles a la luz ambiente, especialmente a la luz solar y a los accesorios fluorescentes. Calibra los sensores en el entorno real donde se ejecutará el robot. Escudriña los sensores con una capucha o un tubo corto hecho de tubo de rociado de calor o una rosca 3D para bloquear IR ambiente. Alternativamente, utiliza la detección activa: mide el IR reflejado con el emisor en, y luego mida con el subtíre.

Competencias y recursos comunitarios

Los robots de seguimiento de línea son un pilar de las competiciones robóticas en todo el mundo. Los eventos van desde concursos escolares locales a campeonatos internacionales como los RoboCup Junior Line Follower y el Concurso Internacional de Robótica Virtual Escolarizada. Participar en concursos proporciona un objetivo estructurado y una oportunidad para aprender de otros.

La comunidad de código abierto ha producido excelentes diseños de referencia y bases de código. Robot de Pololu Zumo y sus bibliotecas asociadas son un gran punto de partida para un seguimiento de línea de alto rendimiento. Proyecto Lino Robot proporciona un robot de unidad diferencial completamente basado en ROS que se puede adaptar para la línea siguiente.

Ampliación más allá de la línea

Las habilidades que desarrollas construyendo una transferencia de línea-siguiente directamente a muchos otros proyectos robóticos:

  • Evitación obstáculo: Reemplazar los sensores de línea IR con sensores ultrasónicos o de tiempo de vuelo y reescribir la lógica de control.
  • Muro siguiente: Los sensores de montaje en el lado y el control PID para mantener una distancia constante a una pared.
  • Robots sumo: Utilice sensores de línea para detectar el borde del anillo y volver a girar.
  • Resolución de laberinto autónomo: Agregue un IMU y encoders de rueda para la navegación de recapitulación entre cruces.
  • Integración ROS: Montar un Raspberry Pi corriendo ROS, añadir una cámara, y utilizar la visión de la computadora para seguir líneas o caminos de colores.

Cada uno de estos proyectos reutiliza la misma base de hardware y los mismos conceptos de control de PID o de máquina de estado que ya has aprendido.

Pensamientos finales

Construir un robot de seguimiento de línea con hardware de código abierto no es sólo un proyecto principiante, sino una plataforma para el aprendizaje continuo. El simple controlador de dos sensores, de una banda de bang funciona y es muy satisfactorio ver en acción. La próxima iteración añade PID. El que después añade un conjunto de ocho sensores y un PCB personalizado. Antes de mucho, usted está diseñando su propio problema de la competencia de Schetry cero

Ordena tus partes, dispara el hierro soldante y comienza a seguir esa línea. Cada experto robot constructor que admiras una vez comenzó exactamente aquí.