Вы находитесь на странице: 1из 75

Universidad Nacional del Nordeste Facultad de Ciencias Exactas, Naturales y Agrimensura

Proyecto Final de Carrera Ingeniera en Electrnica

2013

Tema del proyecto:


Clasificador inteligente de objetos con visin artificial utilizando un brazo articulado

Alumnos:
Fernndez, Diego Ibarra, Alexis Gabriel

Profesor:
Lombardero, Oscar Guillermo

Contactos:
axs.ibarra@gmail.com (Ibarra Alexis) diego.fernandez@yahoo.com.ar (Fernndez Diego) webmaster@exa.unne.edu.ar (UNNe, FaCENA)

Agradecimientos
Dedicamos esta pgina, para salvar una deuda afectiva con todas las personas que estuvieron cerca y lejos, pero siempre presentes y siempre dispuestos a ofrecer su apoyo sin importar las circunstancias. A nuestras familias, en especial a Sequi, Axel, Ailen, Olga, Gabriel, Erica, Tony, Ceci, Merce y Javi. A Carolina. A Jimena. A Luciano Zini, Juanjo Cochia, Aquino Carlos, Julian Veglia, y todos nuestros amigos, profesores, compaeros y conocidos. Agradecemos a estas personas que estuvieron siempre, que nos brindaron apoyo y fuerzas en el transcurso de nuestra carrera, y que contribuyeron con opiniones, objeciones, ideas, cuestiones, preguntas, y todo tipo de aportes indispensables para haber logrado nuestro objetivo. Se agradece profundamente el tiempo que nos dedicaron a nosotros y al proyecto.

Resumen
En este proyecto final se implement un sistema clasificador de objetos, en donde se utiliz la visin artificial para la deteccin de las posiciones y las caractersticas de los objetos (color y tamao), para que luego puedan ser manipulados por un brazo robot. Adicionalmente se desarroll una aplicacin que permite, utilizando el mismo hardware desarrollado y a travs de la captura de los movimientos de la mano del usuario, el control del brazo robot. Para el logro del proyecto se desarrollaron programas y algoritmos utilizando el lenguaje de programacin Python, las libreras OpenCV y Qt, y las plataformas de hardware Arduino y Pinguino (herramientas de cdigo abierto). Los mismos son capaces de adquirir imgenes, procesarlas y controlar el movimiento del brazo robtico. El tiempo de desarrollo completo del proyecto fue de aproximadamente un ao.

ndice General

ndice General:
1. Introduccin ................................................................................................................. 5 2. Fundamentos tericos: Visin por computadora ........................................................... 6
2.1. Introduccin: ................................................................................................................................ 6 2.2. Procesamiento digital de imgenes ............................................................................................. 7 2.2.1. Captura.................................................................................................................................. 7 2.2.1.1. Sensores pticos ............................................................................................................ 9 2.2.1.2. Qu es tiempo real? ..................................................................................................... 9 2.2.1.3. Tasa de datos ................................................................................................................. 9 2.2.2. Acondicionamiento y transformaciones bsicas ................................................................ 10 2.2.3. Algoritmos bsicos .............................................................................................................. 12 2.2.4. Algoritmos Especficos ........................................................................................................ 14 2.2.5. Reconocimiento de ciertos objetos en imgenes ............................................................... 16 2.4. Procesamiento digital en una secuencia de imgenes (video) .................................................. 17

3. Hardware: Diseo de la plataforma de visin artificial ................................................. 21


3.1. Introduccin: .............................................................................................................................. 21 3.2. Componentes: ............................................................................................................................ 22 3.2.1. Brazo Robot......................................................................................................................... 22 3.2.1.1. Materiales y mtodos de construccin........................................................................ 23 3.2.1.2. Hardware de control .................................................................................................... 24 3.2.1.2.1. Software del microcontrolador ............................................................................. 25 3.2.1.3. Cinemtica ................................................................................................................... 28 3.2.2. Webcam .............................................................................................................................. 32 3.2.2.1. Diseo y construccin de soporte................................................................................ 33 3.2.3. rea o zona de trabajo ........................................................................................................ 34 3.2.4 PC ......................................................................................................................................... 34

4. Software: Diseo y desarrollo del software especializado ............................................ 36


4.1. Introduccin: .............................................................................................................................. 36 4.2 Herramientas .............................................................................................................................. 37 4.2.1 Python .................................................................................................................................. 37 4.2.2. Qt4 y Qt4 Designer (librera e IDE para interfaz grfica) .................................................... 39 4.2.3. OpenCV ............................................................................................................................... 40 4.2.4. Arduino IDE ......................................................................................................................... 41 4.2.5. Editor de texto Gedit........................................................................................................... 42 4.3. Aplicacin 1: Reconocimiento de objetos .................................................................................. 42 4.3.1. Procesos principales............................................................................................................ 43 4.3.2. Interfaz grfica .................................................................................................................... 44 4.4. Aplicacin 2: Interfaz inalmbrica usuario-robot ...................................................................... 47 1

ndice General 4.4.1. Procesos principales............................................................................................................ 48 4.4.2. Interfaz grfica .................................................................................................................... 50

5. Implementacin: Ensayos y resultados ........................................................................ 53


5.1. Brazo Robot................................................................................................................................ 53 5.2. Aplicacin 1 ................................................................................................................................ 58 5.3. Aplicacin 2 ................................................................................................................................ 60

6. Conclusiones .............................................................................................................. 64
6.1. Trabajos futuros ......................................................................................................................... 65

7. Bibliografa ................................................................................................................. 66 8. Anexos ....................................................................................................................... 67


8.1. Anexo A: Programa del microcontrolador ................................................................................. 67

ndice de figuras y Tablas

ndice de Figuras:
Figura 1. 1: Arquitectura del proyecto. .................................................... Error! Marcador no definido. Figura 2. 1: Esquema de las relaciones entre la visin por computadora y otras reas afines. ............. 6 Figura 2. 2: Etapa de AOI. ....................................................................................................................... 8 Figura 2. 3: Deteccin de fallas en un circuito impreso. ......................................................................... 8 Figura 2. 4: Ejemplo de smoothing. ...................................................................................................... 10 Figura 2. 5: Ejemplo de erode. .............................................................................................................. 11 Figura 2. 6: Ejemplo de ThresHold. ....................................................................................................... 12 Figura 2. 7: Resolucin del histograma. ................................................................................................ 13 Figura 2. 8: Inscripcin de una geometra............................................................................................. 14 Figura 2. 9: Aproximacin polinmica. ................................................................................................. 13 Figura 2. 10: Estudio de convexidad. .................................................................................................... 14 Figura 2. 11: Esquematizacin del funcionamiento de MeanShift. ...................................................... 16 Figura 2. 12: Pasos sucesivos para aislar un objeto de inters de una imagen capturada................... 17 Figura 2. 13: Lnea de montaje industrial. ............................................................................................ 18 Figura 2. 14: Filtro predictivo de Kalman. ............................................................................................. 19 Figura 2. 15: Ciruga a distancia, implementada con equipo especializado. ........................................ 20 Figura 3. 1: Arquitectura del proyecto. ................................................................................................. 21 Figura 3. 2: Arquitectura de una plataforma de visin artificial. .......................................................... 22 Figura 3. 3: Brazo robot desarrollado ................................................................................................... 22 Figura 3. 4: Tubos de PVC utilizados. .................................................................................................... 23 Figura 3. 5: Servos Hitec HS-311 y HS-55 utilizados. ............................................................................. 24 Figura 3. 6: Seales de control de un servomotor ................................................................................. 26 Figura 3. 7: Estructura del software del microcontrolador ................................................................... 27 Figura 3. 8: Estudio de Cinemtica........................................................................................................ 28 Figura 3. 9: Representacin grfica del brazo robot. ............................................................................ 29 Figura 3. 10: Representacin del brazo robot en 3 dimensiones .......................................................... 29 Figura 3. 11: Representacin del brazo robot en 2 dimensiones. ......................................................... 30 Figura 3. 12: Valores extremos de . .................................................................................................... 31 Figura 3. 13: Webcam utilizada. ........................................................................................................... 33 Figura 3. 14: Soporte realizado. ............................................................................................................ 34 Figura 4. 1: Pasos seguidos en la elaboracin del software. ................................................................ 37 Figura 4. 2: Qt Designer utilizado para el diseo del GUI. .................................................................... 40 Figura 4. 3: Entorno de desarrollo Arduino. .......................................................................................... 41 Figura 4. 4: Editor de textos Gedit. ....................................................................................................... 42 Figura 4. 5: Procesos de la aplicacin 1. ............................................................................................... 43 Figura 4. 6: Ventana principal de la aplicacin 1. ................................................................................. 45 Figura 4. 7: Pestaa Iniciar. ............................................................................................................... 46 Figura 4. 8: Pestaa Configuracin.................................................................................................... 47 3

ndice de figuras y Tablas Figura 4. 9: Procesos de la aplicacin 2. ............................................................................................... 48 Figura 4. 10: Ventana principal de la aplicacin 2. ............................................................................... 50 Figura 4. 11: Pestaa Inicio. .............................................................................................................. 51 Figura 4. 12: Pestaa Configuracin.................................................................................................. 52 Figura 5. 1: Mediciones de posicionamiento en X. ................................................................................ 55 Figura 5. 2: Mediciones de posicionamiento en Z. ................................................................................ 56 Figura 5. 3: Mediciones de posicionamiento del ngulo de la base...................................................... 58 Figura 5. 4: Medicin de posiciones de objetos. ................................................................................... 59 Figura 5. 5: Mediciones de rea de la mano abierta. ........................................................................... 61 Figura 5. 6: Mediciones de rea de la mano cerrada............................................................................ 62 Figura 5. 7: Relacin rea de la mano abierta a altura. ....................................................................... 62 Figura 5. 8: Relacin rea de la mano cerrada a altura........................................................................ 62 Figura 5. 9: Diferencia entre reas........................................................................................................ 63

ndice de Tablas:
Tabla 3. 1: Comparacin entre las plataformas Arduino UNO y Pingino 4550................................... 25 Tabla 4. 1: Crecimiento de los lenguajes de programacin. ................................................................. 39 Tabla 5. 1: Mediciones de posicionamiento en X. ................................................................................. 54 Tabla 5. 2: Mediciones de posicionamiento en Z. ................................................................................. 55 Tabla 5. 3: Mediciones de posicionamiento corregido en Z. ................................................................. 57 Tabla 5. 4: Mediciones de posicionamiento del ngulo de la base. ...................................................... 57 Tabla 5. 5: Mediciones de posicionamiento del ngulo de la base. ...................................................... 59 Tabla 5. 6: Mediciones de rea de la mano abierta.............................................................................. 61 Tabla 5. 7: Mediciones de rea de la mano cerrada. ............................................................................ 61

1. Introduccin

1. Introduccin
En el enfoque industrial, la automatizacin es el paso ms all de la mecanizacin, en donde los procesos industriales son asistidos por mquinas o sistemas mecnicos que reemplazan las funciones que antes eran realizadas por el ser humano. Gracias al avance en los sistemas computacionales y las tecnologas empleadas, cada vez ms procesos pueden ser automatizados, generando una produccin ms eficiente, rpida y con menores riesgos para los operarios. Uno de los avances ms importantes fue la incorporacin de robots o autmatas a las lneas de produccin industriales. Su uso ha ido en aumento desde fines de la dcada de 1970, cuando empresas de EEUU empezaron a interesarse por la robtica. Actualmente cumplen tareas de manipulacin, manufactura, ensamble y transporte de objetos. Para el logro de dichas tareas estos robots deben ser previamente programados con rutinas que debern realizar repetitivamente. Otro avance importante, y mucho ms reciente, fue el de incorporar a los procesos industriales y administrativos las nuevas tecnologas computacionales inteligentes como los sistemas de visin por computadora (mediados de los noventa). Estos sistemas se componen de cmaras de video especializadas encargadas de adquirir imgenes y de funciones y algoritmos cuyo objetivo es la obtencin de informacin para el control de un proceso. Actualmente se utilizan para tareas de control de calidad en los sectores de las industrias de packaging, electrnica, madera, robtica, manufactura, frmacos, logstica, entre otros. La realizacin del proyecto nace de la idea de juntar ambas tecnologas. La unin de la visin computacional con la robtica permitir el desarrollo de plataformas de manufactura flexibles, en donde los autmatas puedan realizar tareas con algoritmos de decisin y que no requieran ser reprogramados continuamente. Con esta idea en mente se opt por la realizacin de un sistema clasificador de objetos, en donde un brazo robot pueda manipular autnomamente los objetos a su alrededor (aplicacin 1). Valindose nicamente de conocimientos previos, autodidactas, sobre temas puntuales como programacin, linux, mecnica, etc., se procedi a la realizacin del proyecto previa bsqueda de informacin y eleccin de las herramientas a utilizar. Se decidi realizar, como aplicacin adicional, el control del brazo robot por medio de la captura de movimientos de la mano del usuario (aplicacin 2).

