Como primera práctica para familiarizarnos con el entorno se ha desarrollado un control visual PID para un robot terrestre que recorre autónomamente una modelo del circuito Montmeló. El robot utilizado en la simulación es un robot Pioneer, que cuenta con un sensor láser para estimar profundidad, además de un par estéreo de cámaras. En este caso, como queríamos que nuestro control fuera solamente visual 2D, se utilizó únicamente una de las cámaras.
Lo primero que se hizo fue tomar varias imágenes de muestra del escenario para saber como veía el robot una recta, una curva abierta, una curva cerrada o una chicana. Con estas imágenes se determinó en donde estaba la información que nos interesaba.
Como las cámaras vienen configuradas en un par estéreo la imagen no se encuentra centrada, así que se recortó la imagen por la izquierda para tratar de obtener un mejor punto de referencia central. Con las imágenes de rectas se determinó hasta que altura veía el robot el camino para recortar el exceso hacia arriba. También se eliminó un poco más por arriba para que los segmentos de pista que se empiezan a ver cuando se llega a una curva tampoco influyeran en el control visual.
Ya que se tiene una imagen con la información que nos interesa se hace un filtrado para quedarnos solo con el camino. Como teníamos una línea roja de guía la forma más fácil de hacer esto es llevar la imagen de entrada al modelo de color HSV y filtrar el matiz rojo.
A esta imagen se le calcula el centro de masa (el punto que se ve en el centro) y se utilizan sus coordenadas (x,y) como entradas de los controladores.
Para controlar al robot se implementaron dos controles independientes:
- Control P para la velocidad, que usa como error la diferencia entre la coordenada 'y' del centro de masa de la imagen y una coordenada de referencia (la coordenada 'y' del centro de masa de la imagen cuando el robot se encuentra en una línea recta).
- Control PID para el ángulo, que en este caso utiliza como error la diferencia entre la coordenada 'x' del centro de masa de la imagen y la coordenada 'x' del centro de masa en una línea recta.
Esta simulación se está ejecutando sobre una máquina virtual y no se ejecuta en tiempo real, por lo que parece que va mas lento de lo que en realidad va. El robot hace el circuito en aproximadamente 2:50. El control visual aún se puede mejorar mucho más.


No hay comentarios:
Publicar un comentario