ROBOT CADDIE (ROCA)

69
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 2013

Transcript of ROBOT CADDIE (ROCA)

Page 1: ROBOT CADDIE (ROCA)

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

2013

Page 2: ROBOT CADDIE (ROCA)

2

Page 3: ROBOT CADDIE (ROCA)

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

ING. FRANCISCO CALDERÓN, M.Sc

Page 4: ROBOT CADDIE (ROCA)

4

ARTÍCULO 23 DE LA RESOLUCION No. 13 DE JUNIO DE 1946

“La universidad no se hace responsable de los conceptos emitidos por sus alumnos en sus

proyectos de grado. Solo velará porque no se publique nada contrario al dogma y la moral

católica y porque los trabajos no contengan ataques o polémicas puramente personales. Antes

bien, que se vea en ellos el anhelo de buscar la verdad y la justicia”.

Page 5: ROBOT CADDIE (ROCA)

5

AGRADECIMIENTOS

Mi objetivo personal al iniciar mis estudios universitarios consistía en que una vez concluidos

mis estudios sería capaz de llevar a la realidad muchos proyectos e ideas que había desarrollado

durante mi vida, basada en las necesidades que había identificado en diferentes entornos. La

carrera de ingeniería electrónica me brindó las herramientas teóricas y prácticas básicas para el

desarrollo de prototipos de nuevos productos, este fue mi principal objetivo al iniciar mis

estudios universitarios y puedo decir con seguridad que no solamente me ayudó a volver

tangibles mis ideas, sino también me permitió ser más perceptiva con mi entorno, ayudándome

a generar más ideas innovadoras y creativas.

Page 6: ROBOT CADDIE (ROCA)

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

5.4 Escenario de pruebas ..................................................................................................55

Page 7: ROBOT CADDIE (ROCA)

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

- Análisis de viabilidad

Page 8: ROBOT CADDIE (ROCA)

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.

Implementar un algoritmo que planifique la estrategia de aproximación

Implementación de los algoritmos en una plataforma robótica comercial.

Page 9: ROBOT CADDIE (ROCA)

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:

Diagrama de bloques 2.1- 1

Page 10: ROBOT CADDIE (ROCA)

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.

Imagen 2.1- 3

Page 11: ROBOT CADDIE (ROCA)

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

Este procedimiento se repite hasta que el robot haya alcanzado cada una de las pelotas.

Page 12: ROBOT CADDIE (ROCA)

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

Ecuación 2.2-2

Page 13: ROBOT CADDIE (ROCA)

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

Donde corresponde a los coeficientes de distorsión.

Page 14: ROBOT CADDIE (ROCA)

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

Ecuación 2.3-5

Page 15: ROBOT CADDIE (ROCA)

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.

La librería utilizada para el procesamiento de imágenes es OpenCV, esta es una librería libre

para desarrollos de visión artificial. OpenCV posee varias funciones para encontrar la matriz de

transformación afín esta se llama cvWarpAffine(), la cual se define en el Anexo 1. [4]

Page 16: ROBOT CADDIE (ROCA)

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

Con la Ecuación 2.3- 11 y Ecuación 2.3- 12 se llega a un sistema con ocho ecuaciones y ocho

incógnitas que se observa en las Ecuaciones 2.3- 13.

Page 17: ROBOT CADDIE (ROCA)

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 el Anexo 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 el Anexo 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.

El modelo RGB suma los tres haz de luz (Imagen 2.4- 1) para obtener el espectro final del color.

Con una intensidad cero para cada una de las tres componentes se obtiene el color negro, ya que

este representa la ausencia de luz. Y el blanco se obtiene con suma de los tres colores.

Page 18: ROBOT CADDIE (ROCA)

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.

La dirección, la intensidad y el color de la luz de ambiente influyen en el aspecto del objeto de

interés. Los cambios en la iluminación global son con frecuencia un reto en las escenas al aire

libre. Si se toma una foto de un campo de fútbol de pasto sintético a diferentes horas del día, las

componentes RGB de la cancha pueden variar drásticamente, la componente verde será la de