2. Fundamentos tericos: Vision por computadora

2. Fundamentos tericos: Visin por computadora


2.1. Introduccin:

Figura 2. 1: Esquema de las relaciones entre la visin por computadora y otras reas afines. La visin artificial, tambin conocida como visin por computador (del ingls computer vision) o visin tcnica, es un subcampo de la inteligencia artificial. El propsito de la visin artificial es programar un computador para que "entienda" una escena o las caractersticas de una imagen. Los objetivos tpicos de la visin artificial incluyen: La deteccin, segmentacin, localizacin y reconocimiento de ciertos objetos en imgenes (por ejemplo, caras humanas). La evaluacin de los resultados (por ejemplo, segmentacin, registro). Registro de diferentes imgenes de una misma escena u objeto, es decir, hacer concordar un mismo objeto en diversas imgenes. Seguimiento de un objeto en una secuencia de imgenes.

2. Fundamentos tericos: Vision por computadora Mapeo de una escena para generar un modelo tridimensional de la escena; este modelo podra ser usado por un robot para navegar por la escena. Estimacin de las posturas tridimensionales de humanos. Bsqueda de imgenes digitales por su contenido.

Estos objetivos se consiguen por medio de reconocimiento de patrones, aprendizaje estadstico, geometra de proyeccin, procesamiento de imgenes, teora de grafos y otros campos. La visin artificial cognitiva est muy relacionada con la psicologa cognitiva y la computacin biolgica. En campo de aplicacin es entonces muy diverso. En el prototipo desarrollado, se implementaron principalmente las siguientes tareas: Reconocimiento de ciertos objetos en imgenes. Seguimiento de objetos en una secuencia de imgenes Serie estadsticas de decisin. Evaluacin de resultados (respuestas del autmata).

2.2. Procesamiento digital de imgenes


El procesamiento digital de imgenes se define como el campo que se encarga de manipular imgenes digitales con el objetivo de mejorarlas o identificar cierta informacin relevante. Involucra, desde el punto de vista de los clculos, tratamiento matemtico de matrices y anlisis estadstico. A continuacin se presentan los conceptos bsicos relacionados con el procesamiento de imgenes [2]: Pixel: elemento bsico de una imagen. Imagen: arreglo bidimensional de pxeles con diferente intensidad luminosa (escala de gris). Matemticamente una imagen se representa por r=f(x,y) en donde r es la intensidad luminosa del pixel, cuyas coordenadas son (x,y). Color: el color se forma mediante la combinacin de los tres colores bsicos: rojo, verde y azul (RGB). Esto quiere decir, que una imagen a color est representada matemticamente por 3 arreglos bidimensionales de pxeles (matrices), uno para cada color bsico.

La tarea de implementar un sistema de procesamiento digital de imgenes involucra capturar, filtrar o acondicionar, procesar e interpretar los resultados. 2.2.1. Captura La captura de imagen representa el front-end del sistema en el cual intervienen las cmaras y adquisidores de imgenes, formadas, al igual que el ojo humano, por una lente convergente que proyecta la imagen sobre una superficie sensible a la luz denominada sensor de imagen o sensor ptico.

2. Fundamentos tericos: Vision por computadora Existen diversos sensores pticos con varias configuraciones de conexin. En algunos se provee de iluminacin externa especfica para la aplicacin, como ser luz UV, infrarroja o rayos X. Por ejemplo, en la etapa de AOI (automatic optic inspection, inspeccin ptica automtica) en una lnea de ensamblaje y soldado de placas electrnicas, se utiliza un equipo especializado, que se vale de cmaras de 5Mpx y de iluminacin propia de rayos X e infrarrojo, con el propsito de detectar fallas en la placa final. Tomando sucesivas fotos el equipo detecta, entre otras cosas, malas etiquetas en los componentes, como muestra en la figura 2.3, donde un capacitor electroltico fue puesto al revs.

Figura 2. 2: Etapa de AOI.

Figura 2. 3: Deteccin de fallas en un circuito impreso. 8

2. Fundamentos tericos: Vision por computadora

2.2.1.1. Sensores pticos Los sensores digitales de imagen estn formados por una serie de foto sensores que modifican su seal elctrica segn la intensidad luminosa que reciben, lo que permite la captura de los puntos que conforman la imagen. Estos sensores suelen estar configurados en forma matricial de modo que proporcionan una imagen bidimensional. Tambin, a nivel industrial, se emplean sensores en configuracin de lnea, que dada sus altas resoluciones, se utilizan para aplicaciones de medida. Los sensores son realizados en dos tecnologas, principalmente en CCD y en CMOS. La tecnologa CCD es la que proporciona mejor calidad de imagen y con menor ruido. Sensores CMOS son generalmente ms susceptibles al ruido pero consumen 100 veces menos potencia. La tecnologa CMOS es la ms econmica y ofrece un menor tamao, gracias a su grado de integracin electrnica. Adems puede capturar partes de la imagen no teniendo que transmitirla completamente.

2.2.1.2. Qu es tiempo real? Se puede decir que tiempo real es una interpretacin de una persona que visualiza, escucha, siente o interpreta una secuencia multimedia como si fuera fluida o continua, sin importar si en realidad son secuencias discretas de datos. El ejemplo ms clsico es el del video en una cinta con fotogramas, como el cine. Si los fotogramas pasan demasiado lento se percibir una secuencia por pasos. Entonces esto lleva a definir un margen mnimo de fps (frames por segundo) necesario para que un sistema de captura de imgenes sea interpretado como de tiempo real. En la prctica el margen mnimo est en el orden de los 15 fps. Dicho valor est determinado por la persistencia de una imagen en la retina del ojo humano, que es de 16 ms, sumada a la persistencia de la corteza visual que oscila entre 100 y 400 ms.

2.2.1.3. Tasa de datos La reproduccin de video y video en vivo son los archivos multimedia que ms ancho de banda requieren para su correcto funcionamiento, incluso ms que un juego en red. Como ejemplo, puede plantearse la siguiente situacin: se debe guardar video de una cmara digital, es decir una secuencia de imgenes, durante un minuto seguido a una frecuencia de fotograma de 30 fps, con una resolucin de 1,3 Mpx (1280 x 960) y con una profundidad de color de 16bits. Un clculo rpido da el tamao del buffer requerido y la tasa de datos que deber manejar el sistema: Buffer = 1280 * 960 * 30 * 60 * 16 = 35,4 Gbits

2. Fundamentos tericos: Vision por computadora Bit Rate = Buffer / 60 = 590 Mbits / seg Ambos son nmeros difciles de manejar a menos que se cuente con un servidor dedicado o un clster. Vale la pena aclarar que no se usaron parmetros reales de profundidad de imagen y resolucin de pxeles, los cuales generalmente son de 32bits y 12Mpx.

2.2.2. Acondicionamiento y transformaciones bsicas Bsicamente el procesamiento de video es el procesamiento de imgenes aplicado a una secuencia de imgenes sucesivas y relacionadas. Por lo tanto, mucho del contenido matemtico y fundamental implementado en el procesamiento de imgenes es vlido para el procesamiento de video. La principal diferencia existe en los estudios de tipo estadstico predictivo y el anlisis de objetos particulares en una secuencia de video, ya que muchos de estos algoritmos son recursivos, es decir, no pueden aplicarse a imgenes discontinuadas o aisladas. Por otro parte puede decirse que el anlisis y estudio de las imgenes relacionadas como secuencia de video es el punto crtico de todo sistema de visin artificial. Si bien existen varias herramientas, mtodos y funciones que OpenCV provee para tal finalidad [1], muchsimas veces, como en el caso de este proyecto, el procesamiento de video es diferente para cada sistema. Esto condiciona a los desarrolladores, a generar y programar sus propios algoritmos de procesamiento de video, sin ser funciones especficas para tal fin. En la seccin 2.4 se detallan los principales algoritmos de procesamiento de video utilizados. A continuacin se describen las principales funciones de acondicionamiento y transformacin aplicadas a imgenes:

Figura 2. 4: Ejemplo de smoothing. 10

2. Fundamentos tericos: Vision por computadora

Smoothing El smoothing o difuminado hace exactamente lo que dice su nombre, difumina o elimina los cambios o flancos abruptos de color en una imagen. En openCV la funcin se llama cv.Smooth() [1] [3]. En la figura 2.4 puede verse la aplicacin del smoothing a una imagen, obteniendo como resultado la imagen ubicada a la izquierda de la figura. Erode y Dilate Los algoritmos de erosin (erode) y dilatacin (dilate) rara vez aparecen independientes, por eso se los agrupa como un solo mtodo. Se aplican a imgenes grises (escala de blancos entre 0-255), y son transformaciones de tipo morfolgicas, ya que matemticamente hablando hacen una convolucin en toda la imagen desplazando un kernel (o ventana superficial). En la figura 2.5 se muestran cuatro etapas de erosin consecutiva, empezando por la imagen superior izquierda. Como puede verse, la erosin achica proporcionalmente los cuerpos u objetos cerrados y lo opuesto hace la dilatacin, tambin proporcionalmente al rea del objeto.

Figura 2. 5: Ejemplo de erode. Threshold Los algoritmos de umbral (ThresHold) se aplican tambin a imgenes en escala de grises, y son prcticamente un filtro pasa banda de color de ventana cuadrada. El mismo deja pasar slo las 11

2. Fundamentos tericos: Vision por computadora intensidades de color que estn dentro del rango especificado. Se usa habitualmente para binarizar imgenes.

Figura 2. 6: Ejemplo de ThresHold. DFT y IDFT La DFT aplicada a una imagen no es ms que una DFT bidimensional y se aplica siempre a imgenes en escala de grises. Aqu el concepto de frecuencia y periodo se ven ligeramente modificados ya que eso depende de la tasa de imgenes por segundo que tengamos y del tamao de la misma. La utilizacin de la DFT es muy especfica y generalmente parte de algoritmos ms complejos. Para usos aislados, rara vez se ve superada por la convolucin espacial (transformada del kernel).

2.2.3. Algoritmos bsicos Dentro de esta seccin de algoritmos bsicos se detallan las funciones que involucran una o varias de las transformaciones bsicas nombradas en la seccin anterior, como parte de la tarea total que realizan. Histograma El clculo de un histograma es bsicamente una mensura de los componentes que integran una imagen, es un grfico de tipo estadstico de dos ejes, o bidimensional, este ltimo generalmente del mismo tamao que la imagen. Lo ms utilizado es el grfico de dos ejes, donde en cada eje se representa una caracterstica de la imagen, por ejemplo color - valor, color - cantidad, cantidad-valor, etc. La figura 2.6 esquematiza bastante bien lo que representa un histograma en una imagen y en donde puede verse que la resolucin del histograma depende del tamao de la grilla.

12

2. Fundamentos tericos: Vision por computadora

Figura 2. 7: Resolucin del histograma. Contours La deteccin de contornos realiza un seguimiento recursivo de flancos de color en una imagen.Para que dicho algoritmo se ejecute adecuadamente, la imagen debe tener ciertas caractersticas como ser: estar binarizada, poseer contornos detectables y que los contornos sean de valor 1 y el fondo 0. Todas estas caractersticas se logran con las funciones previamente descriptas en el apartado anterior. La deteccin de contornos es algo sencillo y fundamental en el procesamiento digital de imgenes y videos. Los mtodos existentes para detectar contornos son muy diversos, pero bsicamente hay 3: Inscribir una geometra conocida (cuadrado o crculo), muy rpido, figura 2.9. Aproximacin polinmica (interpolacin), velocidad moderada, figura 2.8. Bsqueda cruda (analiza cada pixel), muy lento.

Figura 2. 8: Aproximacin polinmica. 13

2. Fundamentos tericos: Vision por computadora

Figura 2. 9: Inscripcin de una geometra.

A partir de la obtencin de contornos se pueden realizar diversos tipos de anlisis, incluyendo momentos, concordancia, estudio de convexidad, anlisis geomtrico, etc. En la deteccin de manos, por ejemplo, se utilizan la mayora de dichos estudios, destacando el uso de los momentos, la concordancia y la convexidad, obteniendo como resultado, lo mostrado en la figura 2.10, en donde las letras determinan los defectos de convexidad detectados.

Figura 2. 8: Estudio de convexidad.

2.2.4. Algoritmos Especficos Se distingue entre un algoritmo bsico y especfico basndose en las siguientes consideraciones: 14

