Simulador interactivoPrincipiante

Simulador de seguidor de línea: sintonización PID

Construye un robot virtual seguidor de línea, visualiza sus sensores y sintoniza un controlador PID mediante un simulador interactivo en el navegador.

Categoría
Arduino
Tiempo
45–90 min
Plataforma
Browser · Arduino
Esquema técnico de Simulador de seguidor de línea: sintonización PIDSENSOR ERROR

01 / Empieza aquí

Introducción

Un robot seguidor de línea convierte lecturas sensoriales en correcciones de dirección. Este proyecto permite trazar pistas, modificar la geometría del robot y de sus sensores, y observar la respuesta de un controlador PID en tiempo real. Úsalo para vincular la teoría de control con el comportamiento que observarías en un robot Arduino físico sobre una pista real.

Live lab / Deterministic 60 Hz model

Line follower simulator

Run the starter track, tune the controller, or pause and draw a course of your own.

Browser native
A top-down line-follower robot simulator. Use the controls below to run the simulation or read the complete algorithm and theory after this lab.

Bright nodes are sensors currently detecting the track. The lavender heading line shows steering output. Drawing pauses the robot automatically.

Simulation

Paused. Press Start or Step to begin.

Robot geometry
PID calibration
Elapsed
0.0 s
Distance
0 units
Line error
0.000
Steering
0.000
Track contact
100%

Keyboard: focus the course, then use Space to run/pause, N to step, R to reset, D to draw, and F for full screen.

Controles

Utiliza los circuitos predefinidos para establecer una referencia o pausa la simulación y dibuja directamente sobre la pista. La velocidad del robot controla el avance del chasis en cada actualización. La cantidad y separación de sensores modifican el campo de visión. Los parámetros P, I y D alteran la respuesta de guiado; el botón Paso avanza una iteración discreta durante la pausa.

Inicia con velocidad moderada, cinco sensores y las ganancias por defecto. Modifica una sola variable cada vez y contrasta el error medio, el tiempo por vuelta y la estabilidad sobre la línea.

Teoría

La barra frontal muestrea la reflectancia a lo ancho de la pista. Cada sensor activo aporta su coordenada ponderada al cálculo medio. El centro de la barra representa error cero; las desviaciones hacia la izquierda o derecha generan errores de signo negativo o positivo respectivamente.

Gráfico de barras de cinco sensores de reflectancia frontales. La línea queda a la derecha del centro, por lo que los sensores derechos arrojan mayor lectura. Una línea discontinua marca el centro (error cero) y una línea continua indica la posición ponderada en más 0.69, el error de guiado resultante.
El promedio ponderado de las lecturas sensoriales proporciona una posición de línea continua: aquí la línea se ubica a la derecha del centro, por lo que el error es positivo y el controlador corrige hacia el centro. Descargar SVG

El controlador combina tres acciones de control fundamentales:

$$u(t) = K_p e(t) + K_i \int e(t)dt + K_d \frac{de(t)}{dt}$$

La señal de corrección $u(t)$ acelera una rueda y desacelera la opuesta. El control proporcional actúa sobre el error instantáneo, el integral elimina el error residual constante y el derivativo amortigua las variaciones bruscas.

Algoritmo

  1. Muestrear todos los sensores en intervalos de tiempo fijos y uniformes.
  2. Calcular la posición ponderada de la línea y normalizarla respecto al eje central.
  3. Conservar la última dirección observada si todos los sensores pierden el trazo.
  4. Actualizar las componentes integral y derivativa empleando el paso temporal correspondiente.
  5. Limitar la señal de corrección, determinar la consigna de cada motor e integrar la cinemática del robot.

Sintoniza la ganancia proporcional hasta tomar curvas suaves, añade ganancia derivativa para disipar oscilaciones y agrega el término integral estrictamente necesario si persiste una desviación sistemática.

Código fuente

El simulador en navegador y un microcontrolador real aplican la misma lógica estructural. Un bucle conciso para Arduino adopta este esquema:

float integral = 0.0f;
float previousError = 0.0f;

void controlStep(float dt) {
  float error = readWeightedLinePosition();
  integral = constrain(integral + error * dt, -2.0f, 2.0f);
  float derivative = (error - previousError) / dt;
  float correction = kp * error + ki * integral + kd * derivative;

  setMotorSpeeds(baseSpeed - correction, baseSpeed + correction);
  previousError = error;
}