mayor intensidad todo el tiempo, pero los valores de la tripleta tendrán variaciones

considerables.

Page 19: ROBOT CADDIE (ROCA)

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]

La intensidad solar no permanece constante durante largos periodos de tiempo, pero si se

tomasen dos fotos de un mismo objeto con un pequeño lapso de tiempo entre las capturas de

estas dos fotos hay gran probabilidad de que el valor RGB del pixel no tenga una gran

variación. Las nubes pueden crear sombras momentáneas que pueden generar cambios abruptos

en los valores RGB de un pixel de un objeto.

Page 20: ROBOT CADDIE (ROCA)

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.

Cuando se poseen diferentes marcas de diferentes colores, para facilitar su reconocimiento e

identificación es importante que los colores de estas marcas estén claramente diferenciados

Page 21: ROBOT CADDIE (ROCA)

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.

Imagen 2.5- 3. Una sola marca u objeto

Page 22: ROBOT CADDIE (ROCA)

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

En la Imagen 2.5- 4 el área de cada uno de los objetos es de 4 x 4 pixeles así que si un pixel es

adyacente a otro por otro por una distancia de 4 ó menos pixeles en y en . Si un pixel se

Page 23: ROBOT CADDIE (ROCA)

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 .

Esta proyección se realiza solamente para las coordenadas en de las dos marcas sobre el robot.

Page 24: ROBOT CADDIE (ROCA)

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

Donde y son las coordenadas de las marcas que se encuentran sobre el robot.

Page 25: ROBOT CADDIE (ROCA)

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

Sin embargo la ecuación de la recta no especifica la dirección del robot, o hacia donde esta esté

orientado, esto es importante ya que si se observa la Imágenes 2.6- 2 c., donde el robot se

encuentra en dirección opuesta a su destino, este igualmente giraría hacia el lado derecho, pero

girar hacia este lado no sería la respuesta correcta, ya que claramente es más corto si este gira

hacia la izquierda.

Page 26: ROBOT CADDIE (ROCA)

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

Ecuación 2.6- 7

Page 27: ROBOT CADDIE (ROCA)

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

Donde es el tiempo de giro según el ángulo calculado y es el angulo en grados.

Page 28: ROBOT CADDIE (ROCA)

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

Se evalúa la coordenada de cada una de las pelotas para determinar el semiplano al que

pertenece y así mismo la dirección de giro.

Page 29: ROBOT CADDIE (ROCA)

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