2. Fundamentos tericos: Vision por computadora a b c d Un algoritmo bsico permite separar informacin fundamental de la imagen. Un algoritmo especfico permite utilizar la informacin fundamental para interpretar detalles de la misma. Un algoritmo especfico siempre depende de uno bsico para poder efectuarse. Los resultados de un algoritmo especfico son ms abstractos que los de los algoritmos bsicos, por ende, requieren de un post-procesado para adecuarlos al entorno.

Moments Usa como argumentos los contornos de una imagen. Es la manera ms simple de comparar contornos que ofrece OpenCV y se basa en obtener el centro de masa de un contorno en cuestin. Esto muchas veces es ms que suficiente para obtener otros parmetros como ser: el rea, el punto central del contorno, comparar dos contornos para evaluar un ndice de similitud entre 0 y 1, etc. ConvexHull and ConvexDefects El algoritmo se basa en contornos como argumentos, y detecta y describe en variables de salida la convexidad del contorno, ms precisamente, si es convexo, genera una cscara geomtrica asociada al contorno. El nmero de defectos puede indicar, entre otras cosas, el nmero de dedos extendidos que tiene el usuario en ese momento. Ambos algoritmos se ejemplifican en la figura 2.10. MeanShift and Camshift Meanshift es un algoritmo de tipo recursivo pues intenta determinar posiciones en varias pruebas sucesivas, es decir, se ejecuta varias veces para una sola imagen. El algoritmo intenta, bsicamente, determinar una ventana fija que involucre una porcin de la imagen que tenga una probabilidad de inters definida por un histograma previo. Con todo esto, busca recursivamente el centro de masa de la distribucin de inters. Entonces, hacindolo por pasos: 1) Meanshift elige una ventana (un sector de la imagen) y define su tipo y geometra. 2) Detecta una posicin inicial de bsqueda y un tamao fijo para la ventana. Ambos valores estn basados en una distribucin de probabilidad aportada generalmente por un histograma previo calculado en la imagen. 3) Calcula el centro de masa de la ventana (basado en probabilidad). 4) Re-centra la ventana si el punto 3 genera un punto central distinto. 5) Retorna al punto 3 hasta que la diferencia de posicin de dos centros de masa obtenidos sea menor que un delta definido, o se cumplan con el nmero mximo de iteraciones seteadas.

15

2. Fundamentos tericos: Vision por computadora

Figura 2. 9: Esquematizacin del funcionamiento de MeanShift. En la figura 2.11 se da un ejemplo grfico del funcionamiento de MeanShift. Las flechas indican el desplazamiento recursivo de la ventana. Obviando algunas diferencias menores, se puede decir que CamShift es un algoritmo similar a MeanShift, pero en vez de utilizar una ventana fija, el tamao de la misma va cambiando a medida que se ejecuta. El tamao de la ventana de bsqueda puede crecer, disminuir o mantenerse en el mismo tamao. CamShift y MeanShift son algoritmos de seguimiento bsicos que proveen un mtodo rpido para implementar seguimiento en tiempo real. Adems vale aclarar que no estn basados en color sino en probabilidad. Esto ofrece una mayor robustez y abstraccin de capas de procesamiento.

2.2.5. Reconocimiento de ciertos objetos en imgenes En esta seccin se explican las secuencias de algoritmos utilizadas para extraer, identificar, aislar y procesar objetos de inters que representen informacin importante para el usuario. La tarea de identificar objetos en una imagen o secuencia de video se divide prcticamente en dos ramas independientes *1+. Una de ellas se basa en saber a priori algn dato del objeto a identificar, puede ser el color, la forma, tamao, lugar, etc. La otra rama se basa en identificar un objeto sin saber a priori datos exactos del mismo, esta rama se fundamenta en Redes Neuronales, algoritmos predictivos y estudios estadsticos profundos, para asociar, por ejemplo, el concepto de cara de una persona a la cara de cualquier persona. Este ltimo mtodo es el de mayor inters actualmente, a nivel comercial. Por dar un ejemplo, hace unos meses Google inc. , Implement cerebro artificial autnomo de bsqueda que 16

2. Fundamentos tericos: Vision por computadora tena una sola tarea, identificar qu es un gato?. A dicho sistema no le dio ningn otro dato, solo el texto entre comillas y la posibilidad de buscar imgenes en internet. Al cabo de unos das el cerebro artificial identific perfectamente lo que era un gato. El mtodo de auto aprendizaje es extremadamente complejo y experimental, en comparacin a al mtodo de conocer datos previos. En la figura 2.12 se grafican los pasos que se siguen para lograr aislar un objeto de inters, en donde la metodologa usada es detectar un objeto conociendo su color y tamao. Los algoritmos utilizados se describen en la seccin 4.3. Vale aclarar que todas estas etapas son aplicadas a cada imagen que captura la cmara.

Figura 2. 10: Pasos sucesivos para aislar un objeto de inters de una imagen capturada.

2.4. Procesamiento digital en una secuencia de imgenes (video)


El seguimiento de un objeto una vez aislado no es una tarea sencilla. Suponiendo que se parte de los resultados de la figura 2.11, en donde el objeto de inters ya se encuentra aislado, hay que definir algn mtodo o algoritmo para lograr identificarlo en sucesivas muestras de imgenes. Aqu es fundamental el anlisis estadstico. Como se dijo anteriormente, los algoritmos y funciones prediseadas, muchas veces no encuadran con las necesidades del sistema en particular. Es por ello que para efectuar algunas tareas se requiera el diseo de algoritmos complejos valindose de algoritmos bsicos. A continuacin se detallan algunos. 17

2. Fundamentos tericos: Vision por computadora

Identificacin de objetos Una vez aislados los objetos de inters, como lo ilustra la Figura 2.12 en su sub-imagen 4, se procede a analizar tamaos de los objetos presentes en la imagen basndose en criterios seteados previamente por el usuario. Una vez que el objeto encuadre dentro del criterio especificado, ser este y solo este objeto, el rastreado a lo largo de la imagen, situacin que puede verse en la figura 2.12 sub-imagen 5 a 7. Una vez que el objeto est fuera del rea de trabajo, el algoritmo vuelve a ejecutar esta tarea de evaluacin de criterios. Estimacin de posicin futura de un objeto Siguiendo con el ejemplo de la figura 2.12, una situacin que puede plantearse es que el objeto puede ir desplazndose en la imagen de manera similar, por ejemplo, a una lnea de montaje industrial, como se muestra en la figura 2.13.

Figura 2. 11: Lnea de montaje industrial. Esto ltimo genera inters cuando un brazo robot o cualquier autmata debe actuar sobre el objeto en movimiento, por lo tanto es necesario, adems de inferir la posicin futura, relacionar esta posicin con el retardo que tendr el robot hasta llegar al objeto en cuestin. Entonces, suponiendo que ya se tiene identificado el objeto a seguir, se debe plantear algn algoritmo que permita saber su posicin futura en la imagen en funcin del movimiento que este objeto realiza. Existen varios mtodos, todos estadsticos.

18

2. Fundamentos tericos: Vision por computadora Se utiliza el mtodo de interpolacin lineal con el cual se asumen 2 caractersticas fundamentales de la lnea de montaje: 1 2 La velocidad es constante, es decir, matemticamente es un movimiento rectilneo uniforme (MRU). El objeto no cambia de forma a medida que se mueve dentro de la imagen.

Con los dos axiomas nombrados es sencillo determinar la posicin futura aplicando un mtodo de interpolacin lineal entre sucesivas imgenes. Para lograr que el brazo llegue en el momento preciso al objeto deseado debe vincularse la velocidad de movimiento del objeto con el retardo que tenga el autmata en actuar y llegar a destino. La realidad dice que este retardo depende de la distancia recorrida, o ms precisamente, del algoritmo de movimiento empleado por el robot. Otros continuacin: algoritmos para inferir la posicin futura son, por ejemplo, los que se listan a Filtro predictivo de Kalman Interpolacin polinmica Flujo ptico

Figura 2. 12: Filtro predictivo de Kalman.

Estabilizacin de datos (filtrado de ruido) Otra cuestin importante es el filtrado de datos errneos o ruido. Es un algoritmo aplicado, por ejemplo, a la deteccin de la mano del usuario. En esta aplicacin el principal ruido lo proporciona el pulso o inestabilidad del usuario. Errores en la interpretacin del movimiento provocados por un pulso inestable se pueden traducir en catstrofes, dependiendo del entorno en el que se utilice el sistema. 19

2. Fundamentos tericos: Vision por computadora

Por dar un ejemplo, si se est realizando una ciruga a distancia como la esquematizada en la figura 2.15, si no se filtrara el ruido de la inestabilidad del mdico, se podra asegurar que la operacin no sera exitosa.

Figura 2. 13: Ciruga a distancia, implementada con equipo especializado. Una solucin para el filtrado del ruido se realiza bsicamente con un promedio general o filtro promediador digital. Consiste simplemente en incluir los valores obtenidos de posicin en un registro de desplazamiento de n valores del cual se debe hallar su promedio continuamente. Esto permite que las variaciones en el movimiento del autmata sean ms suaves y ms lentas. Obviamente este filtro puede mejorarse mucho, incluso es posible agregar anlisis de ruido blanco, con lo cual se eliminaran movimientos muy pronunciados que no son reales.

20

3. Hardware: Diseo de plataforma Vision artificial

3. Hardware: Diseo de la plataforma de visin artificial


3.1. Introduccin:
Una plataforma de visin artificial consiste en la implementacin de un sistema de captura y procesamiento de imagen a un sistema dinmico. El sistema de captura es el encargado de recoger las caractersticas del ambiente u objeto de estudio y proporcionar los datos para su procesamiento, por medio de una imagen digital. El procesamiento consiste en la aplicacin de algoritmos y transformaciones de las imgenes de forma de obtener la informacin necesaria para manipular el sistema dinmico y realizar la tarea asignada. La Figura 3.1 esquematiza, didcticamente, como qued constituida la estructura del hardware del proyecto, tambin se idealizan las conexiones entre componentes de la arquitectura.

Figura 3. 1: Arquitectura del proyecto.

21

3. Hardware: Diseo de plataforma Vision artificial

Los componentes bsicos de una plataforma de visin artificial se presentan en la figura 3.2.

Figura 3. 2: Arquitectura de una plataforma de visin artificial.

3.2. Componentes:
A continuacin se describen en detalle los componentes que integran la plataforma de visin artificial desarrollada. 3.2.1. Brazo Robot El brazo robot es el sistema dinmico de la plataforma encargado de interactuar con el medio exterior. El autmata construido se muestra en la figura 3.2.

Figura 3. 3: Brazo robot desarrollado 22

3. Hardware: Diseo de plataforma Vision artificial

3.2.1.1. Materiales y mtodos de construccin Para la estructura del brazo robot se utiliz como material principal el PVC (policloruro de vinilo). Su eleccin se debi a que se caracteriza por ser un material dctil, estable y altamente resistente. El mismo comienza a reblandecer alrededor de los 80C y se descompone sobre los 140C, por lo que se vuelve flexible y moldeable sin necesidad de someterlo a altas temperaturas. Adems mantiene la forma dada y propiedades una vez enfriado a temperatura ambiente, lo cual facilita su modificacin. Esta caracterstica nos permiti la fcil fabricacin de las piezas del brazo robot. Para la fabricacin de las piezas se reciclaron tubos de PVC para la conduccin de agua. Los mismos se cortaron longitudinalmente, se calentaron en agua hirviendo y se aplanaron de tal forma de obtener planchas de PVC.

Figura 3. 4: Tubos de PVC utilizados. Una vez obtenidas las planchas, se dibujaron, cortaron y moldearon las distintas piezas. Las mismas fueron diseadas previamente considerando los tamaos de los servos a utilizar y las dimensiones del brazo deseado. Por otro lado se requera la motricidad de las articulaciones del brazo robot de manera controlada y estable. Este requerimiento no lo poda cumplir un motor paso a paso debido a que el mismo es un sistema a lazo abierto, por lo que se necesitaba la incorporacin de un sistema de control mediante encoders para poder controlar su posicin y corregir las eventuales prdidas de pasos. Es por ello que se opt por la utilizacin de los denominados servomotores. Un servomotor es un actuador mecnico basado en un motor de corriente continua y un conjunto de engranajes que permiten multiplicar el torque del sistema final, el cual posee un sistema de control para poder controlar su posicin. Esto permite que mediante una determinada seal elctrica se obtenga una respuesta mecnica controlada.

23

3. Hardware: Diseo de plataforma Vision artificial Se utilizaron los siguientes servomotores comerciales: Base: Hitec HS-311 Hombro: 2x Hitec HS-311 Codo: Hitec HS-311 Mueca: Hitec HS-311 Mueca Rotacional: Hitec HS-55 Pinzas: Hitec HS-55

