ugv line tracking system (unmanned ground vehicle) sergio
TRANSCRIPT
0
UGV Line Tracking System (Unmanned Ground Vehicle)
Autor:
Sergio Alejandro Alvarado Suancha
TRABAJO DE GRADO PARA OPTAR POR EL TITULO DE
INGENIERO ELECTRONICO
Director:
Ing. Francisco Carlos Calderón M.Sc
Ingeniería Electrónica
Facultad de Ingeniería Pontificia
Universidad Javeriana Bogotá
Colombia
2
1. Contenido 2. INTRODUCCION ...................................................................................................................... 4
3. MARCO TEORICO .................................................................................................................... 5
3.1 Estado del Arte .................................................................................................................... 5
3.2 Visión Artificial: ................................................................................................................. 8
3.3 El software libre OpenCV ................................................................................................... 8
3.3.1 Estructura de OpenCV ................................................................................................ 8
3.4 Calibración de la Cámara Ps3 Eye View............................................................................. 9
3.5 Morfología….......................................................................................................................15
3.6 Segmentación …………………........................................................................................17
3.7 Transformación de Perspectivas......................................................................................... 18
3.8 BoeBot Robot..................................................................................................................... 18
3.9 Arduino UNO. …................................................................................................................ 19
3.10 BeagleboardXM…………….............................................................................................. 20 3.11 El software libre Angstrom................................................................................................. 21
4. OBJETIVOS .............................................................................................................................. 22
4.1 Objetivo General ................................................................................................................ 22
4.2 Objetivos Específicos ......................................................................................................... 22
5. ESPECIFICACIONES ................................................................................................................ 23
6. DESARROLLO .......................................................................................................................... 24
6.1 Acondicionamiento chasis BoeBot. .....................................................................................24
6.1.1 Placa Base BoeBot .......................................................................................................24
6.1.2 Placa Base BoeBot y Tarjeta de Ensamble de Circuitos ..............................................25
6.1.3 Placa de BoeBot Ensamblada......................................................................................26
6.1.4 Puesta en funcionamiento parte eléctrica hardware. ................................................... 27
6.2 Algoritmo de Detección de Ruta ......................................................................................... 28
6.2.1 Captura de Imagen ...................................................................................................... 29
6.2.2 Umbralización ............................................................................................................. 29
6.2.3 Transformación de Perspectiva Birds Eye View......................................................... 30
6.2.4 ROI de la Imagen ........................................................................................................ 30
6.2.5 Recorrido de la Imagen Capturada y Almacenamiento de Centros de Pista. .............. 32
6.2.6 Definición de Ángulos y Longitud de Trama.............................................................. 34
6.3 Envío de Trama al Microcontrolador Arduino UNO .......................................................... 36
3
7. ANÁLISIS DE RESULTADOS ............................................................................................... 38 7.1 Comportamiento del Robot Ante Diferentes Tipos de Curva ........................................... 38
7.2 Error desde una Vista Superior con Base en Medidas Euclidianas. .................................. 43
8. CONCLUSIONES .................................................................................................................... 48
9. REFERENCIAS ........................................................................................................................ 49
10. Anexos................................................................................................................................... 50
10.1 Anexo de Tabla 1 .............................................................................................................. 50
10.2 Anexo de Tabla 2 .............................................................................................................. 51
10.3 Anexo de Tabla 3 .............................................................................................................. 53
10.4 Anexo de Tabla 4 .............................................................................................................. 55
10.5 Anexo de Tabla 5 .............................................................................................................. 57
4
2. INTRODUCCION Básicamente un vehículo no tripulado consiste en cualquier sistema mecánico móvil que pueda transportar un objeto o sistema con cierto grado de autonomía, dentro de las aplicaciones se encuentran:
Militares: Supervivencia, detección de objetivos, visión en tiempo real del campo de batalla, etc.
Civiles: Detección de fuego, rescate, vigilancia, monitoreo de autopistas, transporte, etc.
Comerciales: Agricultura, envío de paquetes, seguridad, etc.
Los robots seguidores de línea son plataformas móviles que cumplen el objetivo de seguir una línea que dibuja una trayectoria determinada, este seguimiento se puede lograr gracias a sensores o a dispositivos de visión como cámaras. El avance tecnológico en este tipo de robots ha dado pie para que se desarrollen nuevas técnicas en lo que concierne a los vehículos no tripulados, ya que gracias a la identificación, el análisis y posterior seguimiento de una trayectoria determinada se puede lograr que un vehículo se desplace de manera autónoma
La investigación y desarrollo de estos robots y vehículos no tripulados se ha convertido en un campo de la ingeniería con alto impacto a nivel mundial, ya que su uso ha aumentado con el tiempo en diferentes aplicaciones como por ejemplo los robots usados en las fuerzas armadas encargados de ejecutar misiones de reconocimiento, a estos se le suman los vehículos no tripulados que la comunidad científica está desarrollando para hacer de las vías un lugar más seguro para los que las transitan, de la misma forma los equipos de rescate usan este tipo de robots con el fin de encontrar sobrevivientes en zonas de desastres. Esto hace que exista una cantidad considerable de proyectos que usan la navegación no tripulada como base para encontrar nuevas aplicaciones que contribuyan a mejorar la condición humana.
El propósito de este proyecto es controlar el movimiento de un robot no tripulado por medio del seguimiento de un patrón identificado con visión artificial. Este proyecto generaría impacto a nivel social ya que se quiere dejar una base para poder implementarlo en vehículos no tripulados (UGV) guiados por visión artificial.
Este es un proyecto marco del grupo de investigación SIRP de la Pontificia Universidad Javeriana el cual quiere dejar una base para el posterior trabajo a un nivel más alto en los sistemas de tráfico y vehículos terrestres no tripulados.
El desarrollo de este proyecto tiene como fin principal propiciar el desarrollo de vehículos no tripulados a gran escala, entregando resultados, recomendaciones y conclusiones para que a partir de la experiencia se pueda desarrollar un sistema mucho más robusto y eficiente.
5
3. MARCO TEORICO 3.1 Estado del Arte
Existen investigaciones y proyectos de diferentes universidades y grupos investigativos a nivel mundial, un ejemplo claro es el vehículo no tripulado STANLEY desarrollado por la universidad de Stanford el cual ganó el concurso DARPA (Defense Advance Research Projects Agency) en 2005. Este concurso busca una aproximación técnica e innovadora que permita la operación autónoma de vehículos no tripulados de combate, los cuales puedan navegar de un punto a otro y de una manera inteligente evitar obstáculos de cualquier tipo.
DESARROLLOS
STANLEY
Basado en un Volkswagen Touareg R5 este vehículo, fue el ganador del concurso organizado por DARPA (Defense Advanced Research Projects Agency) en el año 2004 el cual consistió en una travesía autónoma por el desierto Mojave a lo largo de 142 Millas.
El vehículo equipado con un motor diesel, sensores, sistema de posicionamiento global (GPS), cámaras, sensores y antenas de transmisión, logro llegar a la meta en 6 h y 53 minutos gracias al avanzado proceso de ingeniería previo al concurso.
Figura 3.1 Tomado de Stanley: The Robot That won The DARPA Challenge -- http://www-robotics.usc.edu
6
CRUSHER
Creado por el Centro Nacional de ingeniería y robótica de la universidad de Carnegie Mellon, este vehículo posee las capacidades a gran escala de operar autónomamente en terrenos complejos, caracterizándose por ser un vehículo de gran utilidad para diferentes tipos de misiones: vigilancia, reconocimiento, rescate, etc.
Figura 3.2 Tomada de Crusher: UGCV Perceptor Integration http://www.rec.ri.cmu.edu
XM1216 Small Unmanned Ground Vehicle
Figura 3.3 Tomada de Wikipedia -- XM1216 SUVG
7
El XM1216 SUVG es un vehículo no tripulado ligero, capaz de llevar a cabo operaciones militares en terrenos urbanos, túneles, alcantarillas y cuevas. El SUVG presta ayuda en el desempeño de tareas de alta intensidad para los seres humanos o funciones de alto riesgo (e.g. Inteligencia Urbana, Vigilancia, Misiones de Reconocimiento de Materiales Químico/Toxico, Misiones de Reconocimiento de Químicos Industriales, etc.)
El SUVG trabaja para minimizar la exposición de los soldados a amenazas directas, su diseño modular permite que varias cargas le sean integradas de manera sencilla. Pesando menos de 13 kg, es capaz de llevar hasta 2.7 kg de peso extra.
El XM1216 puede ser operado remotamente o manipulado por medio de un gamepad de Xbox 360 adaptado con dirvers especiales. Esto permite el control de la unidad, sin embargo si no se contara con un joystick convencional, se puede usar un control robusto conocido como Small HaWC (Harm’s Way Controller), que se ajusta a diferentes ambientes de combate y se puede usar en vez del gamepad de Xbox 360.
En Febrero de 2012, el ejército americano anunció la intención de contratar a iRobot para el desarrollo del sistema robótico del XM1216, su desarrollo, soporte y prueba de hardware y software concerniente al XM1216.
Guardium UGV
Figura 3.4 Tomada de defense-update.com Guardium
El sistema Guardium de intercepción y observación autónoma fue desarrollado por G-NIUS Autonomous Unmanned Ground Vehicles, luego se unió a la compañía Venture, establecida por las industrias aeroespaciales israelíes y Elbit Systems. El sistema Guardium utiliza vehículos terrestres no tripulados que pueden ser operados desde un centro de comando, llevando a cabo patrullajes rutinarios con una respuesta rápida a emergencias. Este puede
8
retener elementos sospechosos que se encuentran en un perímetro definido y detenerlo hasta que las fuerzas de seguridad lleguen al lugar.
El Guardium usa un chasis de un TomCar. El vehículo está equipado con un sistema de posicionamiento táctico y puede operar a velocidades de hasta 80km/h en terreno árido. El vehículo puede llevar cargas hasta de 300 kg, incluyendo el escudo que usa como armadura para proteger los elementos vitales de este. El Guardium puede ser equipado con una variedad de sensores, incluyento cámaras de video térmicas, con auto-enfoque y un micrófono sensible.
Después de una evaluación exitosa en 2005 el Guardium fue elegido por las fuerzas de defensa israelíes para operar como parte de la seguridad de frontera. Para Mayo de 2008 fue usado para vigilar las fronteras del país al final del año en mención.
3.2 Visión Artificial:
La visión artificial por computador es la capacidad que tiene la maquina en esta caso el computador para ver el mundo que la rodea, el computador puede identificar imágenes en tres dimensiones a partir de varias imágenes bidimensionales, estas imágenes suelen ser tratadas para extraer de ellas cierto tipo de información requerida por el usuario.
Las imágenes que son analizadas por el computador llegan a este por medio de un dispositivo que es sensible a cierta banda del espectro de frecuencia y que envía señales que corresponden al nivel de energía que incide sobre cierto lugar.
3.3 El software libre OpenCV
OpenCV es un conjunto de bibliotecas de código abierto disponibles desde http:SourceForge.net/projects/opencvlibrary. Están desarrolladas en lenguaje C y C++ y se pueden ejecutar desde Windows, Linux y Mac OS X.
Estas bibliotecas ofrecen código diseñado eficientemente, orientado a aplicaciones capaces de ejecutarse en tiempo real en procesadores modernos. Estas bibliotecas tienen como objetivo proveer las funciones más usadas en visión por computadora y tiene más de 500 funciones implementadas. Se usan ampliamente en vigilancia, imágenes medicas, inspección industrial, interfaces de usuario, calibración de cámaras y recientemente se han usado estas bibliotecas en imágenes aéreas y mapas de calles, por ejemplo en la herramienta Google’s Street View. Se hace uso de la calibración de cámara y de funciones de openCV para hacer el proceso de sttiching, que consiste en combinar múltiples imágenes para producir una imagen panorámica o una imagen de alta resolución.
3.3.1 Estructura de OpenCV
Estas bibliotecas se dividen en cinco grandes grupos, en donde se encuentran divididas las funciones dependiendo de su utilidad: CXCORE, donde están implementadas las funciones principales de procesamiento de imágenes y algoritmos de visión; HighGUI, con todo lo relacionado a la sencilla interfaz grafica de OpenCV y las funciones que permitan importar
9
imágenes y video; ML, que cuenta con algoritmos de aprendizaje, clasificadores y demás; y CVAux, con funciones experimentales entre ellas BG/FG, esta ultima biblioteca cuenta con menos documentación que las demás siendo en algunos casos inexistente una documentación oficial del uso de la función o incluyendo solo el articulo del algoritmo implementado en otros casos.
3.4 Calibración de la Cámara Ps3 Eye View.
La importancia de la calibración de la cámara es necesaria para establecer una relación entre las medidas de la cámara y las medidas en el mundo real. Esto es importante porque las escenas no son solamente imágenes en tres dimensiones, también ocupan un espacio físico el cual les otorga unidades de medida físicas, la relación entre las unidades naturales de la cámara (pixeles) y las unidades del mundo real (e.g. metros) son un componente critico que surge al tratar de reconstruir una escena tridimensional.
El proceso de calibración de la cámara nos entrega tanto la geometría de la cámara como el modelo de distorsion de los lentes. Esos dos modelos informativos definen los parámetros intrínsecos de la cámara.
Modelo de la Camara
Basándonos en el modelo mas simpre de una cámara, el modelo pinhole: una cámara sin lente con una abertura muy pequeña, de ahí su nombre pinhole que traduce “Hoyo de Aguja”. Esta cámara puede ser vista como una caja a prueba de luz con un solo orificio el cual es el único que permite la entrada de luz a la caja Figura 3.5.
Figura 3.5 modelo de camara pinhole
Cuando la luz se refleja en la imagen del plano solo un rayo de luz entra en el orificio reflejado desde cualquier punto en particular, este punto se refleja en una superficie que forma imágenes. Como resultado la imagen reflejada en este plano (plano proyectivo) está siempre en foco y el tamaño de la imagen con respecto al objeto distante está dada por un único parámetro de la cámara: la longitud focal.
Para este modelo de cámara la distancia focal esta definida como la distancia de abertura del hoyo o
10
foco hacia la pantalla o imagen. En la figura 3.5 la distancia focal es representada por la letra f, donde también podemos apreciar la distancia de la cámara al objeto Z, la longitud del objeto X y la imagen del objeto en el plano de la imagen x. En la figura se puede apreciar que por el método de triangulos semejantes.
−𝑥 = 𝑓𝑋𝑍
Formula 1 Definición de Distancia con base en Medición de Pixeles.
La relación que da una equivalencia entre los puntos Qi en el mundo físico con coordenadas (Xi, Yi, Zi) y los puntos proyectados en la pantalla con coordenadas (xi, yi) se denomina transformación de perspectiva. Cuando se trabaja con transformaciones de este tipo es conveniente utilizar lo que se conoce como coordenadas homogéneas. Las coordenadas homogéneas asociadas con un punto en un espacio proyectivo con dimensión n son expresadas típicamente cono un vector dimensional (n+1) por ejemplo (x,y,z) se convierte en (x, y, z, w).
Con la restricción adicional que cualquier par de puntos cuyos valores son proporcionales son por ende equivalentes. En nuestro caso el plano de la imagen es el epacion pro medio del cual vamos a representar puntos en el pano como vectores tridimensionales q=(q1, q2, q3). Recordando que todos los puntos que tienen valores proporcionales en el espacio proyectivo, son equivalentes, podemos recuperar las coordenadas en pixeles reales dividiendo por q3. Esto nos permite gestionar los parámetros que definen nuestra cámara (es decir fx, fy, cx, cy, y) en una única matriz de 3 x 3, esta matriz la denominaremos matriz intrínseca.
La proyección de los puntos del mundo físico en la cámara se puede resumir en la siguiente expresión:
Formula 2 proyección de puntos del mundo fisico en la camara.
Multiplicando se puede encontrar que w=Z y a su vez como conocemos que en punto q está en coordenadas homogéneas debemos dividirlo entre w (o Z) con el fin de recuperar las definiciones anteriores. (No aparece el signo menos por que ahora estamos mirando la imagen no invertida en el plano proyectivo en frente del agujero de alfiler en lugar de la imagen invertida en la pantalla de proyección detrás del agujero de alfiler).
Con el modelo de agujero de alfiler ideal, podemos explicar como se establece una equivalencia entre el espacio tridimensional real y la imagen proyectada, pero se requiere un trabajo muy dispendioso hacer que la luz suficiente se acumulase para obtener una proyección, en los modelos normales de cámara esta deficiencia de luz es reemplazada por un lente, el cual puede capturar bastante luz proyectada en una superficie mucho mas grande que la que alcanza a verse a través del agujero de alfiler, todas estas ventajas a costa de introducir distorsiones en la imagen proyectada.
11
Ya que tenemos una idea mas grande de la descripción de las propiedades intrínsecas y de distorsion de una cámara de forma matematica, surge la pregunta de cómo determinar la matriz intrínseca y de distorsion, es ahí donde OpenCV proporciona varios algoritmos que nos ayudan a calcular estos parámetros intrínsecos. La calibración usada en este proyecto se realizo mediante el algoritmo cvCalibrateCamera2().
En este, el método de calibración consiste en enfocar la cámara hacia una estructura conocida con muchos puntos fáciles de identificar. Mediante la visualización de este objeto desde una variedad de angulos, es posible calcular entonces la ubicación (relativa) y la orientación de la cámara al momento de capturar cada imagen, y de la misma forma calcular los parámetros intrínsecos de la cámara. Con base en esto y con el fin de obtener varios puntos de vista del objeto, lo hacemos girar y lo trasladamos.
Adicionalmente a estos valores intrínsecos de la cámara, es importante conocer que son los vectores de rotación y traslación que se generan durante el proceso de calibración.
Para cada imagen tomada de la cámara de un objeto particular, podemos describir la posición del objeto con respecto al sistema de coordenadas de la cámara en términos de rotación y traslación Figura 3.6.
Figura 3.6 descripcion de objeto conrespecto al sistema de coordenadas de la camara
En general, la rotación en cualquier número de dimensiones se puede describir en términos de la multiplicación de un vector de coordenadas por una matriz cuadrada de tamaño apropiado. En última instancia, una rotación es equivalente a la introducción de una nueva descripción de la ubicación de un punto en un sistema de coordenadas diferente. Al girar el sistema de coordenadas por un ángulo θ es equivalente al giro en contra de nuestro punto de destino en torno al origen de dicho sistema de coordenadas en el mismo ángulo θ. La representación de una rotación de dos dimensiones como la multiplicación de matrices se muestra en la Figura 3.7
12
Figura 3.7 rotacion en dos dimensiones
La rotación en tres dimensiones puede ser descompuesta en una rotación alrededor de cada eje bidimensional en el que las mediciones de eje de pivote se mantienen constantes. Si hacemos girar alrededor de los ejes x-‐, y-‐, y z-‐ en secuencia con la rotación respectiva de los ángulos ψ, φ, y θ, el resultado es una matriz de rotación R total que viene dada por el producto de las tres matrices Rx (ψ ), Ry (φ), y Rz (θ).
Por lo tanto, R = Rz (θ), Ry (φ), Rx (ψ). La matriz de rotación R tiene la propiedad de que su inversa es su traspuesta (sólo la giramos hacia atrás), por lo que tenemos RTR = RRT = I, donde I es la matriz identidad consiste en 1s en la diagonal y 0 en todas partes. El vector de traslación es la forma en que representan un cambio de sistema de coordenadas a otro sistema cuyo origen es desplazada a otra ubicación, en otras palabras, el vector de traslación es sólo la de establecer desde el origen del sistema de coordenadas primero al origen de la segunda sistema de coordenadas. Por lo tanto, para pasar de un sistema de coordenadas centrado en un objeto a uno centrado en la cámara, el vector de traslación adecuada es simplemente T = cámara origen – objeto origen. Tenemos entonces (con referencia a la Figura 3.6 que un punto en el objeto con coordenadas Po tiene coordenadas equivalentes Pc en el marco de coordenadas de la cámara.
Combinando estas ecuaciones con Po junto con las correcciones intrínsecas de la cámara, formamos el sistema de ecuaciones básico que estábamos buscando y que OpenCV solucionó. Finalmente obtenemos de esta forma los parámetros de calibración de la cámara que estábamos buscando.
13
Hemos visto como una rotación en tres dimensiones puede ser definida con tres ángulos y que una traslacion de tres dimensiones se puede especificar con los tres parámetros (x, y, z), por lo que tenemos seis parámetros hasta ahora. La matriz intrínseca de una cámara tiene cuatro parámetros (fx, fy, cx, y, cy), dando un total de diez parámetros que deben ser resueltos para cada vista (pero hay que tener en cuenta que los parámetros de la cámara intrínsecas son los mismos entre las vistas). Al usar un objeto plano, se evidencia como cada vista fija ocho parámetros. Debido a que los seis parámetros de rotación y de traslación cambian entre puntos de vista, para cada vista que tenemos limitaciones en dos parámetros adicionales que utilizamos para resolver la matriz de cámara intrínseca. Por esto, necesitaremos por lo menos dos puntos de vista para resolver todos los parámetros geométricos.
Para obtener estos parámetros es necesario definir un objeto para calibrar la cámara. Como definimos que necesitábamos un objeto cuyas características fueran fáciles de identificar y a su vez medibles, escogimos un tablero de ajedrez con medidas especificas, el tablero de ajedrez con sus colores blanco y negro no harán que la medida sea sesgada ya que no va a haber diferencias además de las existentes entre los dos colores.
Dada la imagen de un tablero de ajedrez se usaron las funciones cvFindChessboardCorners OpenCV () para localizar las esquinas del tablero de ajedrez.
int cvFindChessboardCorners( const void* image, CvSize pattern_size, CvPoint2D32f* corners, int* corner_count = NULL, int flags = CV_CALIB_CB_ADAPTIVE_THRESH );
Esta función toma como argumento una imagen sencilla que contiene un tablero de ajedrez. Esta imagen debe estar en escala de grises y tener 8 bits. El segundo argumento, pattern_size, indica cuantas esquinas hay en cada columna y en cada fila. Este conteo equivale al numero de esquinas interiores de la imagen; por ende, para un tablero de ajedrez estándar el numero de esquinas internas será 7. El siguiente argumento es simplemente un apuntador a un arreglo en donde se guarda el numero de esquinas. Este arreglo debe ser lo suficientemente largo como para todas las esquinas en el tablero (49 en una tablero de ajedrez estándar).
Como parte de este proyecto, se ha definido dentro del código cvFindChessboardCorners() un valor de umbral con el fin de facilitar el trabajo con las imágenes capturadas durante el proceso de calibración, una vez se encuentran las esquinas, estas se dibujan y se sobreponen en la imagen capturada Figura 3.9
14
Figura 3.8 Método de Calibración de la Cámara.
Figura 3.9 resultado cvFindChessboardCorners()
Con el fin de determina las matrices intrínseca y de distorsión es necesario tener un numero minimo de capturas, este número se determina de la siguiente manera, digamos que tenemos N esquinas y K imágenes del tablero en diferentes posiciones. K imágenes del tablero proporcionan 2NK constantes 2 por que cada punto de la imagen tiene constantes en X y en Y, ignorando los parámetros de distorsion del momento tenemos 4 parametros intrínsecos y 6K parámetros extrínsecos, ya que necesitamos hallar los 6 parametros en cada una de las K imágenes del tablero.
Resolviendo esto tenemos que se necesitan 2NK≥6K+4 imágenes del tablero de ajedrez para poder tener una buena calibración.
15
3.5 Morfología:
El objetivo de las transformaciones geométricas es la extracción de estructuras geométricas en los conjuntos sobre los que se opera, mediante el uso de forma conocida denominado elemento estructurante.
Operaciones morfológicas
• Dilatación. agrega píxeles a los exteriores del objeto, lo hace más grande •Erosión. Extrae los exteriores del objeto, lo hace más pequeño
• Apertura. Aplica una erosión seguida de una dilatación, permite abrir pequeños huecos. •Clausura. Aplica una dilatación seguida de una erosión, permite cerrar los huecos.
aplicaciones
• Pre-procesamiento de imágenes (supresión de ruidos, simplificación de formas). • Destacar la estructura de los objetos (extraer el esqueleto, detección de objetos) • Se pueden encontrar aplicaciones tales como la segmentación, restauración, detección de
bordes, aumento de contraste, análisis de texturas, compresión. Etc...
Erosion
La transformación de erosión es el resultado de comprobar si el elemento estructurante Y está totalmente incluido dentro del conjunto X. Cuando esto no ocurre, el resultado de la erosión es el conjunto vacío.
La erosión de un conjunto X por un elemento estructurante Y se define como el conjunto de puntos o elementos x, pertenecientes a X, de forma que cuando el elemento estructurante Y se traslada a ese punto, el elemento queda incluido en X:
Formula 3 definición de erosión
Figura 3.10 erosión
16
Dilatación
Es la operación dual de la erosión.
El resultado de la dilatación es el conjunto de puntos origen del elemento estructurante Y tales que el elemento estructurante contiene algún elemento del conjunto X, cuando el elemento se desplaza por el espacio que contiene a ambos conjuntos
Formula 4 definición de dilatación
En donde un elemento estructurante Y de forma de disco circular aumenta la definición del objeto X.
Figura 3.11 Dilatación
Apertura
Consiste en aplicar una erosión seguida de una dilatación y sirve para separar elementos indeseados de la imagen
Figura 3.12 aperturas
17
Cierre
El cierre de una señal f por un elemento estructurante Y se define como la dilatación de f por Y, seguida de la erosión por el mismo elemento estructurante
Sirve para unir elementos separados
Figura 3.13 cierre
3.6 Segmentación
La segmentación consiste en el proceso de dividir una imagen digital en varias zonas (grupos de pixeles) u objetos que la conforman. El objetivo de la segmentación es simplificar y/o cambiar la representación de una imagen en otra más significativa y más fácil de analizar para obtener información específica.
Más precisamente, la segmentación de la imagen es el proceso de asignación de una etiqueta a cada pixel de la imagen de forma que los pixeles que compartan la misma etiqueta también tendrán ciertas características visuales similares.
El proceso de segmentación se usa tanto para localizar detectar regiones como para encontrar límites dentro de una imagen.
Para el proceso de la detección de regiones se usan técnicas basadas en las similitudes por ejemplo:
• Binarización basada en el uso de umbrales. • Crecimiento de regiones mediante la adición de pixeles. • División de regiones. • Similitud de textura, color o nivel de gris.
Para el proceso de detección de límites o detección de bordes se usan cierto tipo de operadores:
• Operadores de primera derivada.
18
• Operadores de segunda derivada. • Operadores morfológicos.
El resultado de la segmentación de una imagen es un conjunto de segmentos que cubren en conjunto a toda la imagen, o un conjunto de contornos extraídos de la imagen. Cada uno de los pixeles de una región es similar en alguna característica, como el color, la intensidad o la textura. Regiones adyacentes son significativamente diferentes con respecto a la misma característica(s).
3.7 Transformación de Perspectivas:
La transformación de perspectiva esta cercanamente relacionada con la proyección de perspectiva, ya que esta se encarga de representar puntos tridimensionales en imágenes bidimensionales en un conjunto de líneas de proyección que se encuentran en un punto en común denominado el centro de la proyección.
La transformación de perspectiva Figura 3.14 es una transformación invertida del plano real a
una proyección que al trazar líneas rectas estas concuerdan con la ubicación real de los puntos.
Figura 3.14 Transformación de Perspectiva (Homografía). Tomada de Learning OpenCV 3.8 BoeBot Robot:
Es un robot compuesto por un chasis de aluminio, el cual sirve de soporte para dos servo- motores de rotación continua, este robot permite además adicionar un modulo BASIC Stamp de Parallax el cual permite la programación de microcontroladores y demás dispositivos
19
electrónicos, la función básica de el Boebot Robot en el desarrollo del proyecto fue el de servir como plataforma para ensamblar sobre él, otras tarjetas de procesamiento y microcontroladores que también harían parte del hardware.
Figura 3.15 BoeBot Robot Tomada de Parallax.com 3.9 Arduino UNO:
El microcontrolador Arduino es una plataforma electrónica abierta basada en hardware y software flexible y fácil de usar. El Arduino está diseñado para artistas, diseñadores, aficionados y cualquier persona que esté interesada en crear objetos y ambientes interactivos.
Arduino puede medir el ambiente al recibir información de una gran variedad de sensores y con base en esto puede cambiar sus alrededores controlando luces, motores, y otros dispositivos. El microcontrolador que está integrado en la tarjeta el ATmega328 se puede programar usando el lenguaje de programación de Arduino (basado en Wiring) y el espacio de desarrollo de Arduino (basado en Procesing). Los proyectos de Arduino pueden funcionar de manera independiente y también se pueden comunicar con otro tipo de software que se encuentre activo en una computadora (p.ej. Flash, Processing, MaxMSP).
Las tarjetas pueden ser ensambladas manualmente y también se pueden comprar pre- ensambladas; el software de programación se puede descargar de manera gratuita. Los diseños de hardware de referencia (CAD) están disponibles bajo una licencia abierta y el usuario puede adaptarlos según sus necesidades.
Arduino recibió una Mención Honorífica en la sección Digital Communities de la edición del 2006 del Ars Electronica Prix. El equipo Arduino (Arduino team) está conformado por: Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, and David Mellis. Credits.
20
Las características del Arduino Uno son:
Microcontrolador ATmega328, 14 pines de entrada/salida digital, oscilador cerámico de 16Hz, conexión por medio de puerto USB, fácil comunicación con otros dispositivos, número ilimitado de aplicaciones.
El modelo de Arduino con el que se trabajó en este proyecto fue el Arduino Uno, el cual fue usado para establecer la comunicación entre el código de detección de ruta y los servomotores del Boebot.
Figura 3.16 Tarjeta de programación Arduino Uno Tomada de Arduino.cc
3.10 BeagleboardXM:
La BeagleBoardXM es una tarjeta, de bajo costo equipada con un procesador ARM Cortex A8 de bajo costo manufacturado por Texas Instruments, esta tarjeta cuenta con memoria RAM de 512MB de 166MHz de velocidad, conector µSD, 4 puertos USB, puerto serial, salida y entrada de audio estéreo.
La BeagleBoardXM está diseñada específicamente para la comunidad de software libre u Open Source Community. Está equipada con una cantidad de características mínimas que le permiten al usuario experimentar la potencia de su procesador, a pesar de ser una plataforma dirigida a la comunidad de software libre no está diseñada para ser una plataforma de completo desarrollo ya que muchas de las características e interfaces del procesador no son accesibles desde la BeagleBoardXM.
La BeagleBoardXM se usó como plataforma de desarrollo e implementación para el software de detección de ruta, ya que sobre esta se instalo el sistema operativo Angstrom el cual se caracteriza por ser una versión ligera de Linux diseñada para dispositivos embebidos. Junto con el sistema operativo que se instaló se usaron las diferentes características de hardware que ofrecía la BeagleBoardXM para el apropiado desarrollo de este proyecto.
21
Figura 3.17 BeagleBoardXM Tomada de BeagleBoard.org. 3.11 El software libre Angstrom:
Angstrom es una distribución de Linux diseñada para dispositivos embebidos (PDA’s, teléfonos móviles, routers .etc.). La comunidad Angstrom comenzó con un grupo de personas que trabajaban en proyectos relacionados con OpenEmbedded, openZaurus y OpenSimpad. Su idea principal era crear distribuciones de Linux para dispositivos embebidos amigables al usuario.
22
4. OBJETIVOS 4.1 Objetivo General
Implementar en un robot móvil un sistema de seguimiento de línea usando visión por computador.
4.2 Objetivos Específicos
Adecuar una plataforma móvil PARALLAX para su uso como seguidor de línea.
Diseñar un algoritmo de detección de línea basado en visión por computador.
Implementar el algoritmo de detección y seguimiento de línea en una plataforma de desarrollo Beagle Board.
Evaluar el desempeño del sistema bajo métricas euclidianas.
23
5. ESPECIFICACIONES Este proyecto está construido sobre la unión de dos grandes pilares de la ingeniería la programación y la el trabajo sobre circuitos integrados, con base en estos dos pilares se usaron varios métodos de procesamiento de imágenes y se trabajó con diferentes circuitos integrados hasta encontrar el algoritmo más adecuado y que por supuesto pudiera trabajar de la mano con el microcontrolador que se usó para dar forma poco a poco a este proyecto.
El proyecto está basado en la conjunción de dos algoritmos, el primero un algoritmo de procesamiento de imágenes y detección de ruta con transmisión de datos y el segundo un algoritmo de recepción y transmisión de datos desde el algoritmo de detección de ruta hacia los servomotores encargados del movimiento de todo el robot diseñado.
El robot fue diseñado con propósitos meramente de visión artificial ya que cuenta en su parte superior con una cámara web y en el centro del chasis cuenta con las tarjetas de procesamiento que son parte también del proyecto.
La idea general es hacer varias capturas desde la cámara que viene con el robot a lo largo de una ruta previamente definida y con estas capturas hacer un análisis exhaustivo para determinar cómo deben ser los movimientos del robot a lo largo de la trayectoria analizada.
Detección de Trayectoria El algoritmo de detección de trayectoria se basa en las bibliotecas de código abierto de OpenCV las cuales permiten trabajar de forma simple con imágenes, con base en este se inicia con una captura de imagen desde la cámara Ps3 Eye View que viene con el robot y a partir de esta captura la imagen resultante es sometida a un proceso de binarización y análisis posterior con el fin de determinar cuál es la ruta más adecuada a seguir por el robot, una vez se obtienen todos los datos referentes a la ruta definida por el algoritmo, estos se envían como una sola trama al microcontrolador para que el dentro del algoritmo que también se diseño reciba estos datos y los transforme en ordenes a cada uno de los servomotores para que sigan la ruta indicad, a continuación se puede apreciar un diagrama de bloques del algoritmo de detección de ruta.
24
6. DESARROLLO
6.1 Acondicionamiento chasis BoeBot. Para este proyecto se uso como estructura principal el chasis de un robot, el BoeBot® de Parallax, una plataforma reprogramable la cual es comúnmente usada para efectuar diversos proyectos de robótica, equipado con servomotores y una plataforma de aluminio donde se van a ensamblar las diferentes tarjetas de procesamiento con las que vamos a trabajar durante el proyecto, la imagen del BoeBot y su proceso de ensamble se presenta a continuación:
6.1.1 Placa Base BoeBot
La placa base del BoeBot es la superficie donde se van a ubicar todas las tarjetas de procesamiento con las que fue posible desarrollar el proyecto, esta placa está compuesta por una superficie de aluminio, 2 servos y una “rueda” pequeña en la parte trasera de la estructura como se puede apreciar, es importante notar que en esta figura los servos se encuentran sin las ruedas.
Figura6.1 Placa Base BoeBot Tomada de Irobotorium.com
25
6.1.2 Placa Base BoeBot y Tarjeta de Ensamble de Circuitos
En esta figura se aprecia ya la estructura de aluminio con sus respectivas ruedas y debajo de esta se encuentra la tarjeta que también hace parte del modelo BoeBot® de Parallax, sobre esta tarjeta se ensamblo el circuito regulador de voltaje que iba a alimentar los servomotores.
Figura 6.2 Placa Base BoeBot y Tarjeta de Ensamble de Circuitos. Tomada de Learn.Parallax.com
26
6.1.3 Placa de BoeBot Ensamblada Una vez ensamblado el BoeBot con la tarjeta donde del circuito regulador de voltaje, se ensamblaron las demás tarjetas de procesamiento: El Arduino Uno, BeagleBoardXM. Y la cámara Ps3 Eye.
Figura 6.3 Robot Detector de Ruta Ensamblado
27
6.1.4 Puesta en funcionamiento parte eléctrica hardware.
Para la puesta en funcionamiento de la parte eléctrica del proyecto fue resuelta al dividir las funciones en tres grupos de necesidades:
1. Servomotores
Para alimentar los servomotores Parallax, se utilizó una batería recargable de 7.2V a 1080Amperios, la cual fue conectada a un circuito regulador de voltaje compuesto por 2 LM7805 los cuales tenían a cada salida 5.1V esto con el fin de evitar una sobre carga en los servomotores. A continuación se ilustra la alimentación de los servomotores:
Figura 6.4 Alimentación Eléctrica Servo Motores
2. BeagleBoardXM
La alimentación eléctrica de la BeagleBoardXM fu provista por un regulador de voltaje AC el cual a su salida tenía 5V a 4 A.
3. Ps3 Eye View y Arduino UNO
La alimentación eléctrica para la cámara y el Arduino UNO la entregaba la BeagleBoardXM en sus respectivos puertos USB.
28
6.2 Algoritmo de Deteccion de Ruta
El funcionamiento del algoritmo de detecci6n de ruta funciona de acuerdo al siguiente diagrama de flujo:
Si
Si no .:ncontro pixelftoma el utlimo pixel como pixelf
y h<l\l! Centro=pixeli+(pixelf-pix
di) 2
Con pit:.gora<; se dekrmina 13 distanci:en pixeles entrelos puntos.
Con el im-erso de la tangente se determina d angulo de giro.
s comiet1e a ems con distcm-z*dist pixd f
Se col\\lerte Ia distancia entiempo £k a\-:u-.ceI
carro y e l angulo <k giro en tiempO de giro.
Se detem1ina Ia orden con d:mgulo de giro. I : izquierda.2: derecha. 3:adel:mte.-l::tt ras
En lll\.'.1 c:..den..1de caracteres se escr2i 55 seguido por Ia orden el t iempo <k ejecucion y 1-----------.J
punt o.
29
Figura 6.5 Diagrama de bloques Algoritmo detección de pista. 6.2.1 Captura de Imagen
El algoritmo captura imagen de la cámara Ps3 Eye View tomando varias muestras para ser posteriormente analizadas.
Figura 6.6 Captura de Video Cámara Ps3 Eye View 6.2.2 Umbralización
Como se mencionó anteriormente se tomaron imágenes muestra que contenían los 3 canales de color RGB, por lo que fue necesario hacer un proceso de binarización para facilitar el análisis y el procesamiento de las muestras, en este proceso la cuantificación de las muestras toma un valor de 2 bits blanco o negro, ya que son muestras umbralizadas.
Figura 6.7 Umbralización de las Muestras Tomadas
30
6.2.3 Transformación de Perspectiva Birds Eye View
Dentro de los diferentes métodos empleados para la captura y análisis de las imágenes tomadas se encuentra la transformación de perspectiva por medio del bird’s eye view, este consiste en la proyección superior de un plano, con la perspectiva del observador como si se encontrara sobre la superficie, la transformación de la imagen frontal de la trayectoria y la transformación en una proyección de un plano superior se observa a continuación.
Figura 6.8. Ilustración de Bird’s Eye View Tomada de Learning OpenCV 6.2.4 ROI de la Imagen
Con el fin de obtener una imagen con la cual el software de trayectoria pudiera trabajar mejor, fue necesario recortar la imagen a lo largo y a lo ancho, en este proceso se uso la función ROI o Region of Interest de OpenCV que como su nombre lo dice busca determinar una porción de imagen precisa dentro de otra que ya esta definida, lo que se buscaba básicamente es que como se observa en las imágenes previamente presentadas, hay porciones del video que pueden ser omitidas ya que no serian analizadas por el software, por ejemplo dentro de estas porciones que no servirían, están las esquinas superiores e inferiores del video, por medio de la función ROI se recorto como se observa en la figura 5.8 obteniendo así la imagen recortada del recorrido que en realidad se usaría.
31
Imagen Original
Transformaeion de Perspeetiva
ROI de La Imagen
Figura 69 ROI delasMuestnsTomadas
32
6.2.5 Recorrido de la Imagen Capturada y Almacenamiento de Centros de Pista.
Con el fin de encontrar la ruta deseada fue necesario primero recorrer la imagen que se obtuvo desde la cámara, como sabemos que cada pixel toma solo valores de blanco y negro gracias a la umbralización, con base en esto el ROI de la pista se dividió en 4 segmentos y se recorrió cada segmento de la pista en su totalidad para encontrar un pixel negro que indicaba el comienzo de la misma.
Figura 6.10 Recorrido de Pista
333
Una vez el algoritmo encuentra un pixel negro inicia un conteo de pixeles negros con el fin de determinar el ancho de la pista que está viendo.
Figura 6.11 Ancho de Pista
Este dato se almacena en una variable para determinar su centro de la siguiente manera:
Formúla 6.1 Definición de Centro
Este sería nuestro primer dato, el centro del primer segmento de la pista, luego hace esto con cada segmento hasta determinar los 4 centros de la pista como se aprecia a continuación.
Figura 6.12 Centros de Pista
34
6.2.6 Definición de Ángulos y Longitud de Trama.
Al tener cada centro de la pista almacenado en un vector unimos un centro con otro definiendo tramas, para este caso en particular en cada ROI aparecerán 3 tramas.
Figura 6.13 Tramas en Muestra de la Pista
Posteriormente para definir el ángulo y la longitud de cada trama tomamos una por una y hacemos el siguiente análisis.
Se cuenta con 2 coordenadas en cada centro equivalentes a su posición en la imagen, con base en esto se traza un triangulo para determinar la longitud de la línea que une a los dos centros y el ángulo al que se encuentra uno del otro así:
Figura 6.14 Angulo y Longitud de Trama
35
Para el algoritmo de detección de ruta, el ángulo se define como:
Figura 6.15 Angulo y Longitud de Trama
Formula 6.2 Definición del Angulo de Tramo
Una vez definido el ángulo y la longitud de cada tramo, se tuvieron las siguientes observaciones:
1. Se pudo observar que la magnitud del ángulo no era tan considerable por lo que no era
eficiente que el robot girara cada vez que detectara un ángulo pequeño por lo que se definieron rangos de ángulo para caracterizar el movimiento en curva del robot. Cabe aclarar que lo que se buscaba era evitar el giro del robot por ángulos muy pequeños, pero cada giro está definido por la magnitud de su ángulo.
2. Se observo que los motores del robot giraban de manera diferente por lo que fue
necesario caracterizar cada motor por separado y definir una variable de movimiento para cada robot.
Con base en estas observaciones se definieron los siguientes tipos de giro, conforme el ángulo.
Primero: si el ángulo está entre -90° y 7° indica que el robot debe girar a la izquierda, por lo que el robot gira conforme el ángulo que le indica el algoritmo de detección de ruta.
Segundo: si el ángulo está entre 7° y 90° indica que el robot debe girar a la derecha por lo que el robot gira conforme al ángulo que le indica el algoritmo de detección de ruta.
36
Tercero: si el ángulo está entre -7° y 7° para evitar giros no considerables se le indica al robot que el robot debe desplazarse en línea recta conforme la longitud del tramo que detectó el algoritmo de detección de ruta.
En el caso en que el robot no detectara pista fue necesario incluir la orden de reversa, una vez el robot la realiza vuelve a capturar imagen y sigue con su rumbo normal.
Esta orden se almacena y se une con la orden de longitud del trayecto.
Estos datos hacen parte de una sola trama la cual se envía al microcontrolador Arduino UNO como un ejemplo de la trama que se envía al microcontrolador se presenta la siguiente explicación:
Inicio de Trama
Orden
Número
Longitud de Tramo
Significado
255 Mover Izquierda 1 X Mueve el Motor Derecho X Tiempo 255 Mover Derecha 2 Y Mueve el Motor Izquierdo Y Tiempo 255 Andar Derecho 3 Z Mueve el Motor Derecho Z Tiempo 255 Reversa 4 B Mueve el Motor Derecho B Tiempo
6.3 Envío de Trama al Microcontrolador Arduino UNO
Una vez se tienen los datos de cada trama (longitud, ángulo), estos se envían al microcontrolador tramo por tramo.
Luego el micro-controlador recibe los datos, los analiza y envía la respectiva orden de movimiento a cada servo motor tal como se indica en el siguiente diagrama de bloques:
37
Dedaraci6n de variables
Recibe dato serial y lo pasa a entero y almacena 1+---,
Si
inicio=inicio+a
tiempo=tiempo* 10 tie mpo=tiempo+a
lvlueve e l motor duecho dunUlte el \'alor de tie mpo
MueYe d motor izquierdo durante el valor de tiempo
lvlueve para aatras durante el valor de tiempo
Figura6.17
38
7. ANÁLISIS DE RESULTADOS
Como parte de los objetivos específicos de este trabajo de grado se midieron 2 tipos diferentes de error para evaluar la efectividad del código de detección de ruta contra la efectividad al realizar el mismo procedimiento de manera manual.
Los 2 tipos de mediciones de error que se efectuaron fueron:
1. El comportamiento del robot ante diferentes tipos de curva.
2. El error desde una vista superior del movimiento que sigue el robot, contra una
trayectoria deseada. 7.1 Comportamiento del Robot Ante Diferentes Tipos de Curva
Se definieron varios tramos con diferente inclinación para medir y caracterizar el comportamiento del robot ante los tramos que se le pudieran presentar al analizar una trayectoria, esta medida buscaba esclarecer hasta que punto el robot respondía de manera correcta ante una curva con diferente inclinación y si los giros a la izquierda eran igual de acertados que los giros a la derecha.
Se analizaron 6 curvas diferentes
Los datos que se obtuvieron del análisis de trayectoria con el algoritmo de detección de ruta fueron:
Curva No1.
X(cm) Y(cm) 0,00 0,00 0,53 4,19 0,53 8,39 1,12 12,42 1,12 16,62 1,72 20,89 1,99 21,02 3,32 25,21 3,59 25,33 5,12 29,52 9,43 29,52
Esta fue la trayectoria de la curva que arrojó el algoritmo de detección de trayectoria, como se puede apreciar a continuación hay algunos tramos que no están siguiendo una trayectoria deseada, sin embargo se ve como el robot intenta corregir su ruta para de esta manera
39
recorrer el tramo que se midió, a continuación el traslape de la ruta que siguió el robot con la curva original:
Curva No. 2
X(cm) Y(cm)
0,00 0,00 0,00 4,22 1,12 8,31 2,98 12,71 3,26 12,84 6,71 17,03 6,99 17,15
10,84 21,34 11,12 21,47 14,44 25,66 14,71 25,79 17,51 29,98 21,99 29,15 22,11 29,42 26,30 27,89
En este caso el robot dió reversa varias veces, esto debido a que como se aprecia en la figura original la curva tiene una inclinación bastate considerable por lo que el robot no fue capaz de seguirla y debió realizar varias capturas al dar reversa para retomar la ruta original, a continuación se ilustra el traslape de la ruta que siguió el robot con la curva original:
40
Curva No. 3
X(cm) Y(cm) 0,00 0,00 0,00 4,19 0,00 8,38 0,00 12,45 0,53 16,64 0,53 20,89 0,66 21,16 2,45 25,35 2,73 25,48 4,26 29,67
En este caso se obseva como hay varios tramos que presentan un comportamiento que no es el deseado, esto pudo ser ocasionado por fallas en la medición por parte de la cámara o simplemente por el hecho de que la curva original presenta un grado de giro considerable lo que pudo lleva a que el robot no generara la curva que se buscaba, como se aprecia a continuación el robot llegó al final de la curva pero presento los tramos no deseados mencionados anteriormente.
41
Curva No. 4
X(cm) Y(cm)
0,00 0,00 -0,53 4,19 -0,53 8,39 -0,53 12,45 0,13 16,64 0,35 16,85 0,35 21,08 0,35 25,23 0,62 25,36 4,83 25,36 9,04 25,36
En este caso en particular se ve como el robot hace un giro de 90° esto pudo haber sido causado al no haber existido una detección de trayectoria acertada y por ende el robot se vió forzado a hacer este giro para seguir la ruta en la que se encontraba, a continuación se aprecia como el robot llevó a cabo el seguimiento de la curva original.
42
Curva No. 5
X(cm) Y(cm)
0,00 0,00 0,00 4,19 0,00 8,25 0,00 12,44 0,00 16,64
-1,80 20,79 -1,53 20,91 -5,98 25,10
-10,18 25,10 -14,39 24,37 -18,94 22,39
Para este caso vemos como el robot siguió una trayectoria suave completando de manera exitosa el trayecto original como se aprecia a continuación:
43
Curva No. 6
X(cm) Y(cm)
0,00 0,00 0,00 4,19
-1,00 8,40 -3,67 13,26 -3,89 13,47 -6,88 17,66
En este caso se aprecia como el robot al principio se desvía completamente de la trayectoria pero retoma su rumbo y termina de realizar su trayecto a lo largo de la curva como se aprecia a continuación:
7.2 Error desde una Vista Superior con Base en Medidas Euclidianas.
Para medir el correcto funcionamiento del algoritmo de detección de ruta y de la transmisión de los datos al microcontrolador se definió como protocolo de pruebas un método que para evaluar el correcto seguimiento de la trayectoria por parte del robot.
El método consistió en la instalación de una cámara con vista superior perpendicular hacia la pista de prueba y con base en los datos que arrojaba el algoritmo detector de ruta se determinó la trayectoria que el robot siguió en su recorrido, al final de este recorrido se comparó mediante distancia euclidiana con la trayectoria deseada para de esta manera determinar el error que se presentó entre la trayectoria original y la que siguió el robot.
44
Figura 7.1 Ejemplo de la ubicación de la cámara para el protocolo de pruebas.
Inicialmente se trazó la ruta que el robot siguió durante el proceso de verificación del código de detección de ruta como se puede apreciar a continuación.
Posteriormente se tomaron varias muestras del recorrido que realizaba el robot sobre la ruta definida avanzando hacia la izquierda y avanzando a la derecha, de cada muestra se obtuvieron las coordenadas de cada tramo y se compararon con las que tenía la ruta ideal determinando su distancia euclidiana por medio de la siguiente fórmula:
Formula 7.1 Definición de la Distancia Euclidiana
45
Ruta No.1 Derecha a Izquierda
Grafica de La Ruta Numero 1 del Robot, Datos en Anexo de Tabla1
Distancia Euclidiana Tramo Manual vs Ruta No.1
(cm)
Ruta No.2 Derecha a Izquierda
Grafica de La Ruta Numero 2 del Robot, Datos en Anexo de Tabla 2
46
Distancia Euclidiana Tramo Manual vs Ruta No.2
(cm)
Ruta No.3 Derecha a Izquierda
Grafica de La Ruta Numero 3 del Robot, Datos en Anexo de Tabla 3
Distancia Euclidiana Tramo Manual vs Ruta No.3
(cm)
Ruta No.4 Izquierda a Derecha
47
Grafica de La Ruta Numero 4 del Robot Datos en Anexo de Tabla 4
Distancia Euclidiana Tramo Manual vs Ruta No.4
Ruta No.5 Izquierda a Derecha
Grafica de la Ruta Número 5 del Robot, Datos en Anexo de Tabla 5
Distancia Euclidiana Tramo Manual vs Ruta No.5
(cm)
48
8. CONCLUSIONES
Es importante realizar una buena calibración ya que esta constituye una base importante para el desarrollo de cualquier algoritmo que trabaje con visión por computador.
El valor de la umbralización que entrega la transformación Otsu permite trabajar con las imágenes tomadas de la cámara ya que por medio de esta transformación a los pixeles de la imagen se le otorga únicamente 2 valores 255 para blanco y 0 para negro, lo que hace más fácil la caracterización y posterior transformación de las imágenes.
Es necesario siempre realizar una umbralización apropiada para poder trabajar con las imágenes que se capturen, una mala umbralización no permitirá que los valores de pixeles solo tomen dos valores y las medidas se verán alteradas o por ruido o por valores de pixel no definidos.
Para este proyecto fue necesario trabajar con la imagen recortada aplicando un ROI ya que si se trabajaba con la imagen con tamaño normal, los elementos ajenos a la ruta eran vistos como ruido y hacían que las mediciones se alteraran.
Siempre que se trabajen con robots que tengan movimiento es de suma importancia parametrizar las características de cada uno de sus componentes, en este caso fue necesario caracterizar cada motor ya que estos funcionaban de manera diferente.
Para este proyecto fue necesario tener una ruta bien iluminada para evitar que aparezcan sombras y estas generen ruido en el código.
Durante el desarrollo del proyecto se evidencio como se pueden integrar varias fuentes de software y hardware para el desarrollo de un proyecto en común, esto demuestra que trabajar con sistemas Open Source es una ventaja.
Es importante resaltar la importancia de la calibración de la cámara ya que por medio de esta tenemos una relación pixeles/centímetros y por ende la instrucción de longitud de trayecto tiene un equivalente tanto en pixeles como en centímetros.
Los resultados obtenidos en el análisis de las curvas nos dejan la conclusión de que el código trabaja de manera aceptable y que es bastante útil el hecho que ante alguna posible falla este de reversa y vuelva a capturar imagen.
Los resultados al determinar las distancias euclidianas de cada una de las 5 rutas contra la ruta trazada manualmente son congruentes con el trazo y el seguimiento de las trayectorias originales ya que en los videos tomados se ve como el robot sigue adecuadamente la pista. Los errores que se presentaron probablemente fueron causados por errores en la captura de ruta o ruido que se pudiera presentar durante la detección de trayectoria por parte del algoritmo.
49
9. REFERENCIAS [1] BeagleBoard-xM Rev C System Reference Manual. (2010).
[2] Bradski, G., & Kaehler, A. (n.d.). Learning OpenCV.
[3] Pratt, W. K. (2001). Digital Image Processing. New York, USA: John Wiley & Sons, Inc. doi:10.1002/0471221325
[4] Anil_K_Jain. (n.d.). Fundamentals of Digital Image Processing.
[5] Russ, J. C. (n.d.). The Image Processing Handbook.
[6] Ohya, a., Kosaka, a., & Kak, a. (n.d.). Vision-based navigation of mobile robot with obstacle avoidance by single camera vision and ultrasonic sensing. Proceedings of the 1997 IEEE/RSJ International Conference on Intelligent Robot and Systems. Innovative Robotics for Real-World Applications. IROS ’97, 2, 704–711. doi:10.1109/IROS.1997.655088
[7] Haselhoff, A., & Kummert, A. (2009). 2D line filters for vision-based lane detection
and tracking. 2009 International Workshop on Multidimensional (nD) Systems, 1–5. doi:10.1109/NDS.2009.5196176
[8] Reccari, G., Caselli, Y., & Zanichelli, F. (1997). Vision-based Line Tracking and
Navigation in Structured Environments *, 406–411. [9] Winters, N., Lacey, G., Ireland, D., Winters, N., & Lacey, G. (2000). Omni-directional
Vision for Robot Navigation. [10] Thrun, S., Montemerlo, M., Dahlkamp, H., Stavens, D., Aron, A., Diebel, J., Fong, P.,
et al. (2006). Stanley: The robot that won the DARPA Grand Challenge. Journal of Field Robotics, 23(9), 661–692. doi:10.1002/rob.20147
[11] Francisco Gabriel Ortiz. Procesamiento Morfologíco de imagines en color. Tesis
Doctoral, Escuela Politecnica Superior.
50
10. Anexos
10.1 Anexo de Tabla 1
X(cm) Y(cm)
0,00 -2,00
-4,20 -2,00
-8,40 -2,00
-12,46 -2,00
-16,67 -2,00
-20,87 -2,00
-24,95 -2,00
-29,14 -2,53
-33,36 -2,53 -37,44 -2,53
-41,65 -2,53
-45,85 -2,53
-49,92 -2,53
-54,13 -2,53
-58,33 -2,53
-62,41 -2,53
-66,61 -2,53
-70,72 -1,14
-75,42 0,70
-75,54 0,97
-79,73 3,89
-79,86 4,17
-79,86 8,36
-79,86 12,56
-79,86 16,63
-79,86 20,83
-79,86 25,02
-79,86 29,10
-79,86 33,29
-79,86 37,49
-79,86 41,56
-79,33 45,75
-79,33 50,04
-79,06 50,17
-77,13 54,36
-76,86 54,48
-75,00 58,67
-74,72 58,80
-70,53 58,8
-66,34 58,8
-62,28 58,8
-58,08 58,8
-53,89 58,8
-49,84 58,8
51
-45,64 58,8
-41,45 58,8
-37,39 58,8
-33,19 58,8
-28,98 58,8
-24,92 58,8
-20,73 58,20
-16,50 58,2
-12,43 58,2
-12,16 58,07
-7,97 57,21
-3,57 57,21
-3,30 57,08
-0,44 52,89
-0,71 52,77
-0,71 48,55
-0,71 44,32
-0,71 40,23
-0,71 36,00
-0,71 31,79
-0,71 27,70
-0,71 23,51
-0,71 19,31
-0,71 15,25
-0,71 11,06
-1,58 6,85
-1,58 2,58 -1,31 2,46
-3,77 -1,73
-4,04 -1,86
-8,23 -1,86
-12,42 -1,86
10.2 Anexo de Tabla 2
X (cm) Y(cm) 0,00 -2,00
-4,22 -2,00
-8,43 -2,00
-12,51 -2,00
-16,70 -1,40
-20,87 -1,40
-24,86 -0,08
-26,59 1,65
-27,26 6,46
-27,39 6,59
-29,32 10,78
-29,59 10,90
52
-29,59 15,09
-29,59 19,28
-29,59 23,34
-29,59 27,53
-29,59 31,72
-29,59 35,78
-29,59 39,97
-29,59 44,16
-29,59 48,22
-29,59 52,42
-28,06 56,74
-28,06 61,21
-28,28 61,42
-26,41 65,61
-26,14 65,73
-24,01 69,92
-23,74 70,05
-19,55 70,05
-15,35 70,05
-11,29 70,05
-7,09 70,05
-2,89 70,05
1,17 70,05
5,36 70,05
9,55 70,05
13,61 70,05
17,80 70,05 21,99 70,05
26,05 70,05
30,25 70,05
34,46 70,05
38,53 70,05
42,72 70,65
46,88 70,12
50,91 68,80
54,10 64,61
57,56 60,42
57,29 60,29
57,29 56,08
57,29 51,87
57,29 47,79
57,29 43,60
57,29 39,40
57,29 35,33
57,29 31,14
57,29 26,95
57,29 22,89
57,29 18,69
56,23 14,38
53
56,23 9,99
55,96 9,87
53,90 5,68
53,63 5,55
49,44 1,36
45,26 -2,84
41,19 -2,84
40,98 -3,05
36,78 -3,05
36,84 -3,05
36,84 -3,05
36,98 -3,05
37,04 -3,05
36,97 -3,05
32,78 -3,05
28,72 -3,05
10.3 Anexo de Tabla 3
X (cm) Y (cm)
-30,00 25,00
-30,00 29,19
-30,00 33,39
-28,86 34,53
-28,99 34,66
-26,06 38,85
-20,99 38,79
-20,78 38,58
-16,59 39,51
-12,34 39,32
-12,55 39,53
-8,36 39,53
-4,17 39,53
-0,11 39,53
4,08 39,53
8,27 39,53
12,33 39,53
16,52 39,53
20,71 39,53 24,76 39,53
28,96 39,53
33,16 39,53
37,22 39,53
41,43 39,53
45,63 39,53
44,65 35,54
42,85 31,35
42,73 31,08
54
40,00 26,89
40,00 22,09
40,69 17,84
40,42 17,71
41,28 13,52
41,28 9,31
41,07 9,09
40,47 4,90
40,47 0,68
40,47 -3,42
40,47 -7,61
40,47 -11,81
40,47 -15,87
40,47 -20,06
40,47 -24,25
39,61 -28,30
38,34 -32,49
38,22 -32,76
34,03 -35,49
29,06 -35,49
28,79 -35,62
24,60 -35,62
20,41 -35,62
16,36 -35,62
12,16 -35,62
7,97 -35,62
3,76 -35,62 -0,43 -35,62
-0,43 -35,62 -4,63 -35,62
-8,82 -35,62
-9,03 -35,83
-13,22 -35,10
-17,49 -35,10
-21,61 -35,10
-25,83 -35,10
-30,10 -34,57
-34,31 -34,57
-34,53 -34,87
-35,79 -30,68
-35,09 -26,09
-35,22 -25,82
-32,69 -21,63
-32,81 -21,36
-31,88 -17,17
-31,88 -12,86
-31,88 -12,86
-32,10 -13,07
-32,10 -8,88
55
-32,10 -4,69
-32,10 -0,64
-32,10 3,55
-32,10 7,74
-32,10 11,80
-32,10 15,99
-32,10 20,20
-32,10 24,35
10.4 Anexo de Tabla 4
X (cm)
Y (cm)
30,00
25,00
30,00
29,21
30,00
33,42
30,00
37,49
30,67
41,68
30,67
45,91
30,67
50
31,4
50,73
31,40
54,96
31,40
59,03
27,21
59,83
22,67
61,27
18,48
63,86
12,89
64,94
8,691
64,94
4,492
64,94
0,431
64,94
-3,764
64,94
-7,962
64,94
-12,03
64,94
-16,23
64,94
-20,44
64,94
-24,52
64,94
-28,73
64,94
-32,93
64,94
-37
64,94
-41,22
64,94
-45,43
64,94
-49,51
64,94
-53,72
64,94
56
-57,97
64,94
-62,26
63,73
-66,45
60,61
-70,64
57,68
-70,64
52,33
-69,65
48,14
-69,65
43,82
-69,65
39,66
-70,51
35,47
-70,51
31,18
-70,51
27,03
-69,51
22,84
-69,51
18,53
-69,51
14,38
-65,32
12,45
-60,38
11,73
-56,19
7,672
-52
4,746
-51,23
0,169
-47,04
0,169
-42,85
0,169
-38,79
0,169
-34,6
0,169
-30,41
0,169
-26,36
0,169
-22,17
0,169
-17,97
0,169
-13,91
0,169
-9,705
0,169
-5,49
0,169
-1,406
0,169
2,784
-0,496
7,037
-0,496
11,23
-0,496
15,42
2,097
19,61
4,292
25,42
6,354
25,42
10,55
25,42
14,74
25,42
18,8
57
10.5 Anexo de Tabla 5
X (cm)
Y(cm)
30,00
25,00
25,79
25,00
24,73
23,94
23,93
23,14
20,68
19,88
14,94
19,88
13,34
18,29
8,86
18,29
4,52
18,29
3,52
17,29
-0,82
17,29
-4,99
17,29
-5,79
16,49
-10,06
16,49
-14,19
16,49
-15,79
14,90
-18,58
12,10
-22,84
7,85
-26,50
4,19
-26,50
0,00
-26,50
-4,20
-26,50
-8,25
-26,50
-12,45
-26,50
-16,65
-26,50
-20,73
-25,83
-21,39
-25,83
-25,62
-25,83
-29,72
-25,30
-29,19
-25,30
-33,42
-25,30
-37,52
-24,70
-36,92
-24,70
-41,16
-24,70
-45,26
-24,10
-45,86
-22,85
-47,11
-19,99
-49,97
-16,40
-53,56
-11,13
-53,56
58
-10,07
-52,50
-5,75
-52,50
-1,55
-52,50
-0,75
-51,70
3,51
-51,70
7,63
-51,70
8,30
-51,03
12,55
-51,03
16,65
-51,03
17,98
-49,70
19,06
-48,63
22,19
-45,50
22,93
-44,75
22,93
-40,56
22,93
-36,35
22,93
-32,29
23,60
-31,62
23,60
-27,37
23,60
-23,25
25,39
-21,45
25,39
-17,26
25,39
-13,07
25,39
-9,01
25,39
-4,81
25,39
-0,62
25,39
3,44
25,39
7,49
25,39
11,71
24,80
12,30
23,09
14,01