(

Como es mayor que 0 se realiza el giro hacia la derecha.

Page 30: ROBOT CADDIE (ROCA)

30

Imagen 2.6- 6. Caso 2

Ecuaciones 2.6- 14

Se evalúa la coordenada de cada una de las pelotas para determinar el semiplano al que

pertenece y así mismo la dirección de giro.

Page 31: ROBOT CADDIE (ROCA)

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

(

Como es mayor que 0 se realiza el giro hacia la izquierda.

Page 32: ROBOT CADDIE (ROCA)

32

Imagen 2.6- 7. Caso 3

Ecuaciones 2.6- 15

Se evalúa la coordenada de cada una de las pelotas para determinar el semiplano al que

pertenece y así mismo la dirección de giro.

Page 33: ROBOT CADDIE (ROCA)

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

(

Como es mayor que 0 se realiza el giro hacia la izquierda.

Page 34: ROBOT CADDIE (ROCA)

34

Imagen 2.6- 8. Caso 4

Ecuaciones 2.6- 16

Se evalúa la coordenada de cada una de las pelotas para determinar el semiplano al que

pertenece y así mismo la dirección de giro.

Page 35: ROBOT CADDIE (ROCA)

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.

En este capítulo se explico en detalle como mediante la colinealidad de las marcas del robot y el

punto destino el robot es capaz de identificar el sentido de giro. Por medio del bloque corrección

de dirección (Imagen 2.1- 6), el robot busca estar encaminado hacia el punto destino.

Page 36: ROBOT CADDIE (ROCA)

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

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:

Ecuación 2.7- 2

Page 37: ROBOT CADDIE (ROCA)

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:

Ecuaciones 2.7- 8

Page 38: ROBOT CADDIE (ROCA)

38

Secuencia 1.

Secuencia 2.

Secuencia 3.

Secuencia 4

Secuencia 5.

Secuencia 6.

Imágenes 2.7- 2

Page 39: ROBOT CADDIE (ROCA)

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.

En este capítulo se analizaron las posibles secuencias del robot, y finalmente se mostró la

manera de obtener el menor trayecto de recorrido. En el bloque generación de la secuencia de

las coordenadas para el trayecto (Imagen 2.1- 4), se puede observar que las entradas de este

bloque corresponde a la ubicación de las pelotas y el robot, y la salida es un matriz con la

secuencia del trayecto a seguir.

Page 40: ROBOT CADDIE (ROCA)

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

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

Dis

tan

cia (

m)

Tiempo (s)

Page 41: ROBOT CADDIE (ROCA)

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

Para encontrar la distancia actual (del robot) y de la posición destino, el sistema usa el bloque

hallar distancia en centímetros entre la posición actual y destino (Imagen 2.1- 5). Seguidamente en

el bloque avance en línea recta (Imagen 2.1- 7), el sistema evalúa la distancia actual y destino, y

según esta distancia se recorre la distancia correspondiente.

Page 42: ROBOT CADDIE (ROCA)

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

En la Imagen 2.8- 1 se observa el espacio de configuración donde el robot se puede desplazar

fácilmente debido a la ausencia de obstáculos. La localización del robot la define el centro de

este , si se conoce el radio del robot, se puede determinar de la configuración

el conjunto de puntos ocupados por el robot. Con la notación se hará referencia a este

conjunto de puntos.

Page 43: ROBOT CADDIE (ROCA)

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.

En el Anexo 6 se puede encontrar más información sobre plataformas móviles diferenciales.

Page 44: ROBOT CADDIE (ROCA)

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

G

Page 45: ROBOT CADDIE (ROCA)

45

H

I

J

K

L

M

N

O

O

P

Q

O

R

S

T

U

V

W

X

Y

Z

Page 46: ROBOT CADDIE (ROCA)

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.

En los anexos se podrá ver en detalle el software y hardware utilizado en la implementación.

ROS (Anexo 5) se encarga de controlar el robot irobot Create (Anexo 6). OpenCV (Anexo 7)

Page 47: ROBOT CADDIE (ROCA)

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.

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

Page 48: ROBOT CADDIE (ROCA)

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.

Page 49: ROBOT CADDIE (ROCA)

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

Page 50: ROBOT CADDIE (ROCA)

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).

Page 51: ROBOT CADDIE (ROCA)

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.

Debido a que no se puede realizar un modelo a escala del robot, las marcas que hay sobre este

serán reducidas en escala también, en el modelo real, el área superior circular total de robot es

de , cada una de las marcas tendrá un área máxima de . El modelo a

Page 52: ROBOT CADDIE (ROCA)

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

En las imágenes a continuación se observa la transformación de perspectiva u homografía ya

aplicada. Se pueden observar tres imágenes binarias, en las cuales se muestran en color blanco

los objetos del entorno identificados por el sistema que pertenecen a las pelotas o a las marcas.

Page 53: ROBOT CADDIE (ROCA)

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

Imagen 5.3- 4

Page 54: ROBOT CADDIE (ROCA)

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

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:

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

Ro 63 641 22,96875 284,8888889 Tabla 5.3- 3

Finalmente en la siguiente tabla se puede observar la distancia en centímetros que hay entre el

punto calculado por el sistema y la ubicación real:

Page 55: ROBOT CADDIE (ROCA)

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

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

Tiempo total práctico = 87 s

Page 56: ROBOT CADDIE (ROCA)

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.

Basado en el comportamiento de cinco diferentes empresas españolas en el sector de la robótica,

se realizó un diagnóstico del mercado tomando como referencia el comportamiento de estas

empresas en los últimos cuatro años. Con esta información fueron hallaron los ratios de rotación

los cuales miden los rendimientos originados por los activos que obtiene en un período una

entidad.

Page 57: ROBOT CADDIE (ROCA)

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

Ventas requeridas Ventas estimadas

Page 58: ROBOT CADDIE (ROCA)

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.

Una interfaz amigable al usuario y visualmente agradable, que permita ingresar parámetros para

el funcionamiento del sistema.

Page 59: ROBOT CADDIE (ROCA)

59

6. CONCLUSIONES

El software abierto para el libre desarrollo, permite desarrollar productos innovadores e impulsa el avance

tecnológico en diferentes áreas, ya que al ser gratuito tiene mayor fuerza de investigación y desarrollo.

Tanto ingenieros como entusiastas son capaces de desarrollar productos y servicios por medio del

software libre, esta es una herramienta muy valiosa para la creación de nuevas empresas con base

tecnológica, debido a que se elimina el pago de licencias. La librería de código abierto OpenCV para visión artificial, puede ser utilizada con diferentes lenguajes

de programación (C, C++, java y python). OpenCV cuenta con una gran comunidad de usuarios, por lo

tanto se encuentran muchas ideas y mejoras disponibles, la mayoría de desarrollos encontrados utilizan

C++. El lenguaje de programación que se utilizó en este trabajo de grado fue python, inicialmente se

programó la parte correspondiente a visión artificial en C++, pero debido a que ROS solamente permite

su manejo con python, se determinó realizar el desarrollo completo del trabajo de grado en python.

Python permite una mayor simplicidad con respecto a C++, las principales ventajas fueron la eliminación

de la declaración de variables, el permitir obtener diferentes valores de salida en una sola función sin

tener estos que estar dentro de un arreglo matricial y la organización del código, ya que no se requiere el

uso de llaves sino se utiliza la indentación, lo cual permite seguir el flujo del programa de una manera

más sencilla. El uso de ROS (Sistema Operativo Robótico) como herramienta para el control de la plataforma móvil

entorpeció el inicio del trabajo de grado, debido a su complejo modo de operación. Anteriormente en un

proyecto basado en el robot iRobot Create utilizando Matlab como herramienta de programación, se

evidenció una interfaz más sencilla, y que permitía un rápido entendimiento en su manejo. Sin embargo,

una vez se entiende la arquitectura de grafos de ROS, se puede manipular sin mayores complicaciones. Las comunidades de desarrolladores de OpenCV y ROS fueron una gran ayuda en el desarrollo del

proyecto. En repetidas ocasiones, preguntas relacionadas a la programación del open source y debates

específicos de éste proyecto en foros web, fueron muy oportunos para la solución de errores y

replanteamiento de ideas, pues se recibió una rápida retroalimentación por parte de esta comunidad que

desinteresadamente brinda ideas y enseña. Esta útil herramienta, fue la solución a los varios

estancamientos en los que el proyecto cayó durante la implementación. Actualmente formo parte de esta

comunidad que coopera en búsqueda de un más rápido desarrollo tecnológico, razón por la cual dejo

manuales y valiosa documentación sobre ROS en los anexos, los cuales pueden ser consultados para

realizar desarrollos en ROS por parte de nuevos usuarios.

La transmisión de imágenes por medio de una red local IP entorpece la continuidad de la operación del

robot, ya que cada vez que el sistema está capturando una imagen el sistema se detiene. Para reducir el

tiempo en el cual el sistema esté transmitiendo la imagen, se redujo la resolución de la imagen al mínimo

posible (0.7 megapíxeles). Sin embargo esto tiene un costo en el procesamiento de imágenes, ya que se

pierde precisión en los cálculos. La solución a este problema es el desarrollo de un sistema embebido el

cual no transmita una imagen inalámbricamente sino solamente los comandos hacia el robot, esta

implementación eliminaría la utilización del router, permitiría la manipulación de imágenes con mayor

resolución y agilizaría la continuidad de la operación del robot.

El celular utilizado tiene los recursos suficientes para procesar la imagen. Si el procesamiento se realizara

en el celular no sería necesario trasmitir imágenes sino solamente la información necesaria para el

funcionamiento del robot (dirección y tiempo de avance o giro).

Los cambios en la iluminación global son con frecuencia un reto en las escenas al aire libre. La

dirección, intensidad y el color de la luz ambiente influyen en el reconocimiento de los objetos. Para

contrarrestar cambios muy bruscos en la iluminación, el sistema permite cambiar el patrón de color cada

vez que se considere necesario, sin necesidad de modificar el código (por medio de la interfaz). También

permite cambiar las pelotas por otras de diferente color y/o cambiar las marcas sobre el robot. El robot iRobot Create es una plataforma comercial robótica que posee varios sensores los cuales

permiten implementaciones en robótica móvil muy completas. Sin embargo para esta implementación no

se utilizaron estos sensores, debido a que ninguno de estos sensores era lo suficientemente sensible para

detectar la colisión con una de las pelotas. Los encoders tampoco fueron utilizados en esta

Page 60: ROBOT CADDIE (ROCA)

60

implementación debido a que la precisión de estos no es buena, esto se debe a que el iRobot Create es una

plataforma robótica comercial económica y no posee la precisión necesaria.

El desarrollo del proyecto como producto es viable. Tras realizar el análisis financiero del producto, se

llega a la conclusión de que se necesita una gran inversión inicial para continuar con la investigación y

desarrollo de este. Sin embargo esta cantidad puede ser retribuida en los siguientes tres años a la

inversión. Ser capaz de inventar e innovar no es suficiente, la capacidad de reconocer una necesidad en el

entorno es una ventaja, pero saber vender una idea y llevarla al mercado es la clave del éxito.

Page 61: ROBOT CADDIE (ROCA)

61

7. BIBLIOGRAFÍA Y FUENTES DE INFORMACIÓN

[1] Choset H. et al, “Principles of Robot Motion”, MIT Press, 2005.

[2] Collazo Cuevas José Iván, , Gorrostieta Hurtado Efrén, Jesús Carlos Pedraza Ortega, Ubaldo

Geovanni Villaseñor Carrillo, Rubén Alejandro Romero Torrez, Marco Antonio González

Aguirre, “Modelación de un Robot Móvil de Dos Ruedas con Tracción Diferencial”, 8º

Congreso Nacional de Mecatrónica, Noviembre 26 y 27, 2009. Veracruz, Veracruz.

[3] Comunidad de desarrolladores informáticos, Información sobre OpenCV, python y ROS.

<http://stackoverflow.com>

[4] Gary Bradski E Adrian Kaehler, “Learning OpenCV, Computer Vision with the OpenCV

library”, O’Reilly 2008

[5] Identificación de objetos, <http://es.wikipedia.org/wiki/Seguimiento_de_objetos>

[6] Jhonny A. Valencia, Alejandro Montoya, Luis Hernando Rios, M. Sc., “Modelo cinemático

de un robot móvil tipo diferencial y navegación A partir de la estimación odométrica”, Scientia

et Technica Año XV, No 41, Mayo de 2009. Universidad Tecnológica de Pereira. ISSN 0122-

1701.

[7] J. Ruiz Del Solar, R. Salazar, Universidad de chile, “Robots Móviles”,

<http://robotica.li2.uchile.cl/EL63G/capitulo4.pdf>

[3] Stuart J. Russell, Peter Norvig, “Inteligencia Artificial: Un Enfoque Moderno”, Prentice

Hall, 2004.

[8] Modelo de color RGB, <http://en.wikipedia.org/wiki/RGB_color_model>

[9] Thrun, Sebastian. Burgard, “Probabilistic Robotics”, Wolfram. Fox, Dieter.

[10] Universidad de Brown, Pagina web del grupo de investigación de robótica. <http://brown-

robotics.org/wp/>

[11] Universidad Javeriana, Wiki de OpenCV, <http://opencvjaveriana.wikispaces.com>

[12] Wasik, Z., Saffiotti, A., “Robust color segmentation for the RoboCup domain, Pattern

Recognition, 2002. Proceedings. 16th International Conference on (Volume:2 ), Page(s):651 -

654 vol.2

[13] Wiki de ROS, Robot Operating System. <http://www.ros.org/wiki/>

[14] Willow garage, Documentación de OpenCV, <http://opencv.willowgarage.com>

Page 62: ROBOT CADDIE (ROCA)

62

8. ANEXOS

Funciones de Opencv

Anexo 1: Definición de la función WarpAffine

Void cvWarpAffine(

const CvArr* src,

CvArr* dst,

const CvMat* map_matrix,

int flags = CV_INTER_LINEAR | CV_WARP_FILL_OUTLIERS,

CvScalar fillval = cvScalarAll(0)

);

Definición de la función cv.WarpAffine

Donde scr and dst son matrices o imágenes. Map_matrix es la matriz de dos por tres

anteriormente definida. Flags controla el método de interpolación y configuración, y fillval

selecciona el color con el cual se va a rellenar la imagen.

Anexo 2: Definición de la función FindHomography

Void cvFindHomography(

const CvMat * src_points,

const CvMat * dst_points,

cvMat* homography

);

Definición de la función cv.FindHomography

SrcPoints y dstPoints son arreglos de matrices de cuatro por dos, srcPoints son las cuatro

coordenadas origen (corresponde a las cuatro esquinas de la cancha seleccionadas en la imagen

original que está en perspectiva) y dstPoints son las cuatro coordenadas destino (corresponden a

las nuevas cuatro coordenadas de las esquinas para lograr un plano 2D del área de cancha

seleccionada). Y homography es una matriz de tres por tres donde se almacenara la matriz de

transformación.

Anexo 3: Definición de la función WarpPerspective

Void cvWarpPerspective(

const CvArr* src,

CvArr* dst,

const CvMat* map_matrix,

int flags = CV_INTER_LINEAR | CV_WARP_FILL_OUTLIERS,

CvScalar fillval = cvScalarAll(0)

);

Definición de la función cv.WarpPerspective

Src es la imagen de entrada en 3D (foto original), dst es la imagen de salida, la cual es un plano

en 2D donde se aplica la transformación, y map_matrix es la matriz de transformaciones que se

obtuvo anteriormente de la función cvFindHomography.

Page 63: ROBOT CADDIE (ROCA)

63

Anexo 4: Definición de la funcion Get2D

cvGet2D(

const CvArr* Image,

Int row x,

Int col y

);

Definición de la función cv.Get2D

Hardware y Software

Anexo 5: ROS

Robot Operating System, ofrece las librerías y herramientas necesarias para el desarrollo de

aplicaciones robóticas. En la wiki de ROS se encuentra la información necesaria desde cómo se

utilizan los comando en el terminal hasta como crear los paquetes. Proporciona abstracción de

hardware, controladores de dispositivos, bibliotecas, visualizadores, paso de mensajes, gestión

de paquetes y más. ROS está bajo licencia de código abierto (open source), licencia BSD.

Está basado en una arquitectura de grafos donde el procesamiento toma lugar en los nodos que

pueden recibir, mandar y multiplexar mensajes de sensores, control, estados, planificaciones y

actuadores, entre otros. La librería está orientada para un sistema UNIX, Ubuntu (Linux).

La universidad de Brown desarrolló varios drivers, la última versión se llama electric, pero se

utilizará una versión anterior que si estable, ésta se llama diamondback.

Esta es la instrucción para su instalación:

sudo apt-get install ros- diamondback-brown-drivers

Este contiene los siguientes paquetes: gscam, irobot_create_2_1, pcl_filter, rosbridge y

teleop_twist_keyboard. Donde irobot_create_2_1 es el driver para el Irobot create y

teleop_twist_keyboard tiene los paquetes necesarios para realizar la teleoperación del robot por

teclado.

Manejo básico de ROS

Crear el espacio de trabajo en ROS

Para confirmar que el paquete se ha instalado:

echo $ROS_PACKAGE_PATH

Debe mostrarse la localización del paquete:

/home/your_user_name/fuerte_workspace/sandbox:/opt/ros/fuerte/share:/opt/ros/fuerte/stacks

Page 64: ROBOT CADDIE (ROCA)

64

Navegando en ROS

Packages: Los paquetes son el nivel más bajo de la organización de software de ROS. Pueden

contener cualquier cosa: librerías, herramientas, ejecutables, etc.

Manifest: Es una descripción de un paquete. Su función más importante es definir dependencias

entre paquetes.

Stacks: Son colecciones de paquetes que forman una librería de nivel superior.

Stack Manifest: Estos son como los manifiestos normales, pero para los stacks.

Un paquete es un directorio con un archivo manifest.xml.

Un stack es un directorio con un archivo stack.xml.

Rospack y Rosstack

Permiten obtener información de los packages y stacks. A continuación se observa la función de

búsqueda (find) para paquetes y stacks.

$ rospack find [package_name]

$ rosstack find [stack_name]

Ejemplo:

$ rospack find roscpp

Mostrará lo siguiente:

YOUR_INSTALL_PATH/share/roscpp

ó,

/opt/ros/fuerte/share/roscpp

Page 65: ROBOT CADDIE (ROCA)

65

Roscd

Permite cambiar el directorio directamente a un stack o paquete (ó a un subdirectorio de

estos).

$ roscd [locationname[/subdir]]

Ejemplo:

$ roscd roscpp

Para verificar que se encuentra en el direcctorio del paquete roscpp:

$ pwd

Usted verá:

YOUR_INSTALL_PATH/share/roscpp

Las herramientas de ros, como roscd solo podrán encontrar paquetes que se listen en el

directorio $ROS_PACKAGE_PATH.

Para ver lo que se en cuentra en el directorio $ROS_PACKAGE_PATH:

$ echo $ROS_PACKAGE_PATH

Casos especificos para roscd

Roscd sin ningún argumento nos lleva a nuestro $ROS_WORKSPACE

$ roscd

$ pwd

Aparecerá:

/home/user/fuerte_workspace

Roscd log nos llevará a la carpeta donde ROS almacena los archivos de registro (log files).

$ roscd log

Page 66: ROBOT CADDIE (ROCA)

66

Rosls

Lista los elementos encontrados en un package o stack por su nombre en vez de por la ruta del

paquete.

$ rosls [locationname[/subdir]]

Ejemplo:

$ rosls roscpp_tutorials

Aparecerá:

bin cmake manifest.xml srv

Con la tecla Tab se puede completar el nombre del paquete o stack, aparecerán las opciones

existentes.

Creación de un paquete en ROS

Roscreate

Todos los paquetes de ROS contienen archivos similares:

Manifest

CMakeLists.txt

Mainpage.dox

Makefiles.

La función roscreate-pkg facilita la creación de paquetes, ya que crea los archivos

automáticamente. Para crear un paquete en el directorio actual se utiliza el siguiente comando:

$ roscreate-pkg [package_name]

También se pueden especificar las dependencias del paquete:

$ roscreate-pkg [package_name] [depend1] [depend2] [depend3]

Tras crear un paquete el siguiente comando actualiza los cambios efectuados al directorio para

así poderlo encontrar seguidamente:

$ rospack profile

Dependencias de primer orden

Para ver las dependencias de primer orden de un paquete se utiliza el siguiente comando:

Page 67: ROBOT CADDIE (ROCA)

67

$ rospack depends1 [package_name]

Dependencias indirectas

Para ver las dependencias indirectas de un paquete se utiliza el siguiente comando:

$ rospack depends [package_name]

Anexo 6: iRobot Create

iRobot Create es un robot fabricado por iRobot que se basa en la plataforma Roomba y se

introdujo en 2007. Sin embargo, iRobot Create está diseñado expresamente para el desarrollo de

la robótica. En lugar del sistema aspiradora del Roomba, el iRobot Create incluye una bodega

de carga, que alberga un puerto de 25 pines que se puede utilizar para la entrada y salida digital

y analógica, programable por medio del software ofrecido por iRobot. El Create también posee

un puerto serial a través del cual los datos del sensor se reciben y también se realizan las

órdenes a los motores. El iRobot Create es también programable por medio de ROS utilizando

el puerto serial.

Sensores

Los sensores en un sistema móvil robótico permiten a un robot entender el entorno que lo rodea.

Le permiten saber dónde está, las condiciones físicas a las que se enfrenta, donde se encuentran

los objetos con los que se puede interactuar, entre otros.

Los sensores son la interfaz perceptual entre el robot y su entorno. Los sensores externos, como

las cámaras son observadores verídicos del entorno. Los sensores internos pertenecen al sistema

móvil robótico, como sensores de desnivel y bumpers.

Imagen 4.1- 2

Page 68: ROBOT CADDIE (ROCA)

68

En la Imagen 4.1-2 se observan los sensores del robot iRobot Create, los sensores de desnivel

permiten al robot identificar pendientes abruptas, como escaleras. Los sensores de caída

informan al sistema si alguna de las llantas, se encuentra en un nivel inferior con respecto a las

otras. Los bumpers que se encuentran en la parte superior se encargan de amortiguar y proteger

al vehículo en caso de colisión, cada uno de los bumpers identifica el punto frontal de colisión.

Los encoders son sensores que miden las revoluciones de un eje, permitiendo mediciones más

exactas para la localización del robot. Y el sensor de pared indica si hay o no una pared a su

alrededor.

Estos sensores anteriormente mencionados son las entradas del sistema, estos generan salidas

digitales, 0 ó 1, verdadero o falso según el caso. Por ejemplo si el robot al desplazarse no

encuentra un desnivel en el entorno genera una salida de falso o 0 para la variable

correspondiente al sensor de desnivel, en el momento de encontrar un desnivel en su camino

generara una salida de true o 1.

Si el espacio de configuración es una cancha de tenis, con medidas preestablecidas no es

necesario realizar un mapeo mientras que el robot navega por el entorno, ya que el entorno es

totalmente conocido (un rectángulo) y no se encuentran obstáculos además del jugador (quién

no será tomado en cuenta en la implementación de este proyecto). Debido a que se posee una

cámara externa la cual proporciona la posición actual del robot, no es necesario utilizar técnicas

más complejas de localización en el entorno.

Modelo cinemático de un robot diferencial

Las siguientes son las ecuaciones cinemáticas basadas en el punto central del robot:

Al integrar las anteriores ecuaciones en un periodo de tiempo t se obtiene la posición y

orientación del robot .

Anexo 7: OpenCV

Es una librería libre de visión artificial. Su publicación se da bajo licencia BSD, que permite

que sea usada libremente para propósitos comerciales y de investigación.

Open CV es multiplataforma, existiendo versiones para GNU/Linux, Mac OS X y Windows.

Contiene más de 500 funciones que abarcan una gran gama de áreas en el proceso de visión,

como reconocimiento de objetos (reconocimiento facial), calibración de cámaras, visión estéreo

y visión robótica. Se pueden utilizar diversos lenguajes de programación como: C++, C, Python

y Java.

Page 69: ROBOT CADDIE (ROCA)

69

Anexo 8: IP Webcam

Es una cámara que emite las imágenes directamente a la red (Intranet o internet) sin necesidad

de un ordenador. En este caso la cámara IP será un dispositivo con sistema operativo Android el

cual permite descargar aplicaciones gratuitas de cámaras IP, como IP webcam, la cual permite

enviar a una dirección IP especifica una imagen o video.

Imagen 4.2- 8

Anexo 9: Escritorio remoto

Un escritorio remoto es una tecnología que permite a un usuario trabajar en una computadora a

través de su escritorio gráfico desde otro dispositivo terminal ubicado en otro sitio u cualquier

otro punto.

TightVNC y x11vnc

El escritorio remoto utiliza una conexión local, sin salida a internet.

Desde Linux se debe iniciar el servidor x11vnc con el siguiente repositorio.

$ x11vnc -forever

Desde Windows se debe instalar TightVNC versión 1.3.10 para compatibilidad con el sistema

Operativo usado, Linux Kubuntu 11.04.