En el anexo se incluye la informacin tcnica de servomotores y los datos de cada uno. Para la alimentacin del conjunto de servos se utiliz una fuente de PC de 250W. El consumo mximo medido del brazo robot fue de 2,7A a 5V.

Figura 3. 5: Servos Hitec HS-311 y HS-55 utilizados.

3.2.1.2. Hardware de control El hardware de control es el encargado de ser la interfaz fsica entre la PC (encargada del procesamiento de imagen) y el brazo robot. Su funcin principal es la de recibir comandos y datos por parte de la PC, y generar las seales necesarias para accionar los servos a travs de sus puertos I/O. Para el logro de dichas tareas se opt por la utilizacin de las plataformas de hardware Arduino UNO y Pingino 4550. La eleccin de dichas plataformas est fundamentada por las facilidades que ofrecen a la hora de desarrollar hardware para proyectos multidisciplinares. Las mismas son plataformas de hardware libres, tanto su diseo como su distribucin, y ofrecen un entorno de desarrollo y libreras libres. Esto quiere decir que pueden utilizarse libremente para el desarrollo de cualquier tipo de proyecto sin haber adquirido ninguna licencia. La plataforma Arduino UNO en particular est formada por un microcontrolador Atmega328 de la empresa Atmel y puertos de entrada/salida. Por otro lado la plataforma Pingino 4550 est formada por un microcontrolador PIC 18F4550 de la empresa Microchip. A continuacin se muestra una tabla comparativa entre ambas placas:

24

3. Hardware: Diseo de plataforma Vision artificial

Tabla 3. 1: Comparacin entre las plataformas Arduino UNO y Pingino 4550. Caracterstica Voltaje operativo Pines de I/O Pines de entrada analgica Corriente por cada pin I/O Memoria Flash SRAM EEPROM Frecuencia USB Nativo Precio Arduino UNO (Atmega328) 5V 14 (6 PWM) 6 40 mA 32 KB (0.5 KB reservados) 2 KB 1 KB 16 MHz No 26,39 U$S (DigiKey) Pingino (PIC 18F4550) 5V 20 (2 PWM) 8 25 mA 32 KB (8 KB reservados) 2 KB 256 Bytes 20 MHz Si 23,27 U$S (DigiKey)

3.2.1.2.1. Software del microcontrolador

Como se dijo en la seccin anterior, la funcin principal que debe cumplir el microcontrolador es la de recibir instrucciones y datos por parte de la PC y generar las seales necesarias para el control de los servos. Los servomotores se controlan mediante impulsos de ancho variable que deben refrescarse peridicamente (figura 3.6). Esto significa que si se deja de enviar la seal de control en el tiempo en el que el servomotor lo necesita, ste (a pesar de estar energizado) dejar de mantenerse en la posicin preestablecida y adoptar cualquier orientacin regida por el esfuerzo al que est sometido. Para fijar la posicin de un servomotor es necesario enviarle continuamente la seal con la posicin deseada. De esta forma, el sistema de control seguir operando y el servo conservar su posicin y se resistir a las fuerzas externas que intenten cambiarlo de posicin.

25

3. Hardware: Diseo de plataforma Vision artificial

Figura 3. 6: Seales de control de un servomotor

Los procesos realizados por el software diseado se muestra en la figura 3.7 y a continuacin se detallan cada uno de ellos.

26

3. Hardware: Diseo de plataforma Vision artificial

Figura 3. 7: Estructura del software del microcontrolador 1 Bucle de espera y recepcin de instruccin: La comunicacin puede realizarse en cualquier momento, por lo que fue necesario realizar una rutina en donde se espere la recepcin de un dato en el puerto UART Rx. Determinacin de accin a realizar: Una vez que se produce la recepcin de un dato, el mismo es analizado para determinar si se trata de una instruccin y luego, si es el caso, determinar la tarea a realizar. Las instrucciones posibles son: co: esta instruccin es enviada por la PC cuando necesita saber si el microcontrolador se encuentra conectado. bu: es la instruccin de bsqueda de un objeto (utilizada en la aplicacin 1). ir: es la instruccin que enva la PC cuando es necesario que el brazo se ubique en una determinada posicin (utilizada en la aplicacin 2). Recepcin de los ngulos de cada servomotor: si el microcontrolador recibe el comando bu o ir, inmediatamente recibe los valores de los ngulos que deben adoptar cada uno de los servos. Los datos recibidos son cadenas de texto, ya sean instrucciones o valores de ngulos, por lo que es necesario hacer la conversin de cadena (string) a entero (int) utilizando la funcin atoi().

27

3. Hardware: Diseo de plataforma Vision artificial 4 Recepcin del estado de la pinza: esta tarea solo se realiza si el comando recibido fue ir. El microcontrolador recibe una cadena de 3 ceros si la pinza del brazo robot debe cerrarse, o una cadena de 3 unos si la misma debe abrirse. Conversin de ngulos a duracin de pulsos: Se realiza el mapeo de los ngulos recibidos (entre 0 y 180) a los valores de duracin de pulsos (de 0,65 ms a 2,35 ms) utilizando la funcin map(x, 0, 180, 650, 2350). Control de la posicin de cada servo: se generan los trenes de pulsos en cada puerto de salida para el control de los servos. Dichos trenes de pulsos deben permanecer activos simultneamente y durante la ejecucin de las dems instrucciones. Es por ello que el control de los cambios de estado de cada uno se realiza por interrupciones del timer. De esto se encarga la funcin servo.writeMicroseconds().

La comunicacin con la plataforma de hardware se realiza por USB a travs de un puerto COM virtual. La velocidad de transmisin debe ser lo ms alta posible para que no se produzca un retardo considerable entre el envo de datos y el movimiento del robot. Por este motivo se utiliz la mxima velocidad posible, 115200 Baudios. En el anexo se incluye el cdigo fuente del software desarrollado.

3.2.1.3. Cinemtica La cinemtica [13] forma parte del extenso estudio de la robtica cuyo objetivo final es el de obtener un modelo matemtico preciso del robot, para que su movimiento sea controlado. Particularmente, y como su nombre lo indica, el estudio cinemtico de un robot permite obtener un modelo matemtico que representa el comportamiento cinemtico del robot. A su vez comprende dos anlisis: cinemtica directa y cinemtica inversa. Cinemtica Directa: Conjunto de ecuaciones que relacionan el valor de cada una de las coordenadas articulares con la posicin del extremo (efector) del robot en coordenadas espaciales y su orientacin. Cinemtica Inversa: Algoritmo o conjunto de ecuaciones que representan los valores de las N coordenadas articulares en funcin de los valores de posicin y orientacin requeridos en el extremo del robot.

Figura 3. 8: Estudio de Cinemtica.

28

3. Hardware: Diseo de plataforma Vision artificial Fue de inters, particularmente, el anlisis de cinemtica inversa, ya que era necesario contar con una expresin matemtica que permita obtener las posiciones que deben adoptar cada servo para que el extremo del brazo alcance una coordenada deseada. Existen distintos mtodos y herramientas matemticas para lograr dicho estudio, y segn la precisin que se quiera lograr, estar definida la complejidad de las mismas. Particularmente, debido a que la aplicacin no requera gran precisin, se opt por utilizar el mtodo geomtrico [4]. El mtodo elegido requiri primero la obtencin de las ecuaciones de cinemtica directa, para luego, por despeje, obtener las ecuaciones de cinemtica inversa.

Figura 3. 9: Representacin grfica del brazo robot. En la figura 2.8 se puede ver la representacin grfica del brazo robot en donde los crculos son puntos de flexin y los tringulos representan puntos de rotacin.

Figura 3. 10: Representacin del brazo robot en 3 dimensiones

29

3. Hardware: Diseo de plataforma Vision artificial Conocido el punto P(x, y, z) donde se encuentra el extremo del brazo, se realiz el mapeo a coordenadas cilndricas ( P(x, , y) ).

El ngulo corresponde al ngulo que debe adoptar la base del brazo robot, por lo que su obtencin reduce el problema a dos coordenadas (x e y), como se muestra en la figura 2.10.

Figura 3. 11: Representacin del brazo robot en 2 dimensiones. Las ecuaciones de cinemtica directa obtenidas, dado un punto P(x, y, z), son:

Para la obtencin de las ecuaciones de cinemtica inversa deben despejarse los valores de , y en funcin de x e y. Como puede verse, se trata de un sistema de dos ecuaciones y tres incgnitas. Esto quiere decir que, dados los valores de x e y, se tendrn infinitos valores de ngulos que cumplen dicho sistema. En la figura 3.11 puede notarse que para que el extremo del brazo alcance un punto cercano, debe adoptar el valor de 90, y para alcanzar el punto ms lejano posible, debe adoptar el valor de 0. Por lo tanto, para poder independizarnos de la variable se propuso que adopte posiciones entre 0 y 90 segn la distancia x deseada. La frmula lineal a utilizar es:

30

3. Hardware: Diseo de plataforma Vision artificial

Siendo Xmx y Xmn el alcance mximo y mnimo del brazo robot, expresados en centmetros.

Figura 3. 12: Valores extremos de . De esta forma, el problema se redujo a la obtencin de los valores de de y se despej , para luego ser reemplazado en la ecuacin de x. y . De la ecuacin

Se utilizaron las siguientes identidades trigonomtricas para despejar .

Resumiendo, las ecuaciones de cinemtica inversa que deben realizarse, dado el punto P(x, y, z), para obtener los valores de ngulos de cada articulacin del brazo robot, son:

31

3. Hardware: Diseo de plataforma Vision artificial

Siendo:

3.2.2. Webcam Para la seleccin del sensor ptico se tuvo en cuenta que el mismo deba cubrir dos necesidades. La primera es la de poder contar con una calidad de imagen tal que permita el desarrollo del proyecto. Por otro lado, era necesario que se trate de un dispositivo del tipo UVC, USB video device class, para que sea compatible con el software a desarrollar *11+. En el mercado local se ofrecen webcams de muy buena calidad con soporte UVC, a precios accesibles, alrededor de 100 U$S, y que resultan ideales para la aplicacin. De todas formas, este precio eleva considerablemente el costo del proyecto. Por este motivo se opt por una webcam de calidad regular y con soporte UVC, marca Seisa, de fabricacin china y con un precio rondando los 10U$S, que para el prototipo fue adecuada.

32

3. Hardware: Diseo de plataforma Vision artificial

Figura 3. 13: Webcam utilizada. Posee un sensor ptico CMOS, que permite trabajar en tiempo real con los siguientes parmetros: Resolucin: 640X480 Fps: 15 a 30 fps Color: 8 bits Ajustes: automtico o manual.

Por lo tanto, la tasa de datos mnima que el sistema debe manejar es de 30 Mbits/s. Esto condiciona la PC a utilizar, condicin que se describe ms adelante en la seccin 3.2.4. El sistema de software desarrollado implementa imgenes de resolucin 640x480, color de 8 bits, y fps a demanda, es decir no existe un mnimo ni un mximo, ya que depende del procesamiento que se realice entre capturas.

3.2.2.1. Diseo y construccin de soporte La aplicacin requiere que el dispositivo adquisidor de imgenes se ubique por encima del brazo robot y enfocando el rea de trabajo. Para lograr esto y darle mayor movilidad al sistema (portabilidad) se dise y fabric un soporte para la webcam. Fue realizado en madera y cuenta con 4 niveles de altura. Dichas alturas estn en funcin de las distancias necesarias para implementar la visin artificial del sistema.

33

3. Hardware: Diseo de plataforma Vision artificial

Figura 3. 14: Soporte realizado.

3.2.3. rea o zona de trabajo En una plataforma de visin artificial la iluminacin del ambiente cumple un papel muy importante. Dado que la imagen se forma a partir de la luz que reflejan los objetos, se debe proporcionar al sistema de condiciones de iluminacin uniformes e independientes del entorno, permitiendo y facilitando la extraccin de los rasgos de inters para la aplicacin. Dado que la plataforma desarrollada es portable, es necesario que el ambiente en donde se ubique cuente con una iluminacin omnidireccional y difusa. Con esto se conseguira una imagen sin sombras y con alto contraste, gracias a que los objetos son iluminados en todas direcciones con luz difusa. Por otra parte, para favorecer la deteccin de objetos se requiere de un fondo contrastante, preferentemente de color blanco o negro. Cumpliendo con estas dos condiciones se logr un correcto funcionamiento del sistema.

3.2.4 PC El sistema de visin artificial debe contar con un sistema computacional que se encargue de las siguientes tareas: Realizar la lectura de las imgenes. Procesar los datos proporcionados por la cmara para realizar el anlisis de imagen (realizacin de los algoritmos y transformaciones de las imgenes). Brindar la interfaz grfica al usuario. Comunicarse con el hardware de control del brazo robot. Controlar el buen funcionamiento de todos los elementos hardware.

