Recientemente me sumergí en la solución de una práctica sobre follow line usando la estrategia de control PID (Proporcional, Integral y Derivativo), para hacer la simulación de un robot seguidor de una línea roja en una superficie. Este es un avance importante en mi proyecto y aunque los resultados son aceptables, todavía queda trabajo por hacer para eliminar la oscilación que se observa en el movimiento del robot sobretodo en las curvas.
¿Cómo funciona el código?
1. Procesamiento de imagen
Lo primero que hacemos es capturar una imagen en tiempo real de la cámara del robot. A continuación, convertimos la imagen a un espacio de color HSV, que facilita la detección del color de la línea (rango que hemos definido en el código). De este modo, podemos aplicar una máscara que nos permite aislar la línea roja.
2. Cálculo del error y Control PID
Una vez obtenemos la imagen procesada, calculamos el centroide de la línea roja. Este centroide es la clave para la corrección del movimiento del robot, si el centroide se encuentra a la izquierda o derecha del centro de la imagen entonces el robot necesitará corregir su rumbo. Este ajuste se realiza mediante el cálculo de tres componentes fundamentales en el PID:
- Proporcional (P): Ajuste directo en función del error detectado.
- Integral (I): Corrección acumulada para evitar que el error persista.
- Derivativo (D): Corrección basada en la tasa de cambio del error, lo que ayuda a suavizar el movimiento y reducir oscilaciones.
La combinación de estos tres componentes da como resultado un valor de corrección W
, que ajusta la dirección del robot.
3. Implementación en tiempo real
Finalmente, con el cálculo de la corrección, el robot ajusta su velocidad y dirección en tiempo real. En este caso, el robot mantiene una velocidad constante pero su dirección (W
) cambia constantemente con base en el seguimiento de la línea.
Resultados:
Los resultados iniciales fueron bastante prometedores a una velocidad constante de 3, donde el robot sigue la línea de manera consistente.
Sin embargo, ¿quién querría ir a esa velocidad en un coche de F1?
Por eso, decidí aumentar la velocidad a 8, lo que reveló más movimientos de oscilación. Esto sugiere que, aunque el sistema PID está realizando correcciones efectivas, aún es necesario hacer ajustes finos para minimizar estas fluctuaciones y lograr un seguimiento de línea más estable.
¿Qué sigue?
El siguiente desafío es mejorar la suavidad del movimiento en curvas. Para ello, estaré probando ajustes adicionales en las constantes PID y posiblemente integrando técnicas de filtrado para suavizar el error. Estoy confiado en que con un poco más de trabajo, se conseguirá un seguimiento de línea perfecto en una velocidad más elevada.
Convertir a las ganancias, la velocidad lineal y la velocidad angular en variables de control.
¡Aquí les dejo un video mostrando los resultados actuales a una velocidad constante de 8!.