2. MARCO TEÓRICO
4.2 Descripción del diagrama de flujo
El diagrama de bloques descrito en el capítulo 3.2 describe un sistema en el cual siempre se deben ingresar las esquinas de la cancha, y se deben establecer los colores de las marcas y las pelotas de manera manual.
Para mayor eficiencia en el desarrollo de las pruebas y también pensando en cómo funcionaría este realmente como producto, se desarrollo una interfaz sencilla, al inicializar el sistema este pregunta que datos de entrada se desean ingresar, si no se desea ingresar alguno o los dos (cuatro puntos y colores), el sistema toma los últimos datos ingresados por el usuario anteriormente. En la Imagen 4.2-1 se observan las opciones que muestra el sistema al correr el programa.
Imagen 4.2- 1. Pantalla inicial tras ejecutar el código
Así que el diagrama de bloques (capitulo 3.2), supone que el usuario selecciono la opción número 4, en la cual el usuario desea ingresar los puntos de las esquinas y los colores de las marcas y pelotas (todos los parámetros de entrada).
Inicialmente el sistema realiza la homografía de la imagen capturada (A). El sistema toma una fotografía del entorno actual por medio de la aplicación IP Webcam, esta imagen es calibrada, en este punto se deben ingresar manualmente las esquinas de las cancha, solo si el usuario seleccionó anteriormente la opción 1 o 3. De los contrario, el sistema utilizará las últimas ingresadas por el usuario. Con estas cuatro coordenadas el sistema encuentra la matriz de homografía (o transformación de perspectiva), y la aplica a la imagen, de esta manera se obtiene una imagen con una vista superior del área o vista de pájaro.
El bloque establecer colores (B) recibe la imagen a la cual se aplicó la homografía. Si el usuario seleccionó la opción 2 o 4, el usuario deberá seleccionar los colores de cada una de las marcas y una pelota. Aparecerán diferentes ventanas las cuales se cerraran secuencialmente, estas ventanas mostraras imágenes con la homografía aplicada donde se tendrán que seleccionar pixeles correspondientes a cada marca del robot y de una de las pelotas. Primero se mostrará una ventana llamada marca frontal, en la cual se debe hacer clic sobre cualquier punto perteneciente a la marca, una vez se haya seleccionado, aparecerá una nueva ventana del mismo tamaño que la anterior donde todos aquellos pixeles que se encuentren en el mismo rango del pixel seleccionado aparecerán en blanco y los demás en negro, como se muestra en la Imagen 4.2- 2. De esta manera se puede verificar que el pixel seleccionado pertenece a la marca señalada, en la ventana marca frontal el usuario puede seleccionar varias veces el pixel perteneciente a la marca frontal, una vez considere que la selección es correcta debe presionar enter. La verificación se realiza por medio de una segunda ventana binaria, donde se mostraran
48
en color blanco los pixeles de la imagen que pertenezcan a la marca señalada. Tras esta selección, estas dos primeras ventanas se cierran automáticamente, y se abre una nueva ventana para la marca central, en la cual se repite el mismo procedimiento anteriormente descrito (Imagen 4.2- 3), y finalmente se realiza el mismo procedimiento para las pelotas (Imagen 4.2- 4).
Imagen 4.2- 2. Selección de la marca central del robot (marca para posición)
Imagen 4.2- 3. Selección de la marca frontal del robot (marca para dirección)
Imagen 4.2- 4. Selección de cualquier pelota en el campo
Una vez se tienen los colores o arreglo RGB de las marcas y las pelotas, se realiza el reconocimiento de las pelotas y el robot (marcas) (C), este procedimiento se explica en detalle en 2.4. Este bloque entrega al sistema la posición central de las pelotas, la marca central del robot y el número de pelotas encontrado.
Seguidamente el bloque de generación de la secuencia de coordenadas para el trayecto (D), se encarga de realizar un matriz de N x 2, donde N es el número de pelotas + 2. Siendo la primera y última coordenada la posición e inicial y final del robot respectivamente, la cual es la misma.
49 Tabla 4- 1
Imagen 4.2- 5. Secuencia de recorrido para el robot
es la coordenada de la posición del robot. , y son las coordenadas de las pelotas. En la matriz se muestra el orden en el cual el robot debe realizar el recorrido. Comenzando por su posición inicial, recolecta la pelota 1, 2, 3 y finalmente regresa a su posición inicial.
En este punto el sistema posee la posición actual del robot, las pelotas, y conoce el recorrido que debe realizar. Así que el sistema evalúa el primer recorrido a realizar, que corresponde al recorrido entre Ro (posición inicial del robot) y P1 (posición de la primera pelota a recolectar), Ro R1 (F). Así que la primera posición destino corresponde a P1.
El sistema encuentra la distancia en centímetros entre la posición actual del robot y la posición destino (G). Si esta distancia es menor a 10 centímetros, significa que la posición central del robot está a menos de 10 centímetros de la pelota, por lo tanto ya la alcanzó.
Imagen 4.2- 6. Distancia entre la pelota y el robot
Si la distancia es mayor a 10 centímetros (H), el robot aún no ha alcanzado la pelota, así que procede a encontrar las dos marcas sobre este, por medio del bloque Reconocimiento de la posición del Robot (I), seguidamente en el bloque corrección de dirección (J), la variable dirección toma valor de ‘a’ (avanzar hacia adelante), ‘i’ (girar hacia la izquierda) ó ‘d’ (girar hacia la derecha), dependiendo del cálculo realizado con las marcas del robot y la pelota o posición destino.
Si la dirección encontrada es diferente de ‘a’ (K), éste realiza la corrección de dirección hasta que finalmente la dirección sea igual a ‘a’. Cuando la dirección es diferente de ‘a’, el sistema
50
calcula el tiempo de giro según el ángulo entre el robot y la pelota (L), seguidamente procede a realizar el giro durante el tiempo calculado (M), en la última dirección encontrada (‘i’ o ‘d’). Se realiza el reconocimiento de las marcas del robot (N) para obtener la nueva dirección en la que se encuentra el robot y luego se recalcula la dirección en la cual se realiza la corrección de dirección (O). Este procedimiento lo repite hasta que la dirección que encuentra es igual a ‘a’.
Imagen 4.2- 7. Sistema no colineal
Cuando el robot finalmente se encuentra en dirección hacia la pelota o posición destino, calcula la distancia en centímetros entre la posición actual y destino (P), y dependiendo de esta distancia realiza un recorrido en línea recta de 2 metros (R) si la distancia es mayor 3 metros (Q); si la distancia está entre 1.5 y 3 metros (S), realiza un trayectoria en línea recta durante 1.3 metros (T). Y finalmente si la distancia es menor a 1.5 metros, calcula el tiempo de aproximación a la pelota (U), suponiendo una velocidad lineal, luego realiza el recorrido según el tiempo calculado (V).
Tras realizar el recorrido en línea recta para aproximarse a la pelota, se realiza el reconocimiento de las dos marcas sobre el robot nuevamente (W), y se halla la distancia en centímetros entre la posición actual y destino (X). Seguidamente se vuelve a la validación de distancia mayor o menor a 10 cm (H).
Cuando la distancia es menor a 10 centímetros (el robot ya alcanzo la pelota) se imprime el mensaje fin pelota (Y), y se continua con el siguiente recorrido, P1 P2, recorrido desde la posición de la pelota 1, hacia la posición de la pelota 2. De esta manera se realiza el recorrido: P2 P3 y P3Ro. Una vez el robot regresa a su posición inicial, el programa finaliza (Z).
51