34

3. Hardware: Diseo de plataforma Vision artificial Una condicin limitante es la tasa de datos que debe manipular la computadora anfitriona, pues, como se dijo en la seccin 3.2.2, debe ser capaz de manejar un flujo continuo de datos de 30 Mbit/s como mnimo. Esto se puede lograr utilizando puertos USB 2.0, en donde la tasa de transferencia mxima posible es de 480 Mbits/s (60 MB/s). El puerto USB en su versin 1.1 admite una tasa de 12 Mbits/s, por lo que no es posible su utilizacin. El sistema de software y hardware de la plataforma se dise para que pueda ser utilizado en cualquier computadora estndar de escritorio o notebook. Adems, cabe destacar que el ncleo o intrprete python administra de la mejor manera los recursos de memoria y CPU necesarios. Por lo tanto, los requisitos mnimos que debe cumplir la PC a utilizar son: procesador de 2GHz, 1,5 GB de memoria RAM, placa de video integrada con 256 Mb dedicados, dos puertos USB 2.0, sistema operativo Windows 7 o Linux.

35

4. Software: Diseo y desarrollo del software especializado

4. Software: Diseo y desarrollo del software especializado


4.1. Introduccin:
En todo proyecto que involucre un sistema de cmputo automtico, una PC, o algn dispositivo inteligente, se puede asegurar que la etapa ms laboriosa y que requiere mayor tiempo de dedicacin es el desarrollo del software (o firmware, dependiendo el caso). El desarrollador sabe, adems, que un sistema desarrollado ntegramente para una solucin particular es altamente sensible a fallos y probablemente inflexible al momento de querer ampliar sus caractersticas. Entonces, para una solucin del tipo ingenieril en donde generalmente el sistema de cmputo no es el punto central del estudio, se requieren soluciones rpidas y concretas dejando de lado las premisas de portabilidad, flexibilidad y estructura o gramtica del software. Esto ha generado a lo largo del tiempo muchsimos sistemas personalizados o puntuales a una tarea que han quedado en completo desuso, principalmente por sus problemas de actualizacin. Entonces, No existe forma de generar sistemas que sean flexibles y actualizables? Obviamente s, pero esto implica un costo. Por dar ejemplos, la Suite de Matlab, National Instruments, LabView, etc., permiten esas caractersticas y anms, pero son plataformas privadas donde se requieren licencias pagas para uso, publicacin, distribucin y edicin de contenidos. Existen soluciones de software libre? Dentro de las plataformas GNU o BSD hay infinidad de opciones y de comunidades, pero se caracterizan por requerir mucho ms conocimiento en programacin. Para lograr flexibilidad, portabilidad y la posibilidad de realizar futuras mejoras al software especializado se decidi desarrollarlo ntegramente utilizando herramientas de programacin, libreras y mdulos libres y de cdigo abierto, a costa de tener un mayor tiempo de desarrollo. El software fue desarrollado siguiendo los pasos mostrados en la figura 4.1. En esta seccin se presentan las herramientas utilizadas, as como tambin, la descripcin del software desarrollado.

36

4. Software: Diseo y desarrollo del software especializado

Figura 4. 1: Pasos seguidos en la elaboracin del software.

4.2 Herramientas
4.2.1 Python Para el logro de un software especializado que cuente con las caractersticas deseadas y descriptas anteriormente, y analizando las distintas alternativas de lenguajes de programacin, se opt por la utilizacin del lenguaje Python. Python [5] es un lenguaje de programacin creado por Guido van Rossum a principios de los aos 90, con la particularidad de que cuenta con una sintaxis muy limpia y que favorece un cdigo legible. Se trata de un lenguaje interpretado o de script, con tipado dinmico, fuertemente tipado, multiplataforma y orientado a objetos. Un lenguaje interpretado o de script es aquel que se ejecuta utilizando un programa intermedio llamado intrprete en lugar de compilar el cdigo a lenguaje mquina que pueda comprender y ejecutar directamente una computadora (lenguajes compilados). La desventaja que presentan los lenguajes interpretados es que su ejecucin es ms lenta. Sin embargo son ms flexibles y ms portables que otros lenguajes. Python tiene, no obstante, muchas de las caractersticas de los lenguajes compilados, por lo que se podra decir que es semi 37

4. Software: Diseo y desarrollo del software especializado interpretado. En Python, como en Java y muchos otros lenguajes, el cdigo fuente se traduce a un pseudo cdigo mquina intermedio llamado bytecode la primera vez que se ejecuta, generando archivos .pyc o .pyo (bytecode optimizado), que son los que se ejecutarn en sucesivas ocasiones. La caracterstica de tipado dinmico se refiere a que no es necesario declarar el tipo de dato que va a contener una determinada variable, sino que su tipo se determinar en tiempo de ejecucin segn el tipo del valor al que se asigne, y el tipo de esta variable puede cambiar si se le asigna un valor de otro tipo. Por otra parte, no se permite tratar a una variable como si fuera de un tipo distinto al que tiene, es necesario convertir de forma explcita dicha variable al nuevo tipo previamente. Por ejemplo, si tenemos una variable que contiene un texto (variable de tipo cadena o string) no podremos tratarla como un nmero (sumar la cadena 9 y el nmero 8). En otros lenguajes el tipo de la variable cambiara para adaptarse al comportamiento esperado, aunque esto es ms propenso a errores. El intrprete de Python est disponible en multitud de plataformas (UNIX, Solaris, Linux, DOS, Windows, OS/2, Mac OS, etc.) permitiendo que el software desarrollado corra en todos estos sistemas sin grandes cambios. En la tabla 4.1 se puede ver que Python es el lenguaje de programacin de nueva generacin muy popular y el de tercer mayor crecimiento en el ltimo ao, estando atrs de objective-c (Apple) y C++.

38

4. Software: Diseo y desarrollo del software especializado Tabla 4. 1: Crecimiento de los lenguajes de programacin.

Por su sintaxis simple, clara y sencilla; el tipado dinmico, el gestor de memoria, la gran cantidad de libreras disponibles y la potencia del lenguaje, entre otros, se utiliz Python como lenguaje principal del software desarrollado.

4.2.2. Qt4 y Qt4 Designer (librera e IDE para interfaz grfica) Qt es una biblioteca multiplataforma ampliamente usada para desarrollar aplicaciones con interfaz grfica de usuario, as como tambin para el desarrollo de programas sin interfaz grfica, como herramientas para la lnea de comandos y consolas para servidores. Es distribuida bajo licencia GNU y otras licencias comerciales, y es utilizada, por ejemplo, en los programas Adobe Photoshop, Google Earth, Skype, Siemens, Mathematica, etc. Qt utiliza el lenguaje de programacin C++ de forma nativa, pero, adicionalmente, puede ser utilizado en varios otros lenguajes de programacin a travs de bindings. Un binding es una adaptacin de una biblioteca para ser usada en un lenguaje de programacin distinto de aqul en el

39

4. Software: Diseo y desarrollo del software especializado que ha sido escrita. Particularmente se utiliz PyQt [17], un binding de la biblioteca grfica Qt para el lenguaje de programacin Python. Por otro lado, se utiliz Qt Designer para el diseo de la interfaz grfica (ventanas) y las libreras de qt para la gestin de ejecucin del sistema en s.

Figura 4. 2: Qt Designer utilizado para el diseo del GUI. QT provee adems de compatibilidades GPU, para mejorar rendimiento de grficos, por hardware, una caracterstica altamente distintiva.

4.2.3. OpenCV Haciendo analogas, si Python fuera la cabeza del proyecto, OpenCV es el corazn del mismo, ya que bsicamente esta API (interfaz de programacin de aplicaciones) es la que proporciona todas las funcionalidades de procesamiento de video e inteligencia artificial en tiempo real. OpenCV es una biblioteca libre de visin artificial originalmente desarrollada por Intel. Desde que apareci su primera versin alfa en el mes de enero de 1999, se ha utilizado en infinidad de aplicaciones. Desde sistemas de seguridad con deteccin de movimiento, hasta aplicativos de control de procesos donde se requiere reconocimiento de objetos. Esto se debe a que su publicacin se da bajo licencia BSD que permite que sea usada libremente para propsitos comerciales y de investigacin con las condiciones en ella expresadas.

40

4. Software: Diseo y desarrollo del software especializado La librera est escrita en C y C++ y corre en los entornos Linux, Windows y Mac OS X. Su utilizacin tambin es posible en Python, Ruby, Matlab y otros lenguajes de programacin. El objetivo principal de OpenCV es proveer al desarrollador de una infraestructura en visin computacional simple de utilizar y reduciendo el tiempo de desarrollo de aplicaciones complejas. La librera contiene cerca de 500 funciones [3] que abarcan la mayora de los campos de aplicacin de la visin artificial, incluyendo inspeccin de productos, imgenes mdicas, seguridad, interfaces de usuario, calibracin de cmara, visin estreo y robtica.

4.2.4. Arduino IDE Arduino, como se mencion anteriormente, es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseada para facilitar el uso de la electrnica en proyectos multidisciplinares.

Figura 4. 3: Entorno de desarrollo Arduino. El entorno de desarrollo integrado Arduino es una aplicacin multiplataforma escrita en Java y derivada del IDE del lenguaje de programacin Processing. Esta aplicacin se utiliza para la programacin en lenguaje C y C++ de la plataforma de hardware Arduino [7]. El mismo, cuenta con un editor de textos y es capaz de compilar el cdigo, para luego grabarlo en el microcontrolador con un simple clic.

41

4. Software: Diseo y desarrollo del software especializado 4.2.5. Editor de texto Gedit Ante la complicacin que acarrera utilizar un entorno de desarrollo integrado, como por ejemplo Eclipse, principalmente por la falta de portabilidad a la hora de editar cdigo, se realiz la programacin de todo el sistema en un editor simple de texto.

Figura 4. 4: Editor de textos Gedit. Gedit es un editor de textos enriquecido compatible con UTF-8 (formato de codificacin de caracteres) para GNU/Linux, Mac OS X y Microsoft Windows. Diseado como un editor de textos de propsito general, gedit enfatiza la simplicidad y facilidad de uso. Incluye herramientas para la edicin de cdigo fuente y textos estructurados, como lenguajes de marcado. Adems, y uno de los motivos de su eleccin, es que est distribuido bajo las condiciones de la licencia GPL, es decir que es software libre.

4.3. Aplicacin 1: Reconocimiento de objetos


La aplicacin desarrollada consiste en la utilizacin de los algoritmos de procesamiento de imagen para el reconocimiento del color, tamao y las posiciones de los objetos dentro de un espacio de trabajo, para que luego el brazo pueda tomarlos y depositarlos en un lugar especfico definido como basurero. El brazo robot interacta con su entorno sin necesidad del usuario, quien nicamente se encarga del seteo inicial del sistema. El mtodo de auto aprendizaje (explicado en la seccin 2.2.5) es algo extremadamente complejo aplicar, por lo que se decidi que las tareas de deteccin se basen en conocer parmetros previos del objeto de inters. Para esta aplicacin fue el color y mrgenes de tamao mximo y mnimo. Para la aplicacin de la seccin 4.4 fue la geometra del objeto (su forma) y tamao en pixeles. 42

4. Software: Diseo y desarrollo del software especializado

El algoritmo bsico utilizado para el software es el esquematizado en la figura 4.5.

Figura 4. 5: Procesos de la aplicacin 1. 4.3.1. Procesos principales Se explicarn ms detalladamente los procesos ms importantes: 1) Bsqueda de objetos: Se convierte la imagen original capturada a formato HSV (Hue, Saturation, Value Matiz, Saturacin, Valor) y se separa el canal Hue (matiz). Utilizando la funcin cv.CalcArrBackProject, el canal Hue y el histograma definido por el usuario, se obtienen los pixeles de la imagen que cumplen con el rango de color establecido por el histograma, formando la imagen back projection. 2) Seleccin de objeto: Se obtienen los contornos y las posiciones de todos los objetos utilizando las funciones cv.FindContours() y cv.Moments(). Se calcula el rea de cada contorno y se descartan aquellos que no cumplan con el tamao mnimo y mximo. Se selecciona el objeto segn el criterio preestablecido por el usuario. 43

4. Software: Diseo y desarrollo del software especializado

