¡¡¡Abre los ojos!!!

En este caso había que conseguir que solamente con las imágenes obtenidas a través de una webcam el robot se moviera por un determinado espacio.
El territorio por el que se podía desplazar estaba compuesto de colores uniformes:
- Las paredes son grises
- El suelo amarillo
- Las papeleras azules
- Las puertas rojas
Todo esto simplifica bastante el trabajo, ya que no es necesario aplicar filtros de color a la imagen obtenida.
Lo importante de todo este proceso es el algoritmo que gobierna todo, por eso, a continuación comentaré a grandes rasgos el algoritmo usado y sus funciones:
- Función EsPasillo
Indica si el píxel pedido pertenece al pasillo o no.

- Función BuscarHueco
En los parámetros que recibe, dejará almacenada la posición inicial del hueco encontrado
y el tamaño de éste.

- Función CalcularVelocidad
La velocidad se obtiene a partir de la mitad inferior de la columna de píxeles situada en
el centro de la imagen. Si todos esos píxeles pertenecen al pasillo, se aplica la velocidad
máxima; sino, se aplica una velocidad proporcional a los píxeles contiguos que
pertenecen al pasillo, empezando a contar estos píxeles desde la parte inferior de la
imagen.

- Función Yourcode_iteration
Este es el código que se ejecuta de forma periódica.
Principalmente, los pasos que realiza son:
1. Busca hueco
2. Si el hueco es mayor de 50 píxeles, comprobamos la fila de píxeles
correspondiente al 90% de la imagen. A partir de la observación de esa línea,
calculamos 2 ángulos de giro. Uno correspondiente a los obstáculos
observados por la derecha, para lo cual usamos la mitad derecha de la línea
observada; y otro a los encontrados por la izquierda, usando la mitad izquierda
de dicha línea. Por último, sumamos los ángulos obtenidos y tenemos la
dirección final que debemos seguir para esquivar los objetos.
3. Si el ángulo que debemos girar se encuentra entre -15 y 15 grados, avanzamos
a una velocidad de 900 porque más o menos es una línea recta y no tenemos
obstáculos alrededor; sino, avanzamos a una velocidad de 500.
4. Si el hueco del punto 2 no es mayor de 50 píxeles, el robot no tiene claro que
sea capaz de pasar por ese lugar, por lo tanto calculará la velocidad y
aumentará el ángulo de giro. Si el ángulo de giro que esté siguiendo en ese
momento es negativo, se aumentará el giro hacia la derecha, y si es positivo se
aumentará hacia la izquierda.

Durante el periodo de desarrollo pudimos comprobar que las paredes del simulador son bastante parecidas a las de los departamentales (si soplabas se volaban), que las papeleras estaban llenas de piedras… pero en el momento decisivo, ¡todo funcionó correctamente y no observamos nada de esto por no tocar ni papeleras ni paredes! :D
La única pega que observé fue la velocidad a la que se avanzaba, podía haber sido mayor.
Pero no es una pega importante, ya que permitió que el robot terminase en una tercera posición.

Este es el video de la competición:

0 comentarios:

Publicar un comentario