Mantén constante el periodo de muestreo. Un retardo variable modifica la ponderación efectiva de las derivadas e integrales aunque las ganancias numéricas no cambien.

Suposiciones y diferencias con el hardware

Este es un entorno didáctico y no una réplica física exacta. La pista simulada es una máscara binaria plana de contraste perfecto sin interferencias lumínicas ambientales; sobre cinta física, el brillo ambiental, los reflejos y la altura del sensor distorsionan la lectura, obligando a calibrar en sitio. El reloj es ideal: el lazo se computa con periodicidad perfecta sin el jitter inherente a retardos bloqueantes como delay(). La cinemática asume adherencia ideal sin deslizamiento, respuesta de motor simétrica y tensión de alimentación constante. Toma las ganancias del simulador como una aproximación sólida para iniciar el ajuste fino sobre la pista real.

Diagrama de circuito

Conecta las salidas sensoriales a entradas analógicas del microcontrolador, comparte la referencia de masa entre todos los módulos y acciona los motores mediante un puente H evitando alimentar cargas inductivas desde los pines lógicos.

Diagrama de bloques del cableado del seguidor de línea. Una matriz de sensores IR alimenta entradas analógicas de un Arduino, el cual genera señales PWM y de dirección hacia el driver de motor para alimentar los actuadores. Una batería independiente con regulador alimenta la electrónica lógica.
El flujo de señal discurre de izquierda a derecha; la corriente de los motores procede de una línea de alimentación separada, nunca del regulador lógico del microcontrolador. Descargar SVG

Verifica las características de corriente de la batería e instala condensadores de desacoplo cercanos al microcontrolador y al driver. Nunca alimentes motores a través del regulador de 5 V de la placa de desarrollo.

Experimentos guiados

1. Determinar la ganancia crítica y reducirla a la mitad

Fija las ganancias integral y derivativa en cero y eleva la ganancia proporcional hasta que el robot oscile de manera continua a lo largo de una recta (amplitud sostenida sin crecer ni extinguirse). Reduce ese valor a la mitad.

Obtendrás un valor inicial de Kp basado en mediciones sistemáticas y no en conjeturas. A partir de ahí, incrementa Kd hasta extinguir el serpenteo.

2. Comprobar que las ganancias dependen de la velocidad

Sintoniza el robot hasta conseguir un guiado limpio a velocidad baja. Duplica la velocidad base sin alterar las ganancias.

Aparecerán oscilaciones o pérdidas de línea: aunque el controlador no cambió, la misma corrección angular produce una variación de rumbo más drástica por unidad de longitud recorrida. Toda sintonización es específica para una velocidad dada, motivo por el cual los robots de competencia reducen velocidad antes de ingresar a curvas cerradas.

3. Impacto del número de sensores

Evalúa el mismo circuito y ganancias configurando tres, cinco y ocho sensores.

Sensores Calidad de señal de posición Repercusión en la sintonización
3 Discreta, tres regiones útiles Sigue la línea pero no admite ganancias altas por cuantización
5 Continua y suave El punto de equilibrio óptimo habitual
8 Alta resolución Admite mayores ganancias y velocidades antes de oscilar

Mayor número de sensores eleva el límite superior de velocidad más que mejorar la respuesta a velocidad baja. A velocidad reducida tres sensores resultan suficientes; la mayor resolución se amortiza cuando el error discreto se convierte en el factor limitante.

4. Pérdida intencional en curvas pronunciadas

Aumenta la velocidad hasta forzar que el robot pierda la línea en la curva más cerrada. Analiza su reacción: avanzar en línea recta resulta contraproducente pues la trayectoria se curvaba.

Por ello conviene retener el último error conocido al perder la línea en vez de ponerlo a cero (cero ordena avance frontal a máxima potencia). Mantener el signo previo asegura que el robot continúe girando hacia donde vio la pista por última vez.

Diagnóstico y soluciones

Síntoma en la gráfica Causa Corrección
Oscilación sostenida en rectas Kp excesivo o Kd bajo Reducir Kp a la mitad y aumentar Kd
Oscilación que diverge Kp por encima del valor crítico Disminuir Kp
Salida tardía en curvas Velocidad excesiva para la separación sensorial Reducir velocidad o adelantar los sensores
Señal de control ruidosa Kd amplificando ruido de medición Filtrar la señal o reducir Kd
Desvío permanente hacia un lado Calibración asimétrica de sensores Normalizar cada sensor según su rango real
Pérdida de línea y avance recto Error forzado a cero al perder lectura Retener el último error registrado