3) Obtencin de las posiciones: Se utiliza el algoritmo cv.CamShift para obtener el centro del objeto. Esta funcin, como se explic anteriormente, implementa un algoritmo de bsqueda iterativo en donde la ventana de bsqueda se va ubicando recursivamente en el centro de masa del back projection del objeto. Se realiza dicha funcin una determinada cantidad de veces (configurable por el usuario) para que, luego, la posicin del objeto sea obtenida por interpolacin. 4) Clculo de posicin futura: Del proceso anterior se tiene una serie de posiciones que adopta el objeto detectado. Conociendo los tiempos de respuesta del sistema y considerando que el autmata presenta un retardo general de 3 segundos a cualquier parte de la imagen, se calcula la posicin futura del objeto, ms precisamente, en el momento de la bsqueda. Si bien la mejor solucin hubiera sido utilizar un filtro de Kalman, se realiza una interpolacin lineal para estimar dicha posicin, considerando que el movimiento del objeto es rectilneo y con velocidad constante. La posicin calculada se encuentra expresada en pxeles, por lo tanto, se realiza un escalado de los valores de X e Y en pxeles a centmetros, conociendo de antemano su relacin (por parmetros de configuracin). 5) Cinemtica inversa: Utilizando la posicin del objeto y las frmulas de cinemtica inversa del brazo robot (detalladas anteriormente) se obtienen las posiciones en que deben estar cada servo del brazo, para que su efector final, alcance la posicin deseada. 6) Comunicacin con el hardware: Las posiciones de cada servo (expresadas en ngulos) son enviadas al hardware de control por USB y utilizando un puerto COM virtual de la PC. Se espera un cierto tiempo de respuesta de confirmacin para, luego, volver nuevamente a la captura de imagen.

4.3.2. Interfaz grfica El principal objetivo de la interfaz grfica es brindar al usuario un medio de comunicacin con el sistema de visin artificial. Las principales funciones que deba brindar la interfaz a desarrollar eran: Inicio y detencin de la aplicacin Control de las funciones Configuracin del sistema Calibracin Informacin del estado del sistema Ayuda e instrucciones de utilizacin

44

4. Software: Diseo y desarrollo del software especializado Por otro lado, tambin fue importante lograr que la comunicacin entre usuario y el equipo pueda realizarse de forma fcil e intuitiva, y as brindar comodidad y eficiencia al usuario. Siguiendo estos objetivos se dise la interfaz grfica en el entorno Qt Designer, como se mencion anteriormente. La ventana principal de la aplicacin 1 puede verse en la figura 4.6 y consta de los siguientes elementos: 1 2 Cuadro de imagen: all se muestran tanto las imgenes capturadas por la webcam as como las figuras de deteccin y los recuadros del rea de trabajo. Barra de men: Se incluyeron los mens de opciones y ayuda. a Opciones: Cuenta con las opciones de cambio de aplicacin, carga y guardado de los datos de configuracin y salida del sistema. b Ayuda: All se incluyen los instructivos de uso del sistema y los datos de contacto. Seleccin de pestaas: Se organizaron todas las opciones de configuracin y calibracin en una pestaa aparte a las opciones de inicio, detencin e informacin de estado del sistema. Contenido de la pestaa: All se incluyen todos los elementos propios de cada pestaa (informaciones, botones, sliders, etc.). Cada pestaa se muestra en detalle ms adelante.

3 4

Figura 4. 6: Ventana principal de la aplicacin 1. Como se mencion anteriormente, se organizaron todas las opciones de configuracin y calibracin en una pestaa (figura 4.7), y las opciones de inicio, detencin e informacin de estado del sistema, en otra (figura 4.8). Con esto se logr que la ventana principal no se sobrecargue de elementos y que resulte sencilla y organizada para el usuario.

45

4. Software: Diseo y desarrollo del software especializado

Figura 4. 7: Pestaa Iniciar. Los elementos que forman parte de la pestaa Iniciar (figura 4.7) son: 1 Informacin de configuracin: en esta seccin se muestran los valores de configuracin actuales del sistema. Dichos valores pueden ser extrados (ledos) de un archivo de configuracin como tambin pueden ser seteados por el usuario en la seccin de configuracin. Botn Iniciar o Detener: cumple la funcin de poner en marcha el sistema o detenerlo una vez que el mismo est en funcionamiento. Estado del sistema: all se informa al usuario de todos los eventos que realiza el sistema. Tambin avisa o alerta cuando ocurre un error o es necesario que el usuario realice alguna tarea.

2 3

Cada vez que la aplicacin se ejecute en condiciones de entorno o ambiente diferente se debe realizar la calibracin y configuracin del sistema. Para ello la pestaa Configuracin (figura 4.8) cuenta con los siguientes elementos: 1 2 Botn Configurar: habilita los dems controles. Esto tiene la funcin de evitar que se produzcan cambios en la configuracin durante la ejecucin del sistema. Botn Probar: ejecuta los algoritmos de bsqueda y deteccin de objetos, y lo muestra en pantalla. Esto es para que el usuario se asegure que el sistema funcione correctamente. Adems habilita los controles de Ajustes finos para que se pueda mejorar la deteccin de objetos. Valores de configuracin: All se ingresan los valores que necesita el sistema para funcionar. Ellos son el valor de la lnea blanca (se muestra en pantalla), criterio de bsqueda (por tamao o aleatoriamente) y los tamaos mnimo y mximo de objetos a detectar.

46

4. Software: Diseo y desarrollo del software especializado 4 Histograma: Al presionar el botn Dibujar Histograma, el usuario puede seleccionar en la imagen el color del objeto a detectar. Dicho color (o gama de colores) seleccionado se muestra en la escala cromtica inferior. Ajustes finos: Como se mencion previamente, cumplen la funcin de mejorar la deteccin de objetos. Las condiciones de iluminacin del ambiente pueden causar errores o ruidos en los algoritmos de visin computacional. Para que el sistema se adapte al medio, los sliders configuran los valores de Threshold, Erode y Dilate que deben utilizarse para que el objeto de inters sea detectado correctamente.

Figura 4. 8: Pestaa Configuracin.

4.4. Aplicacin 2: Interfaz inalmbrica usuario-robot


En esta aplicacin el sistema capta a travs de la cmara movimientos o posiciones de la mano del usuario, quien de esta manera controla el brazo robot en todo su espacio de accin, sin estar necesariamente el usuario cerca del brazo o expuesto a un medio hostil. El objetivo principal del software es detectar la posicin de la mano en las 3 dimensiones. En el inicio se plante realizar el programa utilizando visin estereoscpica digital, usando dos webcams simultneamente. Esta tecnologa es utilizada para distinguir profundidad de los objetos anlogamente como lo efecta la visin humana. Pero en contrapartida, su utilizacin requiere de una calibracin casi constante y muy precisa, incluso limita su uso a cmaras de buena calidad. Evaluando esto ltimo y en vista de que nuestra aplicacin no sacara un amplio provecho de la visin estreo se decidi por la utilizacin de una sola webcam para alcanzar el objetivo. El algoritmo bsico utilizado para el software se muestra en la figura 4.9.

47

4. Software: Diseo y desarrollo del software especializado

Figura 4. 9: Procesos de la aplicacin 2.

4.4.1. Procesos principales Se explicarn ms detalladamente los procesos ms importantes: 1) Extraccin de fondo: Se convierte la imagen capturada por la webcam de RGB a HSV. Se separa de la imagen solo los valores de saturacin S. Se efecta la diferencia, en valor absoluto, del fondo de la imagen (tomada previamente a iniciar el programa) con la imagen S de la mano. Se realiza una operacin lgica NOT para intercambiar zonas oscuras por zonas blancas.

48

4. Software: Diseo y desarrollo del software especializado Con los valores de configuracin definidos por el usuario, se realiza la funcin ThresHold, y operaciones morfolgicas simples: Erode y dilate. Con esto se obtiene la mano del usuario aislada del fondo, como un rea independiente.

2) Deteccin de la mano del usuario: Una vez aislada la mano del fondo, se detecta el contorno con la funcin cv.FindContours(), seguido por la deteccin de la cscara o envoltura con cv.ConvexHull2(). De la cscara y el contorno se realiza la deteccin de los defectos de concavidad con cv.ConvexityDefects. Con los defectos de concavidad se puede analizar la imagen y detectar dedos, palma de la mano, posicin de la mano y antebrazo. Con el anlisis de los defectos se detecta el antebrazo y se lo elimina de la imagen. 3) Reconocimiento de mano abierta o cerrada: Con la relacin entre el rea del contorno y el rea de la cscara se determina si la mano est ABIERTA o CERRADA, comando que se enviar luego al brazo robot. 4) Obtencin de las coordenadas de posicin en X e Y: Utilizando el contorno de la mano se extraen los momentos con la funcin cv.Moments(). Con esto se logra obtener el centro de masa de la mano, es decir se obtiene la posicin (X,Y) a la cual debe dirigirse el extremo del brazo robot. 5) Clculo de posicin en Z: Sabiendo por ensayos previos la relacin entre distancia de la mano al lente de la cmara y el rea de la mano en la pantalla: Z=f(area_de_mano), se calcula la posicin en Z en centmetros. 6) Traduccin y envo de datos al robot: Del proceso anterior se cuenta con la posicin de la mano del usuario relativa a su posicin en la imagen, es decir se encuentra expresada en pxeles. Por lo tanto, se realiza un escalado de los valores de X,Y en pxeles a centmetros, conociendo de antemano su relacin (por parmetros de configuracin). 4) Cinemtica inversa: Utilizando la posicin obtenida en el proceso anterior y las frmulas de cinemtica inversa del brazo robot, se obtienen las posiciones en que deben estar cada servo del brazo, para que su efector final alcance la posicin deseada. 5) Comunicacin con el hardware: Las posiciones de cada servo (expresadas en ngulos) son enviadas al hardware de control por USB y utilizando un puerto COM virtual de la PC. Se espera un cierto tiempo de respuesta de confirmacin para, luego, volver nuevamente a la captura de imagen.

49

4. Software: Diseo y desarrollo del software especializado 4.4.2. Interfaz grfica La ventana principal de la aplicacin 2 (figura 4.10) se organiza y posee la misma estructura que la aplicacin nmero 1. Consta de los siguientes elementos: 1 2 3 4 Cuadro de imagen: all se muestran las imgenes capturadas por la webcam y las figuras de deteccin de la mano del usuario (contorno y defectos). Barra de men: Se incluyen los mens de opciones y ayuda de la misma forma que en la aplicacin de deteccin de objetos. Seleccin de pestaas: Las opciones calibracin se encuentran en una pestaa aparte a las opciones de inicio, detencin e informacin de estado del sistema. Contenido de la pestaa: All se incluyen los elementos propios de cada pestaa, que se detallan ms adelante.

Figura 4. 10: Ventana principal de la aplicacin 2. Los elementos que forman parte de la pestaa Iniciar (figura 4.11) son los mismos que para la aplicacin 1: 1 2 3 Informacin de configuracin: en donde se muestran los valores de calibracin actuales del sistema. Botn Iniciar o Detener: pone en marcha el sistema o lo detiene si se encuentra en funcionamiento. Estado del sistema: en donde el sistema se comunica con el usuario.

50

4. Software: Diseo y desarrollo del software especializado

Figura 4. 11: Pestaa Inicio. Esta aplicacin, particularmente, es muy sensible a las condiciones de iluminacin del ambiente y del fondo del espacio de trabajo. Hay que recordar que el programa principal detecta continuamente el contorno de la mano del usuario y calcula su rea, por lo que cualquier ruido en la imagen o cambio en la iluminacin puede ocasionar un funcionamiento incorrecto o incluso que el sistema no funcione. Para ello la calibracin inicial del sistema es fundamental para que la deteccin de la mano del usuario sea posible. En la figura 4.12 se muestra la pestaa de Calibracin en la que se incluye: 1 2 Botn Calibrar: habilita los dems controles e inicia los algoritmos de calibracin (que se muestran en pantalla). Controles de calibracin: posee sliders que configuran los valores de Threshold, Erode y Dilate que deben utilizarse para que la mano del usuario sea detectada correctamente. All se calibra, adems, la relacin pxeles a centmetros ingresando el valor de la longitud de una lnea que se muestra en pantalla. Botn Ver Deteccin: Al presionar se realizan los mismos algoritmos que el programa principal, mostrando la deteccin de la mano en la pantalla, con la diferencia que no se envan datos al brazo robot. Este control se utiliza para asegurarse de que el sistema funciona correctamente con la calibracin realizada.

51

4. Software: Diseo y desarrollo del software especializado

Figura 4. 12: Pestaa Configuracin.

52

5. Implementacin: Ensayos y resultados

5. Implementacin: Ensayos y resultados


En la presente seccin se describen las pruebas realizadas para comprobar el buen funcionamiento del proyecto y los resultados obtenidos. Se realizaron ensayos al sistema de visin artificial y al sistema de control del brazo robot. Sus resultados permitieron la correccin de errores y la determinacin de las restricciones y consideraciones especiales que se deban tener en cuenta a la hora de la implementacin de la plataforma.

5.1. Brazo Robot


