1
ROBOT CADDIE (ROCA)
Andrea Patricia Diaz B.
Trabajo de grado para optar por el título de
Ingeniera Electrónica
Director
Ing. Francisco Carlos Calderón Bocanegra M.Sc.
Asesor
Ing. Kamilo Andrés Melo Becerra, PhD.
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE INGENIERÍA
DEPARTAMENTO DE ELECTRÓNICA
3
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE INGENIERIA
DEPARTAMENTO DE INGENIERIA ELECTRONICA
RECTOR
DECANO ACADEMICO
DECANO DEL MEDIO
DIRECTOR DE CARRERA
DIRECTOR DE PROYECTO
P. JOAQUIN EMILIO SANCHEZ, S.J
ING. JORGE LUIS SANCHEZ, M.Sc
P. SERGIO BERNAL RESTREPO, S.J
ING. JAIRO ALBERTO HURTADO, PhD
4
ARTÍCULO 23 DE LA RESOLUCION No. 13 DE JUNIO DE 1946
5
AGRADECIMIENTOS
6
Contenido
1. INTRODUCCIÓN ...8
2. MARCO TEÓRICO ...9
2.1 Descripción general del proyecto ...9
2.2 Calibración de la cámara ...12
2.2.1 Modelo de una cámara ...12
2.2.2 Parámetros extrínsecos e intrínsecos de la cámara ...12
2.3 Corrección de perspectiva ...14
2.3.1 Transformaciones geométricas ...14
2.3.2 Transformación afín ...14
2.3.3 Transformación de perspectiva ó homografía ...16
2.4 Identificación de objetos por colores ...17
2.5 Identificación del robot y la pelota ...20
2.5.1 Proyección para objetos en diferentes planos ...23
2.6 Corrección del direccionamiento ...24
2.7 Generación de trayectoria ...36
2.7.1 Distancias entre cada par de nodos ...36
2.7.2 Posibles secuencias para realizar el trayecto ...36
2.7.3 Secuencia correspondiente al menor recorrido ...39
2.8 Seguimiento de la trayectoria ...40
2.8.1 Espacio de configuración ...42
2.8.2 Robots móviles ...43
3. ESPECIFICACIONES ...44
3.1 Limitaciones de hardware ...44
3.2 Diagrama de flujo ...44
4. DESARROLLO ...46
4.1 Tecnología utilizada ...46
4.2 Descripción del diagrama de flujo ...47
5. ANÁLISIS DE RESULTADOS ...51
5.1 Modelo a escala ...51
5.2 Linealización de variables ...52
5.3 Identificación del robot y las pelotas ...52
7
5.5 Un producto ...56
5.5.1 Viabilidad como producto ...56
5.5.2 Desarrollos futuros ...58
6. CONCLUSIONES ...59
7. BIBLIOGRAFÍA Y FUENTES DE INFORMACIÓN ...61
8. ANEXOS ...62
Funciones de Opencv ...62
Anexo 1: Definición de la función WarpAffine ...62
Anexo 2: Definición de la función FindHomography ...62
Anexo 3: Definición de la función WarpPerspective ...62
Anexo 4: Definición de la funcion Get2D ...63
Hardware y Software ...63
Anexo 5: ROS ...63
Anexo 6: iRobot Create ...67
Anexo 7: OpenCV ...68
Anexo 8: IP Webcam ...69
Anexo 9: Escritorio remoto ...69
Contenido del CD-ROM
- Informe Final - Artículo IEEE
- Artículo de IFES-ACOFI - Software
8
1. INTRODUCCIÓN
En algunos deportes tales como el tenis la pelota no dura mucho tiempo en juego, ya que esta puede caer en cualquier parte del campo deportivo, el recolectar las pelotas detiene la partida y causa cansancio extra en el jugador, como solución a esta molestia surgió una persona encargada de recolectar las pelotas del campo a cambio de una remuneración económica, un caddy actualmente cobra seis mil pesos por una hora de servicio.
El servicio de caddie en países del primer mundo, es costoso y solamente se ofrece para la clase alta en clubes privados. En Colombia una persona que juegue una hora diariamente y pague servicio de caddy, llegará a gastar más de dos millones de pesos al año.
En casas privadas con cancha de tenis propia, es muy difícil conseguir una persona que se encargue de recolectar las pelotas, ya que no es rentable para un caddie esperar a que un solo cliente requiera de sus servicios.
Se propuso un robot caddy el cual localiza hasta tres pelotas en el campo, el recorrido que realiza será en el cual recorra la menor distancia. Se aclara que el robot que se implemento será un prototipo de lo que podría llegar a ser un Robot Caddie como producto.
El sistema es capaz de identificar el robot y las pelotas, generar una trayectoria y realizar el recorrido. El objetivo principal fue la implementación de un sistema de recolección de pelotas de tenis sobre media cancha de tenis utilizando visión artificial y una plataforma robótica comercial.
La visualización de la pelota se realiza por medio de la cámara ubicada en la parte posterior a la línea de servicio. Se propuso media cancha, ya que la implementación sobre una cancha completa requeriría de dos plataformas robóticas móviles y dos cámaras. Además la implementación de ambas medias canchas sería la misma.
El sistema es capaz de localizar hasta tres pelotas de tenis en el campo utilizando visión por computador. Se debe identificar la posición y orientación del robot móvil en la cancha, para seguidamente diseñar un algoritmo que a partir de la ubicación de la pelota y el robot, planifique una ruta de navegación y la estrategia de aproximación hacia la pelota.
El objetivo general del trabajo de grado es la implementación de un sistema de localización de pelotas de tenis sobre media cancha de tenis utilizando visión artificial y una plataforma robótica comercial.
Objetivos específicos:
Localizar hasta 3 pelotas de tenis en el campo utilizando visión por computador.
Identificar la posición y orientación del robot móvil en la cancha, utilizando visión por computador.
Diseñar un algoritmo que a partir de la ubicación de la pelota y el robot, planifique una ruta de navegación.
9
2. MARCO TEÓRICO
2.1 Descripción general del proyecto
El siguiente diagrama de bloques corresponde a una representación resumida del proyecto implementado:
10
Esta descripción no incluirá una explicación teórica, ya que esta es incluida más adelante, en el siguiente capítulo, esta descripción permitirá al lector un entendimiento global sobre el proyecto.
En el primer bloque, Imagen homografía, el sistema realiza la adquisición de la imagen, seguidamente se aplican los parámetros de calibración de la cámara para corregir distorsiones generadas por el sistema físico y finalmente se obtiene la homografía o corrección de perspectiva que corresponderá a la vista de pájaro del campo.
Imagen 2.1- 1
En el bloque, selección de colores, el usuario selecciona los parámetros de entrada del sistema, los cuales corresponderán a las esquinas de la cancha, y el color de las pelotas, y las marcas sobre el robot.
Imagen 2.1- 2
En el bloque reconocimiento de las pelotas y el robot, se encuentran las coordenadas centrales de cada una de las pelotas, y de la marca central del robot, utilizando el color que de cada objeto que se encontró en el bloque anterior.
11
A continuación el bloque generación de la secuencia de las coordenadas para el trayecto, recibe las coordenadas de las pelotas y de la posición del robot, y retorna una matriz en la cual se encuentra el recorrido que se debe ejecutar.
Imagen 2.1- 4
En el diagrama de bloques se observa la condición i < Numero de pelotas, donde el valor inicial de i será 0. Los siguientes bloques que se explicaran a continuación serán ejecutados por el sistema hasta que las pelotas sean localizadas y el robot llegue hasta cada una de las pelotas.
El bloque hallar distancia en centímetros entre la posición actual y destino, encuentra la distancia en centímetros entre la posición actual y destino.
Imagen 2.1- 5
A continuación el sistema evalúa si alcanzo o no la pelota, si no, el sistema prosigue a realizar la corrección de dirección, en la cual busca que el robot se encuentre en dirección hacia la posición destino o la siguiente pelota.
Imagen 2.1- 6
En el bloque avance en línea recta, el sistema evalúa la distancia actual y destino, y según esta distancia se recorre la distancia correspondiente.
Imagen 2.1- 7
12 2.2 Calibración de la cámara
2.2.1 Modelo de una cámara
La visión comienza con la detección de luz, cuando la luz choca a un objeto, gran parte de la luz es absorbida, y la que no lo es, es percibida como color. El modelo de una cámara de pinhole (agujero de alfiler) es una pared imaginaria con un pequeño agujero en el centro que bloquea todos los rayos excepto aquellos rayos que pasan a través del agujero. En la práctica se utiliza un lente para obtener más luz, así que ahora se debe trabajar con un modelo no tan simple y tomando en cuenta la distorsión.
En el modelo físico de pinhole un punto es proyectado en una superficie, la imagen proyectada en el plano de imagen esta siempre enfocada, y la distancia focal es un parámetro que relaciona el tamaño de la imagen con la distancia del objeto. En el modelo de pinhole la distancia focal es la distancia de la apertura del pinhole hasta la pantalla. Este modelo fue propuesto por Alhacén en 987 d.C.
La calibración de la cámara se realiza mediante una corrección matemática de las desviaciones. Es importante ya que relaciona las medidas de la cámara con las medidas reales del mundo tridimensional, la relación entre los pixeles (unidad natural de la cámara) y los metros, centímetros o milímetros, (unidades del mundo físico).
El proceso de calibración de la cámara nos da el modelo de la geometría de la cámara y el modelo de distorsión de los lentes. Estos modelos nos darán los parámetros intrínsecos. El modelo de distorsión de lentes deriva del modelo propuesto por Fryer y Brown. [4]
Con diferentes imágenes de un mismo tablero de ajedrez realiza la calibración de la cámara, el sistema debe encontrar los valores de la matriz de parámetros intrínsecos y de la matriz de coeficientes de distorsión, la matriz de parámetros intrínsecos de la cámara permite transformar coordenadas 3D a 2D. [4]
2.2.2 Parámetros extrínsecos e intrínsecos de la cámara
Las ecuaciones Ecuación 2.2-1 y Ecuación 2.2-2 se obtienen del modelo del pinhole, donde
y es la coordenada del pixel en que representa una coordenada en del
mundo real, es la distancia focal en y es la distancia focal en y, la distancia focal es la distancia entre la pantalla donde se refleja la imagen y el pinhole. Y y es un posible desplazamiento del centro de coordenadas en la proyección de la pantalla. Con las ecuaciones Ecuación 2.2-1 y Ecuación 2.2-2 se obtiene la Ecuación 2.2-3 correspondiente a la matriz de parámetros intrínsecos [4].
Ecuación 2.2-1
13
Ecuación 2.2-3
Los lentes de las cámaras al no ser perfectos, introducen distorsión radial y tangencial. La distorsión radial surge como resultado de la forma de los lentes, mientras que la distorsión tangencial surge del proceso de ensamble de la cámara. La distorsión radial es muy baja en el centro de la imagen y aumenta hacia la periferia. En la práctica, esta distorsión es pequeña y puede ser caracterizada por los primeros términos de la expansión de series de Taylor alrededor de r=0. El término se utiliza solo cuando la cámara posee demasiada distorsión.
Ecuación 2.2-4
Ecuación 2.2-5
Donde y es la nueva posición corregida y y son la posición original del punto distorsionado.
La distorsión tangencial se debe a defectos de fabricación debido a que el lente no está exactamente paralelo al plano de la imagen. Se tienen dos nuevos parámetros, y .
Ecuación 2.2-6
Ecuación 2.2-7
En total son cinco coeficientes de distorsión. Todos estos parámetros son incluidos en la matriz de coeficientes de distorsión. Esta es una matriz de 5 x 1.
Ecuación 2.2-8
14 2.3 Corrección de perspectiva
2.3.1 Transformaciones geométricas
La manipulación de imágenes se puede dar de diferentes maneras incluyendo el cambio de tamaño uniforme y no uniforme (warping). Las funciones que pueden encoger, estirar y/o rotar imágenes son llamadas transformaciones geométricas. Para áreas planas hay dos tipos de transformaciones geométricas: transformaciones afines y transformaciones de perspectiva ó homografías. [4]
2.3.2 Transformación afín
Cualquier paralelogramo ABCD en un plano puede ser mapeado a otro paralelogramo A’B’C’D’ por medio de una transformación afín. Si el área de los paralelogramos es diferente de cero la transformada afín será definida por solo tres de los vértices de estos.
Imagen 2.3-1. Transformación afin
Una transformada afín ( Imagen 2.3-1) puede convertir un rectángulo a un paralelogramo, esta transformada puede comprimir, rotar y/o escalar, pero siempre debe mantener los lados de la imagen paralelos.
Esta transformación está basada en una matriz de 2 por 3, como se observa en la Ecuación 2.3-4. Una transformación afín es cualquier transformación que pueda ser expresada por la multiplicación de dos matrices seguida por la suma de un vector (Ecuación 2.3-2).
Ecuación 2.3-1
Ecuación 2.3-2
Ecuación 2.3-3
Ecuación 2.3-4
15 Donde:
Transformada
Coordenada en x original Coordenada en y original Parámetros de rotación Parámetros de desplazamiento
Cada imagen posee cuatro esquinas, o cuatro puntos en , como se observa en la Imagen 2.3-2. Solo tres de estos cuatro son necesarios, ya que con tres puntos se puede resolver el sistema de ecuaciones.
Imagen 2.3-2. Transformación afin
La Ecuación 2.3-5 muestra la ecuación general para cualquiera de los puntos. La Ecuación 2.3- 6 muestra el sistema de ecuaciones para cada una de las coordenadas de los tres puntos.
Así que .
Ecuación 2.3- 6
Finalmente se tiene un sistema de 6 ecuaciones con 6 incógnitas:
Ecuación 2.3- 7
Trabajando con transformadas afines pueden surgir dos tipos de situaciones, el primero es en el cual se tiene una imagen la cual se quiere transformar, y en el segundo se tiene una lista de puntos para los cuales se desea estimar el resultado de la transformación.
16
2.3.3 Transformación de perspectiva ó homografía
Las transformaciones de perspectiva (Imagen 2.3-3) ofrecen más flexibilidad, ya que pueden convertir un rectángulo a trapezoide, como los paralelogramos son también trapezoides, las transformadas afines puedes ser consideradas como un subconjunto de las transformadas de perspectiva. Esta es una transformación basada en una matriz de 3 por 3 [4].
Imagen 2.3-3. Transformación de perspectiva
La matriz es de la forma .
Ecuación 2.3- 8
Ecuación 2.3- 9
Dividiendo por , y por se obtiene la Ecuación 2.3- 10.
Ecuación 2.3- 10
A diferencia de la transformada afín donde se tenía un sistema de seis ecuaciones y seis incógnitas, tomando solo tres de los cuatros puntos, la transformada de perspectiva utiliza los cuatro puntos para resolver el sistema de ecuaciones. Así que . De la Ecuación 2.3- 10 se puede llegar a la Ecuación 2.3- 11 y Ecuación 2.3- 12.
Ecuación 2.3- 11
Ecuación 2.3- 12
17
Ecuaciones 2.3- 13
Una homografía planar es un mapeo proyectivo de un plano a otro. Este mapeo se expresa en términos de una multiplicación matricial. La función cvFindHomography de OpenCV toma una lista de coordenadas y devuelve la matriz de la homografía de estas coordenadas. Se necesita un mínimo de cuatro puntos. Esta función se describe en elAnexo 2.
OpenCV también posee una función para transformadas de perspectiva, esta función se llama cvWarpPerspective(), homologa a la función cvWarpAffine() utilizada para transformadas afines, tiene los mismos argumentos con la diferencia de que ahora la matriz es de 3 por 3. Esta función se describe en elAnexo 3. [4]
La corrección de distorsión y transformación de perspectiva que se explicaron en detalle en los numerales 2.2 y 2.3, se utilizan en la implementación del primer bloque (Imagen 2.1- 1), que corresponde a imagen homografía.
2.4 Identificación de objetos por colores
El ser humano es capaz de reconocer un objeto por su forma y color, de igual manera lo puede hacer un sistema de visión artificial. Los objetos tienen colores que los caracterizan, y con los cuales su identificación en el entorno se facilita. La iluminación ambiente modifica el color de los objetos, dificultando así el reconocimiento de los mismos a diferentes horas del día.
En el procesamiento de imágenes se utiliza normalmente el espacio de color RGB (rojo, verde y azul) para representar el color de un pixel. El modelo RGB permite representar una amplia gama de colores por medio de un arreglo o matriz de uno por tres, en este modelo la luz roja, verde y azul se suman para producir un color específico.
18
Cuando una de las componentes tiene una mayor intensidad, el color se aproxima al color de esta componente, y cuando dos componentes tienen una alta intensidad se obtiene un color secundario.
Imagen 2.4- 1 Modelo de Color RGB, tomado de [8]
En el procesamiento digital de imágenes cada pixel es representado en la memoria del computador como valores binarios de las componentes rojo, verde y azul. Hay diferentes maneras de representar esta tripleta, la notación digital utiliza 8 bits por canal, así cada componente de la tripleta se representa de 0 a 28-1, es decir de 0 a 255. Siendo 255 la mayor intensidad y 0 la menor.
La tripleta de componentes RGB se representa de la siguiente manera: [Rojo, Verde, Azul]. La representación para obtener los colores primarios es:
Rojo: [255, 0, 0]
Verde: [0, 255, 0]
Azul: [0, 0, 255]
Representación para colores secundarios:
Cian: [0, 255, 255]
Magenta: [255, 0, 255]
Amarillo: [255, 255, 0]
Representación si se obtiene intensidad máxima o mínima en todas las componentes:
Negro: [0, 0, 0]
Blanco: [255, 255, 255]
Las diferentes combinaciones de valores que se pueden obtener en la tripleta generan diferentes colores, de esta manera se puede representar cualquier color que se encuentre en la naturaleza.
19
Imagen 2.4- 2. Fotografía tomada a las 11AM. Con obstrucción parcial de nubes
Imagen 2.4- 3. Fotografía tomada a las 4PM
Como se observa en las Imagen 2.4- 2 y la Imagen 2.4- 3 el color puede variar con la iluminación solar, si se compara el valor RGB de un pixel que pertenece al suelo, a la marca roja o azul sobre el robot de la Imagen 2.4- 2 con el valor RGB de cualquiera de los mencionados en un diferente momento, se observa que este valor tiene variaciones en todas sus componentes.
Valores RGB para la Imagen 2.4- 2:
Marca Central: [108, 108, 224]
Marca Frontal: [224, 167, 52]
Superficie: [106, 126, 161]
Valores RGB para la Imagen 2.4- 3
Marca Central: [133, 113, 202]
Marca Frontal: [233, 192, 40]
Superficie: [142, 136, 137]
20
Las transformaciones de perspectiva también pueden generar cambios en los valores RGB, al estirar una imagen se puede observar que los colores pierden intensidad, disminuyendo así los valores RGB de la tripleta.
Para reconocer un color se debe tener un patrón de comparación, este patrón sería una tripleta RGB, este patrón es tomado en un momento , al realizar las comparaciones en momentos posteriores , los valores RGB tendrán variaciones muy pequeñas, considerando que la diferencia de tiempos entre cada uno de estos muy pequeña, no siendo mayor de 20 minutos la diferencia de tiempo entre el ultimo tiempo a comparar (mayor n) y el primero donde se tomo el patrón de muestra RGB ( .
OpenCV posee la función cv.Get2D, con la cual se encuentra en valor RGB de un pixel en una determinada coordenada, esta función se describe en el Anexo 4.
El sistema implementado posee una interfaz sencilla que permite al usuario ingresar los colores de cada uno de los objetos. El bloque Seleccionar colores (Imagen 2.1- 2), se encarga de establecer el color base de cada uno de los objetos.
2.5 Identificación del robot y la pelota
Los sistemas robóticos pueden utilizar marcas de colores para identificar su posición y dirección actual además de otros objetos en el entorno, las marcas poseen características que un robot es capaz de reconocer a través de su sistema sensorial. Estas pueden tener distintas formas como rectángulos, círculos y cuadrados, y estar acompañadas de información adicional como códigos de barras y colores. Una marca representa una posición fija y conocida respecto del sistema de referencia, que permite al robot localizarse en el entorno.
En el entorno se pueden encontrar marcas naturales, como una mesa, silla o cualquier objeto que sea parte de este entorno estructurado de manera natural, también hay marcas artificiales estas están diseñadas, y se disponen en el entorno específicamente para facilitar el proceso del localización del robot.
Las marcas anteriormente explicadas son marcas pasivas, estas marcas no son emisoras. Las marcas activas se basan en la medición de las direcciones de incidencia de tres o más marcas emisoras. En la mayoría de los casos estas marcas están constituidas por paneles luminosos, transmisores de radio frecuencia, LEDS infrarrojos, etc.
En el momento de reconocer las marcas en el entorno se pueden presentar oclusiones parciales, debido a la obstrucción en la visión por causa de otro objeto, o por la intensidad de la luz en el lugar que puede dificultar la visualización de la marca. Un sistema de visión artificial también debe ser capaz de identificar marcas ante la presencia de varias de estas del mismo tipo.
A cada pixel de una fotografía lo caracteriza un valor de RGB que define el color de este, así que una marca es la unión de varios pixeles que posean el mismo color. Sin embargo la iluminación ambiente no permite que una marca, sin importar su forma geométrica, posea un color constante, ya que el reflejo de la luz sobre esta puede ocasionar que unas partes se vean más claras u oscuras que otras.
Un objeto plano de plástico con incidencia de luz sobre éste puede tener un amplio rango de valores para cada una de las componentes de la tripleta RGB, con una tolerancia para cada valor se puede hallar un mayor número de pixeles que pertenezcan a este objeto.
21
entre sí, así que los valores de cada una de las componentes de la tripleta RGB de una de las marcas difieren en gran magnitud con cada una de las componentes de las otras marcas.
En la Imagen 2.5-1 se observa un entorno sencillo con pocos objetos donde se observa una plataforma móvil con dos marcas para la identificación de su posición y dirección.
Imagen 2.5-1. Plataforma móvil con marcas para la identificación de su posicion y dirección.
En cualquier entorno estructurado se pueden encontrar objetos con una misma función, o del mismo tipo. Por ejemplo en una oficina se pueden encontrar repetidamente varias marcas naturales como lo son mesas o varias sillas.
Suponiendo el entorno que se observa en la Imagen 2.5- 2, donde se observan cuatro diferentes tipos de objetos, cada uno identificado con un color claramente diferenciado de los otros, se pueden identificar cuatro tipos de objetos, donde las azules y verdes se encuentran repetidamente en el entorno.
Imagen 2.5- 2. Diferentes tipos de objetos en un mismo entorno
Cada una de las marcas del robot es un conjunto de pixeles que se encuentran dentro de un rango determinado, donde el color de solo uno de los pixeles pertenecientes a la marca seleccionado previamente es el punto de referencia para determinar el rango de tolerancia.
Una sola marca, como la que se observa en la Imagen 2.5- 3, es un conjunto de coordenadas o pixeles con valor RGB que se encuentren dentro del rango, sin tomar en cuenta que estos sean pixeles adyacentes. Esto se puede hacer si y solo si se tiene la seguridad de que solo hay una marca de este tipo.
22
La posición de una marca, está dada por el punto medio de ésta sin importar su estructura geométrica y suponiendo que esta es plana. Una vez se tiene el conjunto de coordenadas se encuentra en promedio de las coordenadas y que se encuentren en el umbral de color. Este será el punto medio del objeto. Así para la Imagen 2.5- 3 el cálculo sería de la siguiente manera:
Ecuación 2.5- 1
Ecuación 2.5- 2
Donde y corresponden a la posición del pixel medio en y en . es el número de coordenadas que cumplen con la condición o que se encuentra en el rango o umbral de color. y corresponden a las coordenadas en y de los pixeles que se encuentran en el umbral del color respectivamente. Y es el número total de pixeles se encuentran en el rango establecido o umbral.
Cuando se tienen varias marcas de un mismo tipo, como las marcas azules y verdes de la Imagen 2.5- 2, no se puede tomar un único grupo de coordenadas, y encontrar el promedio. Se debe tomar en cuenta la adyacencia entre coordenadas. De esta manera se establece una distancia en pixeles, la cual debe ser aproximadamente igual a la distancia entre los pixeles con mayor distancia que se encuentran dentro de una misma marca.
Si se encuentra más de una marca del mismo tipo, se realiza un barrido de coordenadas o pixeles y se almacenan aquellas que su tripleta de valores RGB se encuentre en el rango establecido, estas coordenadas son almacenadas en diferentes grupos según sus adyacencias, de tal manera el número de grupos de coordenadas será igual al número de marcas del mismo tipo.
En la Imagen 2.5- 4 se observa una imagen de 20 x 15 pixeles, con tres marcas en el entorno, todas del mismo tipo. Se deben almacenar las coordenadas en tres grupos según sus adyacencias, el almacenamiento consiste en la sumatoria en tres diferentes grupos de las coordenadas y , y una variable contadora para cada una de las marcas. Para varias marcas de un mismo tipo también se debe encontrar el promedio o punto medio.
Imagen 2.5- 4. Varios objetos de un mismo tipo en el entorno
23
encuentra a 4 menos pixeles y de otro pixel, significa que pertenecen al mismo grupo de coordenadas u objeto.
2.5.1 Proyección para objetos en diferentes planos
Imagen 2.5- 5
El robot iRobot Create tiene una altura de 8.9 cm, debido a esto es necesario proyectar las marcas de este que se encuentran en un plano superior al suelo. Se utiliza el modelo que se observa en la Imagen 2.5-5.
Donde:
: Altura del trípode
: Proyección de la altura del trípode en el borde de la cancha Altura del robot
: Distancia entre el trípode y la cancha
: Pixel posición en de la marca del robot, .
: Distancia entre la posición de marca encontrada ( y la coordenada real según la proyección.
Se recuerda al lector que los pixeles aumentan de izquierda a derecha, siendo el punto el pixel 720 en el eje coordenado
Suponiendo que se encontró la posición de la marca roja del robot y esta se encuentra en el pixel ( el pixel en corresponderá a se necesita hallar , para así hallar la verdadera posición de en el plano .
Ecuación 2.5- 3
Donde , corresponde a la coordenada real en el plano de .
24
El análisis teórico explicado en detalle en este capítulo, es implementado en el sistema en el bloque reconocimiento de las pelotas y el robot (Imagen 2.1- 3), este bloque toma el color de referencia de cada objeto, y retorna la posición de cada pelota y del robot.
2.6 Corrección del direccionamiento
Un robot posee una posición y una dirección hacia la cual se encuentra dirigido, una sola marca sobre un robot nos puede dar la posición pero no es suficiente para determinar la dirección, con dos marcas se puede encontrar la posición y determinar la posición como se observa en la Imagen 2.6- 1.
Imagen 2.6- 1. Plataforma móvil con marcas para la identificación de su posicion y dirección.
Se puede observar en la Imagen 2.6- 1 que la marca verde que se encuentra en centro determina la posición central del robot, y la marca azul la dirección. Cada marca y pelota se caracteriza por una coordenada o posición del pixel en la imagen adquirida del entorno, el pixel que se encuentra en el centro de la pelota o marca determina la posición de éste.
El robot busca estar en dirección hacia la pelota, mientras que éste no se encuentre en dirección hacia la pelota gira hacia la derecha o izquierda dependiendo de la posición de la pelota y se detiene cuando el robot finalmente se encuentre visualizando frontalmente la pelota.
Cada pelota y las dos marcas se representan por tres puntos en el plano, cuando el robot se encuentra en dirección hacia la pelota, los tres puntos son colineales, de tal manera si el robot no se encuentra en dirección a la pelota éste debe girar hasta que los tres puntos sean colineales. Dos puntos son colineales si pertenecen a la misma recta, las dos marcas sobre el robot lo son siempre, así que el robot debe alienar sus marcas con la pelota.
Con dos puntos se puede hallar una recta, como las dos marcas sobre el robot siempre son colineales y pertenecen a una misma recta, con estos dos puntos se halla la recta de la siguiente manera:
Dada la ecuación general de la recta:
Ecuación 2.6- 1
Y la pendiente:
Ecuación 2.6- 2
25
La recta divide el plano en dos semiplanos, al evaluar un determinado punto en la ecuación de la recta se identifica a cuál de los dos semiplanos pertenece el punto. Así que evaluando el punto que corresponde a la posición de la pelota en la ecuación de la recta que se encontró con los puntos que pertenecían a las marcas sobre el robot, se podrá determinar la dirección de giro del robot.
Ecuación 2.6- 3
Donde es la coordenada de posición de la pelota, y la coordenada de la posición de la marca sobre el robot que permite determinar la dirección de este. El punto de intercepción con el eje y siempre será igual a 0.
Si evaluando cada una de las variables en la ecuación se obtiene un valor igual a 0 significa que el punto es colineal, como se observa en la Ecuación 2.6- 4.
Ecuación 2.6- 4
Si al evaluar cada una de las variables en la ecuación se obtiene un valor mayor o menor a 0 significa que el punto no es colineal, es decir que no pertenece a la recta. Así que si el valor que se obtiene es positivo (para el caso de la Imágenes 2.6- 2 b.), el punto evaluado pertenece al semiplano inferior, y si es negativo al semiplano superior.
Ecuación 2.6- 5
Ecuación 2.6- 6
Así con la Ecuación 2.6- 5 y Ecuación 2.6- 6 se puede determinar la dirección de giro del robot.
Imágenes 2.6- 2. Sentido de giro según el semiplano donde se encuentre la pelota
26
Así que para solucionar este problema se debe tomar en cuenta la coordenada en x de cada una de las marcas del robot, de esta manera se puede conocer la dirección del robot, si la coordenada en x de la marca de dirección (marca azul) es mayor que la marca central, significa que el robot se encuentra en dirección hacia la derecha (Imagen 2.6-3), y si la coordenada en x de la marca central del robot es mayor que la coordenada en x de la marca de dirección, significa que el robot se encuentra en dirección hacia la izquierda (Imagen 2.6-4).
Imagen 2.6-3. Robot en direccion hacia la derecha
Imagen 2.6-4. Robot en direccion hacia la izquierda
Para el caso de la Imágenes 2.6- 2 a. no importa la dirección de giro ya que el ángulo es el mismo en cualquiera de los dos sentidos.
Para asegurar mayor eficiencia en la implementación del proyecto, no se utiliza cero como punto de referencia, sino se le da un rango de error, en este caso se considera que el robot se encuentra colineal a la pelota si se encuentra entre 20 y -20.
Las ecuaciones serían de la siguiente manera:
Si > y girar hacia la derecha
Si > y girar hacia la izquierda
Si > y ir hacia adelante
Si < y girar hacia la izquierda
Si < y girar hacia la derecha
Si < y ir hacia adelante
Si = girar hacia la derecha
27 Si
Ecuación 2.6- 8
Donde ( , ) es la coordenada destino que corresponde a la pelota que se va a recolectar.
Una vez se sabe hacia qué dirección el robot debe girar y suponiendo que el robot gira con velocidad constante, se puede determinar el tiempo de giro, primero se debe hallar el ángulo que debe girar, este ángulo se puede hallar ya que se tienen 4 puntos, cada par de puntos pertenece a una recta, la primera recta está dada por las dos marcas del robot , y la segunda entre la pelota y la marca central del robot .
Se necesita que el sistema éste centrado en , dado que la intersección de las dos rectas anteriormente mencionadas no está en , se encuentra una nueva coordenada para cada una de las variables cumpla la condición anteriormente mencionada, se realizan las siguientes operaciones:
Ecuaciones 2.6- 9
Con la siguiente ecuación se puede encontrar en ángulo entre las dos rectas en radianes.
Ecuación 2.6- 10
Finalmente se convierte en ángulo hallado en radianes a grados.
Ecuación 2.6- 11
Suponiendo que la velocidad de giro del robot es constante, y que para realizar un giro de 90° tarda 1.3 segundos:
Ecuación 2.6- 12
28
A continuación se evaluará la dirección de giro para cuatro posibles casos, si se desea obtener el tiempo de giro se debe calcular la Ecuación 2.6- 12.
Imagen 2.6- 5. Caso 1
Ecuaciones 2.6- 13
29 Pelota 1
(
Como es menor que 0 se realiza el giro hacia la izquierda.
Pelota 2
(
Como es mayor que 0 se realiza el giro hacia la derecha.
Pelota 3
(
Como es menor que 0 se realiza el giro hacia la izquierda.
Pelota 4
(
30
Imagen 2.6- 6. Caso 2
Ecuaciones 2.6- 14
31 Pelota 1
(
Como es menor que 0 se realiza el giro hacia la derecha.
Pelota 2
(
Como es mayor que 0 se realiza el giro hacia la izquierda.
Pelota 3
(
Como es menor que 0 se realiza el giro hacia la derecha.
Pelota 4
(
32
Imagen 2.6- 7. Caso 3
Ecuaciones 2.6- 15
33 Pelota 1
(
Como es menor que 0 se realiza el giro hacia la derecha.
Pelota 2
(
Como es mayor que 0 se realiza el giro hacia la derecha.
Pelota 3
(
Como es menor que 0 se realiza el giro hacia la izquierda.
Pelota 4
(
34
Imagen 2.6- 8. Caso 4
Ecuaciones 2.6- 16
35 Pelota 1
(
Como es menor que 0 se realiza el giro hacia la izquierda.
Pelota 2
(
Como es mayor que 0 se realiza el giro hacia la izquierda.
Pelota 3
(
Como es menor que 0 se realiza el giro hacia la derecha.
Pelota 4
(
Como es mayor que 0 se realiza el giro hacia la derecha.
36 2.7 Generación de trayectoria
2.7.1 Distancias entre cada par de nodos
Dados dos puntos y en , se puede hallar la distancia entre estos de la siguiente manera:
Ecuación 2.7- 1
Con esta ecuación se halla la distancia entre cada par de nodos, considerándose como nodos el robot y las pelotas. En la Imagen 2.7- 1 se observan las seis distancias que se deben hallar:
Imagen 2.7- 1
2.7.2 Posibles secuencias para realizar el trayecto
El robot será capaz de de localizar hasta tres pelotas que se encuentren en la cancha. De esta manera el robot y las tres pelotas representaran los nodos del grafo. El robot comenzará y finalizará su recorrido en el mismo punto, así tras localizar las pelotas regresará a su posición inicial. En la Tabla 2.7- 1 se observan los posibles recorridos que puede ejecutar el robot, hay 6 diferentes secuencias posibles.
Secuencia 1 0 1 2 3 0
Secuencia 2 0 3 2 1 0
Secuencia 3 0 1 3 2 0
Secuencia 4 0 2 3 1 0
Secuencia 5 0 2 1 3 0
[image:36.595.144.420.521.641.2]Secuencia 6 0 3 1 2 0
Tabla 2.7- 1
En las Imágenes 2.7- 2 se observan cada una de las secuencias de recorrido vistas anteriormente en la Tabla 2.7- 1. El recorrido total ( ) en cada secuencia es:
Secuencia 1:
37 Secuencia 2:
Ecuación 2.7- 3
Secuencia 3:
Ecuación 2.7- 4
Secuencia 4:
Ecuación 2.7- 5
Secuencia 5:
Ecuación 2.7- 6
Secuencia 6:
Ecuación 2.7- 7
Se puede apreciar que para cada distancia:
38
Secuencia 1. Secuencia 2.
Secuencia 3. Secuencia 4
Secuencia 5. Secuencia 6.
39
Así que se puede reducir el numero de posibles secuencia de recorrido de seis a tres ya que:
Ecuación 2.7- 9
Así mismo el recorrido total 3 será igual al 4, y el 5 al 6. Se tomarán así solamente los recorridos 1, 3 y 5.
2.7.3 Secuencia correspondiente al menor recorrido
Una vez se hallan las distancias entre cada par de nodos, y se tienen las posibles secuencias de recorrido, se procede a calcular la distancia total recorrida en cada una de las tres secuencias. Se encuentra la menor entre las 3 distancias, y la secuencia correspondiente a esta será la que utilizará el robot para su recorrido.
40 2.8 Seguimiento de la trayectoria
Una vez el robot realiza la corrección en su dirección y se encuentra orientado hacia la próxima pelota, calcula la distancia entre su posición actual y la posición de la próxima pelota a recoger, y se dirige en línea recta hacia su próximo destino durante un tiempo que depende de la distancia entre el robot y la pelota.
Suponiendo que la velocidad del robot es lineal. Se obtiene la siguiente tabla de distancia contra tiempo:
Distancia (m) Tiempo (s)
0,2 0,434
0,5 1,085
0,8 1,736
1,0 2,170
1,5 3,255
2,0 4,340
[image:40.595.90.504.198.572.2]3,0 6,510
Tabla 2.8- 1
Gráfica 2.8- 1
La distancia calculada por el sistema es en centímetros. Cuando el robot se encuentra a una distancia menor a un metro de su destino, calcula el tiempo exacto de aproximación:
Ecuación 2.8- 1
Donde corresponde al tiempo de aproximación, es la distancia en centímetros entre la coordenada actual y la coordenada destino y es el tiempo que tarda el robot en recorrer 1 metro, este tiempo equivale a 2.17 segundos.
La división entre 100 se realiza para pasar la distancia encontrada en centímetros a metros. 0,0 0,5 1,0 1,5 2,0 2,5 3,0 3,5
0 1 2 3 4 5 6 7
41
Cuando se encuentra a una distancia mayor a 3 metros, el robot seguirá una trayectoria en línea recta recorriendo 2 m que equivalen a un recorrido de 4.34 segundos.
Si no, si éste se encuentra a una distancia mayor a 2 metros el robot seguirá una trayectoria en línea recta recorriendo 1.3 m que equivalen a un recorrido de 2.821 segundos.
Y si la distancia es menor a 1.5, el robot realizará el cálculo del tiempo de recorrido en línea recta.
Imagen 2.8- 1
Imagen 2.8- 2
Imagen 2.8- 3
42
El iRobot Create posee dos encoders (Anexo 6). Los encoders son sensores que miden las revoluciones de un eje, permitiendo mediciones más exactas para la localización del robot. Estos sensores no fueron usados en esta implementación debido a que la precisión de los encoders del iRobot Create no es buena a comparación del robot Roomba, esto se debe también a que el iRobot Create es un robot de gama económica. La localización de la ubicación del robot se realizó enteramente por medio de procesamiento de imágenes con OpenCV.
2.8.1 Espacio de configuración
Para planificar la ruta a seguir de un robot es necesario tener la posición del robot. Se debe especificar la posición del robot en cada punto. La configuración de un sistema robótico es la especificación completa de la posición de cada punto del sistema. El espacio de configuración de un sistema robótico es el espacio de todas las posibles configuraciones del sistema. Así una configuración es simplemente un punto en el espacio de configuración. Los grados de libertad de un sistema robótico es el número mínimo de parámetros que se necesitan para especificar una configuración.
Imagen 2.8- 1. Espacio de Configuración
43
Ecuación 2.8- 2
Para un robot circular el espacio de configuración puede ser representado en una vez el sistema coordenadas se haya definido. Se observa que el sistema robótico posee tres grados de libertad, ya que puede desplazarse en dirección y del sistema de coordenadas, y también puede girar sobre su propio eje (orientación).
2.8.2 Robots móviles
La llanta ha sido el mecanismo de locomoción más utilizado en robots móviles y vehículos. Normalmente no es una preocupación el balance en los robots móviles ya que están diseñados para que en todo momento todas las ruedas estén en contacto con el suelo. Se encuentran muchas posibles configuraciones y clasificaciones para las ruedas de los robots, se pueden clasificar según el número de ruedas que estos posean, el número de ruedas afecta la cinemática del robot. Otra manera de clasificación según la disposición de las ruedas en robots móviles es en diferencial, síncrono, tipo triciclo y tipo carro.
Un sistema diferencial está compuesto por dos ruedas y un eje común, donde cada rueda se controla independientemente. Es uno de los sistemas o esquemas más sencillos, puede desplazarse en línea recta, arco y girar sobre su propio eje. Utiliza una o dos ruedas adicionales para mantener el balance, estas formas tienen diferentes nombres dependiendo de las ruedas por ejemplo: Con tres ruedas se denominan triángulo, este esquema puede presentar problemas de estabilidad y con cuatro ruedas se conoce como diamante. Para que el movimiento sea recto se requiere que las ruedas vayan a la misma velocidad.
En la Imagen 2.8- 2 se observa un sistema robótico diferencial, con 3 ruedas o triangulo. Es un sistema de dos ruedas diferenciales centradas con un tercer punto de contacto para mayor estabilidad y control.
Imagen 2.8- 2. Robot diferencial
Los robots diferenciales poseen restricciones holonómicas, sus grados de libertad desacoplados, se puede desacoplar la posición de orientación rotando sobre su propio eje.
44
3. ESPECIFICACIONES
3.1 Limitaciones de hardware
1) Clima: no funciona con lluvia
2) Iluminación: en ambientes muy oscuros o en superficies que reflejen demasiada luz no se garantiza correcto funcionamiento. No es aconsejable trabajar tampoco en áreas con sombra parcial.
3) Zonas limítrofes de la cancha no son procesadas por el sistema: debido a la posición en la que se encuentra la cámara, cuando el robot se encuentra en los límites de la cancha, las marcas del robot que se encuentran sobre un plano superior al suelo pueden no ser tomadas en cuenta debido a la corrección de perspectiva realizada por el sistema. Si un objeto se encuentra muy cerca de los bordes laterales o superior, y no se encuentra en el plano del suelo (Z=0), se perderá la información de la imagen. Así que se recomienda escoger un área mayor a la cancha o superficie donde se desea operar el robot.
4) Batería, el robot prototipo es controlado por un portátil el cual posee actualmente una batería interna que es capaz de funcionar durante máximo dos horas, una vez el computador portátil se descargue, el robot ya no recibirá más ordenes así que se detendrá. La batería del robot tiene una mayor duración, de aproximadamente 6 horas en funcionamiento.
5) Terreno, se recomienda terrenos planos, sin grandes grietas donde el robot se pueda quedar atascado, ya que el prototipo se basa en la plataforma robótica comercial iRobot Create y cuenta con sus mismas limitaciones.
3.2 Diagrama de flujo
A B C
D
F E
45
H
I J K
L M
N O O P Q
R
S T
U
V W X
Y
46
El anterior corresponde al diagrama de flujo base para la implementación del código del sistema Robot Caddie. Este podría verse como una versión extendida del diagrama de bloques explicado en el capítulo 2.1.
La explicación detallada de este diagrama de flujo se encuentra en el capitulo 4.2.
4. DESARROLLO
4.1 Tecnología utilizada
Imagen 4.1- 1. Implementación
El proyecto fue implementado en la plataforma comercial iRobot Create de la empresa iRobot, este se puede programar por medio de ROS, esta es una librería que permite desarrollar aplicaciones robóticas. El robot se comunica hacia uno de los puertos USB del computador, por donde es capaz de recibir información de sus sensores, y enviar órdenes a sus motores.
El dispositivo utilizado para la obtención de imágenes es un celular con sistema operativo Android, un Samsung Galaxy S3, el cual utiliza la aplicación gratuita IP Webcam para transmitir la imagen desde el celular hacia el computador que manipula el robot con ROS. Esta transmisión fue realizada por medio de una conexión de área local inalámbrica utilizando un router portátil el cual tiene como fuente de alimentación el computador que manipula al robot, esta alimentación utiliza dos puertos USB del equipo. El router y el computador utilizan un cable de red para conectarse.
Las conexiones descritas anteriormente expuestas se observan en la Imagen 4.1- 1. El computador posee conexión cableada hacia el router y el robot, y la comunicación entre el computador y el celular se realiza inalámbricamente utilizando el router.
47
realiza el procesamiento de la imagen adquirida por medio del celular Samsung Galaxy utilizando la aplicación IP Webcam (Anexo 8). Finalmente para dar una orden externa de inicio se utiliza escritorio remoto (Anexo 9), para así manipular el computador que controla el robot utilizando sistema operativo Linux desde otro computador también conectado a la red local.
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.
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.
49
[image:49.595.240.359.512.627.2]
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.
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).
51
5. ANÁLISIS DE RESULTADOS
5.1 Modelo a escala
Para facilitar la realización de pruebas se propuso un modelo a escala del escenario real.
Imagen 5- 1. Area real de un campo de tenis
En la Imagen 5- 1 se observan las medidas reales para media cancha de tenis y las pelotas, esta será el área máxima en la cual opera el robot. Para esta área la cámara realiza capturas a la máxima resolución posible, , que es igual a MP, que corresponde a la máxima resolución permitida por la cámara del celular que se está utilizando.
Para facilitar el desarrollo de las pruebas se realiza un modelo a escala, el cual permite trabajar en un área menor, con capturas de cámara en menor resolución. Si se trabaja con un resolución de , que equivale a MP, el area total del modelo a escala seria de (Imagen 5- 2).
Imagen 5- 2. Modelo a escala de una cancha de tenis
La cámara se localizará en el centro del lado más largo para garantizar que este lado equivalga a 960 pixeles. La pelota de tenis será reemplazada por una pelota de caucho (saltarina), una pelota de tenis tiene un diámetro de 6.5 cm y una pelota de caucho 2 cm.
52
escala propuesto es 3.4 veces más pequeño que el real, así que cada marca sobre el robot en el modelo a escala tendrá una área máxima de . Actualmente se utilizan dos marcas cada una con un área de que corresponde a un rectángulo de por .
El suelo en cual se realizaron las pruebas fue un suelo de baldosa pequeña que se puede observar en la Imagen 2.4- 2 y la Imagen 2.4- 3. Este suelo tenia pequeños desniveles para el control de aguas de lluvia. Esta superficie pertenece a una terraza en un sexto piso, frecuentemente habían fuertes corrientes de aire que hacían mover al trípode.
5.2 Linealización de variables
Tras realizar varias mediciones de distancia contra tiempo con el robot iRobot Create, se llega a la conclusión de que se puede tomar aproximar a un sistema lineal en el cual el robot es capaz de recorrer un metro en línea recta en 2.17 segundos. De la misma manera encontró que para realizar un giro de 90⁰ tarda 1.3 segundos.
Por lo tanto:
Ecuación 5- 1
Ecuación 5- 2
Donde es la velocidad en linea recta y es la velocidad angular.
5.3 Identificación del robot y las pelotas
En la Imagen 5.3- 1 se observa el modelo a escala, en esta pantalla el sistema solicita al usuario ingresar manualmente las esquinas que delimitarán el área de operación del robot.
Imagen 5.3- 1
53
En la Imagen 5.3- 2 Se solicita al usuario seleccionar una de las pelotas.
Imagen 5.3- 2
Seguidamente el sistema solicita seleccionar la marca central (Imagen 5.3- 3) y frontal (Imagen 5.3- 4) del robot, de esta manera será capaz de ubicar estas marcas durante todo el recorrido, debido a que el sistema guarda en memoria el valor RGB que se seleccionó.
Imagen 5.3- 3
54
Esta es la ubicación inicial del robot y las pelotas en centímetros:
Resultados Teóricos
Coordenada x (cm) Coordenada y (cm)
Ro (Robot) 23 285
P1 (Pelota 1) 111 94
P2 (Pelota 2) 248 49
P3 (Pelota 3) 211 245
[image:54.595.149.448.140.260.2]Ro (Robot) 23 285
Tabla 5.3- 1
A continuación se observa la ubicación para cada uno de los puntos encontrados por el sistema:
Imagen 5.3- 5
Se recuerda al lector que el arreglo que se observa es de la forma:
[image:54.595.267.329.424.519.2]
Tabla 5.3- 2
En la siguiente tabla se observa la distancia equivalente en centímetros para cada una de las coordenadas.
Resultado Prácticos
Pixel x Pixel y Distancia x (cm) Distancia y (cm)
Ro 63 641 22,96875 284,8888889
P1 306 210 111,5625 93,33333333
P2 680 113 247,9166667 50,22222222
P3 580 554 211,4583333 246,2222222
[image:54.595.88.504.562.682.2]Ro 63 641 22,96875 284,8888889
Tabla 5.3- 3
55 Diferencia
Coordenada x (cm) Coordenada y (cm)
Ro 1,03125 -0,888888889
P1 -1,5625 1,666666667
P2 1,083333333 -2,222222222 P3 -1,458333333 -1,222222222
[image:55.595.189.408.69.191.2]Ro 1,03125 -0,888888889
Tabla 5.3- 4
5.4 Escenario de pruebas
Así que con las velocidades anteriormente halladas y suponiendo un sistema lineal, se plantea el escenario de pruebas 1 que corresponde a la Imagen 5.4- 1, en este escenario de pruebas el robot se encuentra dentro del campo de juego, y hay 3 pelotas en el campo.
Las pelotas y el robot poseen las siguientes posiciones en pixeles:
Se tienen las siguientes distancias en centímetros:
193.45 cm
En la siguiente tabla se encuentran los tiempos teóricos y prácticos
Tiempos Teórico Práctico
Tiempo de giro de (aprox. 0) 0 0
Tiempo de trayectoria en línea recta de 5.14 s 37 s
Tiempo de giro de (105º) 1.57 s 12 s
Tiempo de trayectoria en línea recta de 2.08 s 3 s
Tiempo de giro de (29º) 0.44 s 10 s
Tiempo de trayectoria en línea recta de 2.32 s 3 s
Tiempo de giro de (99º) 4.19 s 11 s
Tiempo de trayectoria en línea recta de 6.48 s 11 s
Tiempo total teórico = 17,26
56
Imagen 5.4- 1
Se puede observar que hay una gran diferencia de tiempos entre el cálculo teórico y resultado práctico, esto se debe a que en el cálculo teórico no se toman en cuenta los detenimientos para corregir la dirección. Este cálculo supone que la trayectoria del robot es perfectamente recta, y no como pasa en la práctica en donde se requieren varias correcciones de dirección. El mayor tiempo práctico se dio en d1, esto se debió a que la distancia (237.26 cm) requería realizarse en tres tramos, retrasando así el sistema debido a la captura y procesamiento de las de imágenes adicionales.
En el CD se encuentra el video correspondiente al escenario analizado anteriormente, el nombre del video es Video 1.
5.5 Un producto
5.5.1 Viabilidad como producto
Se realizó un estudio sobre la viabilidad de este proyecto como producto, en colaboración con la Universidad Complutense de Madrid, este análisis se encuentra en detalle la carpeta Viabilidad como producto, que se encuentra en el CD presentado para el trabajo de grado.
57
Se propone una sociedad limitada, con un aporte inicial de 40000 euros, en la cual el valor unitario del producto para venta al público es de 600 euros.
Este valor unitario de 600 euros, supone una implementación sobre el iRobot Create, el cual tiene un valor de 200 euros aproximadamente. El valor unitario podría disminuir si se fabricarse un robot con solamente los sensores necesarios para la implementación, ya que el iRobot Create, tiene varios sensores que debido a su baja sensibilidad no pueden ser usados en el desarrollo del proyecto.
Se establece un valor de ventas requeridas, en función de gastos de personal y según la retribución económica que se estima para cada socio. Basado en esto y en el comportamiento de los compradores en los diferentes tiempos del año se propuso un estimado de ventas.
En la siguiente gráfica se observa la evolución de las cifra de ventas desde el año 2012 hasta el año 2014, siendo siempre las ventas requeridas menores a las ventas estimadas, para lograr un equilibrio en la empresa.
Gráfica 5.5- 1
Se realizó una estimación de los activos corrientes (Comprende el dinero y otros recursos y derechos que razonablemente se espera convertir en efectivo, consumir o vender en un periodo que no exceda de un año) y pasivos corrientes (Son todas las obligaciones, apreciables en dinero, a cargo de la empresa, las cuales deberán cancelarse en un plazo no mayor de un año, o dentro del periodo contable).
Y finalmente se realizó el presupuesto de financiación de la empresa basándose en el capital social, dotación de reservas, volumen de reservas, fondos propios, subvenciones y financiación externa. Tras el análisis financiero se logra llegar a un endeudamiento de cero, en el año 2014.
0 50.000 100.000 150.000 200.000 250.000 300.000 350.000 400.000 450.000
2012 2013 2014
Evolución de las cifra de ventas
58 5.5.2 Desarrollos futuros
El proyecto de grado presentado es un prototipo de lo que podría llegar a ser un producto algún día. Si este llegase a ser un producto, podría:
Tener diferentes modos de operación:
o Entrenamiento: En este modo recoge una gran cantidad de pelotas que se encuentran fuera y dentro del área de la cancha, se pueden implementar algoritmos que permitan identificar las áreas en donde se encuentran las mayores concentraciones de pelotas según los eventos pasados. Este modo sería capaz de recolectar las pelotas mientras el jugador este jugando.
o Partido: En este modo el robot recorre las trayectorias a una mayor velocidad en solamente el área de juego (la cancha), recolectando un máximo de dos pelotas en cada trayectoria, este número es la cantidad de servicios reglamentarios por cada pelota en juego. Ya que la mayoría de las pelotas estarán en la parte frontal de la cancha, cerca de la malla.
Implementación de robótica cooperativa. En cualquiera de los dos modos descritos anteriormente se podrían utilizar varios robots que se encuentren operando en diferentes áreas de la cancha, para así llegar a tener un mayor cubrimiento del campo de juego y tener un producto más eficiente.
El robot adquirido (iRobot Create), posee muchos sensores que no fueron utilizados, para el desarrollo como producto de este proyecto se podría diseñar un robot desde la parte mecánica, el cual posea las solamente las características necesarias.