Recomendaciones de implementación física

En este simulador En un robot real
Lazo temporal estrictamente periódico Variaciones temporales si no mides dt; los delay() anulan a Kd
Calibración matemática ideal Debe repetirse en cada pista según la luz ambiental y el suelo
Pista de contraste binario perfecto Cinta con brillo, polvo y luz ambiental reducen el margen
Rodadura sin deslizamiento Deslizamiento a alta velocidad y zona muerta en motores
Respuesta inmediata de motores Cada motor arranca a ciclos de trabajo distintos por fricción
Batería ideal con voltaje plano La caída de tensión disminuye la velocidad efectiva con el tiempo

Las ganancias obtenidas sirven como una base de partida fiable, y la metodología de ajuste se mantiene idéntica. Puedes revisar el montaje completo en la guía de construcción de un robot seguidor de línea.

Lista de hardware

Componentes

  • Arduino Uno o controlador compatible
  • De tres a nueve sensores de reflectancia IR
  • Dos motorreductores de CC con ruedas
  • Driver de motor de doble puente H
  • Portabaterías, chasis y rueda loca (caster)

Explora el grafo

Dónde se usa este simulador

Los proyectos, rutas de aprendizaje y tutoriales que se basan en este laboratorio.

Sigue construyendo

Descargar recursos

Usa estas referencias de la página mientras trabajas en el proyecto. Los paquetes descargables del proyecto se añadirán solo cuando se publiquen su código fuente y su versión.

Preguntas comunes

Preguntas frecuentes

¿Por qué el robot oscila alrededor de la línea?

La oscilación suele indicar que la ganancia proporcional es excesiva, la amortiguación derivativa es insuficiente o el robot avanza más rápido de lo que permite la tasa de actualización de los sensores. Reduce la velocidad en primer lugar y luego reajusta P y D. En un robot físico, incluir delay() prolongados en el bucle principal es una causa oculta frecuente: el tiempo muerto introducido anula el efecto del término derivativo sin importar cuánto aumentes su ganancia.

¿Cuántos sensores debe tener un seguidor de línea?

Cinco sensores ofrecen un equilibrio idóneo: revelan la dirección y magnitud del error manteniendo accesible el cálculo de posición ponderada. Tres sensores funcionan a velocidades moderadas, mientras que los robots de competición emplean con frecuencia ocho para una mayor resolución angular a alta velocidad.

¿Por qué mi seguidor de línea pierde la trayectoria en curvas cerradas?

El chasis avanza con mayor rapidez de la que la barra sensorial puede muestrear la curva, saliendo la línea del campo de visión antes de que el controlador reaccione. Reduce la velocidad, ensancha la barra de sensores o aumenta la frecuencia del bucle. Un controlador robusto retiene el último sentido de giro conocido cuando todos los sensores pierden la línea, virando hacia ella en lugar de seguir recto.

¿Conviene utilizar sensores IR analógicos o digitales para el seguimiento?

Los sensores analógicos entregan una lectura continua, lo que permite calcular una posición ponderada suave y aplicar un control proporcional continuo. Los sensores digitales solo informan estado encendido/apagado según un umbral interno, siendo más sencillos pero proporcionando una señal discreta y discontinua. Este simulador modela la estrategia analógica ponderada.

¿Cómo se calibra la matriz de sensores IR?

Antes de iniciar la marcha, desplaza los sensores sobre la línea y sobre el fondo registrando los valores mínimos y máximos de cada canal, normalizando luego las lecturas en tiempo real respecto a ese rango. La calibración es crucial porque la altura de montaje, la reflectividad y la luz ambiental alteran las lecturas brutas, y una matriz descalibrada desvía el centro de guía.

¿Cuáles son buenos valores PID de inicio para un seguidor con Arduino?

Considera las ganancias publicadas como un punto de partida orientativo y no como una solución universal: la respuesta de los motores, la altura del sensor, el nivel de batería y el periodo de muestreo varían las necesidades de cada chasis. Inicia solo con el término proporcional, auméntalo hasta seguir curvas suaves con leve oscilación, incorpora el derivativo para suprimir ese balanceo y añade una mínima acción integral solo si persiste un error constante.

Lecturas adicionales

Referencias

Fuentes autorizadas para profundizar más allá del modelo educativo acotado de este simulador.