Para lograr el buen funcionamiento del brazo robot se realizaron pruebas de su sistema de control. Uno de los componentes ms importantes de dicho sistema es el clculo de cinemtica inversa, donde a partir de las coordenadas obtenidas del software de visin artificial, se deben tomar los objetos dependiendo de su color y tamao. Es por ello que se realizaron dos pruebas de posicionamiento con el objetivo de corregir desviaciones y determinar el rango de trabajo del brazo robot. Ellas son: Prueba de posicionamiento en X e Y. Prueba de posicionamiento de la base.

Prueba de posicionamiento en X y Z La prueba de posicionamiento se realiz siguiendo los siguientes pasos: 1 2 3 4 5 6 Manteniendo Z en un valor constante (1 cm), se realizaron los clculos de cinemtica inversa para valores de X entre 5 cm y 27 cm (mxima extensin del brazo robot). Una vez obtenidos los valores de ngulos de cada articulacin, se enviaron sucesivamente dichos datos al hardware de control del brazo robot. Se realiz la medida de cada distancia X obtenida (como se muestra en la figura 5.1). De igual forma, se realiz la prueba para el eje Z. Manteniendo X en un valor constante (13 cm), se fue variando Z entre 0 cm y 12 cm. Una vez realizado el clculo de cinemtica inversa, y enviados los datos al brazo robot, se realiz la medida de cada altura Z obtenida (figura 5.2). Se calcul el error relativo de cada medida.

53

5. Implementacin: Ensayos y resultados Los datos obtenidos fueron: Tabla 5. 1: Mediciones de posicionamiento en X. () () () Xmed (cm) 108 105.7 103.3 100.8 98.1 95.22 92.14 88.8 85.25 81.43 77.37 73.07 68.55 63.83 58.92 53.84 48.58 43.13 37.42 31.38 24.84 17.48 8.46 20.9 21.87 23.1 24.56 26.27 28.2 30.33 32.61 34.99 37.4 39.79 42.05 44.12 45.89 47.28 48.2 48.58 48.34 47.38 45.59 42.79 38.62 32.19 90 86.25 82.5 78.75 75 71.25 67.5 63.75 60 56.25 52.5 48.75 45 41.25 37.5 33.75 30 26.25 22.5 18.75 15 11.25 7.5 5.3 6.2 6.5 7.3 8.5 9.7 10.8 12.1 13.4 14.4 15.3 16.2 17 18.1 18.9 19.8 20.8 21.7 22.6 23.5 24.8 25.8 26.7

X (cm) 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

E relativo 0.06 0.033 0.071 0.087 0.055 0.03 0.018 0.008 0.031 0.028 0.02 0.012 0 0.005 0.005 0.01 0.009 0.013 0.017 0.021 0.008 0.007 0.011

54

5. Implementacin: Ensayos y resultados

Figura 5. 1: Mediciones de posicionamiento en X.

Z (cm) 0 1 2 3 4 5 6 7 8 9 10 11 12

Tabla 5. 2: Mediciones de posicionamiento en Z. () () () Zmed (cm) 73.31 78.95 83.7 87.5 90.47 92.56 93.85 94.4 94.25 93.4 91.83 89.44 85.98 54.25 46.12 38.1 30.37 22.89 15.67 8.69 1.87 -4.86 -11.6 -18.5 -25.75 -33.7 60 60 60 60 60 60 60 60 60 60 60 60 60 -1.5 -0.9 0 0.9 1.5 2.3 3.1 4.2 5.5 6.6 7.3 8.5 9.2

E relativo 1.9 1 0.7 0.625 0.54 0.483 0.4 0.312 0.266 0.27 0.227 0.233

55

5. Implementacin: Ensayos y resultados

Figura 5. 2: Mediciones de posicionamiento en Z. Resultados: Los errores de posicin para la coordenada X tuvieron un mximo de 0,087 (8,7 %). Considerando la aplicacin y las dimensiones de los objetos a clasificar mediante el brazo, el nivel de error obtenido es aceptable. Los errores de posicin para la coordenada Z, resultaron muy superiores en comparacin a la coordenada X. Analizando los valores de Z medidos se not que se encuentran aproximadamente de 2,3 cm (en promedio) por debajo de los valores reales de Z. Esto se debe principalmente al peso del extremo del brazo robot. Como solucin se propuso agregar un valor de offset, de 2.3 cm, a las frmulas de cinemtica inversa. Los resultados de dicha correccin se pueden ver en la tabla 5.3. Puede notarse que el error cometido result considerablemente menor.

56

5. Implementacin: Ensayos y resultados Tabla 5. 3: Mediciones de posicionamiento corregido en Z. () () () Zmed (cm) 84.95 88.51 91.18 93.03 94.09 94.43 94.07 93.01 91.2 88.53 84.66 78.58 35.77 28.09 20.7 13.56 6.63 -0.15 -6.87 -13.65 -20.63 -28.04 -36.32 -46.69 60 60 60 60 60 60 60 60 60 60 60 60 0.5 1.4 2.2 3.3 3.8 4.7 5.5 6.6 7.8 8.9 9.7 10.9

Z (cm) 0 1 2 3 4 5 6 7 8 9 10 11

E relativo 0.4 0.1 0.1 0.05 0.06 0.083 0.057 0.025 0.011 0.03 0.009

Prueba de posicionamiento de la base La prueba de posicionamiento de la base se realiz siguiendo los siguientes pasos: 1 2 Manteniendo X y Z en un valor constante (13 y 1 cm respectivamente), se realiz el clculo de cinemtica inversa. Una vez obtenidos los valores de ngulos de cada articulacin, se enviaron sucesivamente dichos datos al hardware de control del brazo robot, variando el ngulo (ngulo de la base) entre 0 y 180. Se realiz la medida de cada ngulo obtenido (como se muestra en la figura 5.3). Se calcul el error relativo de cada medida. Los datos obtenidos fueron: Tabla 5. 4: Mediciones de posicionamiento del ngulo de la base. () () () medido () 91.18 91.18 91.18 91.18 91.18 91.18 91.18 91.18 91.18 91.18 20.7 20.7 20.7 20.7 20.7 20.7 20.7 20.7 20.7 20.7 60 60 60 60 60 60 60 60 60 60 2 21 42 63 82 99 119 140 160 179

3 4

() 0 20 40 60 80 100 120 140 160 180

E relativo 0.05 0.05 0.05 0.025 0.01 0.008 0 0 0.005

57

5. Implementacin: Ensayos y resultados

Figura 5. 3: Mediciones de posicionamiento del ngulo de la base. Resultados: Los errores de posicin para el ngulo de la base del robot fueron como mximo del 0,05 (5%). El nivel de error obtenido fue aceptable por lo que no fue necesaria ninguna calibracin del sistema.

5.2. Aplicacin 1
Para lograr que la aplicacin 1 funcione correctamente fue necesario comprobar que la determinacin de las posiciones de los objetos detectados por parte del algoritmo sean lo ms precisa posible. Para ello se realiz una prueba de comparacin de las posiciones detectadas respecto a las reales. Se siguieron los siguientes pasos: 1 2 Se realiz un algoritmo similar al utilizado en la aplicacin 1 para detectar objetos y determinar su posicin en un plano. Se realizaron medidas de posicin (X,Y) para un mismo objeto ubicado en distintas posiciones del plano al mismo tiempo que se tomaban las lecturas de las posiciones detectadas por el algoritmo (figura 5.4). Se calcul el error relativo de cada medida

58

5. Implementacin: Ensayos y resultados

Figura 5. 4: Medicin de posiciones de objetos. Los datos obtenidos fueron: Tabla 5. 5: Mediciones de posicionamiento del ngulo de la base. Y (cm) X detec. (cm) Y detec. (cm) E relativo (X) 6.5 12.5 7 13.5 14.75 3.4 9 9.5 6 17 8.2 -0.7 -5.55 -9.25 8.55 -5.8 0.05 -7.55 10.3 5.1 6.25 13.05 6.65 13.75 15.5 3.4 9.3 9.4 5.85 17.25 0.025 0.166 0.075 0.088 0.011 0.16 0.034 0.019 0.15

X (cm) 8 -0.6 -6 -8.5 8.45 -5 0 -7.3 10.5 6 Resultados:

E relativo (Y) 0.038 0.044 0.05 0.018 0.051 0 0.033 0.01 0.025 0.014

Como se expone en la tabla 5.5, solo en dos mediciones se obtuvieron errores del 15%. El resto de las posiciones detectadas contuvieron menos del 8% de error, por lo que el funcionamiento del algoritmo result muy aceptable. Cabe aclarar que en el transcurso del ensayo se debi corregir un error que se produca en la ejecucin del algoritmo. La aplicacin alertaba de que el objeto detectado se encontraba fuera de rea, cuando este se encontraba realmente dentro del rectngulo de trabajo. Esto se produca debido al ruido que contena la imagen capturada. El mismo ocasionaba que las posiciones detectadas sean errneas y por ende la funcin encargada de realizar la interpolacin de las muestras entregaba un valor fuera de los lmites del rea de trabajo. El problema se corrigi incorporando al software una rutina que descarte los valores errneos de posiciones (aquellos que se encuentren fuera del rango de trabajo) y que inicialice la deteccin nuevamente.

59

5. Implementacin: Ensayos y resultados Por otra parte se puede decir que gracias al ensayo realizado se pudo comprobar que las condiciones de iluminacin del ambiente influyen permanentemente en el funcionamiento de los procesos de visin artificial. En los primeros intentos de la prueba se contaba con una iluminacin directa por parte de una lmpara halgena. Esto ocasionaba que la reflexin de la luz en los objetos sea excesiva, y la webcam, por poseer capacidades limitadas, capturaba imgenes con mucho brillo. Se intent tambin utilizar la luz solar como fuente de iluminacin del sistema. Si bien la misma era difusa, mejorando las prestaciones de la plataforma, la misma no resulta constante a lo largo del da, por lo que los colores detectados por la webcam diferan a lo largo del tiempo. Eligiendo la tcnica adecuada de iluminacin se pudo lograr un aumento en la exactitud, en la fiabilidad del sistema y en su tiempo de respuesta. La misma deba ser difusa, omnidireccional y constante a lo largo del tiempo.

5.3. Aplicacin 2
En esta aplicacin el usuario interacta con el sistema de manera constante, utilizando su propia mano para manipular el robot. La aplicacin se basa en mapear un espacio de coordenadas ortogonal (X,Y,Z) a un espacio en coordenadas cilndricas (X, ,Z), coordenadas necesarias para la cinemtica inversa del brazo robot. Las coordenadas X e Y pueden conocerse fcilmente ya que representan la posicin de la mano en la pantalla (centro de masa de la mano), por lo tanto es una medicin directa. La complejidad surge al momento de la medicin de la altura Z. Para ello se realizaron distintas mediciones del rea de la mano del usuario, enfocada por la webcam, a distintas alturas (figura 5.4). De esta forma se pretendi obtener una funcin que describiera el movimiento del brazo en el eje Z. La prueba de medicin de rea de la mano se realiz siguiendo los siguientes pasos: 4 5 6 7 Se realiz un algoritmo similar al utilizado en la aplicacin 2 para detectar la mano del usuario, obtener su contorno y calcular el rea del mismo. Manteniendo la mano abierta en una posicin constante de X e Y, se realiz la lectura de los valores de rea medidos para distintas alturas, como se expone en la tabla 5.6. De la misma forma se leyeron los valores de rea de la mano cerrada a distintas alturas. Se anotaron dichos valores en la tabla 5.7. Se realizaron grficos de forma de mostrar el tipo de relacin que existe entre el rea calculada y la altura.

60

