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
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.
Bright nodes are sensors currently detecting the track. The lavender heading line shows steering output. Drawing pauses the robot automatically.
- 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.
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
- Muestrear todos los sensores en intervalos de tiempo fijos y uniformes.
- Calcular la posición ponderada de la línea y normalizarla respecto al eje central.
- Conservar la última dirección observada si todos los sensores pierden el trazo.
- Actualizar las componentes integral y derivativa empleando el paso temporal correspondiente.
- 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.
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.