5. Implementacin: Ensayos y resultados Los datos obtenidos para el caso de la mano abierta fueron: Tabla 5. 6: Mediciones de rea de la mano abierta. Z medido (cm) rea Calculada ( 0 2 4 6 8 10 12 14 16 18 20 50345 54072 59744 57350 69625 76049 80328 84314 93915 10013 113292

Figura 5. 5: Mediciones de rea de la mano abierta.

Los datos obtenidos para el caso de la mano cerrada fueron: Tabla 5. 7: Mediciones de rea de la mano cerrada. Z medido (cm) rea Calculada ( 8 10 12 14 16 18 20 28058 30626 33105 37865 42584 48116 54354

61

5. Implementacin: Ensayos y resultados

Figura 5. 6: Mediciones de rea de la mano cerrada. Grficos obtenidos:

Figura 5. 7: Relacin rea de la mano abierta a altura.

Figura 5. 8: Relacin rea de la mano cerrada a altura. 62

5. Implementacin: Ensayos y resultados

Figura 5. 9: Diferencia entre reas. Resultados: Analizando las figuras 5.6 y 5.7, puede decirse que las relaciones entre ambas magnitudes son prcticamente lineales, dentro del rango de alturas a utilizar. Debido a que la altura no debe variar en gran medida si la mano se abre o se cierra, es necesario conocer la diferencia que existe entre ambas reas para realizar la correccin correspondiente. Dicha diferencia se muestra en la figura 5.8, y como puede verse, es un valor prcticamente constante para las distintas alturas (47315 en promedio). Este valor se incluye en el algoritmo de la aplicacin 2 para correccin de la altura (cuando se cierra la mano). La prueba realizada permiti asegurar que el mtodo de determinacin de altura en funcin de su rea en la pantalla genera buenos resultados.

63

6. Conclusiones

6. Conclusiones
Con los estudios y las tareas realizadas se logr desarrollar un sistema clasificador de objetos, en donde se utiliza la visin artificial para la deteccin de las posiciones y las caractersticas de los objetos (color y tamao), cumpliendo con el objetivo principal del proyecto. Se dise y construy un brazo robot de 5 grados de libertad (DOF) con materiales de bajo costo. Adems se realiz el estudio de cinemtica inversa permitiendo que el autmata manipule y clasifique los objetos conociendo solamente sus posiciones. El mtodo geomtrico utilizado fue una buena opcin ya que, siendo un mtodo sencillo, permiti resolver el problema de las mltiples soluciones determinando la posicin del efector final al momento de manipular los objetos. Se ha logrado el diseo e implementacin de una plataforma de visin artificial. La misma qued conformada por el brazo robot construido (sistema dinmico) y su hardware de control, una webcam (para la captura de imgenes) y un sistema computacional (para el procesamiento de datos). En cuanto a su funcionamiento, puede decirse que depende de la iluminacin del ambiente en donde se encuentre. Se debe proporcionar al sistema de condiciones de iluminacin uniformes generando el menor contenido de ruido en la imagen capturada. Para la implementacin de la visin artificial en la plataforma se desarroll un sistema de software especializado, encargado de realizar los algoritmos y funciones necesarias. Se elaboraron y aplicaron algoritmos de visin por computadora capaces de extraer la informacin visual necesaria para detectar objetos y reconocer la mano del usuario. Por otra parte, el software tambin se encarga de brindar una interfaz grfica al usuario y de comunicarse con el hardware de control del brazo robot. Se logr que la interfaz grfica resulte sencilla e intuitiva, permitiendo al usuario realizar la configuracin del sistema de forma fcil. El sistema de visin computarizada realizado es portable y flexible. El mismo permite que cualquier componente sea reemplazado por otro, siempre y cuando cumpla la misma funcin y respete el protocolo de comunicacin utilizado. Es decir que es independiente tanto del autmata, del sensor ptico y del sistema de cmputos utilizados, como del entorno en el cual se implementa. La adecuada seleccin de las herramientas de software empleadas permiti que la aplicacin final sea portable y pueda ser ejecutada en cualquier computadora estndar, en entornos Windows y Linux. Gracias a la facilidad de uso de los lenguajes de programacin y libreras utilizadas se puede dar mayor funcionalidad al sistema e implementar nuevas aplicaciones mediante simples modificaciones.

64

6. Conclusiones

6.1. Trabajos futuros


Del desarrollo de este proyecto y de las conclusiones obtenidas surgen propuestas de trabajos futuros que pueden realizarse de forma de mejorar el funcionamiento y desempeo del sistema, y de incorporar nuevas funcionalidades. A continuacin se nombran algunas de ellas: Inclusin de filtros predictivos Kalman para la determinacin de posiciones de objetos en movimiento. Implementacin de visin estreo que permitan el anlisis de profundidad. Utilizar cmaras digitales de mayor calidad para mejorar el desempeo de los algoritmos de visin artificial. Agregar funciones al sistema (ms aplicaciones). Incorporar a la plataforma un autmata de mayor tamao y capacidad (brazo industrial). Implementar realimentacin activa del brazo robot, que permita conocer las posiciones de sus articulaciones, con el objetivo de mejorar su control. Independizarse del uso de una PC o notebook desarrollando un sistema embebido capaz de realizar el procesamiento de datos. Agregar sensores al efector final del brazo robot (temperatura, presin, humedad, etc.) con el fin de ampliar la funcionalidad del sistema. Aumentar grados de libertad del autmata (incluir ruedas y hacerlo mvil). Integracin del sistema desarrollado al entorno ROS [8]. Implementar un control a distancia del sistema va Internet (servidor SSL).

65

7. Bibliografa

7. Bibliografa
[1] [2] Gary Bradski, Adrian Kaehler, Learning OpenCV, OReilly Media, 2008. Jos Jaime Esqueda Elizondo, Luis Enrique Palafox Maestre, Fundamentos de procesamiento de imgenes, Universidad Autnoma de Baja California, 2005. OpenCV v2.4.0 Documentation, http://docs.opencv.org/, 2012. Robot Arm Tutorial, http://www.societyofrobots.com/robot_arm_tutorial.shtml/, 2005. Ral Gonzlez Duque, Python para todos, http://mundogeek.net/tutorial-python/, 2007. Python v2.7.3 documentation, http://docs.python.org/2/, 2010. Arduino Language Reference, http://arduino.cc/en/Reference/HomePage/, 2012. Robot Operative System (ROS) Documentation, http://www.ros.org/wiki/, 2012. Martin Peris, Blog de Visin Artificial y Robtica, http://blog.martinperis.com/, 2011. John Daniel Bell, Rick McClelland, OpenCV Tutorials, http://www.neuroforge.co.uk/, 2012. Linux UVC Driver Support, http://www.ideasonboard.org/uvc/, 2012. Pingino Reference, http://wiki.pinguino.cc/index.php/Main_Page/, 2012. Anbal Ollero Baturone, Robtica: manipuladores y robots mviles, Marcombo, 2001. Jorge Rodrguez Arajo, Introduccin a los sistemas de visin artificial, 2009. Ral Igual, Carlos Medrano, Tutorial de OpenCV, Computer Vision Lab, 2008. Ctypes Package Examples, https://code.google.com/p/ctypes-opencv/, 2010. PyQt Class Reference, http://pyqt.sourceforge.net/Docs/PyQt4/classes.html/, 2012. Artculo periodstico sobre estudios en Universidad Nacional de Colombia, http://www.agenciadenoticias.unal.edu.co/ndetalle/article/usan-la-magia-de-los-numerospara-encontrar-objetos-ocultos.html, 2012. Laboratorio del MIT, especializado en Computer Vision, http://www.csail.mit.edu/, 2012.

[3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18]

[19]

66

8. Anexos

8. Anexos
8.1. Anexo A: Programa del microcontrolador

#include <Servo.h> #include <stdlib.h> Servo servo1; Servo servo2; Servo servo3; Servo base; Servo pinza; Servo giromano; #define cerrado 1550 #define abierto 800 int i=1; // digital sensor int j=0; char cadena1[10]; // incoming serial byte char z_servo1[4]; char z_servo2[4]; char z_servo3[4]; char base_servo[4]; char mano[4]; int z1; int z2; int z3; int zbase; int zbaseb; int zbasei; int hand; String cadena2; int i1=800; int i2=2350; int i3=1600; void setup() { //nuetros servos van desde 700 a 2450 useg Serial.begin(115200); Serial.setTimeout(700); servo1.attach(9); servo2.attach(12); servo3.attach(11); giromano.attach(8); base.attach(13);

67

8. Anexos
pinza.attach(10); giromano.writeMicroseconds(650); pinza.writeMicroseconds(cerrado); servo1.writeMicroseconds(800); servo2.writeMicroseconds(2350); servo3.writeMicroseconds(1600); base.writeMicroseconds(1500); Serial.flush(); } void irinicio() { z1=800; z2=2350; z3=1600; zbasei=1500; while (i1!=z1||i2!=z2||i3!=z3){ if (i1!=z1) { if (i1<z1) { i1++;} else {i1--;} servo1.writeMicroseconds(i1); delayMicroseconds(500);} if (i2!=z2) { if (i2<z2) { i2++;} else {i2--;} servo2.writeMicroseconds(i2); delayMicroseconds(500);} if (i3!=z3) { if (i3<z3) { i3++;} else {i3--;} servo3.writeMicroseconds(i3); delayMicroseconds(500);}} while (zbase!=zbasei){ if (zbase!=zbasei) { if (zbase<zbasei) { zbase++;} else {zbase--;} base.writeMicroseconds(zbase); delayMicroseconds(500);}} } void levantar() { z1=800; z2=2350; z3=1600; while (i1!=z1||i2!=z2||i3!=z3){ if (i1!=z1) { if (i1<z1) { i1++;} else {i1--;}

68

8. Anexos
servo1.writeMicroseconds(i1); delayMicroseconds(500);} if (i2!=z2) { if (i2<z2) { i2++;} else {i2--;} servo2.writeMicroseconds(i2); delayMicroseconds(500);} if (i3!=z3) { if (i3<z3) { i3++;} else {i3--;} servo3.writeMicroseconds(i3); delayMicroseconds(500);} }} void irbasurero() { z1=1600; z2=1600; z3=1600; zbaseb=2450; while (zbase!=zbaseb){ if (zbase!=zbaseb) { if (zbase<zbaseb) { zbase++;} else {zbase--;} base.writeMicroseconds(zbase); delayMicroseconds(500);}} while (i1!=z1||i2!=z2||i3!=z3){ if (i1!=z1) { if (i1<z1) { i1++;} else {i1--;} servo1.writeMicroseconds(i1); delayMicroseconds(500);} if (i2!=z2) { if (i2<z2) { i2++;} else {i2--;} servo2.writeMicroseconds(i2); delayMicroseconds(500);} if (i3!=z3) { if (i3<z3) { i3++;} else {i3--;} servo3.writeMicroseconds(i3); delayMicroseconds(500);}} } void ir() { base.writeMicroseconds(zbase); while (i1!=z1||i2!=z2||i3!=z3){ if (i1!=z1) {

69

8. Anexos
if (i1<z1) { i1++;} else {i1--;} servo1.writeMicroseconds(i1); delayMicroseconds(500);} if (i2!=z2) { if (i2<z2) { i2++;} else {i2--;} servo2.writeMicroseconds(i2); delayMicroseconds(500);} if (i3!=z3) { if (i3<z3) { i3++;} else {i3--;} servo3.writeMicroseconds(i3); delayMicroseconds(500);}} } void loop() { if (Serial.available() > 0){ delay(1); Serial.readBytes(cadena1,2); if(strcmp(cadena1,"co")==0){ Serial.flush(); Serial.println("conectados"); for (j=0;j<=9;j++){ // bucle para borrar cadena cadena1[j]='\0'; } } if(strcmp(cadena1,"bu")==0){ Serial.flush(); Serial.println("busco"); Serial.readBytes(z_servo1,3); Serial.readBytes(z_servo2,3); Serial.readBytes(z_servo3,3); Serial.readBytes(base_servo,3); delay(1); Serial.println("buscando"); z1=atoi(z_servo1); z2=atoi(z_servo2); z3=atoi(z_servo3); zbase=atoi(base_servo); z1=map(z1, 0, 180, 650, 2350); z2=map(z2, 0, 180, 650, 2350); z3=map(z3, 0, 180, 650, 2350); zbase=map(zbase, 0, 180, 650, 2350); Serial.flush(); if (z1!=650&&z2!=650&&z3!=650&&zbase!=650) { pinza.writeMicroseconds(abierto); ir(); delay(500);

70

8. Anexos
pinza.writeMicroseconds(cerrado); delay(500); levantar(); irbasurero(); pinza.writeMicroseconds(abierto); delay(500); pinza.writeMicroseconds(cerrado); delay(100); irinicio(); } } if(strcmp(cadena1,"ir")==0){ Serial.flush(); Serial.println("voy"); Serial.readBytes(z_servo1,3); Serial.readBytes(z_servo2,3); Serial.readBytes(z_servo3,3); Serial.readBytes(base_servo,3); Serial.readBytes(mano,3); z1=atoi(z_servo1); z2=atoi(z_servo2); z3=atoi(z_servo3); zbase=atoi(base_servo); hand=atoi(mano); z1=map(z1, 0, 180, 650, 2350); z2=map(z2, 0, 180, 650, 2350); z3=map(z3, 0, 180, 650, 2350); zbase=map(zbase, 0, 180, 650, 2350); if (z1!=650&&z2!=650&&z3!=650&&zbase!=650) { if (hand==1){ pinza.writeMicroseconds(abierto); } else{pinza.writeMicroseconds(cerrado);} ir(); } } Serial.flush(); } for (j=0;j<=9;j++){ // bucle para borrar cadena cadena1[j]='\0'; } }

71

Вам также может понравиться