Está en la página 1de 212

Desarrollo de interfaz para el traslado de un objeto utilizando una celda flexible dentro del plano por medio de visin

artificial

Trabajo de Titulacin presentado en conformidad a los requisitos para obtener el ttulo de Ingeniero Civil en Informtica

Por

Cesar Hernaldo Flores Arteaga Leonardo Andres Ruiz Rodriguez

Profesor Gui JUAN CARLOS PARRA Profesor del Departamento de Sistemas de Informacin, Facultad de Ciencias Empresariales.

Concepcin, 26 de Febrero de 2010

Tabla de Contenidos

Tabla de Contenidos
Resumen.....................................................................................................................................................1 Agradecimientos ........................................................................................................................................2 Introduccin ...............................................................................................................................................4 Contenido...................................................................................................................................................6 1 Presentacin del Problema .....................................................................................................................8 1.1 Origen del Tema. ............................................................................................................................8 1.2 Objetivos ........................................................................................................................................9 1.2.1 Objetivo General ....................................................................................................................9 1.2.2 Objetivos Especficos .............................................................................................................9 1.3 Alcances y Limitaciones.................................................................................................................9 1.3.1 Alcances................................................................................................................................10 1.3.2 Limitaciones .........................................................................................................................10 1.4 Hardware y Software a Utilizar....................................................................................................11 1.4.1 Hardware ..............................................................................................................................11 1.4.2 Software................................................................................................................................11 1.5 Presentacin del Problema ...........................................................................................................11 1.6 Especificacin de Requerimientos ...............................................................................................12 1.6.1 Descripcin de Interfaces .....................................................................................................12 1.6.1.1 Interfaz de Usuario........................................................................................................12 1.6.1.2 Interfaz de Hardware ....................................................................................................13 1.6.1.3 Interfaz de Software......................................................................................................13 1.6.1.4 Interfaces de comunicacin ..........................................................................................13 1.6.2 Requerimientos Funcionales ................................................................................................14 1.6.3 Requisitos de Rendimiento...................................................................................................14 1.6.4 Requisitos de Desarrollo.......................................................................................................15 1.6.5 Requisitos No Funcionales ...................................................................................................16 1.7 Especificaciones del rea de Trabajo ..........................................................................................16 1.8 Conceptos Relacionados ..............................................................................................................22 1.8.1 Que es Automatizacin? .....................................................................................................22 1.8.2 Qu es Visin Artificial?.....................................................................................................23 1.8.3 Qu es Inteligencia Artificial? ............................................................................................24 1.8.4 Qu es Visin por Computador? .........................................................................................25 1.8.5 Qu es Dev-C++? ...............................................................................................................26 1.9 Problemas surgidos y dificultades de ste Captulo .................................................................27 2 Tratamiento de Imgenes .....................................................................................................................28 2.1 Presentacin del Problema ...........................................................................................................28 2.2 Conceptos Relacionados ..............................................................................................................29 2.2.1 Que es una Imagen?............................................................................................................29 2.2.2 Procesamiento Digital de Imagen.........................................................................................29 2.3 Pasos fundamentales del procesamiento digital de imgenes .....................................................31 2.4 OpenCV........................................................................................................................................33 2.4.1 Qu es OpenCv? .................................................................................................................33

2.4.2 OpenCV Estructura y Contenido..........................................................................................34 2.4.3 Por qu usar OpenCV? .......................................................................................................35 2.5 Pasos a principales en la obtencin de caractersticas del objeto.................................................36 2.5.1 Algoritmo Meanshift ............................................................................................................36 2.5.1.1 Umbral. .........................................................................................................................37 2.5.1.2 Distancia Espacial.........................................................................................................38 2.5.1.3 Iteraciones.....................................................................................................................40 2.5.2 Binarizacin de Imgenes.....................................................................................................41 2.5.3 Transformaciones Morfolgicas ...........................................................................................42 2.5.3.1 Erosionar.......................................................................................................................43 2.5.3.1 Dilatar ...........................................................................................................................46 2.5.4 Centroide ..............................................................................................................................48 2.6 Trabajar OpenCV en Dev-c++ .....................................................................................................49 2.7 Aplicaciones del tratamiento de Imgenes ...................................................................................49 2.8 Diseo...........................................................................................................................................50 2.8.1 Diagrama de flujo de datos...................................................................................................50 2.9 Problemas surgidos y dificultades de ste Captulo .................................................................52 3 Lgica Difusa.......................................................................................................................................54 3.1 Definiciones previas.....................................................................................................................54 3.1.1 Conjuntos Difusos y Grado de pertenencia ..........................................................................54 3.1.2 Valores de Membresa ..........................................................................................................55 3.2 Definicin Lgica Difusa .............................................................................................................56 3.3 Esquema Lgica Difusa ...............................................................................................................58 3.3.1 Fuzzificacin ........................................................................................................................58 3.3.2 Base de Conocimiento..........................................................................................................58 3.3.3 Inferencia ..............................................................................................................................59 3.3.3.1 Mecanismo de Inferencia..............................................................................................59 3.3.3.2 Conectores lgicos entre Antecedentes.........................................................................59 3.3.4 Desfuzzificacin ...................................................................................................................60 3.3.4.1 Mtodos de Desfuzzificacin .......................................................................................60 3.4 Funcionamiento ...........................................................................................................................61 3.5 Por qu Lgica Difusa? .............................................................................................................62 3.6 Como crear un Sistema Difuso Basado en Reglas .......................................................................63 3.7 Matlab...........................................................................................................................................64 3.7.1 Definicin .............................................................................................................................64 3.7.2 Uso y aplicaciones ................................................................................................................65 3.7.3 Componentes de Matlab .......................................................................................................65 3.7.3.1 Entorno de desarrollo....................................................................................................65 3.7.3.2 La librera de funciones matemticas Matlab ...............................................................65 3.7.3.3 Grficos.........................................................................................................................66 3.7.3.4 La interfaz de aplicacin Matlab (API) ........................................................................66 3.7.4 Toolboxes..............................................................................................................................66 3.7.5 Simulink ...............................................................................................................................67 3.7.6 Fuzzy ....................................................................................................................................67 3.8 Implementacin............................................................................................................................67

3.8.1 Entorno de trabajo Matlab ....................................................................................................67 3.8.2 Entorno de trabajo Fuzzy Logic Toolbox .............................................................................68 3.8.2.1 FIS Editor (Sistema de inferencia Borroso)..................................................................68 3.8.2.2 Variables Lingsticas ...................................................................................................70 3.8.2.3 Membership Function Editor (Editor de reglas de Pertenencia)...................................71 3.8.2.4 Rule Editor (Editor de Reglas)......................................................................................72 3.8.2.5 Rule Viewer (visualizador de reglas)............................................................................73 3.8.2.6 Guardar y exportar al Workspace .................................................................................74 3.8.3 Entorno de trabajo Simulink.................................................................................................75 3.8.3.1 Simulink Library Browser ............................................................................................75 3.8.3.2 El espacio de trabajo de Simulink.................................................................................77 3.8.3.3 Integracin Fuzzy Toolbox y Simulink.........................................................................78 3.8.4 Generacin de Cdigo C en Simulink ..................................................................................79 3.9 Diseo e implementacin .............................................................................................................83 3.9.1 Diagrama de Bloques ...........................................................................................................83 3.10 Problemas surgidos y dificultades de ste Captulo ...............................................................84 4 Robtica ...............................................................................................................................................85 4.1 Laboratorio de Sistemas Automatizados de Produccin CIMUBB .............................................86 4.2 Scorbot ER V Plus.....................................................................................................................87 4.3 Modos de Operacin: ...................................................................................................................90 4.4 Inicializacin ................................................................................................................................92 4.5 Operacin del Robot.....................................................................................................................93 4.6 Sistemas de coordenadas..............................................................................................................93 4.7 Rol que Cumple el Robot Scorbot ER-V Plus en el Proyecto .....................................................94 4.8 Comunicacin Por Puerto Serial ..................................................................................................95 4.9 Comunicacin Serial en el Lenguaje de Programacin C ...........................................................96 4.10 Monitoreo del Puerto Serial .....................................................................................................106 4.11 Comandos ACL a Utilizar ........................................................................................................112 4.12 Problemas surgidos y dificultades de sta Captulo .............................................................116 5 Diseo, Integracin e Implementacin ..............................................................................................118 5.1 Casos de Uso ..............................................................................................................................119 5.2 Diagrama de Secuencias.............................................................................................................125 5.3 Diseo Lgico ...........................................................................................................................128 5.3.1 Diagrama de Flujo de Datos ...............................................................................................128 5.3.1.1 Diccionario de Datos DFD .........................................................................................130 5.3.1.2 DFD Nivel Contexto...................................................................................................131 5.3.1.3 DFD Nivel Superior....................................................................................................132 5.3.1.4 DFD Nivel Detalle del Proceso 1 ...............................................................................133 5.3.1.5 DFD Nivel Detalle del Proceso 2 ...............................................................................142 5.3.1.6 DFD Nivel Detalle Proceso 3 .....................................................................................145 5.3.1.7 DFD Nivel Detalle del Proceso 4 ...............................................................................152 5.3.1.8 DFD Nivel Detalle del Proceso 5 ..............................................................................156 5.3.1.9 DFD Nivel Detalle del Proceso 6 ...............................................................................163 5.4 Integracin..................................................................................................................................169 5.4.1 Conversin de Escalas: Pxeles a Dcimas de Milmetros .................................................170

5.4.2 Interpretacin de los valores entregados por Lgica Difusa...........................................177 5.5 Diseo Fsico..............................................................................................................................179 5.5.1 QT.......................................................................................................................................180 5.5.2 Que es Qt?.........................................................................................................................180 5.5.3 Estructura de Qt ..................................................................................................................182 5.5.4 Por qu usar QT? ..............................................................................................................184 5.5.5 Qt Creator ..........................................................................................................................184 5.5.6 Integracin de QT y OpenCV en Dev-c++.........................................................................186 5.5.7 Diagrama de Clases ............................................................................................................187 5.5.8 Diseo Fsico de Interfaces ...............................................................................................189 5.6 Problemas surgidos y dificultades de esta Captulo ...............................................................203 Conclusin del Proyecto ........................................................................................................................205 Bibliografa ............................................................................................................................................207

Resumen

Resumen
El presente informe contempla los conocimientos bsicos y experiencias de cmo se logr realizar el proyecto de ttulo para la obtencin del grado de Ingeniero Civil en Informtica. El cual cumpli los objetivos propuestos, los que fueron lograr la unificacin de conocimientos referente a distintos temas : visin artificial, inteligencia artificial, tratamiento de imgenes implementndolo por medio de un sistema capaz de manipular una celda flexible, la que mediante la visin que uno obtenga a travs de una cmara web, que vendra siendo el campo de visin que poseemos, se obtendr un objeto cilndrico, el cual estar dentro de unos lmites demarcados a priori, producto de esto la celda flexible podr proceder a obtener el objeto que se seleccionar gracias al tratamiento de imgenes realizada previamente para poder identificarlos, por medio del software que se desarrollo. La forma de interaccin con el software es relativamente sencilla siendo de vital importancia el conocimiento que se tenga en el tratamiento de imgenes, lo que al usuario no le ser imposible utilizarlo sin alguna ayuda al respecto. Mediante la manipulacin del software se lograr poder obtener los centroides de los objetos cilndricos que se coloquen en el campo de visin establecido, con lo cual el usuario podr seleccionar a priori cual de los objetos desea tomar y desplazar, por medio de botones, lo que capturara la celda flexible, esto pensando en que el sistema puede ser utilizado para obtener elementos de mucho mayor peso siendo imposible realizarlo con facilidad por una persona, logrando convertirse en una herramienta potencialmente capaz de transportar objetivos. Es importante destacar que a partir de la posicin en que empieza, la celda generar entre comillas sus propias deducciones y as decidir hacia donde moverse, siendo un artefacto inanimado podr llegar hasta el objetivo y poder obtenerlo, con lo cual el siguiente paso que har sera depositarlo en algn sitio que el usuario le haya designado con anterioridad. El logro se obtuvo mediante un arduo trabajo. La investigacin y la metodologa que se utiliz de prototipo, mediante lo cual se pudo ir avanzando etapa tras etapa hasta poder lograr el sistema completo, realizando para ellos el correspondiente anlisis y el diseo necesario para no caer en problemas estructurales que podran ser fatales durante el desarrollo del Sistema. Como propuesta se podra dejar el presente proyecto como base para realizar avances en temas como manejo de profundidad (consideracin de la coordenada Z), siendo otro apartado muy interesante a estudiar e implementar. 1

Agradecimientos

Agradecimientos
Este es el momento para poder expresar nuestros agradecimientos a todas aquellas personas que de una u otra forma han participado en este proceso tan arduo que nos ha tocado vivir durante estos aos de carrera, en los que hemos vivido diferentes experiencias y conocido a muchas personas y realizado amistades.

Primero que todo debemos expresar nuestros agradecimientos a quienes nos dieron la vida, aquellas personas que nos criaron y que lo siguen haciendo an. Nuestras familias que nos han entregado su amor incondicional, su compaa, apoyo, muchas gracias por sus consejos y su infinita comprensin a nuestra ausencia como parte de la familia.

Por otra parte debemos agradecer de manera especial a nuestro profesor Gua Juan Carlos Parra quien nos brind su apoyo, consejos y nos dirigi a personas especializadas en ciertos temas, sin lo cual no pudisemos haber logrado el proyecto.

Don Cristian Aguilera quien nos brind parte de su tiempo escuchndonos y dndonos consejos de como abordar el tema de lgica difusa para el desplazamiento del Scorbot. Gracias por habernos dejado los conceptos claros.

Don Luis vera quien ha sido la persona que nos ha estado viendo trabajar da a da en el CIMUBB, quin nos ha brindado su ayuda en todo lo posible, sus conocimientos con respecto al Scorbot entre muchas otras cosas, incluso la confianza que nos tuvo para poder dejarnos quedar noches enteras en el laboratorio, por todo esto muchas gracias.

Agradecimientos No podemos dejar de dar las gracias a nuestro grupo de compaeros, que al inicio de esta carrera slo ramos un montn de desconocidos, pero que a travs de este largo y pedregoso camino se fueron estableciendo lazos de compaerismo y amistad. Nunca olvidaremos esas maanas, tardes, das o noches enteras en que estudibamos o trabajbamos en grupo, ayudndonos mutuamente para que todos pudiramos pasar los ramos y seguir adelante, cada vez que cumplamos este objetivo la satisfaccin era mucho mayor, ya que todo el esfuerzo entregado en forma colectiva daba sus frutos. Pero no todo fueron estudios, sino que tambin compartamos, nos reamos, mientras esperbamos la siguiente clase, as nos olvidbamos por algn rato de nuestros deberes y preocupaciones, Desde luego gracias compaeros, esperamos que todos sigamos siendo amigos y podamos atesorar estos hermosos recuerdos para siempre. Gracias, Nelson Prez, Jorge Vergara, Oscar Demetrio, Robinson Hidalgo.

Debo agradecer especialmente a Paulina Seplveda por su apoyo incondicional, ayudando en la lectura del informe, e ideas para conformar este proyecto adems de correcciones ortograficas, muchas gracias por tu ayuda.

Otra persona que tambin nos ayudo en un comienzo fue la profesora Yasna Mesa quien gentilmente nos presto ayuda desinteresada y a quien le agradecemos toda su disposicin frente a nosotros.

Introduccin

Introduccin
El proceso automatizado en la industria es sin duda uno de los aspectos ms complicados que poco a poco han ido interiorizando en las empresas, empezando desde un primer momento a automatizar procesos simples, desde estableciendo pautas a seguir cada vez que se quiera ejecutar alguna accin hasta realizar los procesos automticos mediante infraestructura especializada y distintos agentes automatizados que prestan ayudan importantes, es dentro de este marco que el CIMUBB de la universidad del Bo-Bo nos proporciona una infraestructura capaz de utilizar Computadores para Integrar una Empresa de Manufactura acorde a la infraestructura que existe. Dentro de este se encuentran celdas flexibles que son capases de emular de cierto modo el brazo de una persona, teniendo como lenguaje base ACL. Nosotros como estudiantes de la Universidad del Bio Bio hemos vivido experiencias en el laboratorio, pero siempre limitada a ciertos aspectos restrictivos, es por ello que nace la idea de poder manejar esta celdas flexibles por medio de un sistema el cual sera capaz de proporcionarnos lo necesario para poder interactuar con la superficie de trabajo que se desea, mediante la visin que nos proporcione una cmara web, en este punto ya se estn mezclando diferentes conceptos los cuales van desde la visin por computadora, inteligencia artificial y el tratamiento de imgenes, todos temas de peso e muy interesantes, siendo aplicaciones de ellos Mobile Eye, el cual mediante visin por computadora incorporada a un vehculo es capaz de detectar personas y la distancias que hay desde al auto a distintos objeto, siendo esto una tecnologa de punta establecido hace poco tiempo, siendo tecnologas de vanguardia. Siguiendo sta lnea se nos ocurre la investigacin de estos temas relacionados deseando aplicarlos de alguna manera para poder dejar un precedente y de marcar un camino para futuras aplicaciones que se puedan lograr utilizando como base o aprendizaje el presente proyecto de ttulo.

La utilizacin del CIMUBB, la infraestructura existente nos permite potenciar lo que deseamos a travs de sus celdas flexibles, constituyendo un desafo el obtener un objeto cilndrico que se pueda detectar dentro de un campo de visin, siendo ya importante que se pueda implementar en este

Introduccin laboratorio, pudiendo experimentar la tecnologa de punta que se maneja en este lugar.

Para poder realizar esta investigacin prctica se necesitar de un estudio acabado en el tema y de la gua necesaria para poder tener bases slidas, como en qu lenguaje poder programarlo adems estudiar como incorporarlo a la infraestructura que ya existe presente en el lugar. Todos estos desafos sern expuestos en los siguientes captulos que comprendern mdulos de funcionamiento autnomo, los cuales sern integrados finalmente logrando el sistema completo.

Contenido

Contenido
El contenido del proyecto de ttulo que se presenta se ha presentado de la siguiente forma:

A lo largo del primer Captulo se tratar la Presentacin del Problema, como ya se ha expresado, sta es el captulo introductorio para poder darse a entender que se va a realizar, porque se va a realizar y como se va a realizar el presente informe de proyecto de ttulo.

En el Segundo Captulo se explicar el Tratamiento de las imgenes, describindose los aspectos referentes a obtencin y manipulacin de imgenes, la realizacin de ciertos filtros y obtencin de informacin a partir de ella, por lo cual se dar sus respectivos prembulos y detalles que se consideren relevantes, lo cual servir para poder detectar objetos que sern de inters para poder capturarlo posteriormente con la celda flexible.

El Tercer Captulo tratar el tema correspondiente a Lgica Difusa, ese tema presentar fundamentos de lgica en la computacin, el cmo se le puede intentar dar un cierto grado de conocimiento a la computadora y que sta pueda tomar entre comillas decisiones propias basndose en ciertas reglas preestablecido de antemano, para de sta manera lograr decidir hacia que punto moverse la celda flexible, que est en una posicin predefinida. Tambin se establecern las formas de cmo utilizar el Toolbox de Matlab de lgica difusa adems de un breve vistazo a Simulink.

El Cuarto Captulo corresponder a la Conexin con el Scorbot ER-V Plus, dando a conocer aquellas formas en donde se le enviarn instrucciones de movimientos para poder desplazarse dentro de un campo de visin establecido mediante las conexiones con la celda flexible con lo cual se podr capturar el objeto.

Contenido El Quinto y ltimo Captulo corresponde al Desarrollo de la Aplicacin. Hoy en da las interfaces son indispensables para el manejo de cualquier programa, por lo cual se pretende mostrar por medio de qu lenguaje de programacin se realizar, el por qu se tom esa decisin, su portabilidad y otros aspectos a descubrir que influirn en el proyecto. Mientras que por otro lado en este captulo se expondr todo el proceso involucrado en la Integracin, establecindose este apartado como un nexo entre las distintos captulos nombradas anteriormente, esto debido a que cada parte se trat como un mdulo diferente, con lo cual la consolidacin se establecer al unir distintos tipos de programaciones e ideas concluyendo as la finalizacin del proyecto, para esto se explicaran los problemas y resultados que se obtuvieron en el vnculo de todos estos temas.

Captulo 1: Presentacin del Problema

1 Presentacin del Problema


El presente captulo pretende ser un primera aproximacin al tema a tratar, dando a conocer ideas y conceptos que son relevantes para su interiorizacin, se pretende dejar en claro qu es y cmo se realizar el proyecto dejando bien marcado cuales son sus alcances y limitaciones a travs del rea de trabajo.

1.1 Origen del Tema.


Los procesos automatizados son cada vez mas importantes dentro de las industrias modernas, permitiendo realizar procesos reiterativos en forma organizada y programada con anticipacin, aplicndose a tareas de tipo reiterativas lo cual permitira agilizarlas.

El tratamiento de imgenes, como es el caso de programas de estilos mas conservadores como Paint que viene en los sistemas operativos de tipo Windows o aquellos que son mas sofisticados tal es el caso de Photoshop o Gimp de los cuales se pueden jugar con los colores, incorporarle imgenes o aplicarle distintos tipos de efectos, filtros, etc. que trasformarn nuestra imagen, segn nuestra imaginacin, siendo esto un estmulo importante en lo que se refiere a transformar imgenes, siendo esto mas visto como una decoracin o diseo. Desde este punto no es tan impactante como tratamiento de imgenes reales en medicina para encontrar tumores en radiografas por ejemplo, u otro tratamiento de imgenes.

Modernos software's de reconocimientos faciales como es el caso de las cmaras digitales que detectan las sonrisas,como es el caso de la Sony Cybershot Smile Shutter en las cuales mediante un escaneo de los rostros de la mayora de las personas cuando sonren capturan la imagen, demostrando la potencialidades que se pueden lograr utilizando una cmara.

Captulo 1: Presentacin del Problema

1.2 Objetivos

1.2.1

Objetivo General
Tomar un objeto cilndrico con un celda flexible dentro de un plano determinado a partir de las

coordenadas obtenidas mediante visin artificial y desplazarlo, implementndolo en el laboratorio CIMUBB de la Universidad del Bo-Bo.

1.2.2

Objetivos Especficos

1. Desarrollo de algoritmo capaz de identificar objetos dentro de un campo de visin determinado apoyando el desarrollo de la aplicacin. 2. Identificar las coordenadas de posicionamiento del objeto dentro del campo de visin (coordenadas espaciales) mediante la creacin de un algoritmo. 3. Aprender a utilizar el manejo de la celda flexible Scorbot ER-V Plus (celda flexible). 4. Disear modulo para identificar la posicin de destino del objeto. 5. Implementar un algoritmo mediante lgica difusa que permita el encaminamiento del Scorbot hasta tomar el objeto seleccionado. 6. Permitir la integracin de los algoritmos anteriores en una aplicacin.

Captulo 1: Presentacin del Problema

1.3 Alcances y Limitaciones

1.3.1

Alcances
El sistema permitir al usuario seleccionar en cualquier instante, mientras muestre lo que est ocurriendo dentro del campo de visin (luego de iniciar el sistema), tomar una foto de lo que se desee analizar.

El sistema permitir seleccionar objetos que se encuentren dentro del rea delimitada a la captura de los objetos.

El sistema mostrar un rea mayor a lo posibilitado por el Scorbot para capturar el objeto, esto debido a que una persona a pesar que no pueda acceder a ciertas partes por cualquier eventualidad si es posible que visualice dicho sector.

El sistema capturara objetos cilndricos establecidos posteriormente en el rea de trabajo. El campo de visin es esttica y se encuentra por encima del Scorbot. El Scorbot antes de iniciar su desplazamiento hasta el objeto se ubicar por encima del centro del campo de visin y en una posicin preestablecida.

Para llegar hasta el objeto el Scorbot se ir desplazando por medio de lgica difusa y a una altura por encima de cualquier objeto, sin desplazamiento en eje Z (altura), solamente X e Y (cartesianos).

La rutina de depositar el objeto una vez obtenida, no corresponde a lgica difusa.

10

Captulo 1: Presentacin del Problema

1.3.2

Limitaciones
La calibracin de la cmara no es exacta debido al constante movimiento que sufre, ya sea por personas externas o por el propio movimiento generado por el Scorbot.

Los objetos que se encuentren tocando algn borde que corresponda a los limites establecidos no sera posible seleccionarlo al momento de elegir un objeto.

La identificacin de el o los objetos depender de la correcta utilizacin del sistema en el captulo de anlisis de la imagen correspondiente a la binarizacin que aplique, ya sea en su parte normal o inversa.

Los cilindros a colocar, estarn puestos sobre su base y no se apilaran cilindros uno encima de otro.

1.4 Hardware y Software a Utilizar

1.4.1

Hardware
Intel Core 2 Duo CPU 1.86GHz, 1GB de RAM Web Microsoft LifeCam Scorbot ER-V Plus

1.4.2

Software
Windows XP Profesional Service Pack 3 ATS Free Serial Matlab y Simulink

11

Captulo 1: Presentacin del Problema

1.5 Presentacin del Problema


El logro de poder capturar un objeto dentro de un campo de visin delimitado y dejarlo en una posicin distinta del campo de visin, mediante un Scorbot ER-V Plus implica distintos desafos, siendo la obtencin y ubicacin espacial dentro del campo de visin uno de los desafos; adems de poder interpretar de una manera correcta esa informacin capturada por medio de una cmara web, para as poder obtener las coordenadas de un objeto, por otra parte se encuentra el desafo de poder interactuar con la celda flexible para que se mueva y de una u otra forma darle un cierto poder de razonamiento para dirimir como lograr llegar hasta el objetivo, este es la primera impresin del problema, lo cual va a ser segmentado en diferentes partes, para poder atacar distintos problemas, esto debido a que la planificacin que tenemos presente es de ciclos iterativos de desarrollo.

1.6 Especificacin de Requerimientos


Esta seccin define los requerimientos que han de ser satisfechos por el sistema. Se debe dejar en claro que los requisitos ac descritos se obtuvieron de la conversaciones que entablamos con el profesor gua Juan Carlos Parra, el seor Cristian aguilera y Don Luis Vergara, quienes nos apoyaron en el proceso del desarrollo del presente proyecto y quienes escribieron este informe, esto pues el sistema nace de una investigacin por mezclar diferentes tipos de procedimientos que se describirn ms adelante, es por ello que no hay una persona que haya requerido el sistema como tal.

1.6.1 Descripcin de Interfaces

1.6.1.1

Interfaz de Usuario

El sistema se basa en el uso de pantallas que mostrarn los procesos a realizar en el tratamiento de la imagen que va a ir generando el usuario, siendo importante la flexibilidad que posee la seccin de 12

Captulo 1: Presentacin del Problema la binarizacin, esto porque la interfaz posibilita al usuario para realizar una infinidad de mezclas de umbrales para poder obtener los objetos, esto mediante sliders, botones de siguiente y realizacin de algoritmos como meanshift, a dems la interfaz incorpora el uso del mouse refirindose al aspecto de hacer click en una seccin de una imagen, siendo esto de gran utilidad en la seleccin del objeto, siendo importante destacar que si un objeto no es seleccionado la accin no se realizar, otro aspecto son las alertas que se encuentras en ciertos puntos del sistema para darnos la posibilidad de retractarnos de una accin dada facilitando de esta forma la interaccin con el sistema.

1.6.1.2

Interfaz de Hardware

Se ha definido la implementacin de una cmara web que servir de soporte para la obtencin de una imagen de la superficie donde se encuentran los objetos, adems para tomar el objeto se necesita de la utilizacin del brazo robtico Scorbot ER-V Plus y para realizar estas acciones es necesario el correcto funcionamiento del sistema en el computador.

1.6.1.3

Interfaz de Software

Este sistema efecta una interaccin con un sistema software externo que controla la comunicacin serial con el puerto siendo programado con este propsito para poder interactuar con el Scorbot, adems el software contiene la maquina de lgica difusa. Es importante mencionar que el sistema actual no interacta con la red de Internet.

1.6.1.4

Interfaces de comunicacin

Se utilizar una comunicacin serial con la celda flexible RS-232(instalada al mismo computador donde se encuentra el sistema) , tambin se conecta la cmara web al puerto USB 2.0.

13

Captulo 1: Presentacin del Problema

1.6.2

Requerimientos Funcionales

1. Ser capaz de obtener objetos mediante la manipulacin parcial de tratamientos en la imagen 2. Calcular centroides de objetos analizados 3. Al seleccionar captura Imagen en el men principal podemos obtener la seal de video desde la cmara web, de lo que est sucediendo en la superficie donde se encuentran los objetos. 4. A partir del video recibido se captura una imagen de l, para ser posteriormente procesada. 5. Poder obtener una vista de los objetos mostrndose los que se puedan seleccionar de una forma diferente. 6. Seleccionar un objeto haciendo click sobre ste. 7. Seleccionar posicin destino haciendo un click sobre el rea de trabajo mostrada como imagen en el sistema 8. Ser capaz de realizar click sobre la imagen y saber si se est dentro de el rea que se establece o fuera de ella

1.6.3

Requisitos de Rendimiento

1. Dado el rea de trabajo seleccionado se considera que el tiempo de respuesta en acciones crticas como realizar el algoritmo de meanshift no supere un segundo. 2. El tiempo de desplazamiento hasta el momento de obtencin del Scorbot sera variable esto debido al camino que piense entre comillas el sistema para llegar al objeto, ocupando la lgica que se le aplica al llegar a posicionarse encima del objeto.

14

Captulo 1: Presentacin del Problema

1.6.4

Requisitos de Desarrollo
El ciclo de vida elegido para desarrollar el producto ser el de prototipo, debido a que se va a

realizar una aplicacin compleja, grande y con alto grado de error. Por medio de los patrones se irn construyendo fases por separado del proyecto las cuales sern establecidas y explicadas a lo largo del presente informe, para ir avanzando y viendo como se van comportando cada uno de las fases por medio de este modelo de prototipado obtendremos una base para llegar al resultado final del proyecto, sin que esto se vea mermado por un error en alguna parte del desarrollo anterior pues como ya se mencion cada seccin constituye una especie de sub-sistema, con lo que se harn pruebas correspondientes a cada mdulo, logrando identificar posibles fallas en la programacin u lgica que exista detrs haciendo posible la construccin de bases slidas, no siendo estas un problema al momento del siguiente avance. Con respecto a esto, es un riesgo el involucrarse e investigar o implementar nuevas tecnologas, ms an siendo temas como el presente, por un lado de visin artificial y por otro la manipulacin de celdas flexibles, mas all de simples pinceladas de conocimientos tericos al respecto, es por esto que el diseo a emplear nos va a ser de utilidad, debido a que no se cuenta con mucha experiencia en esta rea.

Otro punto importante es que mediante esta tcnica vamos a tener una constante participacin con las personas expertas involucradas en el proyecto, siendo ellas nuestro profesor gua Juan Carlos Parra que nos guo durante todo el proceso dndonos ideas y llevndonos a personas mas especializadas en ciertos temas como, el Seor Cristian Aguilera quin nos di un buen enfoque en lo que se refiere a lgica difusa y Don Luis Vera quin nos prestaba ayuda en distintos aspecto del robot Scorbot, permitindonos esto tener una mayor seguridad en que los requerimientos establecidos no vayan a ser mal entendidos ni que nos salgamos del camino a seguir, tambin se nos facilit la rapidez del desarrollo, aprendizaje y uso de los sistemas esto gracias a constantes comunicaciones establecidas con las personas vinculadas al tema en cuestin, en los momentos necesarios pre-establecidos en el proyecto en si.

15

Captulo 1: Presentacin del Problema

1.6.5

Requisitos No Funcionales

1. El sistema ser implementado en Qt incorporndolo con OpenCV siendo el lenguaje padre C/C++ 2. El sistema tendr que poseer una interfaz amigable para el usuario, debiendo tener cierto entendimiento en el tema para su correcta utilizacin, debido a la complejidad de los conceptos relacionados en ste.

1.7 Especificaciones del rea de Trabajo

Para el desarrollo de nuestro Tema fue necesario contar con el apoyo de los Profesores y la infraestructura que nos brind el laboratorio de sistemas automatizados de produccin CIMUBB, con el que cuenta la facultad de Ingeniera de nuestra Universidad. En l nos facilitaron una estacin de trabajo, compuesta a grandes rasgos por un Robot Scorbot ER-V Plus, un computador al cual va conectado el Scorbot y una cmara Web, adems del soporte a cargo del ingeniero del CIMUBB Don Luis Vera, a continuacin en la Figura 0-1 se aprecia el rea de trabajo.

16

Captulo 1: Presentacin del Problema

Figura 0-1: rea de Trabajo, laboratorio CIMUBB.

Una vez presentado el ambiente de trabajo se proceder a realizar una descripcin mas detallada de los componentes que la conforman, acompaado de imgenes explicativas para dar una mayor compresin, por ello en la Figura 0-2 se detallan los componentes de la estacin de trabajo.

17

Captulo 1: Presentacin del Problema

Figura 0-2: Componentes del rea de trabajo.

Descripcin:

Se identifica al Robot Scorbot ER-V Plus, sta celda flexible es la utilizada para tomar el objeto una vez analizada previamente la imagen capturada por la cmara web, ste anlisis corresponde a la deteccin de objetos dentro de la superficie de alcance del robot.

Corresponde al computador que se ocup para la realizacin del proyecto, a el van conectados el robot Scorbot ER-V Plus a travs del puerto serial RS-232 y la cmara Web por medio 18

Captulo 1: Presentacin del Problema de USB 2.0, en este equipo es donde se monta la aplicacin creada en el proyecto, que maneja tanto al robot como a la cmara. Las especificaciones tcnicas del computador son las siguientes:

Sistema: Windows XP Profesional Service Pack 3 Equipo : Intel Core 2 Duo CPU 1.86GHz, 1GB de RAM

Muestra la cmara Web Microsoft LifeCam VX-6000 (ver Figura 0-3), esta emite video de una resolucin de 640x480 pxeles, del cual tomamos una imagen del rea de alcance del Robot Scorbot donde se encuentran situados los objetos, para ser analizada por el programa diseado. La cmara se encuentra situada en una barra de aluminio a una altura de 77,5 centmetros de la superficie donde se encuentran los objetos, la cual esta enfocando hacia abajo, para poder de esta manera realizar una toma completa de la superficie, como ejemplo de la toma se sita la Figura 0-4.

Figura 0-3: Cmara Web Microsoft LifeCam VX-6000.

19

Captulo 1: Presentacin del Problema

Figura 0-4: Imagen tomada de la superficie, por la cmara.

Determina la barra de aluminio en la cual va montada la cmara web, esta tiene un grosor de 1.5 cm. y una altura total de 1,57 metros hasta el piso, podemos ver con ms detalle las dimensiones y la forma de la barra en la Figura 0-2. Como vemos tiene forma de L invertida debido a la posicin que debe llevar la cmara web en el espacio de trabajo. Todas las dimensiones estn acordes para que no interfieran en el funcionamiento del Scorbot.

Identifica a la superficie donde se encontrarn los objetos que podr seleccionar el robot Scorbot, se escogi esta superficie pensando en las posiciones del sistema cartesiano con el que cuenta la celda flexible, debido a que se debe tomar como lmite el radio de alcance del robot (ver Figura 0-6), adems debemos coordinar que esta superficie est enfocada correctamente por la cmara web. En la Figura 05 se seala la superficie que se utilizara en las pruebas.

20

Captulo 1: Presentacin del Problema

Figura 0-5: Superficie donde se encontraran los objetos a seleccionar (Dimensin: 26 x 26 cm.).

Figura 0-6: Limites del rea de trabajo

Representa a la superficie que esta disponible en el rea de trabajo, pero por efectos de esta investigacin no se ocupar como base para dejar los objetos a seleccionar, debido a que la cmara en su ubicacin actual no alcanza a tener una completa visin de esa rea. 21

Captulo 1: Presentacin del Problema

Corresponde a uno de los objetos que ser tomado por el Robot Scorbot ER-V Plus, es un cilindro de 3,5cm de dimetro y 2,8cm de alto (Ver Figura 0-7), cabe mencionar que sern objetos de estas caractersticas los que se podrn seleccionar, debido a la forma y las dimensiones de la pinza del Scorbot.

Figura 0-7: Cilindro

Muestra la mesa de trabajo donde se encuentra situado el robot Scorbot, por lo tanto es la superficie donde estn los objetos que sern seleccionados, sta posee una dimensin de 90cm de largo y 90cm de ancho, con una altura de 77cm, como se puede apreciar en la Figura 0-2.

1.8 Conceptos Relacionados


Este apartado hace referencia a ciertos aspectos que se piensa que son relevantes para cualquiera que desee leer el presente proyecto de ttulo, refirase a esto como pinceladas de un tema que se profundizara en cada una de sus captulos presentes a lo largo de este documento.

1.8.1

Que es Automatizacin?
Automatizacin es la tecnologa referida al uso de sistemas mecnicos, elctricos y

computarizados para operar y controlar la produccin(Groover, 1980), un ejemplo es la produccin automtica de envases plsticos de bebidas.

22

Captulo 1: Presentacin del Problema Groover, indica que existen bsicamente 3 tipos de automatizacin:

I. Automatizacin Rgida, se caracteriza por realizar procesos de produccin de gran volumen conllevando una gran velocidad en el desarrollo de la produccin, siguiendo siempre un esquema predefinido, por lo cual resulta mas sencillo de implementar. Debido a esta rigidez se ve dificultado el querer cambiar el esquema predefinido, por ejemplo querer aadir una nueva mquina a la produccin de un producto X. II. Automatizacin Programable, esto viene siendo el aspecto contrario al anteriormente mencionado, siendo los sistemas que se encuentran dotados de equipos con una gran posibilidad de ser configurados, siendo capaces de tomar decisiones basados en ciertas pautas o valores introducidos por un operador. III. Automatizacin Flexible, es una extensin de la programacin programada diferencindose en su capacidad para cambiar parte de los programas o disposiciones fsicas, sin perder tiempo de produccin.

1.8.2

Qu es Visin Artificial?
Visin Artificial es el conjunto de tcnicas que permiten la obtencin de informacin por

mtodos pticos, tanto de manera automtica como asistidas por un operador.

Este conjunto heterogneo de tcnicas incluye iluminacin, captacin de imagen, digitalizacin de la misma, pre procesamiento o acondicionamiento, procesamiento y comunicacin de los resultados. Aspectos que sern expuestos posteriormente.

En algunos procesamientos se emplean algoritmos asimilables a Inteligencia Artificial (redes neuronales, sistemas basados en reglas, clasificadores, etc.), pero son minoritarios frente a procesamientos especficos que van desde la medida de distancia en pixeles o el contar de los mismos hasta tratamientos en el dominio de la frecuencia. 23

Captulo 1: Presentacin del Problema

1.8.3

Qu es Inteligencia Artificial?
Se denomina inteligencia artificial a la rama de la ciencia informtica dedicada al desarrollo de

agentes racionales no vivos.

Para explicar la definicin anterior, entindase a un agente como cualquier cosa capaz de percibir su entorno (recibir entradas), procesar tales percepciones y actuar en su entorno (proporcionar salidas), y entindase a la racionalidad como la caracterstica que posee una eleccin de ser correcta, ms especficamente, de tender a maximizar un resultado esperado (este concepto de racionalidad es ms general y por ello ms adecuado que inteligencia para definir la naturaleza del objetivo de esta disciplina).

Por lo tanto, y de manera ms especfica la inteligencia artificial es la disciplina que se encarga de construir procesos que al ser ejecutados sobre una arquitectura fsica producen acciones o resultados que maximizan una medida de rendimiento determinada, basndose en la secuencia de entradas percibidas y en el conocimiento almacenado en tal arquitectura.

Existen distintos tipos de conocimiento y medios de representacin del conocimiento. El cual puede ser cargado en el agente por su diseador o puede ser aprendido por el mismo agente utilizando tcnicas de aprendizaje.

Tambin se distinguen varios tipos de procesos vlidos para obtener resultados racionales, que determinan el tipo de agente inteligente. De ms simples a ms complejos, los cinco principales tipos de procesos son:

24

Captulo 1: Presentacin del Problema

Ejecucin de una respuesta predeterminada por cada entrada (anlogas a actos reflejos en seres vivos).

Bsqueda del estado requerido en el conjunto de los estados producidos por las acciones posibles.

Algoritmos genticos (anlogo al proceso de evolucin de las cadenas de ADN). Redes neuronales artificiales (anlogo al funcionamiento fsico del cerebro de animales y humanos).

Razonamiento mediante una lgica formal (anlogo al pensamiento abstracto humano).

Tambin existen distintos tipos de percepciones y acciones, pueden ser obtenidas y producidas, respectivamente por sensores fsicos y sensores mecnicos en mquinas, pulsos elctricos u pticos en computadoras, tanto como por entradas y salidas de bits de un software y su entorno software.

Varios ejemplos se encuentran en el rea de control de sistemas, planificacin automtica, la habilidad de responder a diagnsticos y a consultas de los consumidores, reconocimiento de escritura, reconocimiento del habla y reconocimiento de patrones. Los sistemas de IA actualmente son parte de la rutina en campos como economa, medicina, ingeniera y la milicia, y se ha usado en gran variedad de aplicaciones de software, juegos de estrategia como ajedrez de computador y otros videojuegos.

1.8.4

Qu es Visin por Computador?


Visin por computador es la ciencia y la tecnologa de las mquinas que ven. Como una

disciplina cientfica, la visin por computador se refiere a la teora para la construccin de sistemas artificiales que obtengan informacin de las imgenes. Los datos de imagen puede tomar muchas formas, como una secuencia de video, puntos de vista de varias cmaras, o datos multidimensionales desde un escner mdico.

Como disciplina tecnolgica, la visin por ordenador trata de aplicar sus teoras y modelos para 25

Captulo 1: Presentacin del Problema la construccin de sistemas de visin por computador. Ejemplos de aplicaciones de visin artificial son los sistemas para:

*Control de procesos (por ejemplo, un robot industrial o un vehculo autnomo). *Deteccin de eventos (por ejemplo, para la vigilancia visual en caso de objetos abandonados o de conteo de personas). Organizar la informacin (por ejemplo, para bases de datos de indexacin de imgenes y secuencias de imgenes). *Modelado de objetos o entornos (por ejemplo, la industria de inspeccin, anlisis de imgenes mdicas o el modelado topogrfico). *Interaccin (por ejemplo, como la entrada de un dispositivo para la computadora la interaccin humana).

Visin por Computador tambin se puede describir como un complemento (pero no necesariamente lo contrario) de la visin biolgica. En la visin biolgica, la percepcin visual de los seres humanos y los animales se estudian diferentes, dando lugar a modelos de cmo funcionan estos sistemas en trminos de procesos fisiolgicos. Visin por ordenador, por otro lado, los estudios y se describen los sistemas de visin artificial que se implementan en software y/o hardware. El intercambio interdisciplinario entre lo biolgico y la visin por ordenador ha demostrado ser cada vez ms fructfera para ambos campos.

1.8.5

Qu es Dev-C++?

Dev-C++ nos entrega un completo IDE (entorno de desarrollo integrado) implementado en Delphi de Borland, que es utilizado para la programacin en C y C++. Este posee un compilador llamado MinGW (compilador basado en GCC) que se instala conjuntamente y es totalmente transparente para el usuario. Con el podemos crear ejecutables Win32, GUI o as como DLLs y libreras estticas. Posee debugging integrado, administrador de proyectos, soporta plantillas para crear nuestros propios tipos de proyectos, class browser entre otras funcionalidades. Y no podemos dejar de 26

Captulo 1: Presentacin del Problema mencionar que Dev-C++ es distribuido gratuitamente por www.Bloodshed.net

Dev-C++ se utilizara pues nos servira para poder integrar los diferentes componentes en el cual desarrollaremos la aplicacin, todo esto se vera a fondo en el 5

1.9 Problemas surgidos y dificultades de ste Captulo

Debido a que este es el entendimiento del sistema, las dificultades principales correspondieron a los requerimientos del sistema, en como abordarlo y de que manera integraros temas entre comillas diferentes y poder de una u otra manera hacerlos interactuar para formar un sistemas que permitir concretar la investigacin que se realizo sobre los puntos principales ya expuestos.

El tiempo invertido en la recoleccin de datos fue esencial, hay que destacar que en internet y en libros y publicaciones hay bastante informacin de tipo terica sobre como tratar imgenes, sobre el manejo de una celda flexible, inteligencia artificial, de la declaracin de lenguaje ACL (utilizado para la comunicacin con el scorbot). Es claro que hay pinceladas al respecto de ciertos ejemplo, pero nada concreto de lo cual uno pudiese tomar como base, siendo esto un reto de manera tal que nos incentivara a seguir investigando y buscar las maneras de como realizar nuestro objetivo, siendo otro punto importante el descubrir la compatibilidad que existiese entre las decisiones tomadas para cada una de las que constituyeron nuestro proyecto de titulo.

27

Captulo 2: Tratamiento de Imgenes

2 Tratamiento de Imgenes
La vista es el sentido mas avanzado que poseemos siendo las imgenes las que juegan un papel importante en la percepcin que tenemos.

Las personas tenemos como limitante la banda visible del espectro electromagntico (EM), pero no as las maquinas quienes pueden percibir prcticamente el espectro completo, desde los rayos gama hasta las ondas de radio, es por esto la importancia que hay al tratar imagen por medio de las computadoras, cuya exactitud es superior a nuestros alcances.

En este se dar a conocer las distintas procesos que se le aplicarn a una imagen para poder obtener informacin de ella, la que va a ser de utilidad para poder posteriormente obtener las coordenadas de los objetos en pixeles, este proceso implica tener un entendimiento acabado en el tema de las imgenes, lo cual sera abordado posteriormente. Se explicarn los diferentes procedimientos realizados a la imagen adems de nombrar el lenguaje que se utilizar para poder realizar este mdulo.

2.1 Presentacin del Problema


La obtencin de informacin referente al temas es abundante, pero el tratamiento de informacin por medio de lenguajes viene siendo mas recatada. Se investig, se analiz que se podan tratar imgenes por medio de libreras adicionales como GD de PHP, pero el tratamiento de ello era algo simpln, no a la altura de algo mas experimentado como la biblioteca de visin artificial openCV la cual se decidi ocupar. Adems de esto se tuvo que profundizar en temas referente al tratamiento de imgenes, el filtrado de imgenes, mscaras y otros conceptos que eran nuevos, para nuestro entender.

28

Captulo 2: Tratamiento de Imgenes Como primera etapa se propuso la obtencin de un objeto dentro de una imagen, adems de sus coordenadas, mediante distintos tratamientos de la imagen explicados ms adelante en ste captulo. Todo esto mediante la librera openCV cuya sintaxis de lenguaje de programacin es parecida a C / C++.

2.2 Conceptos Relacionados


Este apartado hace referencia a aspectos que son preliminares para poder entender a que se refiere con la manipulacin de las imgenes mostrando conceptos relacionados con el presente captulo.

2.2.1

Que es una Imagen?


Una imagen puede ser definida matemticamente como una funcin bidimensional, f(x,y),

donde x e y son coordenadas espaciales en un plano y f en cualquier par de coordenadas es la intensidad o nivel de gris de la imagen en esa coordenada, al momento en que x e y, y los valores de f son todas cantidades finitas, discretas, se puede decir que la imagen es una Imagen Digital. Esta se compone de una cantidad finita de elementos, cada uno con un lugar y un color especifico, cada uno de estos elementos se les llama pixel, esto quiere decir que si una imagen posee una resolucin de 300 x 200, la cantidad de pixeles que se encuentra en ella por fila es de 300 y por columna es de 200 con lo que hace un total de 60000 pixeles los cuales componen la imagen

2.2.2

Procesamiento Digital de Imagen.


Son todos aquellos procesos que se llevan acabo con una computadora, aquellos cuya entrada y

salida son imgenes adems de aquellos procesos que extraen atributos a las imgenes, incluyendo el reconocimiento de objetos individuales

29

Captulo 2: Tratamiento de Imgenes

Tipos de Procesos: I. Procesos de Bajo Nivel, Utilizan operaciones como el pre procesamiento de imagen para reducir el ruido, mejora del contraste, y filtros de enfoque, para de este modo generar otros tipos de imgenes, por ejemplo lograr que una imagen sea mas clara en el caso de imgenes tomadas con escasa luz. Se caracterizan porque sus entradas son imgenes y sus salidas tambin. II. Procesos de Nivel Medio, Operaciones como segmentacin y clasificacin de objetos individuales. Se caracterizan porque sus entradas son generalmente imgenes, pero sus salidas son atributos extrados de esas imgenes, ejemplo de ello es la obtencin de contornos, bordes, identidad de objetos individuales. III. Procesos de Alto Nivel, Implica el obtener algn significado de un conjunto de objetos reconocidos mediante anlisis de imagen y finalmente realizar las funciones cognitivas asociadas con la vista, esto se refiere a como las personas le dan una interpretacin a las seales de trnsito, siendo una imagen nosotros al reconocerla le damos un significado y realizamos una accin asociada a ella.

Un ejemplo de tratamiento de imagen al ver distintas banderas de distintos pases sera: los procesos de adquisicin de la imagen del rea que contiene a la bandera, el pre procesamiento de la imagen, la extraccin (segmentacin) de banderas individuales, la descripcin de los componente de la bandera de una forma aceptable para el procesamiento computacional, y el reconocimiento de cada parte individual que compone la bandera o identificar que bandera es, entra ya en el campo de Visin por computador.

30

Captulo 2: Tratamiento de Imgenes

2.3 Pasos fundamentales del procesamiento digital de imgenes


Las partes fundamentales del procesamiento digital de imgenes en forma general son las siguientes, no siendo siempre necesario seguirlas todas o en el mismo orden, eso va a depender de que sea lo que se necesite procesar, es decir, cual sea el problema en si.

1) Adquisicin de imgenes Generalmente incluye pre procesamiento. Consistiendo en reducir la informacin en la misma, de modo que pueda ser interpretada por medio de una computadora. 2) Mejora de la imagen La idea de este paso es obtener detalles sean o no a simple vista que no se percatan perfectamente, o simplemente recalcar ciertas caractersticas que son de nuestro inters. Logrando de esta forma que la imagen procesada se vea mejor. 3) Restauracin de la imagen. Produce una mejora de la apariencia de la imagen, a diferencia de la mejora de la imagen, subjetiva, la restauracin es objetiva, en el sentido en que las tcnicas de restauracin tienden a ser modelos probabilsticos o matemticos de degradacin de la imagen , esto quiere decir, que una imagen que no se vea ntida producto de ruido externo, aplicando la restauracin a la imagen obtenemos dicha imagen como es originalmente sin el ruido causado por algn agente externo. 4) Procesamiento del color. Procesamientos especiales para el color ya sea en RGB, HSL u otro modelo de color. RGB,es un modelo de color que representa los colores como combinaciones de rojo, verde y azul, es el modelo mas utilizado para visualizar y trabajar con imgenes digitales. HSL,es un modelo de color que representa los colores por medio de su Tonalidad, de su Saturacin y su Luminosidad. El modelo HSL se representa grficamente como un cono doble o un doble hexgono. Los dos vrtices en el modelo HSL se corresponden con el blanco y el negro, el ngulo se corresponde con la tonalidad, la distancia al eje con la saturacin y la distancia al eje blanco-negro se corresponde a 31

Captulo 2: Tratamiento de Imgenes la luminancia. 5) Ondeletas Fundamentalmente utilizadas para representar imgenes en varios grados de resolucin. Se utiliza principalmente en compresin. 6) Compresin Reduce el almacenamiento requerido para guardar una imagen, o el ancho de banda para transmitirla, un ejemplo de esto es la imgenes que se guardan en formato .jpg, este es una extensin de imagen que ocupa un algoritmo de compresin para poder dejar la imagen en un peso menor al de la extensin origina comparndola por ejemplo con una extensin .bmp que es ms pesada y conserva muchos detalles de la imagen. 7) Procesamiento morfolgico Es una herramientas para extraer componentes de la imagen tiles para la representacin y descripcin de formas. 8) Segmentacin Divide una imagen en sus partes constituyentes. 9) Representacin y descripcin. Ac se toman decisiones tales como si la forma obtenida debe ser tratada como un frontera o una regin, adems de extrae atributos que resultan en informacin de inters.

32

Captulo 2: Tratamiento de Imgenes

2.4 OpenCV

2.4.1

Qu es OpenCv?

OpenCV es una biblioteca libre de visin artificial originalmente desarrollada por Intel. Ejemplos de sistemas desarrollados con openCV son sistemas de seguridad con deteccin de movimiento, aplicaciones de control de procesos donde se requiere reconocimiento de objetos. El desarrollo de estos sistemas puede ser con fines educacionales entre otros 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.

Open CV es multiplataforma, Existiendo versiones para Linux, Mac OS X y Windows. Contiene mas de 500 funciones que abarcan una gran gama de reas en el proceso de Visin, como reconocimiento de objetos (reconocimiento facial), calibracin de cmaras, visin estreo y visin robtica.

Como metas el proyecto pretende proveer un "Tool-Kit" o Marco de desarrollo fcil de utilizar y altamente eficiente. Esto se ha logrado, realizando su programacin en cdigo c y c++ optimizados, aprovechando adems las capacidades que proveen los procesadores multi ncleo. Open CV puede adems utilizar el sistema las Primitivas de Rendimiento Integradas de Intel. Que es un conjunto de rutinas de bajo nivel especficas para procesadores Intel (IPP).

Las siglas Opencv provienen de los trminos anglosajones Open Source Computer Vision Library. Por lo tanto, Opencv es una librera de tratamiento de imgenes, destinada principalmente a aplicaciones de visin por computador en tiempo real.

33

Captulo 2: Tratamiento de Imgenes

2.4.2

OpenCV Estructura y Contenido


OpenCV es ampliamente estructurado en cinco componentes principales, los cuales se muestran

en la Figura 1-5. El componente de CV contiene el procesamiento bsico de imgenes y algoritmos de alto nivel de visin por computador, ML es la mquina de aprendizaje de la coleccin, que incluye muchas clasificadores de herramientas estadsticas y de la agrupacin. HighGUI contiene rutinas I / O y funciones para almacenar y cargar videos e imgenes, y CXCore consta de estructuras de datos y funciones que proporcionan la base para todos los algoritmos de visin por computadora.

Figura 1-1: Estructura OpenCv

El modulo cvaux posee todas las funciones de tipo experimental y aquellas que se encuentres obsoletas. En futuras versiones algunas de estas funciones pueden migrar hacia CV, mientras que otras nunca lo harn. Algunas funciones que se encuentran en cvaux:

Tracking de Ojos y Boca Descriptor de Texturas Calibracion de Camaras 34

Captulo 2: Tratamiento de Imgenes

2.4.3

Por qu usar OpenCV?


La otra opcin para el tema del tratamiento de la imagen era utilizar Matlab, pero la verdad es

que OpenCV es una librera muy potente orientado a la visin por computadora, fcil de utilizar y adems portable a otras plataformas, Matlab tambin es un potente programa, pero la desventaja que posee es que existen problemas de compatibilidad con otros sistemas, otro punto es que buscamos para nuestra implementacin rapidez debido a la cantidad de informacin a utilizar por lo que OpenCV es una excelente opcin debido a que se puede trabajar con punteros en esta librera y adems est desarrollado en C++, lenguaje de programacin en la que ya tenemos experiencia por lo que se nos har un poco mas sencillo utilizar esta librera.

Tambin sabemos que OpenCV es una biblioteca de visin artificial por lo que cuenta con innumerables problemas que ya se han solucionado, facilitando y complementando as el trabajo para este proyecto. Transformndose de esta manera en una ventaja competitiva dentro de las herramientas principales para el desarrollo ptimo de una solucin al problema propuesto.

Otro aspecto importante es que al trabajar con openCV podemos utilizar mediante su componente HighGUI su GUI pudiendo as implementarse un sistema referente al modulo en cuestin sin necesidad de integrarlo aun con su parte de interfaz final, pese a que la GUI que podemos formar est limitada, es lo suficiente para poder como se acaba de decir, implementar este captulo como un mdulo separado.

No podemos dejar pasar la oportunidad de mencionar que OpenCV es open source y no como Matlab que debemos pagar la licencia para su utilizacin.

35

Captulo 2: Tratamiento de Imgenes

2.5 Pasos a principales en la obtencin de caractersticas del objeto


Ac se sealarn los pasos a seguir para el correcto tratamiento de la imagen que se procesar, obtenida por medio del punto de visin del sistema, que corresponder a una cmara, la que estar fija en un punto determinado.

La imagen obtenida se podr analizar para as obtener los objetos que la componen y seleccionar posteriormente el que sea de nuestro inters, con el que se trabajar ms adelante (ver figura 1.1).

Figura 1-2: Imagen inicial obtenida por webcam

2.5.1

Algoritmo Meanshift

La segmentacin de imgenes por el algoritmo de corrimiento de media, Mean-Shift de ahora en adelante nombrado como MS, se puede definir como la descomposicin de una imagen en regiones homogneas, las cuales comparten caractersticas tales como intensidad y distribucin espacial.

Los aspectos mas relevantes del algoritmo MS se mostraran a continuacin. 36

Captulo 2: Tratamiento de Imgenes

2.5.1.1

Umbral.

El algoritmo trabaja de manera similar a los mtodos de filtrado que operan en la vecindad de cada pixel de la imagen que se desea procesar, solamente que en la segmentacin de imgenes, (hablando en trminos del dominio de intensidad), se minimiza el nmero de mximos locales en la imagen dejando slo aquellos que son significativos, y todos los pixeles que se encuentren en su vecindad cercana sern asociados a ellos, generando as las regiones homogneas.

Este algoritmo funciona eliminando el ruido de tipo aditivo que pudiera existir en nuestra imagen previo a la segmentacin.

El algoritmo MS trabaja mediante operaciones matemticas en la vecindad de cada pixel de la imagen que deseamos segmentar.

El algoritmo es simple, se sustituyen los pixeles de la imagen original por el promedio de los pixeles dentro de su vecindad (ventana), incluido el mismo; pero promediando slo aquellos cuyo valor de intensidad est dentro de un intervalo de ponderacin T del valor de intensidad del pxel central. Es a esta ponderacin T a la que denominamos umbral.

El algoritmo se describe como sigue: Sea p(i,j) el valor de intensidad de un pixel con coordenadas (i,j) de la imagen original, V la longitud de la ventana y N el nmero de elementos en la ventana que cumplen con la condicin p(i,j) < T. Entonces:

37

Captulo 2: Tratamiento de Imgenes Donde P (i, j) es la transformacin de p (i, j) con las mismas coordenadas espaciales. Por ejemplo vase la Figura 1.2 para observar esto claramente. Considrese un umbral T=2 y un tamao de ventana de 3x3.

Figura 1-3: Sustitucin del pxel central por el promedio de los pxeles en el interior de la ventana con un umbral T.

Observe que el pixel central, cuyo valor de intensidad previo al filtrado era 2, fue sustituido por 3, al promediar solo aquellos pixeles que se encuentran dentro del umbral (T=2). Tambin observe que se aplic el mismo algoritmo para todos los pixeles dentro de la ventana.

2.5.1.2

Distancia Espacial

Otro parmetro importante que hace que el MS nos permita segmentar imgenes, y que lo hace diferente de los algoritmos de filtrado comunes, es la distancia espacial de cada pixel con su vecindad en la imagen. Originalmente cada pixel en la imagen que deseamos segmentar se encuentra a una distancia espacial 1 de los pixeles en su vecindad. Por lo que a partir de la matriz de la imagen original, podemos generar fcilmente dos matrices ms con las coordenadas espaciales de la misma. Es decir, una matriz de renglones y otra de columnas. Y es a partir de estas matrices de coordenadas X e Y de la 38

Captulo 2: Tratamiento de Imgenes imagen, que sustituimos cada pixel de estas matrices por el promedio de su vecindad. Promediando, (al igual que con el umbral), slo aquellos valores espaciales que se encuentren a una distancia espacial D del pixel central en ambas matrices.

De este modo el MS sustituye cada pixel en la imagen que queremos segmentar, por el promedio de aquellos pixeles dentro de la ventana que se encuentren en el intervalo del umbral T y que adems las coordenadas espaciales de los mismos estn a una distancia espacial D o menor. Es decir, para sustituir cada pixel de la matriz de intensidad se deben cumplir con tres consideraciones:

i)

Se consideran solamente los valores de intensidad de los pixeles dentro de la ventana que estn

dentro del umbral T; ii) Se consideran solamente aquellos pixeles dentro de la ventana que estn a una distancia espacial

D de la matriz de coordenadas X, (matriz de columnas); y iii) Se consideran solamente aquellos pixeles dentro de la ventana que estn a una distancia

espacial D de la matriz de coordenadas Y, (matriz de renglones).

Entonces sustituimos en las tres matrices el promedio de aquellos valores de intensidad y distancias espaciales que cumplieron con lo anterior; para un mismo pixel central, y as respectivamente para todos y cada uno de los dems en la imagen que deseamos segmentar.

El efecto de utilizar la informacin espacial en la imagen que deseamos segmentar provoca que al momento de efectuar operaciones en la vecindad de cada pxel de la imagen, promediemos nicamente aquellos pixeles en la vecindad cercana y no a aquellos que pertenezcan a estructuras de otras regiones espaciales en la imagen.

39

Captulo 2: Tratamiento de Imgenes 2.5.1.3 Iteraciones.

La segmentacin de la imagen, es decir, la visible agrupacin de las diferentes estructuras anatmicas presentes en la imagen de RM, se logra mediante la iteracin del algoritmo descrito anteriormente. Por tanto, la iteracin de la imagen original que deseamos segmentar con MS converge a una nica imagen segmentada despus de n iteraciones, y para la iteracin n+1, n+2, ..., M; con M>>n, la imagen resultante ser la misma que la obtenida en la n-sima iteracin. Por lo tanto, el nmero de iteraciones est acotado, y no necesariamente mientras ms iteremos este algoritmo, obtendremos mejores resultados

A continuacin se muestra en la figura 1-4 el resultado del algoritmo MS aplicado sobre la figura 1-2.

Figura 1-4: aplicacin del algoritmo Mean Shift sobre la figura 1-2.

40

Captulo 2: Tratamiento de Imgenes

2.5.2

Binarizacin de Imgenes

La binarizacin es un caso particular de la segmentacin que consiste en transformar los pixeles de la imagen en 0 o 1, dependiendo de su nivel de gris, esto pues es necesario que la imagen que se va a binarizar se encuentre en niveles de grises, es decir, obtener una imagen binaria f b a partir de una imagen en niveles de gris f a consiste en:

donde Z es un subconjunto de todos los niveles de gris posibles en.

Pero la forma de binarizar mas utilizada consiste en utilizar un umbral T que determina a partir de qu nivel de gris de va a considerar primer plano y el resto del fondo, de tal forma que se preserven las propiedades esenciales de la imagen.

Para determinar este umbral existen mtodos de bsqueda automtica de umbrales, como es el caso del mtodo p-tile.

P-tile consiste en hallar el umbral T tal que el p% de los pixeles sean mayores (o menores) que T. Por tanto, p es un dato que se debe proporcionar en la linea de comandos y que indica el porcentaje de imagen que ocupa el objeto u objetos.

A continuacin se mostrar binarizacin a diferentes niveles de Umbral:

41

Captulo 2: Tratamiento de Imgenes

Figura 1-5: aplicacin de binarizacin sobre la figura 1-4 con un umbral de 127

Figura 1-6: aplicacin de binarizacin sobre la figura 1-4 con un umbral de 180

2.5.3

Transformaciones Morfolgicas
La base de la transformacin morfolgica es en el campo matemticamente de la teora de

conjuntos. El objetivo de las transformaciones morfolgicas es la extraccin de estructuras geomtricas en los conjuntos sobre los que se opera, mediante la utilizacin de otro conjunto de forma conocida denominado elemento estructurante. El tamao y la forma de este elemento se escoge, a priori, de 42

Captulo 2: Tratamiento de Imgenes acuerdo la morfologa del conjunto sobre el que va a interaccionar y de acuerdo a la extraccin de formas que se desean obtener. Ejemplos bsicos de elementos estructurantes utilizados en la prctica se muestran en la figura 1-7.

2.5.3.1

Erosionar

En teora de retculos, una erosin es una operacin que conmuta con el nfimo. Dado un retculo completo X, una erosin es una funcin : X X en la que:

donde I es cualquier conjunto de ndices y {xi} es una coleccin arbitraria de valores xi X.

La transformacin de erosin es el resultado de comprobar si el elemento estructurante Y est totalmente incluido dentro del conjunto X. Cuando esto no ocurre, el resultado de la erosin es el conjunto vaco.

La erosin de un conjunto X por un elemento estructurante Y se define como el conjunto de puntos o elementos x, pertenecientes a X, de forma que cuando el elemento estructurante Y se traslada a ese punto, el elemento queda incluido en X:

La ecuacin anterior puede reformularse en trminos de una interseccin de conjuntos trasladados. Las traslaciones vienen determinadas por el elemento estructurante Y:

43

Captulo 2: Tratamiento de Imgenes

El efecto de una operacin de erosin puede observarse en la figura 3.2, en la que un elemento estructurante Y, en forma de disco circular, hace desaparecer las estructuras de menor tamao al elemento.

Figura 1-7: Erosin de X por el elemento estructurante Y. Los elementos conectados del conjunto X ms pequeos que Y son eliminados.

La ltima definicin de erosin puede extenderse directamente al caso de imgenes binarias y de escala de grises. La erosin de una imagen f por un elemento estructurante Y se denota por Y(f) y se define como el mnimo (^) de las traslaciones de f por los elementos s de Y:

En seales digitales o imgenes de escala de grises la nocin de nfimo pasa a denotarse mnimo. En este caso, la erosin es el mnimo valor de la funcin imagen en la ventana (dominio) definida por el elemento estructurante cuando su origen se sita en x (seales unidimensionales) (x,y) (imgenes). Para seales unidimensionales se puede definir la erosin como:

Para imgenes la erosin puede ser definida como: 44

Captulo 2: Tratamiento de Imgenes

En la figura 1-7 se muestra la erosin de una seal unidimensional de funcin f. Se puede observar el efecto de la interseccin de traslaciones definidas por el elemento estructurante Y. El resultado es el mnimo valor de todos los presentes bajo la definicin del elemento estructurante.

Figura 1-8: Erosin de una seal unidimensional definida por la funcin f. Elemento estructurante de tamao 3. El resultado es el mnimo de todos los valores presentes bajo la definicin del elemento estructurante.

El resultado de la erosin en seales bidimensionales de escala de grises (imgenes) es una seal de menor valor, es decir, una imagen ms oscura, puesto que la erosin pretende minimizar el valor de la seal que, en el caso de los grises tiene una definicin [0,255].

2.5.3.2

Dilatar

La dilatacin es la operacin dual de la erosin. En teora de retculos, un operador : X X se denomina dilatacin en el caso que conmute con el supremo de una coleccin de valores:

45

Captulo 2: Tratamiento de Imgenes donde I es cualquier conjunto de ndices y {xi} es una coleccin arbitraria de valores xi X.

El resultado de la dilatacin es el conjunto de puntos origen del elemento estructurante Y tales que el elemento contiene algn punto del conjunto X, cuando el elemento se desplaza por el espacio que contiene a ambos conjuntos: Y ( X ) = {x | Yx X 0}

Esta ltima ecuacin puede reescribirse como una unin de conjuntos trasladados. Las traslaciones vienen definidas por el dominio del elemento estructurante: Y (X ) = U X s s Y

El efecto de una operacin de dilatacin puede observarse en la figura 1-9, en donde un elemento estructurante Y de forma de disco circular aumenta la definicin del objeto X.

Figura 1-9: Dilatacin de X por el elemento estructurante Y. El conjunto X aumenta su definicin.

Se puede extender la ltima definicin de dilatacin a imgenes binarias o de escala de grises f, interpretando la dilatacin como el mximo valor de las traslaciones de f (definidas por la forma del elemento estructurante) en cada punto de la imagen:

46

Captulo 2: Tratamiento de Imgenes

La dilatacin de la imagen binaria de la figura 1-10 por el elemento estructurante anterior se presenta en la figura 1-11. Es posible observar como los objetos de tamao menor al del elemento estructurante desaparecen.

Figura 1-10: Imagen Binaria sin Erosionar

Figura 1-11: Imagen Binaria Erosionada

47

Captulo 2: Tratamiento de Imgenes En otras palabras, el valor de dilatacin de un pxel (x,y) es el mximo valor de la imagen en la ventana de vecindad definida por el elemento estructurante cuando su origen se sita en (x,y):

En la figura 1-12 se muestra la dilatacin de una seal unidimensional de funcin f. Se puede observar el efecto de la interseccin de traslaciones definidas por el elemento estructurante Y. El resultado es la seleccin del mnimo valor de todos los presentes bajo la definicin del elemento estructurante.

Figura 1-12: Dilatacin de una seal unidimensional definida por la funcin f. Elemento estructurante de tamao 3. El resultado es el mximo de todos los valores presentes bajo la definicin del elemento estructurante.

2.5.4

Centroide

En geometra, el centroide o baricentro de un objeto X perteneciente a un espacio ndimensional es la interseccin de todos los planos que dividen a X en dos partes de igual n-volumen.

48

Captulo 2: Tratamiento de Imgenes El centroide es un punto que define el centro geomtrico de un objeto. Su localizacin puede determinarse a partir de formulas semejantes a las utilizadas para determinar el centro de gravedad o el centro de masa del cuerpo, el centroide nos sirve para encontrar el punto en el que se concentra las fuerzas que actan sobre una figura irregular, o figuras geomtricas no muy conocidas.

2.6 Trabajar OpenCV en Dev-c++


La primera etapa en nuestro proyecto es el tratamiento de la imagen y para ello escogimos por las diversas razones mencionadas anteriormente OpenCV, para esto previamente se debe instalar DevC++ que va ser quien va a albergar a OpenCV.

Una vez instalado Dev-C++, se procede con la instalacin de OpenCV, a continuacin debemos modificar las opciones del copilador de Dev-C++, agregando en esta parte un nuevo compilador y los correspondientes directorios de OpenCV que hacen referencia a Binarios, Libreras y Cabeceras C/C++, previo esto ya estamos en condiciones de trabajar con las libreras de OpenCV.

2.7 Aplicaciones del tratamiento de Imgenes

El tratamiento de imgenes es importante pues puede ser aplicado de muchas formas: Medicina molecular, Se inyecta al paciente un istopo radioactivo que emite rayos gamma cada vez ms dbiles, estos se detectan y se forma la imagen. Mapas en 3D para adquisicin submarina, al disparar 2 pistolas de aire produciendo vibraciones de frecuencia, al recuperar las ondas de regreso procesa la informacin y construye un mapa 3D del fondo del ocano.

49

Captulo 2: Tratamiento de Imgenes

2.8 Diseo

2.8.1

Diagrama de flujo de datos


Esta es la forma en que el sistema en su primera fase desarrollo concretamente openCV realiza

su funcionamiento que es: tratamiento de imgenes, mostrando cada una de ellas al usuario, adems de poder hacer click sobre la imagen cuando se hallan encontrado los objetos, es aqu donde sta aplicacin determinar si es que la posicin donde se estableci la bsqueda del objeto se encuentra o no devolviendo como resultado su centroide.

50

Captulo 2: Tratamiento de Imgenes

51

Captulo 2: Tratamiento de Imgenes

2.9 Problemas surgidos y dificultades de ste Captulo


El primer problema fue entender una librera con sus estructuras, debiendo invertirse tiempo valioso de esta forma, debido a que existe muy poca documentacin al respecto, siendo esto un punto problemtico pues todo lo que se realizara se deba hacer prcticamente desde cero, invertendose tiempo valioso en las pruebas y posibles soluciones al respecto, primero se empez revisando libreras en php lamentablemente haban cosas que se convertan muy problemticas a realizar debido a que no se encontr en su instante alguna librera de visin artificial como lo es OpenCV. Otro punto que causo dificultad fue la conexin con la cmara web siendo en un primer instante bastante problemtico,

52

Captulo 2: Tratamiento de Imgenes logrndose superar estos problemas a medida que se iban haciendo pruebas y leyendo libros al respecto que dieran nociones al respecto.

Con respecto a la instalacin de esta librera fue un problema en un primer momento debido a que al utilizarlo en ubuntu 9.10 se tubo que descargar su archivos binarios y tener que compilarlo, logrando utilizarlo momentneamente e investigar como compilar a mano por consola a travs del g++ y por otro lado en windows se tubo que aprender a incorporar instalarlo, luego incorporarlo a el entorno de programacin utilizado siendo devC++ resultando en un comienzo un acto relativamente complejo, logrndose finalmente dando buenos resultados y aprendiendo a a partir de ello el manejo de las variables de entorno de ellos sistemas.

53

Captulo 3: Lgica Difusa

3 Lgica Difusa
Lgica difusa tambin llamada lgica borrosa, es la lgica que utiliza expresiones que no son ni totalmente ciertas ni completamente falsas, es decir, es la lgica aplicada a conceptos que pueden tomar un valor cualquiera de veracidad dentro de un conjunto de valores que oscilan entre dos extremos, la verdad absoluta y la falsedad total, por medio de estos conceptos se desarrollara el tema de poder poder determinar donde moverse dentro del espacio que posee el Scorbot ER-V Plus, esto dndole ciertas nociones de conocimientos que se les va a entregar por medio de lgica difusa, para de esta forma poder decidir entre comillas que accin debe realizar.

3.1 Definiciones previas

3.1.1

Conjuntos Difusos y Grado de pertenencia


Por definicin conjunto es una agrupacin de elementos bien definida, en un conjunto difuso a

cada elemento que compone la agrupacin, se le asocia un grado de pertenencia, esto quiere decir que se le asocia un numero entre 0 y 1. Mientras el grado de pertenencia este mas cerca al 1 tanto mas estar el elemento en el conjunto, mientras que si el grado de pertenencia se encuentre mas cercano al 0 tanto menos estar el elemento en el conjunto, un ejemplo sera: una temperatura de 10C Es fra o tibio?, fro y caliente viene siendo un conjunto bien definido, en lgica difusa podemos definir un par de conjuntos fro y tibio y especificar el grado de pertenencia de la temperatura dada en cada conjunto con lo que se podra definir que 10C es tanto fro como tibio

54

Captulo 3: Lgica Difusa

Figura 2-1: Representacin del grado de pertenencia

La ventaja de los conjuntos difuso es que se pueden tener cambios graduales en la salida para cambios pequeos en las entradas. Como se puede observar ambas temperaturas tienen cierto grado de pertenencia al conjunto Fro y al conjunto Tibio

3.1.2

Valores de Membresa

El concepto de funcin de membresa en un conjunto difuso se ilustra en el ejemplo a continuacin:

Figura 2-2: Funcin de membresa

55

Captulo 3: Lgica Difusa Donde, segn la figura anterior, la funcin de membresa o pertenencia de un elemento x en el conjunto difuso triangular (A) est dado por:

Figura 2-3: Formula para el calculo de membresia en un clauster triangular

De esta manera, existen otras formas de conjuntos difusos, como son trapezoidales, tipo campana de Gauss, tipo S, etc. Para todos ellos, el concepto de funcin de membresa es el mismo; es decir, existe un grado de pertenencia que varia entre 0 y 1.

3.2 Definicin Lgica Difusa


La lgica difusa o borrosa (Fuzzy logic) plantea la idea que en un instante dado, no es posible precisar el valor de una variable X dentro de un conjunto definido, sino tan solo conocer el grado de pertenencia a cada uno de los conjuntos en que se ha particionado el rango de variacin de la variable, es decir, que tanta correspondencia tiene la variable X en cada uno de los conjuntos definidos. Este mtodo de razonamiento de maquina es similar al pensamiento humano, que puede procesar informacin incompleta o incierta, como se realiza cotidianamente. Precisamente es en esto en que se diferencia de la lgica convencional (Lgica Clsica) la cual trabaja con informacin bien definida y 56

Captulo 3: Lgica Difusa precisa, valores concretos, o es blanco o es negro.

El grado de pertenencia se cuantifica mediante la funcin de pertenencia f, que normalmente se escoge de una forma trapezoide. Por ejemplo, al calificar que el cielo es azul'' uno est tentado a graduar qu tan azul'', en efecto, es el cielo, ya sea Poco Azul, azul o muy Azul, e igualmente, si un vehculo se mueve rpido'', tambin se est obligado a considerar qu tan rpido es el vehculo, aunque esto ltimo no implique necesariamente cuantificar la velocidad del vehculo con toda precisin.

El concepto de lgica difusa fue introducido por el Dr. Lotfi Zadeh de UC/Berkeley en los aos 60 como los medios de modelar la incertidumbre del lenguaje natural. Quien inconforme con los conjuntos clsicos (crisp sets) que slo permiten dos opciones, la pertenencia o no de un elemento a dicho conjunto la present como una forma de procesar informacin permitiendo pertenencias parciales a unos conjuntos que en contraposicin a los clsicos los denomin Conjuntos Difusos (fuzzy sets), el concepto de conjunto difuso fue expuesto por Lofti Zadeh en un paper en 1965 y es considerado un clsico de la lgica difusa, el artculo se titula "Fuzzy Sets", permitiendo de esta forma obtener resultados ms aproximados.

Pocos aos despus en 1974, el Britnico Ebrahim Mandani, demuestra la aplicabilidad de la lgica difusa en el campo del control. Desarrolla el primer sistema de control difuso (Fuzzy Control) prctico, la regulacin de un motor de vapor. Las aplicaciones de la lgica difusa en el control no se pudieron ser implementadas con anterioridad a estos aos debido a la poca capacidad de cmputo de los procesadores de esa poca.

Esta metodologa proporciona una manera simple y elegante de obtener una conclusin a partir de informacin de entrada vaga, ambigua, imprecisa o incompleta, en general la lgica difusa imita como una persona toma decisiones basadas en informacin con las caractersticas mencionadas. Una de las ventajas de la lgica difusa es la posibilidad de implementar sistemas basados en ella tanto en hardware como en software o en combinacin de ambos.

57

Captulo 3: Lgica Difusa

3.3 Esquema Lgica Difusa

Figura 2-4: Esquema Lgica Difusa

3.3.1

Fuzzificacin
En la fuzzificacin se asignan grados de pertenencia a cada una de las variables de entrada

con relacin a los conjuntos difusos previamente definidos utilizando las funciones de pertenencia asociadas a los conjuntos difusos

3.3.2

Base de Conocimiento
La Base de conocimiento de genera a partir de reglas difusas, tenindose un conjunto de reglas

SI-ENTONCES que pueden ser expresadas de la siguiente forma:


m m Rm : Si u1 es Am 1 y u 2 es A2 y ... u p es A p ,

m ENTONCES v es B

Con m=1,2,..., M
m m Y donde Ai y B son conjuntos difusos en U i

R (nmeros reales) y V R respectivamente, e son los valores numricos 58

Captulo 3: Lgica Difusa concretos de u y v, tambin respectivamente. La base de conocimiento contiene el conocimiento asociado con el dominio de la aplicacin y los objetivos del control. En esta etapa se deben definir las reglas lingsticas de control que realizarn la toma de decisiones que decidirn la forma en la que debe actuar el sistema

3.3.3

Inferencia
Corresponde a la seccin que mediante los mecanismos de inferencia que veremos ms

adelante, relaciona conjuntos difusos de entrada y de salida; y que representa a las reglas que definen el sistema. Las entradas a este bloque son conjuntos difusos (grados de pertenencia) y las salidas son tambin conjuntos difusos, asociados a la variable de salida.

3.3.3.1

Mecanismo de Inferencia

Los mecanismos de inferencia son aquellos en los que se usan los principios de la inferencia difusa para realizar un mapeo de los conjuntos difusos de entrada a los conjuntos difusos de salida. Cada regla es interpretada como una implicacin difusa. Es decir, el bloque de inferencia es aquel en el cual se realiza la traduccin matemtica de las reglas difusas: estas reglas modelan el sistema pero para poder trabajar con ellas y extraer un resultado se deben evaluar matemticamente la informacin que reflejan. Como ya se ha mencionado anteriormente, las reglas ms utilizadas para disear un sistema basado en lgica difusa toman la forma:
Si u1 es A1 y u2 es A2 y u 3 es A3 ENTONCES v es B

3.3.3.2

Conectores lgicos entre Antecedentes

En este caso lmite, las tablas de verdad de los operadores lgicos clsicos y las de los operadores lgicos difusos deben coincidir. Considerando las tablas clsicas de verdad de los 59

Captulo 3: Lgica Difusa operadores AND, OR y NOT

Figura 2-5: Tabla de verdad de los operadores AND, OR y NOT.

3.3.4

Desfuzzificacin
Corresponde a la seccin que a partir del conjunto difuso obtenido en el mecanismo de

inferencia y mediante los mtodos matemticos de desfuzzificacin, se obtiene un valor concreto de la variable de salida, es decir, el resultado.

3.3.4.1

Mtodos de Desfuzzificacin

El bloque de desfuificacin realiza la funcin contraria al de Fuzzificacin. Este tiene como entradas valores concretos de las variables de entrada y como salidas grados de pertenencia a conjuntos difusos (entre 0 y 1). La entrada al bloque de desfuificacin es el conjunto difuso de salida, resultado del bloque de inferencia y la salida es un valor concreto de la variable de salida. Para obtener, a partir del conjunto difuso de salida que resulta de la agregacin de todas las reglas, un resultado escalar, se aplican mtodos matemticos. Ejemplos sencillos de algunos de estos mtodos de clculo son:

Mtodo del mximo: se elige como valor para la variable de salida aquel para el cual la 60

Captulo 3: Lgica Difusa funcin caracterstica del conjunto difuso de salida es mxima. En general no es un mtodo ptimo, ya que este valor mximo puede ser alcanzado por varias salidas.

Mtodo del centroide: utiliza como salida del sistema el centro de gravedad de la funcin caracterstica de salida. Matemticamente :

Es el mtodo ms utilizado en aplicaciones de la lgica difusa a la ingeniera, ya que se obtiene una solucin nica, aunque a veces es difcil de calcular.

Mtodo de la altura: se calcula para cada regla el centro de gravedad del conjunto difuso de salida B m y despus se calcula la salida del sistema como la media ponderada:

3.4 Funcionamiento
Segn todo lo previamente mostrado, lo primero que se debe realizar es comprender los cuantificadores de nuestro lenguaje en trminos de por ejemplo, Muy Abajo, Abajo, Arriba, Muy Arriba entre muchos otros dependiendo lo que queramos representar del mundo real, y para ello en los conjuntos difusos se definen operadores, los cuales pueden ser unin, interseccin, diferencia, negacin o complemento, y otras operaciones sobre conjuntos, en los que se basa esta lgica.

Cada conjunto difuso posee asignada una funcin de pertenencia para sus elementos, que nos indican en que medida ese elemento pertenece al conjunto difuso, tambin debemos decir que la lgica difusa se basa en reglas heursticas, donde estas reglas tienen la forma, SI (antecedente) ENTONCES (consecuente), por ejemplo: SI hace mucho fri ENTONCES aumento la calefaccin. Los mtodos de inferencia para esta base de reglas deben ser simples, veloces y eficaces. Por lo

61

Captulo 3: Lgica Difusa tanto los resultados de dichos mtodos son un rea final, que resulta de un conjunto de reas solapadas entre s (cada rea es resultado de una regla de inferencia). El mtodo que usamos es el del centroide, en el que la salida final ser el centro de gravedad del rea total resultante.

Para construir nuestra maquina de lgica difusa se debe disponer de datos de entrada los suelen ser recogidos por sensores, que miden las variables de entrada de un sistema. Despus debemos tener nuestro sistema de control que es el que esta compuesto por nuestro conjunto de reglas que fueron formuladas por expertos, para as proporcionar las correspondientes salidas de nuestro sistema.

Figura 2-5: Esquema de funcionamiento para un sistema difuso, en el que distinguimos las entradas, reglas y salidas.

3.5 Por qu Lgica Difusa?


Normalmente en la lgica convencional tenemos un conjunto de enunciados que pueden ser verdaderos o falsos, si o no, 0 o 1. En el contexto de la lgica difusa, el enunciado de la temperatura es 25 grados centgrados puede ser verdadero o falso. Sin embargo, en muchas situaciones la respuesta puede ser mas de un simple no estoy seguro, quizs, un poco y entre otras otras. Por ejemplo, en la frase la temperatura esta muy alta no es ni verdadera ni falsa, ya que es una idea cualitativa que representa una opinin ms que un hecho objetivo, es debido a este tipo de circunstancias es que surge la necesidad de interpretar el movimiento que realizar la celda flexible para alcanzar el objeto, la cual es compleja. Es por esta razn que no solamente se van a interpretar las instrucciones como, hacia 62

Captulo 3: Lgica Difusa arriba, hacia abajo, izquierda o derecha, sino que puede moverse un poco a la izquierda o un mucho hacia arriba, es por esto que la lgica difusa sera de gran ayuda en la interpretacin de estos valores lingsticos que utilizaremos y sern explicados mas adelante.

Otro aspecto que importante es que el proceso de moverse por medio de un rea demarcada es difcil de implementar en una funcin matemtica, por lo cual se deben ocupar reglas de tipo mas intuitivas que sern reflejadas en la base de conocimiento del sistema.

3.6 Como crear un Sistema Difuso Basado en Reglas


1. Identificacin de las variables de entrada y salida, la parte primordial, debi a que los sistemas de tipo difuso pueden poseer mltiples variables de entrada, adems de obtener mltiples salidas con un valor particular asociado a cada uno de ellas, como en este proyecto que posee dos variables de entrada que son el las distancias que hay entre la posicin actual de la celda y el objeto, de las coordenadas ordenada y abscisa. 2. Determinacin de Conjuntos Difusos, se refiere al grado de pertenencia que existe para cada una de las variables de entrada al sistema. 3. Seleccin de mtodo para desfuzzificacin, ya sea el mtodo del mximo, del centroide o de la altura. 4. Creacin de base de conocimiento de utilizando reglas de tipo SI ENTONCES, parte esencial para poder crear el conocimiento base del sistema, siendo cada una de estas reglas un aporte en algn grado de relacin con una situacin X que est pasando dentro del contexto que rodea al sistema. 5. Diseo de mecanismo de inferencia, en el caso de este proyecto de ttulo, va a ser diseado mediante el Toolbox de lgica difusa que posee Matlab. 6. Evaluacin y uso del programa, importante paso que siempre debe existir en cualquier programa o sistemas que se cree, esto por medio del mismo programa o con otro tipos de evaluaciones predefinidas por el propio desarrollador del correspondiente sistema, utilizando en 63

Captulo 3: Lgica Difusa nuestro caso la herramienta de Toolbox que trae Matlab adems de ocupar Simulink para comprobar el correcto funcionamiento.

3.7 Matlab

El sistema matlab se utilizar por motivos de diseo de mecanismo de inferencia, esto mediante un toolbox que trae matlab que es especializado en lgica difusa, pudiendo practicar con ello los conceptos de lgica difusa previamente desarrollados en el presente informe.

3.7.1

Definicin
Describindolo en forma general, Matlab un programa para ingeniera dedicado a realizar

clculos tcnicos-cientficos

y de propsito general. En el se integran operaciones de calculo,

visualizacin y programacin, donde la interaccin con el usuario emplea una notacin matemtica clsica.

Es un ambiente de computacin tcnica de alto rendimiento, para cmputo numrico y visualizacin, que integra anlisis numrico, cmputo de matrices, procesamiento de seales y grficas en un ambiente fcil de usar, donde los problemas y sus soluciones se expresan como se hara en matemticas, sin necesidad de la programacin tradicional.

El nombre Matlab, surge de Matrix Laboratory, el cual es un sistema interactivo cuyo elemento bsico es una matriz que no requiere dimensionamiento. Esta caracterstica permite resolver muchos problemas numricos en una fraccin del tiempo que llevara hacerlo en un lenguaje de programacin como Fortran, Basic, o C.

64

Captulo 3: Lgica Difusa

3.7.2
Matemticas Desarrollo

Uso y aplicaciones
y calculo. de datos.

de algoritmos. simulacin y prototipado.

Adquisicin Modelado, Anlisis Grficos

y procesado de datos. cientfico y de ingeniera. de aplicaciones.

Desarrollo

3.7.3

Componentes de Matlab

Los componentes fundamentales de Matlab son:

3.7.3.1

Entorno de desarrollo

Corresponden a un conjunto de utilidades que permiten el uso de funciones Matlab y ficheros en general. Gran cantidad de estas utilidades son interfaces grficas de usuario y de ventana de comandos.

3.7.3.2

La librera de funciones matemticas Matlab

Lo componen un conjunto de algoritmos de clculo, los cuales lo componen las funciones mas elementales como la suma, senos, cosenos o la aritmtica compleja, hasta funciones mas avanzadas como la inversin de matrices, el clculo de autovalores, funciones de Bessel y transformadas rpidas de Fourier.

65

Captulo 3: Lgica Difusa

3.7.3.3

Grficos

Son un conjunto de utilidades destinadas a visualizar vectores y matrices en forma de grficos. Dentro de estas utilidades existe una gran cantidad de opciones para poder ajustar el aspecto de los grficos, destacando de estos la visualizacin tridimensional con opciones de iluminacin y sombreado y la posibilidad de crear o incorporar animaciones

3.7.3.4

La interfaz de aplicacin Matlab (API)

Es una librera que permite escribir programas ejecutables independientes en C y otros lenguajes, accediendo mediante DLLs, a las utilidades de clculo matricial de Matlab.

3.7.4

Toolboxes

En MATLAB las toolboxes son colecciones de funciones, cdigos o macros de MATLAB, conocidos como M-files, muy fciles de comprender y de usar, que extienden el ambiente del programa con el fin de resolver clases particulares de problemas. Algunas de las reas para las cuales existen toolboxes son: Procesamiento de Seales, Anlisis y Diseo de Sistemas de Control, Simulacin Dinmica de Sistemas, Identificacin de Sistemas, Redes Neuronales, Ecuaciones Diferenciales Parciales, Procesamiento de Imgenes, Matemtica Simblica, Lgica Difusa, Estadstica, Optimizacin, Comunicaciones, Finanzas, etc. De las cuales se utilizaran para este proyecto Simulacin Dinmica de Sistemas y Lgica Difusa, los cuales se detallaran mas adelante.

66

Captulo 3: Lgica Difusa

3.7.5

Simulink
Es una aplicacin que proporciona al usuario un entorno grfico por medio del cual se facilita el

anlisis, diseo, construccin y simular modelos de sistemas fsicos y sistemas de control, al incluir una serie de rutinas que resuelve los clculos matemticos de fondo, junto con una sencilla interfaz para su uso, proporcionando un entorno de usuario grfico que permite el dibujar diagramas de bloques tal como se hara sobre un papel. El comportamiento de estos sistemas se define mediante funciones de transferencias, operaciones matemticas, elementos de Matlab y seales predefinidas de todo tipo.

Los componentes incluidos junto al programa Simulink, incluye bibliotecas de fuentes de seal, dispositivos de presentacin de datos, sistemas lineales y no lineales, conectores y funciones

matemticas. En caso de ser necesario, se pueden crear nuevos bloques a medida por el usuario.

3.7.6

Fuzzy
Corresponde al rea de lgica difusa, cuya utilidad consiste en poder realizar acciones

parecindose mas a como razonara en cierta forma nuestro cerebro, esto mediante los inputs (entradas) y outputs (salidas) que se agreguen en la interfaz. Adems de sus correspondientes reglas para tomar las decisiones en base a los distintos input que se posean.

3.8 Implementacin

3.8.1

Entorno de trabajo Matlab

En la figura 1 muestra como estn organizadas las ventanas por defecto al iniciar Matlab. Las ventanas que en ella aparecen son: en la esquina superior izquierda, corresponde a la estructura del directorio donde nos encontramos, debajo de esta se encuentra la ventana que contiene el historial de

67

Captulo 3: Lgica Difusa los comandos que se han utilizado en Matlab, en la ventana de la derecha se encuentra la linea de comandos.

Figura 2-6: organizacin de ventanas Matlab

3.8.2

Entorno de trabajo Fuzzy Logic Toolbox

3.8.2.1

FIS Editor (Sistema de inferencia Borroso)

Para poder ingresar a este toolbox dedicado al rea de lgica difusa se debe escribir en la linea de comandos de la figura 2-6 fuzzy y presiona enter, a lo cual se abrir a su entorno de desarrollo figura 2-7, en el cual se podrn ocupar n variables de entrada as como m variables de salida. Los componentes que se pueden observar son:
input1

corresponde a las variables de entradas que van a tener, para el caso del proyecto a realizar se

68

Captulo 3: Lgica Difusa han contemplado 2 variables de entrada correspondientes a los ejes de las coordenadas cartesianas la ordenada y la abscisa lo cual va a representar el punto en el cual se encuentre la punta de la celda flexible a cada instante dentro del campo de visin, los cuales van a poseer 7 conjuntos difusos, los cuales se describirn ms adelante. Esta parte corresponde a la fuzzificacin.
El

rectngulo blanco con el ttulo de Untitled representa las reglas de control que poseer

el

controlador.
Output1

corresponde a las variables de salida , las cual para el caso del proyecto a realizar corresponde

a 2 variables de salida las cuales tendrn 7 conjuntos difusos, los cuales sern descritos ms adelante. Esta parte corresponde a la defuzzificacin.

Figura 2-7: FIS Editor

69

Captulo 3: Lgica Difusa 3.8.2.2 Variables Lingsticas

Para definir las funciones de pertenencia del controlador fuzzy (variables lingsticas), se considera la siguiente notacin: Notacin correspondiente a la primera variable de entrada-salida:
muy_izquierda: izquierda:

se encuentra muy a la izquierda.

se encuentra moderadamente a la izquierda. se encuentra solamente un poco a la izquierda.

poco_izquierda: cero:

se encuentra prcticamente en el centro. se encuentra solamente un poco a la derecha. se encuentra muy a la derecha. se encuentra moderadamente a la derecha.

poco_derecha: derecha:

muy_derecha:

Notacin correspondiente a la segunda variable de entrada-salida:


muy_abajo: abajo:

se encuentra muy abajo.

se encuentra moderadamente abajo. se encuentra solamente un poco abajo. se encuentra solamente un poco arriba. se encuentra muy arriba.

poco_abajo: cero:

se encuentra prcticamente en el centro. se encuentra moderadamente arriba.

poco_arriba: arriba:

muy_arriba:

De este modo la interpretacin a dar en el proyecto seria que tan alejado se encuentra la celda flexible del objeto a alcanzar. 3.8.2.3 Membership Function Editor (Editor de reglas de Pertenencia)

Para entrar a Membership Function Editor, Figura 3,bhasta con hacer doble click sobre algn icono de variable de entrada o de salida de la Figura 2-7, en ste editor se encontrarn al lado izquierdo

70

Captulo 3: Lgica Difusa todas las variables de entrada y todas las de salida que se hayan agregado con anterioridad dando la posibilidad de poder editar la funciones de pertenencias correspondientes a la variable sobre la cual se haga un click, o los rangos numricos de la variable entre otras cosas. En el caso del proyecto el rango de las funciones de pertenencias fueron obtenidas mediante la consultas pertinentes a personas con conocimientos en el tema, y a travs de mediciones realizadas en el Centro de Robtica de la Universidad del Bio-Bio CIMUBB obteniendo un rango de -4 a 4 ajustando estos valores a las variables lingsticas mencionadas anteriormente en las variable de entradas y en el caso de las variables de salida es de una -100% a un 100%.

Figura 2-8: Membership Function Editor

71

Captulo 3: Lgica Difusa 3.8.2.4 Rule Editor (Editor de Reglas)

Para poder entrar al Rule Editor es necesario hacer doble click sobre el diagrama del sistema que representan las reglas del sistema, Figura 2-9, una vez que se definieron las funciones de pertenencia se puede ingresar el conjunto de reglas necesarios, esto se realiza seleccionando la combinacin de variables de entrada mediante los conectores And o Or seleccionando la combinacin de variables de salidas deseadas por el usuario que esta generando una base de conocimientos, adems de aadir reglas el editor permite eliminar y cambiar reglas. Formando de esta forma el cerebro del sistema, puesto que ste reaccionar segn las reglas que se hayan aadido ac.

Figura 2-9: Rule Editor

72

Captulo 3: Lgica Difusa En el caso del proyecto a realizar se han aadido un total de 49 reglas las cuales fueron generadas mediante la consulta a expertos en el tema que se encuentras en la Universidad del Bio-Bio en el laboratorio de Robtica. El conjunto de estas reglas va a aportar para poder dirimir cual va a ser la respuesta adecuada en la salida, esto pues cada regla aporta en el conocimiento que debe tener el sistema. 3.8.2.5 Rule Viewer (visualizador de reglas)

Para poder entrar a Rule Viewer, Figura 2-10, es necesario ir al menu View->Rules, desde cualquier parte del entorno de trabajo Fuzzy Logic Toolbox. Esta es una herramienta muy interesante que posee el toolbox, la cual permite visualizar el estado de todas las reglas de control ante una determinada combinacin de variables de entrada esto mediante el corrimiento de la linea vertical roja, permitiendo adems apreciar el comportamiento de la salida del controlador Fuzzy y la salida de defuzzificada para dichas entradas, pudiendo apreciarse como es que cada una de las reglas aporta en cierta medida para la o las variables de salida que se encuentren, esto segn como se hayan definido con anterioridad la base de conocimiento.

73

Captulo 3: Lgica Difusa

Figura 2-10: Ruler Viewer

3.8.2.6

Guardar y exportar al Workspace

Una vez terminado de Insertar variables, jugar con los valores de pertenencia al igual que con sus variables de salidas y una vez concluido con el manejo del editor de reglas, se puede proceder a guardar el controlador, para realizar esto se debe dirigir al men File-> Export->To File..., a lo cual se abrir una ventana para guardar con el nombre que uno desee dejndolo en extensin .fis, una vez realizado esto ya se podr exportar el controlador al Workspace que se este utilizando. Para realizar esto se debe dirigir a File->Export->To Workspace..., al hacer esto se preguntara cual es el nombre que se le desea dar para ser reconocido en el Workspace ver Figura 2-11. 74

Captulo 3: Lgica Difusa

Figura 2-11: Exportar variable a Workspace

3.8.3

Entorno de trabajo Simulink

3.8.3.1

Simulink Library Browser

Para poder ingresar a se debe escribir en la linea de comandos de la figura 2-6 simulink y presiona enter, aparecer lo que se observa en la Figura 2-12. El propsito de esta ventana consiste en permitir la navegacin por la enorme cantidad de libreras de bloques que se encuentran disponibles para el modelado.

En la figura 2-12, se pueden distinguir claramente tres partes principales: de arriba hacia abajo comenzando por la izquierda se puede observar un contenedor que posee una visin en forma de rbol de todos los Toolboxes instalados que contiene bloques Simulink. La amplitud de este rbol depender de las opciones que se hayan elegido al seleccionar matlab. En el proyecto en cuestin los nodos relevantes van a ser Simulink y el Fuzzy Logic Toolbox.

A la derecha se pueden observar los bloques Simulink contenidos contenidos en el Toolbox o el nodo de la parte izquierda de la ventana, mencionada anteriormente.

75

Captulo 3: Lgica Difusa

En la parte inferior se encuentra la descripcin de los bloques Simulink seleccionados, que servirn de utilidad para mayor comprensin del usuario.

Por ltimo, cabe destacar que en la parte superior de la Figura 2-11, existen varias herramientas como la bsqueda de un bloque determinado a partir de su nombre, resultando bhastante til en los casas que no sepamos en que toolbox se encuentre y no estar desmenuzando el rbol de contenidos uno por uno para poder encontrarlo.

Figura 2-12: Ventana de navegacin de bloques de Simulink (Simulink Library Browser)

76

Captulo 3: Lgica Difusa 3.8.3.2 El espacio de trabajo de Simulink

Podemos acceder a el presionando en el icono superior izquierdo de la ventana de la figura 2-11 (pgina en blanco), se abrir una ventana como la de la Figura 2-13 pero en blanco sobre la que se podr iniciar la creacin de un modelo de simulacin.

Figura 2-13: Espacio de trabajo Simulink

En el espacio de trabajo de Simulink se crear un modelo insertando los bloques correspondientes. En el caso del proyecto se insertaran del Toolbox Simulink de la Figura 2-12 el Commonly Used Blocks, de los cuales:
Dos

correspondern a los In1 que sern las entradas de las variables que recibiremos del campo de

visin correspondientes a lo ejes coordenados del lugar donde se encuentre la celda flexible, tomando como referencia la pinza que posee este. 77

Captulo 3: Lgica Difusa


Dos

Out1 que tendrn como significado cuanto es lo que nos debemos desplazar para poder llegar

hasta el objeto en cuestin a capturar.


Un

Mux el cual es un Multiplexar escalar o un vector de seales, esto para poder enviar las

informacin a la maquina lgica.


Un

Demux el cual parte las seales obtenidas de la maquina logica en escalares o pequeos vectores,

permitiendo entregar esos valores a las correspondientes salidas.


Por

ultimo 1 Fuzzy Logic Controller el cual se obtiene del toolbox llamado Fuzzy logic Toolbox, el

cual representa al FIS Editor que se puede ver en la Figura 2-7.

Cada uno de estos bloques son arrastrados desde la Figura 2-12 hasta el entorno de trabajo de Simulink, para ser utilizados segn lo que se desee realizar, en el caso del proyecto al realizar todas las uniones necesarias se logra lo que se ve en la Figura 2-13. 3.8.3.3 Integracin Fuzzy Toolbox y Simulink

Este paso se debe realizar una vez diseado el controlador, el cual fue guardado en un archivo .fis. Se debe estar trabajando en el espacio de trabajo de Simulink y poseer uno de los bloques Fuzzy Logic Controller en ese entorno, luego se debe hacer doble click sobre uno de estos bloques al cual le incluiremos el controlador abriendo la ventana que se puede observar en la Figura 2-13.

Figura 2-14: Integracin Controlador creado en Fuzzy Toolbox a Simulink

78

Captulo 3: Lgica Difusa

El parmetro que se le debe dar es el que se encuentra seleccionado, el cual corresponder al nombre de la variable exportada del controlador mencionado anteriormente en la seccin Guardar y Exportar al Workspace.

A partir de este punto ya se puede realizar pruebas en el sistema creado, cambiando las variables de entrada por Const (ubicadas en Commonly Used Blocks) los cuales son nmeros constantes en las variables de entrada y las variables de salidas por Display (ubicada en Sinks) los cuales son literalmente display's que mostraran en valor numrico la salido obtenida, todo esto ubicado la seccin de Simulink. Cabe decir que esta es una de las posibles formas de probar el controlador realizado, esto puede variar segn el nivel de conocimiento que tenga la persona sobre el manejo de Simulink.

3.8.4

Generacin de Cdigo C en Simulink


Simulink nos proporciona la posibilidad de generar cdigo C sin necesidad de escribirlo a partir

de los modelos previamente creados, esto es invocando al generador de cdigo C que permite convertir el diagrama de bloques implementado en un cdigo C, pudiendo configurarse de distintas formas para poder entrar a las opciones se debe dirigir al men Tool->Real-Time Workshop->Option ..., aparecer la ventana de la Figura 2-15.

79

Captulo 3: Lgica Difusa

Figura 2-15: Configuracion Real-Time Workshop

En ella se puede seleccionar el lenguaje al que se quiere generar el cdigo, en el caso del proyecto C o C++, adems de ello se puede generar si se desea solamente el cdigo. Pinchamos sobre el botn Browser de la Figura 2-15 generando la ventana mostrada en la Figura 2-16, ac uno puede seleccionar el sistema de archivo de destino que se desee, en el caso del proyecto seria el seleccionado en la Figura 2-16, ert.tcl Real Time Workshop Embedder Coder

Figura 2-16: System Target File Browser

80

Captulo 3: Lgica Difusa Una vez realizado esto se procede a seleccionar Solver del men izquierdo de la Figura 2-15, la ventana que aparecer se muestra el la Figura 2-17, ac uno puede cambiar el tiempo que va a durar la simulacin, si se desea puede dejarse como Inf., o sea, sin tiempo de termino. Otro parmetro a ser cambiado es en el recuadro Solver Options, en Type seleccionar Fixed-step, con lo cual ocurrir una disminucin en la cantidad de opciones, seleccionando alado de type posteriormente la primera opcin discrete.

Figura 2-17: Configuracin Solver

A partir de estas opciones ya es posible generar el cdigo-C diseado puede ser ejecutado en tiempo real, dirigindose en el men de la Figura 2-13 (espacio de trabajo simulink) a Tool->Real-Time Workshop->Build Model, generndose de esta forma el cdigo el cual no necesita ser escrito manualmente por un programador pues es creado a nivel de diagramas de bloques en Simulink. El cdigo generado debido a su naturaleza al ser compilado en alguna maquina este correr sin ningn problema en ella (este cdigo que se genera es el que utiliza Simulink cuando realiza una simulacin).

81

Captulo 3: Lgica Difusa Una vez compilado queda en el workshop en el que se encuentra trabajando, dejando una carpeta con el nombre del modelo hecho en simulink mas _ert_rtw, quedando dentro de ella las diferentes achivos, tanto .c como .h Los archivos mas importantes son: NombreModelo.c: Algoritmo del modelo. NombreModelo.h: Inclusin de cabeceras , declaracin de estructuras a Parmetros, Bloques, Estados, Entradas y Salidas. NombreModelo_data.c: Inicializa las variables de parmetros con los valores iniciales. NombreModelo_types.h: Declara estructuras como tipos de datos. NombreModelo_private.c: Definiciones comunes necesarios por el modelo y los subsistemas. rtwtypes.h: Define los tipos en el sistema ert_main.c; El prototipo para dejar funcionando el sistema creado, una especie de main pero incompleto.

Un aspecto importante a resaltar es que para poder compilar estos archivos es necesario incorporar el siguiente archivo: rtlibsrc.h el cual define tipos de datos en el sistema, este se encuentra en Archivos de programa\MATLAB\R2008a\rtw\c\libsrc, la direccin puede variar dependiendo de la versin de Matlab instalado.

Este puede ser til para varios propsitos: puede ser usado para control en tiempo real, simulacin en tiempo real o simulacin acelerada en tiempo no real. Sus aplicaciones pueden ser control de movimiento, control de procesos, sistemas automotores, equipos mdicos, robtica, etc.

82

Captulo 3: Lgica Difusa

3.9 Diseo e implementacin

3.9.1

Diagrama de Bloques
Mediante este sistema que permite en matlab modelar distintos tipo de sistemas sean o no

lineales ademas de discretos. Siendo factible para nosotros poder modelar lo que se ha hecho en la maquina difuza, el modelo seria el siguiente:

Figura 2-18: diagrama de bloque correspondiente a la logica difusa realizado con Matlab

Con este diagrama se puede ir probando los valores apretando en el botn el cual procesar la mquina que se ha construido, mediante las constantes que aparecen a la izquierda, haciendo dobleclick sobre stas se pueden cambiar sus valores, una vez realizado esto se hace click en el smbolo el cual produce el comienzo de la simulacin, mostrndose en los displays de la derecha el resultado correspondientes en porcentaje de los ejes X e Y. 83

Captulo 3: Lgica Difusa

3.10 Problemas surgidos y dificultades de ste Captulo


El primer problema surgido fue con que elemento de programacin poder darle cierto raciocinio a nuestro sistema, es por ello que acudimos a Don Christian Aguillera quien nos pudo ayudar a decidir la opcin a elegir para poder terminar dichas incertidumbres, posteriormente surgir otra problemtica, debido a que utilizaramos el toolbox de matlab, nuestro primer desafo consisti en comprender las nociones bsicas que posee matlab, incluyendo a Simulink con el que utilizaramos nuestro sistema, debido a que se puede modelar en bloque se hizo un diseo modesto de que necesitaramos, enfocndonos posteriormente a la concretacin del la lgica mediante la comprensin de la teora que hay que poseer para poder desarrollar nuestras variables de entradas y de esta forma fusificarlas y luego de su tratamiento a travs de las reglas de conocimiento que fueron un desafo poder ir viendo como cada una de las variables lingsticas declaradas se podra mezclar entre si para darnos ciertos valores lingsticos de salida conformando de esta forma el conocimiento necesario que poseera nuestro sistema para poder realizar la hazaa de alcanzar desde un punto fijo el recorrido necesario para alcanzar el objeto.

Con respecto a como se realizaron estas reglas, se tuvieron que hacer distintas pruebas, realizndolo primeramente mediante nuestro diseo e implentacin de este por medio de simulink y asi saber si los valores de salida correspondientes a porcentajes nos serviran mas menos para nuestro plan final de localizacin del objeto, siendo este un proceso complejo de varias pruebas y aplicaciones de conocimientos que se realiz en forma exhaustiva.

84

Captulo 4: Robtica

4 Robtica
Como sabemos para el desarrollo de nuestro proyecto una de las partes fundamentales es la utilizacin de un brazo robtico, el cual tomar el objeto seleccionado previamente a travs de la aplicacin. Por lo tanto este captulo consiste en la descripcin y estudio del funcionamiento del brazo robtico Scorbot ER-V Plus perteneciente al laboratorio de sistemas automatizados de produccin CIMUBB de nuestra casa de estudios, con la finalidad de lograr el conocimiento necesario para integrarlo a la aplicacin desarrollada y que sea de esta manera un aporte a contribuir en el total logro de los objetivos propuestos. En primera instancia damos a conocer el laboratorio CIMUBB donde se encuentra la estacin de trabajo para el proyecto, luego de esto describimos a cabalidad la celda flexible, para dar a conocer su funcionamiento y caractersticas principales que se deben conocer para el desarrollado del sistema, entonces despus de conocer su modo de operacin, pasamos a interiorizarnos en establecer la comunicacin de una aplicacin desarrollada por nosotros que nos permita comunicarnos directamente con el brazo robtico, sin necesidad de un terminal de acceso como el modo ATS, esta parte es fundamental debido a la necesidades planteadas en los requerimientos y que nos va permitir adems integrar una de las fases con el sistema en general. Tambin otro aspecto importante es conocer los comandos del lenguaje ACL que son necesarios para el movimiento y articulacin del brazo en sus distintos ejes y componentes, entonces se realiza una descripcin de los comandos bsicos a utilizar y una descripcin de su funcionamiento en conjunto. Para finalizar este se dan a conocer los resultados obtenidos adems de nuestras impresiones, a lo largo del desarrollo necesario para esta etapa, tambin se muestran las problemticas enfrentadas en el trabajo y como se enfrentaron. 85

Captulo 4: Robtica

4.1 Laboratorio de Sistemas Automatizados de Produccin CIMUBB


Este laboratorio propiamente tal pertenece a la Facultad de Ingeniera de nuestra Universidad del Bo-Bo, quien en conjunto con el ministerio de Educacin del Estado de Chile lo financiaron, surgiendo de esta manera en el ao 2000 El Laboratorio de Sistemas Automatizados de Produccin.

Demostrando la importancia de las industrias manufactureras en la contribucin al desarrollo de las naciones industrializadas, y hacer parte de esto a nuestro pas, La industria manufacturera

comprende la elaboracin de materias primas, productos semi-elaborados y productos terminados, los cuales se transan en el mercado nacional o internacional, gracias a los tratados de libre comercio obtenidos por el Estado en los ltimos aos. Por lo que la aplicacin de la tecnologa InformticaComputacional ha permitido grandes avances en el desarrollo de procesos industriales, ya sea agilizando las fases del proceso productivo, organizacional y comunicacional dentro de la industria, obteniendo de esta manera una baja en los costos proporcional al volumen de unidades producidas, adems de una mejora considerable en la metodologa de trabajo.

El cambio producido en los procesos industriales ha sido significativo, ya que logr conectar los procesos productivos que antes se encontraban aislados en un slo sistema integrado, permitiendo la comunicacin de las diferentes reas de la empresa y que cada una de ellas tiene influencias sobre las dems y as sucesivamente.

Cuando sta integracin se establece completamente en un sistema de manufactura se estara hablando de CIM o actualmente sera un ERP, que hoy representa la herramienta de gestin mas avanzada y eficiente hasta la fecha en materia de integracin.

El laboratorio de la Universidad se encuentra constituido pos sistemas de control de alta calidad, maquinas CNC, posee estaciones de trabajo CAD/CAM/CAE y tambin de simulacin, integrando todo bajo el concepto CIM, logrando la automatizacin casi completa del ciclo del producto, abarcado desde la etapa del diseo hasta la propia fabricacin, considerando una perspectiva de integracin tanto horizontal como vertical. 86

Captulo 4: Robtica

Algunos de los temas que se desarrollan en el laboratorio CIMUBB son: Gestin y Modelacin de Sistemas Automatizados de Produccin. CAD / CAM / CAE. Control Automtico de Procesos Discretos, Sensores e Instrumentacin. Redes Locales Industriales (LAN Industrial). Procesamiento de los Materiales. Transferencia Tecnolgica. Robtica. Visin Artificial.

En nuestro proyecto como sabemos los temas que nos incumben corresponden al rea de la robtica y de la visin artificial, manejadas ambas a travs del desarrollo de una aplicacin simple, que permita manipular estas dos partes. Como describiremos a continuacin utilizamos el Robot Scorbot ER V Plus de la estacin de Trabajo 3 del CIMUBB, como tambin una cmara web que nos brindar el soporte en el tema de visin artificial.

4.2 Scorbot ER V Plus


Para nuestro proyecto utilizamos la celda flexible Scorbot ER V plus del CIMUBB, este brazo es un robot vertical articulado con cinco juntas rotativas. Adems el robot posee seis grados de libertad. Su controlador autnomo y multitarea trabaja en tiempo real, permitiendo ejecutar simultneamente e independientemente hasta un total de 20 programas en memoria, podemos decir tambin que es un robot rpido, seguro, flexible y fiable, que esta diseado para formacin, investigacin y aplicaciones en laboratorio.

Los movimientos que las juntas rotativas pueden ejecutar son descritos a continuacin:

87

Captulo 4: Robtica

Figura 3-1: Especificacin de la Junta y la Accin.

Nmero de eje 1 2 3 4 5

Nombre de la junta Base Shoulder Elbow Wrist pitch Wrist roll

Accin que realiza Gira el cuerpo (body) Sube o baja el brazo superior (uper arm) Sube o baja el antebrazo (fore arm) Sube o baja la pinza (gripper) Gira la pinza (gripper)

Figura 3-2: Tabla explicativa de la Junta y su correspondiente Accin.

Este controlador posee adems 16 entradas y 16 salidas, destinadas a recibir y transmitir seales de dispositivos externos que interacten con el robot, estos pueden ser sensores, pulsadores, entre otros. En las salidas tenemos que la mayora son de transistor y tan solo 4 son a relay. Los parmetros del controlador incluyen constantes proporcionales, diferenciales e integrales para cada uno de los ejes, protecciones trmicas, de impacto, lmites, compensado de centro de herramientas, parmetros de la pinza y varios otros clculos de parmetros. La totalidad de los 200 parmetros de control pueden ser manejados por el usuario. Tambin el Scorbot posee un botn de parada de emergencia o interrupcin completa en caso de pruebas errneas en las cuales se debe evitar cualquier dao a la celda flexible, por lo que este botn desconecta el sistema y enciende una luz roja de alerta.

Internamente el controlador incluye el lenguaje ACL, que aporta las capacidades de 88

Captulo 4: Robtica programacin avanzada. Permitiendo el control de la trayectoria contina, interpolacin lneal y circular, tambin permite optimizacin de trayectorias, entre diferentes perfiles de control. El efecto final de la trayectoria se puede definir como una frmula general de trabajo del robot. El Scorbot ER-V plus es considerado un robot ideal tanto para el estudio del control y aplicaciones. Permitiendo realizar pruebas del control del circuito abierto o cerrado con varios tipos de velocidad, ya sea parablica, trapezoidal, de funcionamiento libre, aceleracin y desaceleracin. Especificaciones Tcnicas Scorbot ER-V Plus: Scorbot ER-V Plus (Brazo Mecnico) Nmero de ejes 5 ms pinza Construccin Brazo vertical articulado Radio de operacin 610 mm Movimiento de los ejes Var. Ejes Vel. Compuesta Eje 1:Base 310 600mm/seg. Eje 2:Brazo inferior +130/Eje 3:Brazo superior 35 Eje 4:-elev. pinza +/-130 Eje 5:Giro pinza +/-130 Velocidad Capacidad de carga Repetibilidad Tipo de motores Transmisin Realimentacin Abertura de la pinza Antibacklash Sincronizacin del robot (Home) Peso del brazo Temperatura ambiente de funcionamiento Puede cambiarse en incrementos de un 1% 1kg. en la extensin del brazo 0. 5mm 6 servomotores DC con control de lazo cerrado Engranaje con correa dentada. Encoders pticos de alta resolucin 75mm. con almohadillas de goma, 65mm con ellas. El eje de la base es soportado por sistema de engranaje tipo antibacklash Bsqueda punto 0 de referencia en todos los ejes, usando microinterruptores 10.8 Kg 2 C a 40 C

Figura 3-3: Especificaciones Tcnicas del Robot.

Para el manejo del Scorbot ER V plus se cuenta con diferentes modos de operacin que en 89

Captulo 4: Robtica siguiente punto se trataran.

4.3 Modos de Operacin:


Software

ACL (Advanced Control Lenguage)

Es un avanzado lenguaje de programacin de robots, y con el cual nos podemos comunicar de esta forma con el Scorbot ER V plus, proporcionando las siguientes funcionalidades:

Control directo de los ejes robticos. Programacin por el usuario del sistema robtico. Control de entradas/salidas. Ejecucin de programas simultanea, sincronizada e interactiva; soporte multi-tasking completo. Fcil gestionamiento de archivos.

ATS (Advanced Terminal Software)

Corresponde a la interfaz para el ACL. Este software es un emulador de terminal para el acceso al ACL desde un computador (Figura 3-4), entre sus acciones este permite la captura de las posiciones del robot, la edicin de programas y la descarga de un programa realizado en un procesador de textos. Utiliza Lenguaje de programacin ACL y comandos de accin directa. Este modo fue clave para conocer el funcionamiento y manipulacin del Scorbot a travs del lenguaje de programacin ACL, proporcionndonos su posicin actual, cambio de posiciones, movimientos de sus ejes, creacin de programas entre muchas otras funcionalidades. Por lo tanto el modo ATS permite:

Forma corta de configurar el controlador. Manejar desde una computadora el robot. 90

Captulo 4: Robtica Definicin de perifricos. Editor de programas. Teclas de short-cut para entrar. Bakup manager.

Figura 3-4: Modo ATS.

Teach Pendant

Este es un dispositivo opcional, es una terminal de mano, usada para controlar el robot y los perifricos conectados al controlador. Es prctico para el movimiento de ejes y control de pinza, grabado de posiciones, direccionamiento de los ejes a posiciones grabadas y ejecutar o abortar programas en el controlador (en caso de emergencias). Provisto de control de aprendizaje de posiciones en coordenadas XYZ y de articulaciones, trabaja tanto en coordenadas joint como en cartesianas, teclas multifuncin, pantalla LCD de 32 caracteres. En la Figura 3-5 podemos ver como es el Teach Pendant.

91

Captulo 4: Robtica

Figura 3-5: Teach Pendant.

4.4 Inicializacin
Como sabemos la posicin de los ejes es medida por encoders que registran la variacin de movimiento referida a una posicin inicial. Se recomienda para que el robot funcione correctamente que esta posicin debiera ser la misma cada vez que el robot sea utilizado. Para ello el controlador tiene un programa interno llamado home, el cual deber ser ejecutado cada vez que se ponga en marcha el robot.

Para ejecutar el homing desde el PC se escribe en el ATS: >home <enter> Para ejecutar el homing desde el teach pendant (TP) oprima: run 0 - enter Para inicializar los ejes (ya sea del robot o de los perifricos) escriba en el ATS: >home n de eje

92

Captulo 4: Robtica

4.5 Operacin del Robot


Modo manual Este modo se puede ejecutar cuando el sistema esta en modo directo, la funcin que tiene este modo es permitir el control directo de los ejes sin la necesidad de usar el Teach Pendant. Para activar el modo manual solo basta presionar las teclas: <alt> + m Teclas de Accin Q1 W2 E3 R4 T5 Y6 U7 I8 Eje eje 1 eje 2 eje 3 eje 4 eje 5 eje 6 eje 7 eje 8

Figura 3-6: Teclas Modo Manual.

Modo directo Cuando el sistema esta en modo directo, el usuario tiene el control directo de todos los ejes del robot. El controlador va ejecutando los comandos a medida que van siendo ingresados por el operador. Cuando se esta en modo directo, el prompt aparece en pantalla de la siguiente manera: >_

4.6 Sistemas de coordenadas

Coordenadas joint: Especifican la posicin de los ejes robticos en unidades de encoders, ya que estos proporcionan un nmero de seales proporcional al movimiento de los ejes. Coordenadas cartesianas: Es un sistema geomtrico para especificar la posicin del punto central de la herramienta del robot TCP definiendo la distancia en unidades lineales (dcimas de milmetros)

93

Captulo 4: Robtica desde el origen situado en la base, para efecto de nuestro proyecto este va a ser el sistema de coordenadas que vamos a emplear, considerando solo los ejes X e Y por ubicacin y referencia de la cmara que se esta ocupando, entonces las posiciones del eje Z van a estar predefinidas con anterioridad y no sern efecto de estudio en este proyecto.

Figura 3-7: Sistema de Coordenadas.

4.7 Rol que Cumple el Robot Scorbot ER-V Plus en el Proyecto


Los Puntos de este captulo tratados anteriormente fueron de vital importancia para que en primera instancia nos familiarizramos con el robot, ya sea conocer sus partes, que es lo primero que debemos hacer antes de comenzarlo a utilizar, que hacer en caso de querer abortar una operacin, conocer su sistema de coordenadas, su lenguaje de programacin, en que modo utilizarlo, entre muchos otros aspectos que debemos indagar para poder obtener de el su mayor provecho, para que de sta manera contribuya al cumplimiento de los objetivos del proyecto.

Con todo esto ya claro sabemos que el brazo robtico es una de las partes mas importantes en el proyecto por no decir la ms relevante, considerando que casa fase de desarrollo aporta su porcentaje a lograr el objetivo final, por ello el rol que cumple en el proyecto es primordial, ya que va a ser quien despus de haber procesado la imagen se encargue de tomar el objeto, y lo desplace a una posicin de destino dentro de los limites de la superficie.

94

Captulo 4: Robtica

Y para poder tomar el objeto seleccionado en la aplicacin debemos conocer primero a fondo los comandos del lenguaje de programacin ACL que se requerirn para el correcto funcionamiento del robot y adems cuales sern necesarios para lograr el objetivo de este captulo que es mover el brazo robtico por medio de la aplicacin desarrollada. Este movimiento del brazo robtico ocurre como consecuencia a partir de la integracin entre la fase correspondiente al Anlisis de la Imagen que nos entrega el centroide del objeto en pixeles, pero ste se debe trasformar a dcimas de milmetros que corresponden a las unidades en que vamos a desplazar al Scorbot. Siguiendo la fase de anlisis de imagen se integra esta con la Fase de la Maquina de Lgica Difusa, en resumen sta ltima fase del sistema es la que interactuar con el Scorbot, es decir le ir indicando hacia donde se debe ir moviendo hasta que la mquina difusa le diga que se encuentra en posicin de tomar el objeto que se seleccion previamente a travs del sistema, por lo que esta aplicacin debe tener claro como hacer moverse al Scorbot.

Todo este tema de la integracin se ver en el captulo final del proyecto donde todas las dems fases de desarrollo se unirn y se ver con mas claridad como se integran al sistema final y de que forma fueron integradas.

Este anlisis nos dej como consecuencia el establecer los movimientos que debe realizar el Scorbot, por lo que vamos a tener que identificar y seleccionar el conjunto de pasos a seguir, estableciendo un orden en la ejecucin de comandos ACL para que el robot se pueda desplazar. Tambin debemos ver la forma de comunicar el Scorbot con la aplicacin que estamos desarrollando ya que la interaccin va a estar a cargo de este sistema y no por el modo ATS o por el Teach Pendant ni modo manual, solo a travs de comandos en leguaje ACL.

4.8 Comunicacin Por Puerto Serial

Como necesitamos interactuar directamente con el Scorbot a travs de la aplicacin que estamos desarrollando, vimos primero que este se conecta al computador directamente al puerto serial 95

Captulo 4: Robtica con el conector RS-232 (el cual es una interfaz que se designa para el intercambio de datos binarios).

El puerto serial en aos anteriores era uno de los accesos de comunicacin ms comunes que permite conectar perifricos, como lo es el caso del robot Scorbot, otros de estos dispositivos pueden ser mouse, teclado, modem o simplemente establecer una conexin entre computadores, pero como sabemos en la actualidad este dispositivo se ha reemplazado por el USB debido a la rapidez al enviar datos que este posee.

La comunicacin que se establece con el robot es bit a bit, es decir permite enviar un bit a la vez, al contrario de dispositivos de transmisin ms modernos que envan varios bit simultneamente.

Por lo tanto debemos buscar un lenguaje de programacin en el cual podamos comunicarnos a travs del puerto serial con la celda flexible y adems debe ser compatible en la integracin con la aplicacin que junta todas las fases de desarrollo del proyecto.

Luego de tener muy presente estas restricciones optamos por realizar la conexin del puerto serial con el Scorbot en el lenguaje de programacin C, debido a la compatibilidad entre la interfaz del sistema que es desarrollada en C++, destacando as la lnea de la eficiencia en la aplicacin y la portabilidad.

4.9 Comunicacin Serial en el Lenguaje de Programacin C

Como sabemos este lenguaje de programacin fue creado en la dcada de los 70 por Dennis M. Ritchie, cuyo propsito es lograr la eficiencia de sistemas, tanto operativos como de aplicaciones.

Conocemos de antemano sus ventajas que representa el programar en C debido a que es posible utilizar sus caractersticas de bajo nivel para realizar implementaciones ptimas, adems debemos agregar la portabilidad de este a los diversos sistemas operativos, trasformando as nuestras aplicaciones en sistemas multiplataformas. 96

Captulo 4: Robtica

Para la implantacin de la comunicacin serial vamos a utilizar la librera LnxComm que fue diseada especialmente para entregar apoyo a personas involucradas en el diseo y construccin de hardware, adems de programadores que estn interesados en manejar este conocimiento, esta librera permite establecer una conexin con el puerto serial solamente programando escasas linead de cdigo, proporcionando de esta manera una mejor forma de entender este concepto, ya que esta librera tiene lo necesario para comunicarnos tanto en Linux como en Windows a travs del puerto serial, apoyando la portabilidad de nuestros cdigos desarrollados. Esta librera esta en su totalidad desarrollada en Lenguaje C. Como ya dijimos esta librera tiene funciones, las cuales cumplen las mismas caractersticas tanto para Linux como para Windows.

Las funciones con las que cuenta son las siguientes:

Open_Port

Esta corresponde a la funcin de lectura del puerto serial.


HANDLE Open_Port(char COMx[]);

Abre el puerto de comunicaciones, esta funcin recibe como parmetro una cadena con el nombre del puerto y devuelve una variable de tipo HANDLE que es el manejador del puerto. Este HANDLE es un ndice a una tabla, ya que sirve para almacenar dependiendo de la arquitectura 16, 32, 64 bits, por lo tanto este corresponde en Windows, a una referencia a una estructura de datos interna del sistema.

COMx[] :

Es una cadena que contiene el nombre del puerto a abrir, como por ejemplo.

COM1 , COM2 , COM3 , COM4 , /dev/ttyS0 , /dev/ttyS1 , /dev/ttyS2 , /dev/ttyS3 ,

97

Captulo 4: Robtica
/dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2, /dev/ttyUSB3, /dev/ttyACM0, /dev/ttyACM1, /dev/ttyACM2, /dev/ttyACM3,

Retorna: Esta retorna el manejador de puerto que se encuentra abierto Get_Configure_Port

Nos entrega la configuracin actual del puerto serie.


DCB Get_Configure_Port(HANDLE fd);

Esta funcin devuelve un variable de tipo DCB con la configuracin actual del puerto serie, la funcin recibe un parmetro de tipo HANDLE que es el manejador con la configuracin actual del puerto, devuelto por la funcin Open_port

fd : Es el HANDLE manejador del puerto. Retorna: Una estructura DCB con la configuracin actual del puerto.

La estructura DCB define los valores de control para dispositivos de comunicacin serie.

typedef struct _DCB { DWORD DCBlength; DWORD BaudRate; DWORD fBinary: 1; DWORD fParity: 1; DWORD fOutxCtsFlow:1; DWORD fOutxDsrFlow:1; DWORD fDtrControl:2; DWORD fDsrSensitivity:1; DWORD fTXContinueOnXoff:1; DWORD fOutX: 1; DWORD fInX: 1; DWORD fErrorChar: 1; DWORD fNull: 1; DWORD fRtsControl:2; DWORD fAbortOnError:1; DWORD fDummy2:17; WORD wReserved; WORD XonLim; WORD XoffLim; BYTE ByteSize;

// // // // // // // // // // // // // // // // // // // //

sizeof(DCB) velocidad en baudios actual modo binario, no se comprueba EOF comprobacin de paridad activa CTS control de flujo de salida DSR control de flujo de salida DTR tipo de control de flujo DSR sensitividad XOFF continuar Tx XON/XOFF control de flujo de salida XON/XOFF control de flujo de entrada activa reemplazo de error activa null stripping RTS control de flujo aborta lectura/escritura si hay error reservado no usado transmitir umbral XON transmitir umbral XOFF nmero de bits por byte, 4-8

98

Captulo 4: Robtica
BYTE BYTE char char char char char WORD } DCB; Parity; StopBits; XonChar; XoffChar; ErrorChar; EofChar; EvtChar; wReserved1; // // // // // // // // 0-4=no, impar, par, marca, espacio 0,1,2 = 1, 1.5, 2 carcter XON para Tx y Rx carcter XOFF para Tx y Rx carcter de reemplazo para errores carcter de fin de entrada carcter de evento recibido reservado; no usar

Configure_Port Con esta funcin podemos establece la nueva configuracin del Puerto serial dependiendo del perifrico que queremos manejar, en nuestro caso corresponde al scorbot ER V Plus, que necesita manejarse a 9600 baudios, bits de datos de tamao 8, ninguna paridad y bit de parada 1.
DCB Configure_Port( HANDLE fd, unsigned int BaudRate, char CharParity[]);

Esta funcin configura el puerto serie con los parmetros fd, BaudRate y CharParity.

fd : Es el manejador del puerto devuelto por la funcin Open_Port. BaudRate : Es la velocidad del puerto. (B115200, B19200, B9600, ...) CharParity: Indica el numero de bits de la transmisin. (8N1,7E1,7O1,7S1) Retorna: Una estructura DCB con la configuracin del puerto

Set_Configure_Port

Establece la configuracin del puerto, es decir reestablezco la configuracin antigua del puerto una vez que terminamos de usarlo, esto debe ocurrir antes de cerrar el puerto serie.
int Set_Configure_Port( HANDLE fd,DCB PortDCB);

Restituye la configuracin del puerto serie, los parmetros sern pasados mediante una variable tipo DCB.

fd : Es el manejador del puerto devuelto por Open_Port

99

Captulo 4: Robtica oldConf : Es una variable DCB con la configuracin del puerto, generalmente se usa la devuelta por la funcion Get_Configure_Port. Retorna: TRUE si todo fue bien o FALSE si hubo algn error.

Write_Port

Como lo indica su nombre esta funcin escribe un bloque o cadena de datos en el puerto serie.
long Write_Port( HANDLE fd, char Data[], int SizeData);

Escribe los SizeData primeros caracteres de Data en el puerto serie. fd: Es el manejador del puerto devuelto por Open_Port. Data: Es el dato a mandar. SizeData: Es el nmero de bytes que se quieren escribir. Retorna: En caso de xito este devuelve el nmero de bytes escritos, en cambio si es cero indica que no se ha escrito nada y en caso de error, se devuelve -1. Read_Port

Esta es para leer un bloque de datos en el puerto serial.


long Read_Port( HANDLE fd, char *Data, int SizeData);

Lee los SizeData primeros caracteres del Puerto y lo carga en Data. fd : Es el manejador del puerto devuelto por Open_Port. Data: Es la variable en donde se reciben los datos. SizeData: Es el nmero de bytes que se quieren recibir. Retorna: En caso de xito se devuelve el nmero de bytes ledos, cero indica que no se ha ledo nada y en caso de error, se devuelve -1.

100

Captulo 4: Robtica

Gets_Port

Recibe una cadena de tipo texto en el puerto.


long Gets_Port( HANDLE fd,char *Data,int SizeData);

Recibe datos por el puerto, lee hasta encontrar un 00A,00D o hasta completar SizeData caracteres. Los datos son guardados en la variable Data

fd : Es el manejador del puerto devuelto por Open_Port. Data: Es la variable en donde se reciben los datos. SizeData: Es el mximo nmero de bytes que se quieren recibir. Retorna: El numero de caracteres recibidos. Getc_Port Tambin recibe un carcter por el puerto.
long Getc_Port( HANDLE fd, char *Data);

Recibe un nico carcter por el puerto y es cargado en la variable Data de tamao 1 byte.

fd : Es el manejador del puerto devuelto por Open_Port. Data: Es la variable en donde se reciben los datos (1 Byte). Retorna: El numero de caracteres recibidos. Kbhit_Port

Indica el estado del buffer de entrada, este estado nos indica el nmero de caracteres disponibles en buffer.
int Kbhit_Port( HANDLE fd);

101

Captulo 4: Robtica

Recibe como parmetro el manejador del puerto.

fd : Es el manejador del puerto devuelto por Open_Port. Retorna: El numero de caracteres en el buffer de recepcin Close_Port

Simplemente cierra el puerto serie que hemos abierto previamente.


int Close_Port( HANDLE fd);

Recibe la variable fd y cierra el puerto. fd : Es el manejador del puerto devuelto por Open_Port. Retorna: TRUE si se ha cerrado el Puerto y FALSE en el caso contrario. Set_Hands_Haking

Configura el control de flujo en el puerto serie.


int Set_Hands_Haking( HANDLE fd,int FlowControl);

Recibe como variables el manejador del puerto y el tipo de control de flujo.

fd : Es el manejador del puerto devuelto por Open_Port. FlowControl: Es un numero entero que indica el tipo de control de flujo.
0 Ninguno 1 RTSCTS 2 XonXoff 3 DTRDSR

102

Captulo 4: Robtica Retorna: TRUE si todo fue bien y FALSE si no lo fue.

Set_BaudRate

Configura la velocidad del puerto serie.


int Set_BaudRate( HANDLE fd,unsigned int BaudRate);

Recibe como datos el manejador del puerto y la velocidad del mismo.

fd : Es el manejador del puerto devuelto por Open_Port. BaudRate: Es la velocidad del puerto, los valores pueden ser por ejemplo B2400, B9600, B19200 entre otras. Retorna: TRUE si todo fue bien y FALSE si no lo fue.

Set_Time

Configura temporizador para lectura y escritura.


int Set_Time( HANDLE fd,unsigned int Time);

Recibe como variables, el manejador del puerto y el mximo tiempo entre bytes en milisegundos

fd : Es el manejador del puerto devuelto por Open_Port. Time: Multiplicador en m-seg, para el tamao total de time-out en lectura y escritura. Timeout = (Time-m-seg * number_of_bytes) Retorna: TRUE si todo fue bien y FALSE si no lo fue.

103

Captulo 4: Robtica IO_Blocking

Escoge como modo bloqueante o no bloqueante para la lectura en el puerto.


int IO_Blocking( HANDLE fd,int Modo);

La funcin recibe como parmetro el manejador del puerto y TRUE si se quiere una conexin bloqueante o FALSE si no.

fd : Es el manejador del puerto devuelto por Open_Port. Modo: TRUE : Modo bloqueante. FALSE: Modo no bloqueante. Retorna: TRUE si todo fue bien y FALSE si no lo fue. Clean_Buffer

Termina las operaciones de lectura y escritura pendientes y limpia las colas de recepcin y de transmisin de datos.
int Clean_Buffer( HANDLE fd);

La funcin recibe como parmetro el manejador del puerto.

fd : Es el manejador del puerto devuelto por Open_Port. Retorna: TRUE si todo fue bien es decir si limpio y FALSE si no pudo.

Create_Thread_Port

Crea una funcin hilo que se ejecuta cuando existan caracteres en el buffer de de entrada del puerto.

104

Captulo 4: Robtica
pthread_t Create_Thread_Port( HANDLE *fd);

Recibe como parmetro el manejador del puerto y devuelve una variable de tipo pthread_t

fd : Es el manejador del puerto devuelto por Open_Port. Retorna: El manejador del hilo creado.

Esas serian las funciones bsicas para manejar, controlar, configurar, setear, limpiar, leer, escribir en el puerto serial entre otras. Como mencionamos al principio de la descripcin de la librera esta posee portabilidad a mltiples plataformas, para ello se debe modificar la cabecera dependiendo del sistema operativo:

Linux: #define __LINUX_COM__ #include com/serial.h Windows: #define __WINDOWS_COM__ #include com/serial.h

La funcin Open_Port tambin cambiara de argumento segn el sistema operativo.


Linux: /dev/ttyS0 , /dev/ttyS1 , /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyACM0, /dev/ttyACM1, Windows: COM1, COM2, COM3,

105

Captulo 4: Robtica

4.10 Monitoreo del Puerto Serial


La parte de la comunicacin mediante puerto serial ya se encuentra definida, ahora debemos comunicarnos con el robot, es decir debemos enviarle comandos en lenguaje ACL, ya que su controlador interno solo entiende estos comandos.

Para ello se debe en primera instancia conectarse con el puerto serial y luego escribir en el. Como sabemos que se puede enviar una cadena de caracteres, sta va a ser el comando ACL, pero dentro de un formato especifico, es decir, no es solamente enviar el comando que queramos, este debe tener una especie de orden y formato, por ejemplo deseamos comunicarnos con el scorbot para indicarle que realice el siguiente comando move 0, esto quiere decir que el scorbot se desplace a su posicin de inicio, que corresponde a la misma en la cual se mueve el scorbot al encenderlo, es como una especie de homing, por lo tanto enviamos el comando de esta forma:

char mensaje[]="move 0"; Write_Port(fd,mensaje,strlen(mensaje));

// comado ACL // escribir en el puerto

Luego de esperar una respuesta al haber escribir en el puerto serial nos dimos cuenta que sta nunca llego, y el Scorbot no realiz ninguna accin, entonces lo que necesitamos es conocer como realmente enva los comandos el modo ATS al scorbot, ya que es la nica forma que tenemos para comunicarnos a travs de comandos con el robot, es decir debemos monitorear que datos pasan por el puerto serial realmente y de que forma, para que nosotros podamos de la misma manera enviar estos comandos por medio de nuestra aplicacin.

Para monitorear el puerto serial ocupamos el programa Free Serial Port Monitor, que nos ayudara a verificar que datos realmente pasan por el puerto, al momento de escribir comandos en lenguaje ACL en modo ATS y a la vez que respuesta podemos leer que nos envi el Scorbot.

Entonces debemos abrir el programa free serial y elegir la pestaa fichero y seleccionar de la lista una nueva sesin, aparecer entonces una ventana que nos indica un asistente de nueva sesin, hay

106

Captulo 4: Robtica debemos presionar el botn siguiente, a continuacin debemos elegir el tipo de sesin de monitoreo, donde escogimos la primera de las tres que seria el monitor de puertos y presionamos siguiente nuevamente y pasaremos a esta ventana que mostramos a continuacin:

Figura 3-8: Seleccin del puerto COM.

Ac debemos seleccionar el puerto COM correspondiente, para nuestro caso sera COM1 y presionamos siguiente, luego se nos abrir la Aplicacin de Elaboracin de Datos

107

Captulo 4: Robtica

Figura 3-9: Seleccionamos que queremos visualizar al monitorear.

La figura 3-9, nos indica que deseamos monitorear, los datos, las seales, las llamadas, la consola entre otras cosas, nuestro objetivo es ver los datos, por lo tanto lo seleccionamos. Una vez realizado esto presionamos el botn finalizar para terminar con la configuracin de monitoreo del puerto serial. El resultado de esto es una pantalla donde podemos apreciar en la parte superior una especie de Log, donde se va registrando lo que se lee del puerto serial, y en la parte inferior se registra la escritura en el puerto, con esto ya listo y el Scorbot ya conectado al computador y encendido, ahora debemos abrir el modo ATS, una vez abierto comenzamos a escribir comandos para ir viendo que va registrando el free serial tanto al momento de escribir como al leer del puerto serie (ver Figura 3-10 )

108

Captulo 4: Robtica

Figura 3-10: Monitoreo de Lectura y Escritura.

Al ver la figura anterior nos damos cuenta que los datos son registrados en estos LOG (registros) en formato hexadecimal, por lo tanto cada representacin hexadecimal corresponde a un letra que ha sido escrita o leda correspondientemente en el puerto serial, al realizar una serie de monitoreos tanto a la lectura como a la escritura nos dimos cuenta que podemos analizar estos datos de la siguiente manera. Lo primero es ver que sucede cuando abrimos el modo ATS, es decir, cuando este modo establece la comunicacin con el Scorbot, antes de enviar cualquier comando el free serial muestra que el puerto COM a sido abierto, entonces al enviar el primer comando en el modo ATS, vemos en el free serial que antes de enviarlo, como es el primer comando, se enva previamente la cadena |echo\r\r\r (obviamente sin las comillas, es solo para destacar la cadena) que en hexadecimal corresponde ha 7C 65 63 68 6F OD OD OD ,esta cadena es para indicarle al Scorbot que a partir de ahora se van a enviar comandos, para que el controlador del robot pueda procesarlos y cuando envia un comando, por ejemplo open (para que abra la pinza), lo hace de esta manera open\r (en el free serial aparece la misma cadena pero en hexadecimal 6F 70 65 6E OD), entonces cada vez que enviemos un comando este debe ser acompaado del retorno de carro \r, por ejemplo 109

Captulo 4: Robtica

Al iniciar nuestra aplicacin que se comunica por puerto serial con el robot, antes de enviar cualquier comando, esta claro que previamente ya abrimos el puerto, obtuvimos su configuracin y lo configuramos segn nuestras necesidades y le indicamos que iva a ser no bloqueante, debemos enviar la siguiente cadena de caracteres

char mensaje[]="|echo\r\r\r"; Write_Port(fd,mensaje,strlen(mensaje));

// comado ACL // escribir en el puerto

Una vez enviada la cadena anterior podemos enviar el comando que queramos

char mensaje2[]="open\r";

// comado ACL

Write_Port(fd,mensaje2,strlen(mensaje2)); // escribir en el puerto

Para un mejor entendimiento mostramos a continuacin un simple ejemplo de comunicacin serial con el robot scorbot, escrito en lenguaje C, utilizando la librera LnxComm.

#define __WINDOWS_COM__ #include "serial.h"

/* #define __LINUX_COM__ */ la

/* Incluimos las funciones para comunicacin serial*/ void escrituraLecturaScorbot(char [],HANDLE); int main() { HANDLE fd; DCB OldConf; char char char char char inicializar[]="|echo\r\r\r"; /*inicializa el envio de comandos*/ speed[]="speed 20\r"; /*cambia la velocidad*/ open[]="open\r"; /*abre la pinza*/ close[]="close\r"; /*cierra la pinza*/ finalizar[]="|show par 1\r\03\03"; /*finaliza comunicacin*/

int n; fd=Open_Port("COM1"); /* Abre el puerto serie fd=Open_Port("/dev/ttyS0"); */ /* guardo la configuracin del

OldConf=Get_Configure_Port(fd);

110

Captulo 4: Robtica
Puerto*/ Configure_Port(fd,B9600,"8N1"); IO_Blocking(fd,FALSE); /* Configuro el puerto serie */ /* Seleccionamos lectura no bloquenate */

escrituraLecturaScorbot(inicializar,fd); /* se llama a la funcion que escribe y lee del puerto serial*/ escrituraLecturaScorbot(speed,fd); escrituraLecturaScorbot(open,fd); escrituraLecturaScorbot(close,fd); escrituraLecturaScorbot(finalizar,fd); Set_Configure_Port(fd,OldConf); /* Restituyo la antigua configuracin del puerto */

Close_Port(fd);

/* Cierro el puerto serie */

printf("Presione ENTER para terminarn"); getchar(); return 0; }

void escrituraLecturaScobot(char mensaje[], HANDLE fd,) { char resp[100]=""; int n;

Write_Port(fd,mensaje,strlen(mensaje));

/*Escribimos en el puerto serie */

Clean_Buffer(fd);

/* Limpiamos el buffer*/

do{ n=Read_Port(fd,resp,100); printf("resp: %s" ,resp); memset(resp,'\0', 100); if(n!=0) sleep(1000); else sleep(500); }while(Kbhit_Port(fd)); /*Se ejecuta hasta que se /*Limpiamos la cadena*/ /*Dormimos el proceso*/ /* Leimos del puerto*/

111

Captulo 4: Robtica
leean los caracteres necesarios*/ Clean_Buffer(fd); /*Limpia buffer*/

printf("\n\nPresione ENTER para continuar"); getchar(); }

Lo que hace este ejemplo es establecer comunicacin serial con el scorbot, para ello en primer lugar abrimos el puerto COM1, luego obtenemos su configuracin en una variable DCB, a continuacin configuramos el puerto de acuerdo al funcionamiento del Scorbot ER-V Plus y le indicamos que vamos a realizar lectura no bloqueante. A partir de este momento estamos en condiciones de indicarle al robot que le vamos a enviar comandos, para alertarle de ello le enviamos la cadena de inicializacin, para continuar con los comandos que modifican su velocidad, abren la pinza, cierran la pinza y para finalizar enviamos el comando que le indica al controlador del scorbot, que ya no le vamos a enviar mas comandos, y para finalizar se restablece la configuracin antigua del puerto y se procede a cerrarlo en ultima instancia.

4.11 Comandos ACL a Utilizar


En esta etapa debemos determinar cuales sern los comandos del Lenguaje ACL que vamos a utilizar en la aplicacin, recordando que estos comandos deben cumplir con el objetivo de poder mover el brazo robtico, por lo que estas secuencias de comandos deben estar programadas internamente en la aplicacin que desarrollamos, por ello es importante definirlos en este captulo. Ya que los comandos que definamos ac son los que se necesitaran en la aplicacin. Tabla de comandos necesarios.

112

Captulo 4: Robtica Nombre del Comando ECHO Descripcin Es el primer comando que se necesita antes de enviar cualquier accin al controlador. MOVE 0 SPEED 20 Realiza un proceso de inicializacin de los ejes del robot. La velocidad se especifica en porcentajes. La velocidad mxima es 100 y la mnima es 1, la velocidad por defecto es 50, para efectos del proyecto fijamos la velocidad en 20% DEFP pos Crea una posicin en el grupo A, en el grupo B o en un eje del grupo C, si no hemos especificado un grupo supones el grupo A. Lo que hacemos en nuestro caso es crearla de la siguiente manera DEFP pos, esta crea una variable llamada pos en el grupo A. HERE pos Graba la posicin actual en la variable de memoria pos creada con DEFP o DIMP. LISTPV pos LISTPV POSITION Despliega las coordenadas de la posicin especificada pos en valores de las articulaciones (encoders) y en coordenadas Cartesianas. POSITION es un nombre reservado y se emplea para desplegar las coordenadas actuales. Las coordenadas Cartesianas X, Y, Z se expresan en dcimas de milmetro, e indican la distancia entre el origen del sistema global de coordenadas del robot (en el centro y bajo la base) y el TCP (Tool Center Point = Coordenada de la Punta de la Tenaza). P (Pitch) y R (Roll) se expresan en dcimas de grado. Estos comandos son utilizados en el proyecto para conocer la asignacin de posiciones del robot dentro de la superficie, es decir es empleada solo para el registro de posiciones, en la aplicacin desarrollada no se utiliza como tal, ya que tenemos el control interno de los ejes cartesianos X, Y y Z a travs de variables.

113

Captulo 4: Robtica SETPVC pos X 2799 Este comando esta pensado solo para modificar posiciones. Permite cambiar una coordenada cartesiana en una posicin previamente registrada con el comando SETPV. Tiene el siguiente formato SETPVC <pos> <coord> <valor> Donde: <pos> es una posicin del robot (grupo A) definida previamente por nosotros. <coord> es una coordenada cartesiana: X,Y,Z,P o R. <valor> esta en dcimas de milmetros (X,Y,Z) o grado (P,R). SETPV pos 1 -9000 Este comando esta pensado solo para modificar posiciones. Permite cambiar el valor codificador de un eje en una posicin registrada. Se utiliza para setear valores en encoders. SETPVC <pos> <eje> <valor> no avisa de coordenada de punto invlida hasta que prueba y no lo alcanza. MOVE pos Mueve el brazo a la posicin definida en pos. Esta instruccin deposita un comando de movimiento en el buffer de movimientos, y no espera a que la operacin haya sido terminada para enviar otra instruccin de movimiento. Este desplazamiento lo realiza de acuerdo a la velocidad actual CLOSE OPEN DELP pos Cierra la pinza hasta el fin de su movimiento. Abre la pinza hasta el final de su movimiento. Borra las posiciones y los vectores de posicin de la tabla de posiciones. SHOW PAR <n> Presenta el valor del parmetro del sistema <n>

Esta tabla nos indica el comando y una pequea descripcin de que es lo que hace y para que sirve, en nuestro proyecto establecimos una rutina de comandos necesarios para ser utilizados en la aplicacin que tiene que ver con el manejo de la celda flexible, ya anteriormente vimos algo de esto en el ejemplo de comunicacin por el puerto serial con el scorbot.

114

Captulo 4: Robtica Como sabemos esta rutina de comandos que corresponde a la que se implemento para tomar el objeto a travs de las indicaciones entregadas por la maquina de lgica difusa, debe estar compuesta inicialmente por el comando ECHO, con el le indicamos al controlador que desde ahora en adelante se van a enviar comandos para que este atento a escuchar en el puerto serial, a continuacin enviamos el comando MOVE 0, con este inicializamos los ejes de la celda a su posicin de inicio, desde ac, lo que hacemos antes de realizar cualquier movimiento es fijar la velocidad del scorbot en un 20%. Para que los movimientos no sean tan rpidos y bruscos. Con esto ya estamos listos para crear nuestra variable de posicin con DEFP pos, esta variable va a almacenar los valores cartesianos de la poscion del scorbot, en seguida realizamos un HERE pos, esto quiere decir que le pasamos la posicin actual del scorbot, por lo tanto se copia el valor del vector POSITION en nuestra variable pos. Luego ya podemos indicarle al robot que valla a la posicin que hemos definido dentro de la superficie, esta es SETPVC pos x 2799, SETPVC pos y 90, SETPVC pos z 3200. Estos valores son asignados como la ubicacin por defecto del scorbot, tomando en cuenta diferentes factores que fueron resultados de nuestro estudio, como por ejemplo que esta posicin no interfiera con la cmara web. Al setear los valores en la variable pos, debemos realizar este movimiento con el comando MOVE pos, Con estos valores ya estamos en nuestra posicin de partida que hemos definido, por lo tanto estamos a la espera de que la maquina difusa nos indique hacia donde movernos. Despus de que esta maquina difusa nos haya guiado hasta posicionarnos encima del objeto, debemos recordar que esta mquina slo nos entrega informacin hacia donde movernos en los ejes X e Y (debido a la ubicacin de la camara web), por lo tanto el manejo del eje Z, es por defecto, que quiere decir esto, que una vez posicionados en el centroide del objeto, bajamos en primera instancia SETPVC pos z 1000 y tambin acomodamos la pinza en SETPVC pos P -890, para finalmente bajar la pinza en SETPVC pos z 189, por lo tanto al enviar el comando CLOSE, la pinza se debe cerrar y capturar de esta manera el objeto. Y para finalizar se lleva el objeto a la posicin seleccionada dentro de los lmites de la superficie y se enva OPEN para soltar este objeto. Una vez ocurrido esto se lleva el Scorbot fuera del alcance de la cama web para que no la obstruya al momento de tomar una nueva imagen de la superficie, para terminar la accin se borra la posicin pos con DELP pos y se enva la confirmacin para borrarlo YES, y se indica al controlador que ya no se van a enviar mas comandos,

115

Captulo 4: Robtica SHOW PAR 1. Estas seran las operaciones bsicas con las que trabajaremos en el manejo de la celda flexible. Esperamos que se halla comprendido bsicamente el manejo del brazo robtico a partir de su lenguaje de programacin ACL.

4.12 Problemas surgidos y dificultades de sta Captulo


Esta es uno de los captulos principales de nuestro proyecto, sin desmerecer los dems captulos claro, pero el aprender el manejo y funcionamiento de la celda flexible era primordial para el xito de este y cumplimiento de nuestros objetivos, resumiendo nuestro objetivo es detectar objetos, tomarlos y trasladarlos, entonces si no logrbamos manejar la celda flexible, no podramos tomar estos objetos ni mucho menos trasladarlos, por lo que este captulo se transformo a una de las mas importantes y a la cual le dedicamos el mayor tiempo de estudio.

En primera instancia para el desarrollo de este captulo solo contbamos con nuestros conocimientos Ingenieriles e Informticos adquiridos a lo largo de estos aos de estudios en nuestra Universidad, nunca antes habamos incursionado en la robtica, ya que en la carrera no tenemos asignaturas relacionadas con el tema, por lo que debamos empezar de cero en este captulo, siendo esa nuestra primera dificultad, al preguntarnos Por dnde empezamos?, Lo primero fue dirigirnos al CIMUBB y conversar con Don Christian Aguilera Carrasco, Director del Centro CIMUBB, el nos brindo todo su apoyo y ayuda en la investigacin, por lo tanto ya tenamos el laboratorio CIMUBB donde podamos trabajar en el proyecto, adems desde el inicio del tema nuestro Profesor Gua Don Juan Carlos Parra, profesor de nuestra facultad, nos gui como podamos comenzar y el fue quien nos hizo dirigirnos al CIMUBB en primer lugar.

Una vez en el CIMUBB vino todo la parte de familiarizarnos con la celda flexible donde la ayuda del Ingeniero de Soporte y Mantencin del laboratorio Don Luis Vera, fue realmente fundamental, ac descubrimos todo el funcionamiento del Scorbot, modos de operacin, su lenguaje de programacin, y todo lo necesario para lograr nuestro proyecto. 116

Captulo 4: Robtica

En esta parte debimos formularnos horarios para poder hacer uso del laboratorio, entonces esto se torno en un obstculo para poder avanzar mas rpido en nuestro proyecto, ya que nos limitada el tiempo que tenamos para trabajar con el robot, por lo tanto cada sesin la aprovechbamos al mximo. Una de nuestra mayores dificultades fue establecer la comunicacin serial con el robot debido al lenguaje de programacin en el que estbamos trabajando que es lenguaje C, esta parte nos tomo un buen tiempo lograr encontrar la mejor manera de comunicarnos con el robot, debido a que tenamos que encontrar una librera que nos entregara las herramientas necesarias para manejar el puerto, buscamos, probamos, programamos, hasta encontrar la mejor que fue la LnxComm, ella nos facilit gran parte del manejo del puerto.

Luego de esto vena el anlisis de datos por el puerto serial donde pasamos a otro dificultad, que fue como enviar los comandos, y descubrimos que el controlador interno de la celda flexible tienen rutinas de inicializacin y finalizacin que nos permiten enviar los comandos en ACL en un formato determinado, por lo que de esta manera el brazo robtico comprender la accin que le estamos solicitando.

Ms o menos a grandes rasgos esas fueron las dificultades para este captulo, tratamos de darle solucin a todos y si lo conseguimos, por lo tanto nos mostramos satisfechos con haber cumplido con los objetivos propuestos para este captulo.

117

Capitulo 5: Diseo, Integracin e Implementacin

5 Diseo, Integracin e Implementacin


Este captulo viene a ser la etapa culmine del proyecto debido a que a travs de todo los estudios desarrollados y prototipos implementados, debemos disear una solucin que sea capaz de integrar todo en un solo sistema, cumpliendo a cabalidad con los objetivos propuestos y los

requerimientos establecidos. Para lograr una visin de todo como un solo sistema se trata en primera instancia los casos de uso que vienen a ser el reflejo de lo especificado en los requerimientos, y que expresan su

comportamiento a travs de los diagramas de secuencia, luego continuamos con los diagramas de flujo, estos son los que en general nos dan una visin global de como interacta el sistema, con sus entidades, entre sus mismos procesos internos, ademas de sus flujos de datos, por lo tanto con ellos somos capaces de conocer sus alcances y limitaciones, para de esta forma ver completamente su funcionamiento, estos diagramas van acompaados de su diccionario de datos que detallan cada uno de los componentes en el diagrama, trasparentando cada accin propuesta en el diseo.

Luego de establecer el diseo lgico y antes de pasar al diseo fsico debemos exponer el tema referente a la integracin de las fases de desarrollo, donde los puntos a destacar son , primero la transformacin de pixeles a dcimas de milmetros, esto permite enlazar las fases de anlisis de imagen con la fase de la celda flexible, debido a que debemos encontrar una compatibilidad entre las unidades de medida que representan la ubicacin del centroide del objeto seleccionado en la superficie de trabajo. Otro aspecto de integracin es lo que ocurre entre las fases de lgica difusa y el brazo

robtico donde ambas deben complementarse debido a que la maquina difusa va a ser quien le indique a la celda flexible hacia donde moverse y cuanto moverse.

Luego debemos hacer referencia al diseo fsico del sistema donde primero hablamos de la biblioteca de desarrollo escogida para la implementacin de la interfaz grfica, destacando su importancia, y ventajeas principalmente, a continuacin se destaca la integracin fsica de las diferentes bibliotecas ocupadas en el desarrollo y como se integraron en un solo IDE, para dar paso al diagrama 118

Capitulo 5: Diseo, Integracin e Implementacin de clases de la implementacin y finalmente al diseo de la interfaz grfica.

5.1 Casos de Uso


Los Casos de Uso (CU) son descripciones narrativas que describen el comportamiento de un sistema desde el punto de vista del usuario. Ayudan a tener una mejor comprensin de los requerimientos del sistema, definir los lmites y las relaciones entre el sistema y el entorno. El formato utilizado para representar los casos de uso, consta de los siguientes elementos (Larman, 2003):

Caso de Uso: Nombre del Caso de Uso Actores: Lista de actores (agentes externos) Objetivo: Objetivo del Caso de Uso Precondiciones: Acciones necesarias para la correcta ejecucin del CU. Postcondiciones: Acciones que ocurren tras la ejecucin del CU. Escenario Principal (Flujo bsico): Descripcin en detalle de la ejecucin normal del Caso de Uso. Extensiones (Flujos alternos): Descripcin de otras formas de ejecucin del Caso de Uso. Otros: Requisitos especiales, Lista de tecnologa y variaciones de datos, etc.

119

Capitulo 5: Diseo, Integracin e Implementacin

Nombre: Actores: Usuario Scorbot

SELECCIONAR OBJETO

Objetivo: Seleccionar un objeto dentro del universo disponible. Precondiciones: Lo centroides de los objetos deben estar detectados. Postcondiciones: Genera las posiciones de desplazamiento del scorbot. Escenario Principal:

Accion del actor

Respuesta del Sistema

120

Capitulo 5: Diseo, Integracin e Implementacin 1.- El usuario realiza click sobre el botn 2.- El sistema despliega por pantalla la imagen 'siguiente', de la pantalla donde se despliegan original capturada por la cmara web pero todos los centroides localizados en la imagen mostrando botones correspondientes a cada uno binarizada de los objetos detectados.

3.- El usuario selecciona un objeto haciendo 4.- El sistema muestra un mensaje de alerta click sobre este. preguntando: 'Esta seguro que decea

seleccionar este objeto?', dando cabida a tres opciones: - Boton 'si': indica al scorbot capturar objeto - Boton 'no': retorna a la pantalla de objetos detectados. - Boton 'ver detalles': indica el centroide del objeto detectado en pixeles.

6.-

Scorbot

realiza

instrucciones

de 5.- El sistema por medio del procesamiento de los datos enva instrucciones de movimiento al scorbot.

desplazamiento

7.- Scorbot enva al respuesta sistema si se pudo realizar la instruccin de desplazamiento

Extensiones: 5.- si se devuelve una respuesta de desplazamiento que no se pudo realizar se termina el desplazamiento del objeto.

121

Capitulo 5: Diseo, Integracin e Implementacin

Nombre: Actores: Usuario Scorbot

SELECCIONAR DESTINO OBJETO

Objetivo: Depositar el objeto en alguna posicin dentro . Precondiciones: La pantalla de los botones que perteneces a los objetos. Postcondiciones: Finaliza proceso scorbot y se retorna a la pantalla de inicio. Escenario Principal:

Accion del actor

Respuesta del Sistema

1.- El usuario selecciona un objeto haciendo 2.- Llamar rutina para depositar objeto. click sobre este. 3.Scorbot realiza instrucciones de 4.- Una vez depositado el objeto se vualve a la pantalla de inicio del programa.

desplazamiento

Extensiones: 1.- Si se realiza un click fuera de los limites aceptados, se desplegara una alerta expresando dicho problema, teniendo que seleccionar nuevamente la posicin destino

122

Capitulo 5: Diseo, Integracin e Implementacin

Nombre: Actores: Usuario

ANALIZAR IMAGEN

Objetivo: Obtener centroides a partir del tratamiento de la imagen. Precondiciones: La imagen tiene que encontrarse disponible para poder analizarla. Postcondiciones: Obtener los pixeles correspondientes a los objetos encontrados. Escenario Principal:

Accin del actor

Respuesta del Sistema

1.- El sistema muestra una pantalla de inicio, 2.- Genera la ventana donde se despliega la cama donde el usuario debe seleccionar desde el men, web en vivo, donde esta muestra el area de capturar imagen inters, con todo lo que se encuentre dentro de ella 3.- El usuario realiza click sobre el botn 4.- Se muestra la imagen capturada. 'capturar imagen'. 5.- El usuario realiza click sobre el botn 6.- Aplicacin del algoritmo meanshift a la 'meanshif' imagen desplegndola por pantalla.

7.- El usuario realiza click sobre el botn 8.- Se despliega en pantalla la ventana de 'siguiente' binarizacin sin erosin

9.- El usuario realiza click sobre el botn 10.- Se despliega una nueva ventana mostrando 'binarizacion1' que corresponde a la binarizacin la imagen binarizada en un valor de umbral que normal. se puede cambiar a travs del slider.

11.- El usuario realiza click sobre el botn 'listo' 12.- Se minimiza la ventana de binarizacin una vez quedado satisfecho con el nivel de normal y vuelve a la pantalla de binarizacin sin umbral seleccionado. erosin, encontrndose esta vez activo el botn 'binarizacion2' que corresponde a la binarizacin 123

Capitulo 5: Diseo, Integracin e Implementacin inversa 13.- El usuario realiza click sobre el botn 14.- Se despliega una nueva ventana mostrando 'binarizacion2' la imagen binarizada en un valor de umbral que se puede cambiar a travs del slider. 15.- El usuario realiza click sobre el botn 'listo' 16.- Se minimiza la ventana de binarizacin una vez quedado satisfecho con el nivel de invertida y vuelve a la pantalla de binarizacin umbral seleccionado. sin erosin, encontrndose esta vez activo el botn 'mezclar' que corresponde a la

binarizacin inversa 17.- El usuario realiza click sobre el botn 18.- Se despliega en pantalla la mescla de las 'mezclar'. binarizaciones y activa boton 'siguiente'.

19.- El usuario realiza click sobre el botn 20.- Se despliega en pantalla la imagen aplicado 'siguiente'. la trasformacin morfolgica

21.- El usuario realiza click sobre el botn 22.- Se despliega el centroide de los objetos 'siguiente'. identificados.

Extensiones: 3,5,7.- Se puede retroceder a la pantalla anterior, por medio del botn del men 7.- Se puede avanzar a la siguiente etapa por medio del botn del men 13,15,17,19.- Se puede volver a la ventana de binarizacin normal, haciendo click sobre su ventana minimizada. 17,19.- Se puede volver a la ventana de binarizacin inversa, haciendo click sobre su ventana minimizada.

124

Capitulo 5: Diseo, Integracin e Implementacin Nombre: Actores: CamaraWeb SELECCIONAR IMAGEN

Objetivo: Seleccionar una imagen a partir el video transmitido por la cmara web. Precondiciones: Obtener imagen a partir de la cmara web. Postcondiciones: Obtencin del centroide de cada objeto. Escenario Principal:

Accin del actor

Respuesta del Sistema

2.- Transmisin de lo que obtiene la cmara a 1.- Sistema inicializa transmisin camaraWeb. traves de su sensor. 4.- Enviar captura imagen camaraWeb. 3.- Peticin de imagen a la cmara.

Extensiones:

5.2 Diagrama de Secuencias


El diagrama de secuencia de un sistema muestra grficamente los eventos que originan los actores y que impactan al sistema. Por lo tanto antes de hacer el diseo lgico de la aplicacin de software, es conveniente investigar y definir su comportamiento como una "caja negra". Se estudia el comportamiento del sistema, desde la perspectiva de qu es lo que hace, y no de cmo lo hace. Entonces como objetivo para lograr la comprensin de estos diagramas podemos decir, que el diagrama de secuencia de un sistema es una representacin que muestra, en determinado escenario de un caso de uso, los eventos generados por actores externos, su orden y los eventos internos del sistema. Estos diagramas son descritos en el Anexo III a continuacin del caso de uso. 125

Capitulo 5: Diseo, Integracin e Implementacin

126

Capitulo 5: Diseo, Integracin e Implementacin

127

Capitulo 5: Diseo, Integracin e Implementacin

128

Capitulo 5: Diseo, Integracin e Implementacin

5.3 Diseo Lgico


Este comprende un anlisis completo del sistema representado a travs de diagramas de flujo, por lo tanto vamos a tener una visin total y en distintos niveles de detalle del sistema, para mostrar los distintos procesos que lo componen y como estos interactuan con los diferentes actores, tambin para cada diagrama se especifica un diccionario de datos, que corresponde a una explicacin detallada de lo que realiza, cada actor, proceso y flujo de datos en este sistema. Esto nos ayudara a ver los alcances y limitaciones de nuestro sistema, debido a la visin global que nos entrega.

5.3.1

Diagrama de Flujo de Datos

Esta busca modelar un sistema desde el punto de vista de la informacin, en el cual se estudia como se usan los datos que corresponden a las entradas, en salidas que vendra a ser la informacin, por lo tanto el propsito para un Diagrama de Flujo de Datos es mostrar para un sistema o subsistema lo siguiente:

Cules son los lmites del sistema De dnde vienen los datos A dnde van los datos cuando dejan el sistema Dnde se almacenan los datos Qu procesos transforman los datos y las interacciones entre los procesos y los depsitos de datos

Definicin de Elementos: Entidades : Representan las Fuentes o Destinos delos Datos. Ejemplo : Paciente,Alumno, Contabilidad, Cliente, etc.. Proceso: Transformacin de los Datos.

129

Capitulo 5: Diseo, Integracin e Implementacin Ejemplos: Calcular Total Factura, Inscribir Asignatura, Registrar Reserva.,etc. Flujos de Informacin: Movimiento de Datos. Por ejemplo: Detalle de Factura, Datos del Cliente, Orden de Compra, etc. Se compone de Datos Elementales. Almacenes de Datos: Repositorio delos datos procesados y utilizados por los procesos del sistema. Por ejemplo: Facturas,Clientes, Productos, Facturas Rechazadas, Habitaciones Reservadas, etc.

La notacin de DFD que ocuparemos en nuestro proyecto es la de Yourdon/Demarco, con esta breve presentacin de los diagramas, se especificaran por niveles. Tanto el:

Diagrama de Flujo de Datos Contexto Diagrama de Flujo de Datos Nivel Superior Diagrama de Flujo de Datos Detalle

5.3.1.1

Diccionario de Datos DFD

El diccionario de datos complementa el diseo mostrado en todos los puntos anteriores. Este tiene tres componentes esenciales:

Especificacin de procesos: Por cada proceso especificado en el sistema, se indica su funcin, los datos que recibe, y los datos que salen de el .

Especificacin de flujo de datos datos Corresponde a los informacin que circula entre procesos, entidades y almacenes de datos, se describe cada una de estas en forma detallada.

Especificacin de Entidades

Se Describe las entidades del sistema, su rol e importancia en el sistema

130

Capitulo 5: Diseo, Integracin e Implementacin Se escogi el DFD de detalle para realizar su diccionario de datos ya que este comprende todos los procesos y flujos que interactuan en el sistema, este diccionario es presentado a continuacin junto a los DFD

131

Capitulo 5: Diseo, Integracin e Implementacin 5.3.1.2 DFD Nivel Contexto

132

Capitulo 5: Diseo, Integracin e Implementacin

5.3.1.3

DFD Nivel Superior

133

Capitulo 5: Diseo, Integracin e Implementacin

5.3.1.4

DFD Nivel Detalle del Proceso 1

134

Capitulo 5: Diseo, Integracin e Implementacin

Diccionario de Datos Nivel de Detalle Segmentar Imagen Descripcin de procesos Segmentar Imagen Nivel Numero Nombre Parte-de Descripcin Narrativa Detalle 1.1 Realizar MeanShift Segmentar Imagen Corresponde a la aplicacin del algoritmo meanshift a la imagen que hemos capturado desde la cmara web, pro lo tanto despus de ocurrida esta accin podemos continuar con las dems etapas de anlisis de imagen. solicitud aplicacin meanshift Datos imagen meanshift respuesta aplicacin meanshift Detalle 1.2 Realizar binarizacin y mezcla imagen Segmentar Imagen Este proceso nos permite realizar la etapa de binarizacin, para la cual requerimos de la imagen a la que ya le aplicamos el algoritmo meanshift por lo tanto se encuentra en condiciones de realizar la binarizacin normal e invertida para posteriormente efectuar la mezcla de ambas. solicitud binarizacin normal solicitud binarizacin datos imagen binarizada invertida datos imagen binarizada normal Datos imagen meanshift solicitud binarizacin invertida solicitud mezcla binarizacin Respuesta solicitud binarizacin Respuesta solicitud binarizacin normal Respuesta solicitud binarizacin invertida Respuesta solicitud mezcla binarizacin 135

Flujo de Entrada Flujo de Salida

Nivel Numero Nombre Parte-de Descripcin Narrativa

Flujo de Entrada

Flujo de Salida

Capitulo 5: Diseo, Integracin e Implementacin datos imagen a binarizar normal datos imagen a binarizar datos imagen a binarizar invertida Nivel Numero Nombre Parte-de Descripcin Narrativa Detalle 1.3 Realizar binarizacin invertida Segmentar Imagen Corresponde a la etapa de aplicacin de binarizacin inversa, a la imagen meanshift, esto nos ayudara a la deteccin del objeto en fases posteriores, por lo tanto una vez encontrado el nivel de umbral adecuado para destacar el o los objetos, la binarizacin inversa esta lista para ser mezclada con la normal. Respuesta solicitud umbral binarizacin invertida datos imagen a binarizar invertida solicitud umbral binarizacin invertida datos imagen binarizada invertida

Flujo de Entrada Flujo de Salida

Nivel Numero Nombre Parte-de Descripcin Narrativa

Detalle 1.4 Realizar binarizacin normal Segmentar Imagen Corresponde a la etapa de aplicacin de binarizacin normal, a la imagen meanshift, esto nos ayudara a la deteccin del objeto en fases posteriores, por lo tanto una vez encontrado el nivel de umbral adecuado para destacar el o los objetos, la binarizacin normal esta lista para ser mezclada con la inversa. Respuesta solicitud umbral binarizacin normal datos imagen a binarizar normal solicitud umbral binarizacin normal datos imagen binarizada normal

Flujo de Entrada Flujo de Salida

Flujo de Entrada en el proceso 1.1 de Realizar Meanshift Nombre Flujo Flujo Descripcin Solicitud aplicacin Meanshift Datos enviados al sistema para poder realizar la aplicacin del algoritmo Meanshift una vez capturada la imagen del video en vivo desplegado por el sistema. 136

Capitulo 5: Diseo, Integracin e Implementacin Origen Destino Entidad: Usuario Proceso 1: Segmentar Imagen

Flujo de salida del proceso 1.1 Realizar meanshift

Nombre Flujo Flujo Descripcin Origen Destino

Datos Imagen Meanshift Envia los datos de la imagen trasformada segn la aplicacin del algoritmo meanshift Proceso 1.1: Realizar Menashift Proceso 1.2: Realizar Binarizacin y Mezcla Imagen

Nombre Flujo Flujo Descripcin

respuesta aplicacin meanshift Es la informacin que se le hace llegar al usuario, una vez aplicado el algoritmo Meanshift, esta respuesta es la nueva imagen una vez aplicado este algoritmo. Proceso 1.1: Realizar Menashift Entidad : Usuario

Origen Destino

Flujo de Entrada en el proceso 1.2 de Realizar Binarizacin y Mezcla Imagen

Nombre Flujo Flujo Descripcin

Solicitud Mezcla Binarizacin. Accin realizada por el usuario que consta de hacer click sobre el botn mesclar, una vez que ya se hayan hecho las binarizaciones tanto la Normal Como la Inversa, para de este modo Obtener una sola imagen correspondiente a la mezcla de ambas binarizaciones. Entidad: Usuario Proceso 1.2: Realizar Binarizacion y Mezcla Imagen Solicitud Binarizacin Normal. Datos enviados al sistema mediante click realizado por el usuario para solicitar la binarizacin normal. Entidad: Usuario Proceso 1.2: Realizar Binarizacion y Mezcla Imagen

Origen Destino Nombre Flujo Flujo Descripcin Origen Destino

137

Capitulo 5: Diseo, Integracin e Implementacin

Nombre Flujo Flujo Descripcin Origen Destino Nombre Flujo Flujo Descripcin

Solicitud Binarizacin Invertida. Datos enviados al sistema mediante click realizado por el usuario para solicitar la binarizacin invertida. Entidad: Usuario Proceso 1.2: Realizar Binarizacion y Mezcla Imagen Solicitud Binarizacin. Datos enviados al sistema correspondientes a la imagen aplicado meanshift previamente para poder realizar binarizacin posteriormente norma e inversa. Entidad: Usuario Proceso 1.2: Realizar Binarizacion y Mezcla Imagen

Origen Destino

Nombre Flujo Flujo Descripcin Origen Destino

Dato Imagen Binarizada Inversa Datos resultantes de la aplicacin de la binarizacin invertida Entidad: Usuario Proceso 1.2: Realizar Binarizacin y Mezcla Imagen

Nombre Flujo Flujo Descripcin Origen Destino

Dato Imagen Binarizada Normal Datos resultantes de la binarizacin normal Entidad: Usuario Proceso 1.2: Realizar Binarizacin y Mezcla Imagen

Flujo de salida del proceso 1.2 Realizar Binarizacin y Mezcla Imagen

Nombre Flujo Flujo Descripcin Origen Destino

Datos imagen a binarizar invertida Se envi la informacin referente a la imagen para que se le aplique la binarizacin invertida. Proceso 1.2: Realizar Binarizacin y Mezcla Imagen Proceso 1.3: Realizar Binarizacin Invertida

138

Capitulo 5: Diseo, Integracin e Implementacin

Nombre Flujo Flujo Descripcin

respuesta solicitud binarizacion Corresponde a la respuesta de la accin de iniciar el proceso de binarizacin de imagen, esta nos indica que podemos comenzar la binarizacin normal de la imagen. Proceso 1.2: Realizar Binarizacin y Mezcla Imagen Entidad : Usuario

Origen Destino

Nombre Flujo Flujo Descripcin Origen Destino

respuesta solicitud binarizacin normal La respuesta de esta solicitud es la imagen lista para aplicar binarizacin normal sobre ella. Proceso 1.2: Realizar Binarizacin y Mezcla Imagen Entidad : Usuario

Nombre Flujo Flujo Descripcin Origen Destino

Datos imagen a binarizar normal Se envi la informacin referente a la imagen para que se le aplique la binarizacin normal. Proceso 1.2: Realizar Binarizacin y Mezcla Imagen Proceso 1.4: Realizar Binarizacin Normal

Nombre Flujo Flujo Descripcin Origen Destino Nombre Flujo Flujo Descripcin Origen Destino

respuesta solicitud binarizacin invertida La respuesta de esta solicitud es la imagen lista para aplicar binarizacin invertida sobre ella. Proceso 1.2: Realizar Binarizacin y Mezcla Imagen Entidad : Usuario respuesta solicitud mezcla binarizacin Este flujo entrega el resultado de mezclar la imagen binarizada normal y binarizada invertida, por lo tanto se genera una nueva imagen. Proceso 1.2: Realizar Binarizacin y Mezcla Imagen Entidad : Usuario

139

Capitulo 5: Diseo, Integracin e Implementacin

Nombre Flujo Flujo Descripcin Origen Destino

Datos Imagen binarizada Entrega la imagen mezclada (Binarizacin Normal-Binarizacin Invertida) al siguiente proceso que es la transformacin morfolgica Proceso 1.2: Realizar Binarizacin y Mezcla Imagen Proceso 2: Transformacin Morfolgica

Flujo de Entrada en el proceso 1.3 de Realizar Meanshift Nombre Flujo Flujo Descripcin Origen Destino Nombre Flujo Flujo Descripcin Dato Imagen Binarizada Inversa Datos resultantes de la aplicacin de la binarizacin invertida Proceso 1.2: Realizar Binarizacin y Mezcla Imagen Proceso 1.3: Realizar Meanshift Respuesta Solicitud Umbral Binarizacin Invertida. Estos datos desplegados en una pantalla del sistema muestra el resultado del valor ingresado por el usuario al momento de cambiar el nivel de umbral, por medio del slider Entidad: Usuario Proceso 1.3: Realizar Meanshift

Origen Destino

Flujo de salida del proceso 1.3 Realizar Binarizacin Invertida

Nombre Flujo Flujo Descripcin Origen Destino Nombre Flujo Flujo Descripcin Origen Destino

solicitud umbral binarizacin Invertida Envi una solicitud al usuario respecto al valor del nivel de umbral que se le debe aplicar a la binarizacin invertida Proceso 1.3 Realizar Binarizacin Invertida Entidad : Usuario Datos Imagen Binarizada invertida Corresponde a los datos de la imagen a la cual se le aplico la binarizacin invertida, por lo cual esta lista para ser mezclada. Proceso 1.3 Realizar Binarizacin Invertida Proceso 1.2: Realizar Binarizacin y Mezcla Imagen 140

Capitulo 5: Diseo, Integracin e Implementacin

Flujo de Entrada en el proceso 1.4 de Realizar Binarizacion Normal

Nombre Flujo Flujo Descripcin

Respuesta Solicitud Umbral Binarizacin Normal. Estos datos desplegados en una pantalla del sistema muestra el resultado del valor ingresado por el usuario al momento de cambiar el nivel de umbral, por medio del slider Entidad: Usuario Proceso 1.4: Realizar binarizacion normal

Origen Destino

Nombre Flujo Flujo Descripcin

Datos Imagen a binarizar Normal Imagen binarizada con un valor de umbral por defecto el cual se despliega en el sistema con un slider para cambiar su valor de umbral de binarizacin Entidad: Usuario Proceso 1.4: Realizar binarizacion normal

Origen Destino

Flujo de salida del proceso 1.4 Realizar Binarizacin Normal

Nombre Flujo Flujo Descripcin Origen Destino

solicitud umbral binarizacin normal Envi una solicitud al usuario respecto al valor del nivel de umbral que se le debe aplicar a la binarizacin normal Proceso 1.4 Realizar Binarizacin Normal Entidad : Usuario

Nombre Flujo Flujo Descripcin Origen Destino

Datos Imagen Binarizada Normal Corresponde a los datos de la imagen a la cual se le aplico la binarizacin normal, por lo cual esta lista para ser mezclada. Proceso 1.4 Realizar Binarizacin Normal Proceso 1.2: Realizar Binarizacin y Mezcla Imagen

141

Capitulo 5: Diseo, Integracin e Implementacin 5.3.1.5 DFD Nivel Detalle del Proceso 2

142

Capitulo 5: Diseo, Integracin e Implementacin Transformacin morfolgica

Nivel Numero Nombre Parte-de Descripcin Narrativa

2 2,1 Realizar Erosin Transformacin morfolgica Proceso por el cual la imagen previamente binarizada se le aplica erosin para poder juntar partes de la imagen que no se encuentran bien juntas debido posiblemente a la eleccin del umbral. Datos imagen Binarizada Datos imagen Erosionada

Flujo de Entrada Flujo de Salida

Nivel Numero Nombre Parte-de Descripcin Narrativa

2 2,2 Realizar Dilatacin Transformacin morfolgica Proceso por el cual la imagen previamente a sido erosionada por lo que mediante a la dilatacin se volver a la normalidad los pixeles que han aumentado su tamao. Datos imagen Erosionada Datos imagen Imagen Transformada

Flujo de Entrada Flujo de Salida

Flujo de Entrada en el proceso 2.1 de Realizar Erosin.

Nombre Flujo Flujo Descripcin Origen Destino

Datos Imagen Binarizada Datos correspondientes a la imagen ya binarizada, osea enviada en blanco, para aplicar el procesos de erosin Proceso 1: Segmentar Imagen Proceso 2.1: Realizar Erosin

143

Capitulo 5: Diseo, Integracin e Implementacin Flujo de Salida en el proceso 2.1 de Realizar Dilatacin. Nombre Flujo Flujo Descripcin Origen Destino Datos Imagen erosionada Datos correspondientes a la imagen erosionada, que ya se encontrara en condiciones optimas para ser dilatada Proceso 2.1: Realizar Erosin Proceso 2.2: Realizar Dilatacin

Flujo de Salida del proceso 2.2 Realizar Dilatacin

Nombre Flujo Flujo Descripcin Origen Destino

Datos Imagen Transformada Una vez aplicada la dilatacin a la imagen se envi esta a la siguiente etapa donde se analizaran los objetos. Proceso 2.2 Realizar Dilatacin Proceso 3: Anlisis Objeto

Flujo de Entrada del proceso 2.2 Realizar Dilatacin Nombre Flujo Flujo Descripcin Origen Destino Datos Imagen Erosionada Una vez aplicada la erosin a la imagen se envi esta a la siguiente etapa donde se dilatara. Proceso 2.1 Realizar Dilatacin Proceso 2.2 Realizar Dilatacin

144

Capitulo 5: Diseo, Integracin e Implementacin 5.3.1.6 DFD Nivel Detalle Proceso 3

145

Capitulo 5: Diseo, Integracin e Implementacin Analizar Objeto Nivel Numero Nombre Parte-de Descripcin Narrativa 2 3,1 Realizar Bsqueda de contornos Analizar objeto Obtiene todo los contornos a partir de la imagen previamente binarizada, procesndola y obteniendo de cada uno de los contornos el los rectngulos que componen al contorno correspondiente, guardndolo en el almacn lista de objetos Dato imagen transformada contornos Datos rectngulo del contorno,datos contorno,datos rectangulo del contorno.

Flujo de Entrada Flujo de Salida

Nivel Numero Nombre Parte-de Descripcin Narrativa Flujo de Entrada Flujo de Salida

2 3,2 Calcular centroides Analizar objeto Calcular los centroide mediante la imagen binarizada y el rectngulo correspondiente al rea justa del contorno de cada objeto. Dato imagen transformada centroide,Datos rectngulo del contorno Datos centroide

Nivel Numero Nombre Parte-de Descripcin Narrativa

2 3,3 Identificacin Objetos Analizar objeto Proceso en el que se muestra por pantalla los centroides correspondientes a cada objetos, posteriormente se despliega cada uno de los botones que estn asociado a su contorno para poder pincharlos y as seleccionar el objeto a ser capturado. Solicitud seleccin objeto,respuesta solicitud lista objeto Respuesta Solicitud seleccin objeto, solicitud lista objeto, datos centroide pixel X objeto seleccionado,datos centroide pixel Y objeto seleccionado. 146

Flujo de Entrada Flujo de Salida

Capitulo 5: Diseo, Integracin e Implementacin

Nivel Numero Nombre Parte-de Descripcin Narrativa Flujo de Entrada Flujo de Salida

2 3,4 Identificacin Destino Objetos Analizar objeto Proceso en donde el usuario hace un click sobre la posicin destino, identificando las coordenadas posteriormente al scorbot. Solicitud destino objeto,Respuesta solicitud informacin lista objetos Respuesta Solicitud destino objeto,datos centroide pixel X posicin destino,datos centroide pixel Y posicin destino, solicitud informacin lista objetos

Flujo de Entrada en el proceso 3.1 de Realizar Bsqueda de Contorno.

Nombre Flujo Flujo Descripcin

Datos Imagen Transformada Contornos. Datos correspondientes a la imagen ya binarizada, osea enviada en blanco, pero aplicado los procesos de dilatacin y de emocionar, generando producto de ello una nueva imagen que se transmite Proceso 2: Transformacin Morfolgica Proceso 3.1: Realizar bsqueda Contornos

Origen Destino

Flujo de Salida del proceso 3.1 Realizar Bsqueda de Contornos Nombre Flujo Flujo Descripcin Origen Destino Datos del rectngulo del contorno Almacena informacin referente al rectngulo de contornos de la imagen Proceso 3.1 Realizar Bsqueda de Contornos Almacn de datos : Lista Objetos

Nombre Flujo Flujo Descripcin Origen Destino

Datos contorno Envi la informacin de los contornos detectados en la imagen Proceso 3.1 Realizar Bsqueda de Contornos Almacn de datos : Lista Objetos

147

Capitulo 5: Diseo, Integracin e Implementacin

Nombre Flujo Flujo Descripcin Origen Destino

Datos Rectngulo del contorno Contornos relevantes para calcular el centroide del objeto en la imagen obtenida desde la cmara. Proceso 3.1 Realizar Bsqueda de Contornos Proceso 3.2 calcular centroides

Flujo de Entrada en el proceso 3.2 de Calcular Centroides. Nombre Flujo Flujo Descripcin Origen Destino Datos Imagen Transformada Centroide. Datos correspondientes a la imagen ya binarizada aplicado las transformaciones morfolgicas de erosionar y dilatar Proceso 2: Transformacin Morfolgica Proceso 3.2: Calcular Centroides

Nombre Flujo Flujo Descripcin Origen Destino

Datos Rectangulo del Contorno Datos correspondientes al rectngulo del objeto, utilizado como dato para obtener su centroide. Proceso 3.1: Realizar bsqueda Contornos Proceso 3.2: Calcular Centroides

Flujo de Salida del proceso 3.2 Calcular Centroide

Nombre Flujo Flujo Descripcin Origen Destino

Datos Centroide Se almacenan las coordenadas del centroide del objeto en el almacn para que posteriormente sean consultadas. Proceso 3.2 calcular centroides Almacn de datos : Lista Objetos

148

Capitulo 5: Diseo, Integracin e Implementacin Flujo de Entrada en el proceso 3.3 de Identificar Objetos.

Nombre Flujo Flujo Descripcin Origen Destino

Respuesta Solicitud lista Objetos Datos de los objetos almacenados para poder desplegarlos por pantalla, con sus respectivos botones. Almacn de datos: Lista Objetos Proceso 3.3: Identificar Objetos

Nombre Flujo Flujo Descripcin Origen Destino

Solicitud seleccin Objetos Dato entregado por el usuario correspondiente a la coordenadas para obtener un objeto a partir de los objetos que aparecen por pantalla Usuario Proceso 3.3: Identificar Objetos

Flujo de Salida del proceso 3.3 Identificar Objetos Nombre Flujo Flujo Descripcin Respuesta solicitud seleccin objeto Comprende al cuadro de dialogo que le muestra al usuario que desea hacer al haber seleccionado el objeto, este posee tres opciones: si: tomar el objeto seleccionado no: volver a la pantalla de seleccin de onjetos para escoger uno nuevo ver detalle:muestra el centroide del objeto. Proceso 3.3 Identificar Objetos Entidad : Usuario

Origen Destino

Nombre Flujo Flujo Descripcin Origen Destino

Solicitud Lista Objetos Solicita la informacin al almacn perteneciente a la imagen Proceso 3.3 Identificar Objetos Almacn de datos : Lista Objetos

149

Capitulo 5: Diseo, Integracin e Implementacin Nombre Flujo Flujo Descripcin Origen Destino Datos centroide pixel X objeto seleccionado Flujo de informacin que representa la ubicacin del objeto en la coordenada X, del objeto seleccionado. Proceso 3.3 Identificar Objetos Proceso 5 Analizar Coordenadas

Nombre Flujo Flujo Descripcin Origen Destino

Datos centroide pixel Y objeto seleccionado Flujo de informacin que representa la ubicacin del objeto en la coordenada Y, del objeto seleccionado. Proceso 3.3 Identificar Objetos Proceso 5 Analizar Coordenadas

Flujo de Entrada en el proceso 3.4 de Identificar Destino Objetos. Nombre Flujo Flujo Descripcin Origen Destino Respuesta Solicitud Informacin lista Objetos Datos correspondientes a los datos guardados en la lista de objetos que contiene los centroides, contorno y rectngulo del objeto. Almacn de datos: Lista Objetos Proceso 3.3: Identificar Destino Objeto

Nombre Flujo Flujo Descripcin Origen Destino

Solicitud Destino Objetos Dato entregado por el usuario correspondiente a la coordenadas para dejar el objeto seleccionando la pantalla con el mouse a partir de un click. usuario Proceso 3.3: Identificar Destino Objeto

150

Capitulo 5: Diseo, Integracin e Implementacin Flujo de Salida del proceso 3.4 Identificar Destino Objeto

Nombre Flujo Flujo Descripcin Origen Destino

Respuesta solicitud destino Objeto Despus de procesar la posicin de destino del objeto, se envi la respuesta de este anlisis al usuario Proceso 3.4 Identificar Destino Objeto Entidad: Usuario

Nombre Flujo Flujo Descripcin Origen Destino

Datos centroide pixel X posicin destino Corresponde a la posicin destino de la coordenada X en la superficie del espacio de trabajo, que contiene a los dems objetos. Proceso 3.4 Identificar Destino Objeto Proceso 5 Analizar Coordenada

Nombre Flujo Flujo Descripcin Origen Destino

Datos centroide pixel Y posicin destino Corresponde a la posicin destino de la coordenada Y en la superficie del espacio de trabajo, que contiene a los dems objetos. Proceso 3.4 Identificar Destino Objeto Proceso 5 Analizar Coordenada

Nombre Flujo Flujo Descripcin Origen Destino

Solicitud Informacin lista de Objetos Corresponde a los solicitud de los datos necesarios para analizar la posicin de destino del objeto en la superficie de trabajo. Proceso 3.4 Identificar Destino Objeto Almacn de datos : Lista Objetos

151

Capitulo 5: Diseo, Integracin e Implementacin 5.3.1.7 DFD Nivel Detalle del Proceso 4

152

Capitulo 5: Diseo, Integracin e Implementacin Obtener output cmara web

Nivel Numero Nombre Parte-de Descripcin Narrativa Flujo de Entrada Flujo de Salida

2 4,1 Transmisin Video Aplicacin Obtener output cmara web Obtiene la salida que obtiene la cmara web hacia el sistema, mostrando al usuario lo que ocurre en el campo de vision. Respuesta Solicitud video, solicitud imagen Respuesta Solicitud Imagen, Solicitud video

Nivel Numero Nombre Parte-de Descripcin Narrativa Flujo de Entrada Flujo de Salida

2 4,2 Captura imagen del video Obtener output cmara web Obtiene una imagen del video que es transmitido en el sistema a travs de la cmara web, esta instruccin la solicita el usuario Respuesta Solicitud Imagen,solicitud captura imagen solicitud imagen,respuesta solicitud captura imagen

Flujo de Entrada en el proceso 4.1 de Transmisin Video Aplicacin.

Nombre Flujo Flujo Descripcin Origen Destino

Solicitud Imagen Informacin de peticin de la Imagen a Obtener de la webcam Proceso 4.2: Captura imagen de video Proceso 4.1: Transmisin video Aplicacin

Nombre Flujo Flujo Descripcin Origen Destino

Respuesta Solicitud Video Datos de video de salida obtenida de la cmara ser procesados Entidad: Cmara Web. Proceso 4.1: Transmisin video Aplicacin 153

Capitulo 5: Diseo, Integracin e Implementacin

Flujo de Salida del Proceso 4.1 Transmisin Video Aplicacin Nombre Flujo Flujo Descripcin Origen Destino Solicitud Video Envi la sugerencia a la cmara web, que se necesita la utilizacin del video que esta nos entrega. Proceso 4.1 Transmisin Video Aplicacin Entidad: CamaraWeb

Nombre Flujo Flujo Descripcin Origen Destino

Respuesta Solicitud imagen Envi los datos de la imagen que se capturo, estos datos representan la imagen de la superficie. Proceso 4.1 Transmisin Video Aplicacin Proceso 4.2 Capturar imagen del video

Flujo de Entrada en el proceso 4.2 de Captura imagen del video.

Nombre Flujo Flujo Descripcin Origen Destino

Solicitud Captura Imagen Informacin de peticin de captura de una imagen asociado al video transmitido por la webcam Entidad: Usuario Proceso 4.2: Captura imagen de video

Nombre Flujo Flujo Descripcin Origen Destino

Respuesta Solicitud Imagen Dato de la imagen pedida por el usuario,tratada desde la webcam Proceso 4.1: Transmisin video Aplicacin Proceso 4.2: Captura imagen de video

154

Capitulo 5: Diseo, Integracin e Implementacin Flujo de Salida del proceso 4.2 Capturar imagen del video

Nombre Flujo Flujo Descripcin Origen Destino

Respuesta solicitud captura imagen Es la informacin referente a la captura de la imagen, es decir se muestra por pantalla la imagen capturada del video emitido por la cmara. Proceso 4.2 Capturar imagen del video Entidad: Usuario

Nombre Flujo Flujo Descripcin

Solicitud Imagen Envi la solicitud de la necesidad de obtener una imagen desde el video entregado por la cmara de la superficie actual donde se encuentran los objetos. Proceso 4.2 Capturar imagen del video Proceso 4.1 Transmisin Video Aplicacin

Origen Destino

155

Capitulo 5: Diseo, Integracin e Implementacin 5.3.1.8 DFD Nivel Detalle del Proceso 5

156

Capitulo 5: Diseo, Integracin e Implementacin Analizar coordenadas

Nivel Numero Nombre Parte-de Descripcin Narrativa

2 5,1 Conversin a dcimas de milmetros Analizar Coordenadas Proceso realizado para convertir los pixeles enviados correspondientes al centroide del objeto en cuestin, o de la nueva localizacin de este a tener a dcimas de milmetros. Datos centroide pixel X objeto seleccionado,Datos centroide pixel Y objeto seleccionado,Datos centroide pixel Y posicin destino,Datos centroide pixel X posicin destino Coordenada X depositar objeto,Coordenada Y depositar objeto, coordenada X centroide objeto seleccionado,coordenada Y centroide objeto seleccionado

Flujo de Entrada

Flujo de Salida

Nivel Numero Nombre Parte-de Descripcin Narrativa

2 5,2 Maquina Difusa Analizar Coordenadas Proceso que le confiere cierto grado de conocimiento al sistema, mediante la introduccin de los centroides establecidos se calcula el porcentaje de desplazamiento que se debe mover. coordenada X centroide objeto seleccionado,coordenada Y centroide objeto seleccionado, nueva posicin Scorbot en Y,nueva posicin Scorbot en X. Margen de error eje X,Margen de error eje Y.

Flujo de Entrada

Flujo de Salida

157

Capitulo 5: Diseo, Integracin e Implementacin Nivel Numero Nombre Parte-de Descripcin Narrativa 2 5,3 Interpretacin valores maquina difusa Analizar Coordenadas Interpretacin que se le da al porcentaje que se debe realizar del movimiento obtenido de la maquina difusa, enviando estos valores al proceso de comunicacin scorbot Margen de error eje X,Margen de error eje Y. Desplazamiento en coordenada X,Desplazamiento en coordenada Y

Flujo de Entrada Flujo de Salida

Flujo de Entrada en el proceso 5.1 de Conversin a dcimas de milmetros.

Nombre Flujo Flujo Descripcin

Datos centroide pixel X objeto seleccionado Conversin de los pixeles obtenidos del centroide del objeto correspondientes al pixel X origen para pasarlos a dcimas de milmetros y poder trabajar en las mismas medidas que trabaja el Scorbot Proceso 3: Anlisis Objeto Proceso 5.1: Conversin a Dcimas de Milmetros

Origen Destino

Nombre Flujo Flujo Descripcin

Datos centroide pixel Y objeto seleccionado Conversin de los pixeles obtenidos del centroide del objeto correspondientes al pixel Y origen para pasarlos a dcimas de milmetros y poder trabajar en las mismas medidas que trabaja el Scorbot Proceso 3: Anlisis Objeto Proceso 5.1: Conversin a Dcimas de Milmetros

Origen Destino

Nombre Flujo Flujo Descripcin

Datos centroide pixel X posicin destino Conversin de los pixeles obtenidos del centroide del objeto correspondientes al pixel Y destino para pasarlos a dcimas de milmetros y poder trabajar en las mismas medidas que trabaja el Scorbot Proceso 3: Anlisis Objeto Proceso 5.1: Conversin a Dcimas de Milmetros

Origen Destino

158

Capitulo 5: Diseo, Integracin e Implementacin

Nombre Flujo Flujo Descripcin

Datos centroide pixel Y posicin destino Conversin de los pixeles obtenidos del centroide del objeto correspondientes al pixel Y destino para pasarlos a dcimas de milmetros y poder trabajar en las mismas medidas que trabaja el Scorbot Proceso 3: Anlisis Objeto Proceso 5.1: Conversin a Dcimas de Milmetros

Origen Destino

Flujo de Salida del Proceso 5.1 Conversin a dcimas de milmetros

Nombre Flujo Flujo Descripcin Origen Destino

Coordenada X centroide objeto seleccionado Corresponden a la coordenada X del objeto trasformada a dcimas de milmetros Proceso 5.1 Conversin a dcimas de milmetros Proceso 5.2 Maquina Difusa

Nombre Flujo Flujo Descripcin Origen Destino

Coordenada Y centroide objeto seleccionado Corresponden a la coordenada Y del objeto trasformada a dcimas de milmetros Proceso 5.1 Conversin a dcimas de milmetros Proceso 5.2 Maquina Difusa

Nombre Flujo Flujo Descripcin Origen Destino

Coordenada X posicin destino Corresponden a la coordenada X donde se va a desplazar el objeto trasformada a dcimas de milmetros Proceso 5.1 Conversin a dcimas de milmetros Proceso 6 Comunicacin Scorbot

159

Capitulo 5: Diseo, Integracin e Implementacin Nombre Flujo Flujo Descripcin Origen Destino Coordenada Y posicin destino Corresponden a la coordenada Y donde se va a desplazar el objeto trasformada a dcimas de milmetros Proceso 5.1 Conversin a dcimas de milmetros Proceso 6 Comunicacin Scorbot

Flujo de Entrada en el proceso 5.2 de Maquina Difusa.

Nombre Flujo Flujo Descripcin Origen Destino

Coordenada X centroide objeto seleccionado Dato correspondiente a el eje X del centroide expresado en dcimas de milmetros para ser procesado por la maquina difusa Proceso 5.1: Conversin a Dcimas de Milmetros Proceso 5.2: Maquina Difusa

Nombre Flujo Flujo Descripcin Origen Destino Nombre Flujo Flujo Descripcin

Coordenada Y centroide objeto seleccionado Dato correspondiente a el eje Y del centroide expresado en dcimas de milmetros para ser procesado por la maquina difusa Proceso 5.1: Conversin a Dcimas de Milmetros Proceso 5.2: Maquina Difusa Nueva Posicin Scorbot en X Dato correspondiente a la posicin del scorbot una vez desplazado en el eje X, utilizndose para ser procesado por la maquina difusa y obtener de ellos nuevas posiciones de salida en conjunto con el eje Y Proceso 6: comunicacin Scorbot Proceso 5.2: Maquina Difusa Nueva Posicin Scorbot en Y Dato correspondiente a la posicin del scorbot una vez desplazado en el eje Y , utilizndose para ser procesado por la maquina difusa y obtener de ellos nuevas posiciones de salida, en conjunto con el eje X Proceso 6: comunicacin Scorbot Proceso 5.1: Conversin a Dcimas de Milmetros

Origen Destino Nombre Flujo Flujo Descripcin

Origen Destino

160

Capitulo 5: Diseo, Integracin e Implementacin

Flujo de Salida del Proceso 5.2 Maquina Difusa

Nombre Flujo Flujo Descripcin Origen Destino

Margen error eje X Es el valor porcentual que nos indica cuanto y hacia donde debemos mover la celda flexible en su coordenada X Proceso 5.2 Maquina Difusa Proceso 5.3 Interpretacin valores maquina difusa

Nombre Flujo Flujo Descripcin Origen Destino

Margen error eje Y Es el valor porcentual que nos indica cuanto y hacia donde debemos mover la celda flexible en su coordenada Y Proceso 5.2 Maquina Difusa Proceso 5.3 Interpretacin valores maquina difusa

Flujo de Entrada en el proceso 5.3 de Interpretacin de Valores Maquina Difusa.

Nombre Flujo Flujo Descripcin Origen Destino

Margen Error eje X Dato correspondiente al margen de error en la coordenada X obtenido de la maquina difusa, a ser procesada Proceso 5.2: Maquina Difusa Proceso 5.3: Interpretacin valores Maquina difusa

Nombre Flujo Flujo Descripcin Origen Destino

Margen Error eje Y Dato correspondiente al margen de error en la coordenada Y obtenido de la maquina difusa, a ser procesada Proceso 5.2: Maquina Difusa Proceso 5.3: Interpretacin valores Maquina difusa

161

Capitulo 5: Diseo, Integracin e Implementacin Flujo de Salida del Proceso 5.3 Interpretacin valores maquina difusa

Nombre Flujo Flujo Descripcin Origen Destino

Desplazamiento en coordenada X Es el valor que nos indica cuanto y hacia donde debemos mover la celda flexible en su coordenada X. Proceso 5.3 Interpretacin valores maquina difusa Proceso 6 Comunicacin Scorbot

162

Capitulo 5: Diseo, Integracin e Implementacin 5.3.1.9 DFD Nivel Detalle del Proceso 6

163

Capitulo 5: Diseo, Integracin e Implementacin

Comunicacin Scorbot

Nivel Numero Nombre Parte-de Descripcin Narrativa Flujo de Entrada Flujo de Salida

2 6,1 Escritura en puerto Serial Comunicacin Scorbot Proceso correspondiente a enviar instrucciones en ACL para establecer una comunicacin con el Scorbot a travs de puerto serial Comando Tomar Objeto,comando desplazar objeto. Solicitud finalizacin celda, envo de comandos, inicializacin celda flexible. 2 6,2 Lectura del puerto Serial Comunicacin Scorbot Se establece la recepcin de los mensajes obtenidos del scorbot de todas las respuestas de los mensajes enviados hacia el. Respuesta inicializacin celda flexible,Respuesta envo comando, respuesta finalizacin celda. Respuesta comando desplazar objeto,respuesta comando tomar objeto. 2 6,3 Tomar Objeto Comunicacin Scorbot Proceso que interpreta las coordenadas obtenidas y transformarlas a instrucciones ACL. Desplazamiento en coordenada X,Desplazamiento en coordenada Y,Nueva Posicin Scorbot en X,Nueva Posicin Scorbot en Y. Comando Tomar Objeto

Nivel Numero Nombre Parte-de Descripcin Narrativa Flujo de Entrada Flujo de Salida Nivel Numero Nombre Parte-de Descripcin Narrativa Flujo de Entrada Flujo de Salida

164

Capitulo 5: Diseo, Integracin e Implementacin Nivel Numero Nombre Parte-de Descripcin Narrativa 2 6,4 Desplazar Objeto Comunicacin Scorbot Proceso en el que recibe la posicin a la cual se tiene que desplazar el objeto, realizando un proceso para enviar instrucciones en ACL y lograr su cometido. Respuesta Comando desplazar Objeto, destino,coordenada Y posicin destino. Comando desplazar Objeto coordenada X posicin

Flujo de Entrada Flujo de Salida

Flujo de Entrada en el proceso 6.1 de Escritura en Puerto Scorbot. Nombre Flujo Flujo Descripcin Origen Destino Comando Tomar Objeto Instrucciones necesarias para tomar el objeto, de tipo move position, siento estas a una posicin en dcimas de milmetros , escritas en ACL Proceso 6.3: Tomar Objeto Proceso 6.1: Escritura en el puerto Serial

Nombre Flujo Flujo Descripcin Origen Destino

Comando Desplazar Objeto Instrucciones necesarias para desplazar el objeto,hasta un lugar de destino,con instrucciones escritas en ACL Proceso 6.4: Desplazar Objeto Proceso 6.1: Escritura en el puerto Serial

Flujo de Salida del Proceso 6.1 Escritura en el Puerto serial

Nombre Flujo Flujo Descripcin Origen Destino

Solicitud de finalizacion celda Se le indica al scorbot que la trasmisin de comandos ha finalizado, por lo tanto se le indica que se abandonara en seguida el puerto serial. Proceso 6.1 Escritura en el Puerto serial Entidad : Scorbot

165

Capitulo 5: Diseo, Integracin e Implementacin

Nombre Flujo Flujo Descripcin Origen Destino

Envo de comandos Entrega a la celda flexible instrucciones en su lenguaje ACL, que el controlador las procesara y ejecutara a continuacin de esta operacin. Proceso 6.1 Escritura en el Puerto serial Entidad : Scorbot

Nombre Flujo Flujo Descripcin

Inicializacion celda flexible Se le indica al brazo robtico que a continuacin del comando enviado se proceder a enviar una serie de comandos, para que el controlador interno de la celda este atento a recibir cualquier instruccin. Proceso 6.1 Escritura en el Puerto serial Entidad : Scorbot

Origen Destino

Flujo de Entrada en el proceso 6.2 de Lectura en Puerto Serial.

Nombre Flujo Flujo Descripcin Origen Destino

Respuesta iniciacin celda flexible Respuesta a la inicializacin enviadas por el scorbot, para de esta forma poder comunicarnos con el mediante instrucciones en ACL Scorbot Proceso 6.2: Lectura en puerto Serial

Nombre Flujo Flujo Descripcin Origen Destino Nombre Flujo Flujo Descripcin Origen Destino

Respuesta envio Comandos Es la respuesta que entrega el scorbot al comando previamente enviado. Scorbot Proceso 6.2: Lectura en puerto Serial Respuesta finalizacin celda flexible Respuesta a la finalizacin del ocupar el scorbot, y asi liberarlo para que pueda ser ocupado por otras personas. Scorbot Proceso 6.2: Lectura en puerto Serial

166

Capitulo 5: Diseo, Integracin e Implementacin Flujo de Salida del Proceso 6.2 Lectura en el puerto serial

Nombre Flujo Flujo Descripcin Origen Destino

Respuesta comando tomar objeto Envi la informacin pertinente a la respuesta que se analizo al ser leda del puerto serial, en base a tomar el objeto. Proceso 6.2 Lectura en el puerto serial Proceso 6.3 Tomar Objeto

Nombre Flujo Flujo Descripcin Origen Destino

Respuesta comando desplazar objeto Envi la informacin pertinente a la respuesta que se analizo al ser leda del puerto serial en base a desplazar el Objeto. Proceso 6.2 Lectura en el puerto serial Proceso 6.4 Desplazar Objeto

Flujo de Entrada en el proceso 6.3 de Toma Objeto. Nombre Flujo Flujo Descripcin Origen Destino Desplazamiento en coordenada X Es el valor que nos indica cuanto y lo que se debe mover la celda flexible a su coordenada X Proceso 5: Anlisis Coordenadas Proceso 6.3: Toma Objeto

Nombre Flujo Flujo Descripcin Origen Destino Nombre Flujo Flujo Descripcin Origen Destino

Desplazamiento en coordenada Y Es el valor que nos indica cuanto y lo que se debe mover la celda flexible a su coordenada Y Proceso 5: Anlisis Coordenadas Proceso 6.3: Toma Objeto Respuesta Comando tomar Objeto Dato relacionado a con la realizacin del comando enviado, para ir a tomar el objeto Proceso 6.2: Lectura Puerto Serial Proceso 6.3: Toma Objeto

167

Capitulo 5: Diseo, Integracin e Implementacin

Flujo de Salida del Proceso 6.3 Tomar Objeto

Nombre Flujo Flujo Descripcin Origen Destino

Comando Tomar Objeto Se envi el comando para que sea escrito en el puerto serial Proceso 6.3 Tomar Objeto. Proceso 6.1 Escritura en el puerto serial.

Nombre Flujo Flujo Descripcin

Nueva posicin del scorbot en Y Una vez calculada la nueva posicin del scorbot se analiza y se envi a esta nueva posicin en la coordenada Y para que sea analizada en el proceso correspondiente. Proceso 6.3 Tomar Objeto. Proceso 5 Analizar coordenadas.

Origen Destino

Nombre Flujo Flujo Descripcin

Nueva posicin del scorbot en X Una vez calculada la nueva posicin del scorbot se analiza y se envi a esta nueva posicin en la coordenada X para que sea analizada en el proceso correspondiente. Proceso 6.3 Tomar Objeto. Proceso 5 Analizar coordenadas.

Origen Destino

Flujo de Entrada en el proceso 6.4 de Toma Objeto.

Nombre Flujo Flujo Descripcin

Coordenada X posicin destino Coordenada enviada para el desplazar al objeto hasta una posicin sealada por el usuario, siendo esto correspondiente en el eje X y procesado para enviar las correspondientes instrucciones en ACL Proceso 5: Anlisis Coordenadas Proceso 6.3: Toma Objeto

Origen Destino

168

Capitulo 5: Diseo, Integracin e Implementacin

Nombre Flujo Flujo Descripcin

Coordenada Y posicin destino Coordenada enviada para el desplazar al objeto hasta una posicin sealada por el usuario, siendo esto correspondiente en el eje Y y procesado para enviar las correspondientes instrucciones en ACL Proceso 5: Anlisis Coordenadas Proceso 6.3: Toma Objeto

Origen Destino

Flujo de Salida del Proceso 6.4 Desplazar Objeto

Nombre Flujo Flujo Descripcin Origen Destino

Comando desplazar objeto Corresponde al comando de la posicin de destino a donde se debe llevar el objeto. Proceso 6.4 Desplazar Objeto. Proceso 6.1 Escritura en el puerto serial.

5.4 Integracin
En esta seccin se tratan los temas de integracin para las distintas fases de desarrollo, lo que deseamos es poder explicar como se traducen los salidas de una fase en entradas para otra, por ejemplo la salida de la fase de anlisis de la imagen nos entrega valores en pxeles, que deben ser traducidos para que la fase que utiliza la celda flexible pueda interpretar estos valores, por lo tanto esa conversin es la integracin de ambas fases. Tambin el proceso de ingresar los valores a la maquina difusa e interpretar los valores que nos entrega esta, es otro proceso de integracin, donde las fases de la maquina difusa se unen con la fase del brazo Robtico. El tema de integracin de la aplicacin como tal, se vera en la parte del diseo fsico, donde se integran los conceptos del entorno de desarrollo, OpenCv, Dev-C++.

169

Capitulo 5: Diseo, Integracin e Implementacin

5.4.1

Conversin de Escalas: Pxeles a Dcimas de Milmetros

El objetivo de la etapa de anlisis de la imagen es obtener los centroides de todos los objetos detectados dentro de la superficie de trabajo indicada, bueno estos centroides estn en pxeles debido a la imagen y necesitamos saber su ubicacin en dcimas de milmetros, porque esa es la unidad de medida en que opera el Scorbot ER-V Plus, para ello debemos hacer una correlacin entre los pxeles de la imagen y las posiciones del Scorbot, por lo tanto seguimos los siguientes pasos:

Primera Parte Conversin para el eje X

1.- Lo primero es colocar dos objetos dentro de la superficie de trabajo, objeto A y objeto B

2.- Luego con el Teach Pendant del Scorbot nos movemos hacia el objeto A hasta situarnos encima de el, una vez encima bajamos lentamente con la pinza abierta y cuando estemos en condiciones de tomar el objeto dejamos de bajar y cerramos la pinza, capturndolo, sin haberlo movido de su posicin, a continuacin en el computador abrimos el modo de operacin ATS y escribimos el comando listpvposition ( Figura 4-1) para ver la posicin actual del Scorbot en dcimas de milmetros, esta posicin corresponde al centroide del objeto dentro de la superficie, las coordenadas cartesianas que nos interesan son los valores en X e Y que nos entrega ATS, pero en esta primera parte solo nos centraremos en el valor de X, con esto ya sabemos la posicin cartesiana del objeto, por lo tanto hacemos lo mismo para el objeto B.

170

Capitulo 5: Diseo, Integracin e Implementacin

Figura 4-1: Modo ATS, comando listpvposition

3.- Una vez obtenidas las coordenadas cartesianas tanto del objeto A como del B, procedemos a tomar una imagen de estos dos objetos con la cmara web a travs del programa que hemos creado (Figura 42), la cmara ya se encuentra instalada en la posicin que se utilizara en la estacin de trabajo, por lo tanto ya esta calibrada, luego la imagen la llevamos al Programa Paint donde obtenemos el centroide (primero para la coordenada X) de cada objeto en pxeles. Con esto estamos en condiciones de realizar la conversin de pxeles a dcimas de milmetros para la componente X.

Figura 4-2: Captura realizada a la superficie de trabajo, para eje X.

171

Capitulo 5: Diseo, Integracin e Implementacin

4.- Por lo tanto ya tenemos las coordenadas de los centroides en dcimas de milmetros y pixeles para cada objeto, con ello podemos realizar la siguiente comparacin:

Figura 4-3: De Pxeles a Dcimas de Milmetros para eje X

Como indica la Figura 4-3, el centroide del objeto A se encuentra en el pixel X=82 de la imagen y segn las coordenadas obtenidas en el modo ATS el objeto en esa misma posicin se encuentra en la coordenada cartesiana X=2592 dcimas de milmetros, lo mismo ocurre para el objeto B que su centroide en la imagen esta en el pixel X=144 y segn modo ATS esa misma posicin corresponde a X=3372 dcimas de milmetros, con esta informacin podemos decir que desde el objeto A al objeto B hay una diferencia de 62 pixeles (144-82=62), o una diferencia de 780 dcimas de milmetros (33722592=780) , estos valores van a ser nuestro rango de equivalencia para trasformar los pixeles a dcimas de milmetros. A continuacin veremos un par de ejemplos de esta transformacin:

Como referencia para toda transformacin en eje X tomaremos el valor que conocemos del centroide del objeto A (centroide en: pixel X=82 que es equivalente a la posicin X=2592 dcimas de milmetros).

172

Capitulo 5: Diseo, Integracin e Implementacin -Ejemplo: Pxel X=110

Lo primero es preguntar si el pixel que queremos transformar es mayor igual o menor a nuestro pxel x de referencia (pxel x=82), como es mayor entonces realizamos la siguiente operacin:

Como resultado de las operaciones anteriores para el pxel X=110, indicaron que este correspondera aproximadamente a la coordenada cartesiana X=2944 dm. -Ejemplo Pxel X= 60

Al comparar si es mayor igual o menor que el pxel X=82 de referencia, resulto ser menor, por lo tanto seguimos estos pasos:

173

Capitulo 5: Diseo, Integracin e Implementacin

En consecuencia obtenemos que el pxel X=60 correspondera aproximadamente a X=2315 dcimas de milmetros.

Segunda Parte Conversin para el eje Y

Para obtener la escala de conversin para el eje Y los pasos a seguir son muy similares a los del eje X, solo tienen algunas modificaciones.

1.- Nuevamente colocamos dos objetos en la superficie de trabajo, objeto C y objeto D.

2.- Ac realizamos los mismos pasos indicados en el punto dos, pero de la Primera Parte Conversin para eje X, en resumen con el Teach tomamos primero el objeto C y sin moverlo de su posicin, registramos su ubicacin a travs del modo ATS, esto es valido tambin para el objeto D, la posicin que nos interesa es la coordenada cartesiana del eje Y que esta en dcimas de milmetros. Por lo tanto ya tenemos el centroide de ambos objetos.

3.- Con las coordenadas del eje Y en unidades cartesianas lo que hacemos a continuacin es tomar una imagen de los objetos (Figura 4-4) y llevarla al programa Paint, ac registramos el valor en pxeles de la coordenada Y del centroide de ambos objetos, entonces con los valores del centroide de lo s dos objetos en dcimas de milmetros y pxeles, podemos realizar la conversin de escala para el eje Y.

174

Capitulo 5: Diseo, Integracin e Implementacin

Figura 4-4: Captura realizada a la superficie de trabajo, para eje Y.

4.- En resumen ya tenemos las coordenadas de los centroides en dcimas de milmetros y pxeles para cada objeto, por lo que estamos en condiciones de realizar la conversin de escala para el eje Y.

Figura 4-5: De Pxeles a Dcimas de Milmetros para eje Y

En la Figura 4-5, el centroide del objeto C se encuentra en el pxel Y=87 de la imagen obtenida por el programa que hemos diseado y segn las coordenadas obtenidas en el modo ATS el objeto en

175

Capitulo 5: Diseo, Integracin e Implementacin esa misma posicin se encuentra en la coordenada cartesiana Y=0 dcimas de milmetros, lo mismo ocurre para el objeto D que su centroide en la imagen esta en el pxel Y=151 y segn modo ATS esa misma posicin corresponde a Y=693 dcimas de milmetros, con esta informacin podemos decir que desde el objeto C al objeto D hay una diferencia de 64 pxeles (151-87=64), o una diferencia de 693 dcimas de milmetros (693-0=693) , estos valores van a ser nuestro rango de equivalencia para trasformar los pxeles a dcimas de milmetros en el eje Y. A continuacin veremos un par de ejemplos de esta transformacin: Como referencia para toda transformacin en el eje Y tomaremos el valor que conocemos del centroide del objeto C (centroide en: pxel Y=87 que es equivalente a la posicin Y=0 dcimas de milmetros).

-Ejemplo: Pxel Y=125

Lo primero es preguntar si el pxel que queremos transformar es mayor igual o menor a nuestro pxel Y de referencia (pxel y=87), como es mayor entonces realizamos la siguiente operacin:

Como resultado de las operaciones anteriores para el pxel Y=125, indicaron que este correspondera aproximadamente a la coordenada cartesiana Y=411 dm.

176

Capitulo 5: Diseo, Integracin e Implementacin -Ejemplo: Pxel Y=55

Al comparar si es mayor igual o menor que el pxel Y=87 de referencia, como vemos resulto ser menor, por lo tanto seguimos estos pasos:

En consecuencia obtenemos que el pxel Y=55 correspondera aproximadamente a Y=-347 dcimas de milmetros.

5.4.2

Interpretacin de los valores entregados por Lgica Difusa

Como vimos anteriormente en el captulo correspondiente a la maquina de lgica difusa, esta recibe como variables de entrada el margen de error, tanto del eje X, como del eje Y, y tras la aplicacin de esta maquina se obtiene como resultado un porcentaje para el eje X y otro para el eje Y, ese porcentaje nos indicara hacia donde movernos, para conseguir esto debemos interpretar estas salidas, pero antes debemos tener muy claro la utilizacin de esta maquina difusa, por lo que hemos preparado un pequeo ejemplo al momento de ingresar los margenes de error a la maquina difusa. Sabemos de ante mano que la posicin de inicio del scorbot, es conocida por nosotros, es decir antes de comenzar a ingresar los margenes de error en la maquina difusa, el scorbot ya se encuentra en esta posicin, la cual es en el eje X=2799, eje Y=90.

177

Capitulo 5: Diseo, Integracin e Implementacin Ahora tambin conocemos el centroide del objeto en dcimas de milmetros, debido a la conversin realizada en el punto anterior de este captulo, por lo tanto podemos establecer una diferencia de error respecto de ambas posiciones (entre la del scorbot y la del objeto). Entonces este margen de error es el que entra en la maquina difusa y nos entrega como salidas un % para cada eje que nos indica hacia donde tenemos que movernos para estar mas cerca del objeto, este procedimiento se repite hasta que se logre situar la celda flexible sobre el centroide del objeto, una vez en ese lugar se encuentra en condiciones de bajar el brazo y tomar el objeto.

Lo primero antes de obtener las salidas es calcular los mrgenes de error de ambos ejes y para ello presentamos la figura 4-6, donde se muestra la posicin de inicio del scorbot representada por la letra A y la posicin del objeto que se desea tomar con la celda flexible, que correspondera a la letra B:

Figura 4-6: Representacin Cartesiana.

178

Capitulo 5: Diseo, Integracin e Implementacin Por lo tanto independiente de la posicin del objeto en el plano cartesiano, estando dentro de los limites establecidos en la superficie de trabajo, el calculo del margen de error seria de esta manera:

Donde el margenErrorX corresponde a la diferencia entre la posicin actual del Scorbot (posicin conocida y registrada por nosotros) y la posicin del centroide del objeto (posicionObjetoX), recordemos que esta posicin es el resultado de la fase de desarrollo de anlisis de la imagen y se encuentra en pxeles, por lo que fue necesario pasarla a dcimas de milmetros como explicamos paginas anteriormente, entonces ya se encuentra en dcimas de milmetros, este calculo y explicacin tambin es valido para margenErrorY, pero con la diferencia que es representativo para la coordenada cartesiana Y. Siguiendo el ejemplo propuesto los valores de lo margenes de error serian los siguientes:

Con el concepto de las variables de entradas ya claras podemos interpretar las salidas, que a partir de los margenes de errores ingresados serian, 88,1538% y -88,1538% correspondientes cada una al eje X y al eje Y respectivamente. Como sabemos las salidas nos indican hacia donde tenemos que mover la celda flexible, entonces para el eje X, si ingresamos un error de -744, nuestra maquina difusa interpreta este valor y nos indica que estamos situado muy a la Izquierda del objeto, entonces este valor lingustico se lleva a una representacin en una escala porcentual arrojando un valor de 88.1538%, esto quiere decir que debemos movernos muy a la derecha en un 88,1538% de nuestro margen de error, para estar de esta forma mas cerca del objeto, de la misma forma ocurre para el eje Y. Entonces la nueva posicin del scorbot se compone de estos valores ya calculados.

179

Capitulo 5: Diseo, Integracin e Implementacin Esta operacin anterior se repite hasta que el margen de error para cada eje sea cero, esto quiere decir que nos encontramos justo sobre el centroide del objeto, por lo cual debemos bajar el brazo robtico y tomar el objeto seleccionado.

5.5 Diseo Fsico

Lo correspondiente al diseo fsico son temas relacionados en primer lugar con la eleccin del lenguaje de programacin de la interfaz grfica para nuestro sistema, y para ello debemos tomar en cuenta las fases, ya que en cada una se desarrolla un prototipo , de acuerdo a la metodologa escogida para este proyecto, por lo tanto esta interfaz debe ser capaz de integrar estos prototipos y mejorarlos, tambin otro aspecto a considerar es que para efectos del sistema segn los requerimientos no es una aplicacin que maneje base de datos, por que no compete con el objetivo del proyecto, ni tampoco incluir tantos componentes visuales, debe ser una interfaz simple que valla mostrando paso a paso lo que va sucediendo hasta seleccionar el objeto, encapsulando todos los mtodos internos activados al producirse un evento, en la cual el usuario debe conocer previamente el tema del proyecto, de acuerdo a que no es una sistema para que un usuario comn y corriente pueda usarlo, debido al nivel de complejidad que trata el tema propuesto. Con lo anterior mencionado, consideramos que la mejor opcin era trabajar bajo el lenguaje C++, por que nos permite flexibilidad en la integracin de todas las fases, adems de su eficiencia.

Esta seccin por lo tanto da a conocer las libreras para el desarrollo de la interfaz grfica, su IDE, la importancia de este, ventajas que nos entrega, entre otros conceptos. Tambin se ha incluido la integracin, por decir fsica de las diferentes bibliotecas empleadas para la programacin de cada fase de desarrollo, y como todas estas se integran en un solo IDE de desarrollo. Tambin se incluye una representacin de diagrama de clases para ver en forma global la implementacin del sistema en si, hasta llegar al diseo de interfaces, que muestra grficamente como es el sistema y su funcionalidad.

180

Capitulo 5: Diseo, Integracin e Implementacin

5.5.1

QT
Qt representa una biblioteca para el desarrollo de interfaces en lenguaje C++ que ocuparemos

para la programacin y diseo de la interfaz grfica de la aplicacin del sistema, a continuacin se presentara con mas detencin, explicando en que consiste, su estructura de desarrollo, su IDE y las ventajas que nos entrega este.

5.5.2

Que es Qt?
Qt corresponde a un conjunto de libreras o tambin llamada biblioteca que tiene la

caracterstica de ser multiplataforma, la cual esta implementada para desarrollar interfaces grficas de usuario principalmente, pero adems podemos realizar aplicaciones completas sin interfaces grficas haciendo slo uso de stas libreras, como aplicaciones de consola entre otras. Como nombramos que esta librera es multiplataforma, queremos destacar que se encuentra disponible tanto para:

Microsoft Windows: En sus variadas versiones.

Unix/X11 Linux, Sun Solaris, HP-UX, HP Tru64 UNIX, IBM AIX, SGI IRIX y muchas otras Mac OS X Windows CE Embedded Linux De este modo podemos ver que en diferentes plataformas es totalmente compatible y se

encuentra listo para migrar. Qt es una librera totalmente Orientada a Objetos, es por ello que la API cuenta con diferentes mtodos, soporta el uso de diferentes motores de Base de Datos entre ellos SQL y el uso de archivos XML, adems de otras estructuras de datos tradicionales.

181

Capitulo 5: Diseo, Integracin e Implementacin Qt en su forma originaria trabaja con el lenguaje de programacin C++, pero existen mdulos para otros lenguajes de programacin gracias a una adaptacin o referencia (bindings), entre los cuales tenemos Python (PyQT), Java (QT Jambi), Perl (PerlQT) , Ruby (QTRuby), PHP (PHP-QT), entre los ms reconocidos. Hay que destacar que Qt fue credo por Trolltech, que es una compaa de software fundada en el ao 1994, posteriormente esta compaa es comprada por Nokia en el ao 2008, y es de donde actualmente se dirige su desarrollo. Hoy en da Qt cuenta con tres tipos diferentes de licencias, una para el desarrollo de software de cdigo abierto (open source) y software libre, llamada GPL v2/v3, la siguiente es una licencia para el desarrollo de aplicaciones comerciales (licencia de pago QPL), y a partir de la versin 4.5 una licencia gratuita que esta recomendada para aplicaciones comerciales, LGPL. Como referencia, podemos enmarcar la presencia del uso de Qt en el entorno de escritorios KDE, presentes en sistemas como GNU/Linux o el proyecto FreeBSD desarrollado por la Universidad de California, Berkeley, tambin Qt ha sido utilizado para realizar aplicaciones como, Google Earth (simulador de mapas), Skype (realiza llamadas sobre internet), VLC Media Placer (reproductor multimedia), Last.fm Player y Qt Creator, que es un entorno de desarrollo integrado, software libre y multiplataforma desarrollado por Nokia y este corresponde al que utilizamos para realizar la aplicacin del Proyecto.

5.5.3

Estructura de Qt
Dentro de la estructura de Qt, tenemos varias caractersticas como look an feel variable

dependiendo del Sistema Operativo, para parecerse a estilos ya existentes (Windows, Mac, Motif), Internacionalizacin a travs de QString y Unicote, OpelGL multiplataformas, Parser XML integrado, manejo de Base de Datos SQL, adems de Herramientas de generacin automtica Qt Designer.

182

Capitulo 5: Diseo, Integracin e Implementacin Su estructura de libreras esta descrita de la siguiente forma:

Modulo I: QtCore: Clases bsicas, no GUI, usadas por todos los mdulos. QtGui: Componentes GUI (lo til para grficos) QtNetwork: Clases para programacin de redes QtOpenGL: Clases para soporte OpenGL QtSql: Clases para integracin de bases de datos SQL QtSvg: Clases para integracin de dibujos vectoriales SVG QtScript: Expone las aplicaciones a scripting con un lenguaje ECMAscript. QtScriptTools: In depurador de QtScript.

Modulo II: QtWebKit: Es el popular motor Web, con Qt QtXml: Clases para manejar XML. QtXmlPatterns: Un motor de XQuery 1.0 y XPath 2.0 y parcialmente Xslt. Phonon: el Framework multimedia. QtDesigner: API para Qt Designer. QtUiTools: Clases para manejar los formularios .ui del Designer. QtAssistant: Soporte para lnea online. Qt3Support: Clases para compatibilidad Qt3. Otros: QtHealp, QtTest, QtDBus(Solo Unix), y a partir de Qt 4.6 QtOpenVG y QtMultimedia.

183

Capitulo 5: Diseo, Integracin e Implementacin

Figura 4-7: Conjunto de Caractersticas de QT.

5.5.4

Por qu usar QT?


QT es un proyecto de Cdigo Abierto y gratuito de libre distribucin. Otra de las principales ventajas que nos ofrece QT es que es multiplataforma, una aplicacin desarrollada utilizando estas libreras se podra compilar tanto en linux como en Windows, Mac OS o inclusive en un dispositivo mvil, sin necesidad de hacer ningn cambio en el cdigo.

La diferencia entre Qt y otras soluciones multiplataforma es que no esta basada en una maquina virtual tal como Java, .NET. Sino que su compilacin es totalmente a un cdigo nativo con 184

Capitulo 5: Diseo, Integracin e Implementacin instrucciones maquina y no en cdigo intermedio con instrucciones para la maquina virtual. Lo cual se refleja en un mejor desempeo en comparacin con otras soluciones.

Otra ventaja es que nos permite construir interfaces de usuario complejas de una forma visual y rpida, lo que nos deja ms tiempo para centrarnos en la parte ms importante de todo programa.

Al utilizar el lenguaje de programacin C++, podemos hacer uso del potencial de la programacin orientada a objetos, adems de la compatibilidad que debe existir ya que estamos trabajando con OpenCV.

Podemos construir interfaces grficas visualmente muy atractivas en poco tiempo. Otra caracterstica que nos llam la atencin es que nos da la posibilidad de integrar nuestro cdigo desarrollado bajo QT, y agregarlo a un proyecto en Dev-C++ (gracias al Makefile generado del cdigo QT), que es donde tenemos integrado OpenCV, por lo que al final podemos compilar desde Dev-C++ aplicacin en Qt y mezclarlas con funcionalidades de OpenCV.

5.5.5

Qt Creator
Es un IDE multiplataformas para desarrollar aplicaciones en C++ de manera sencilla y rpida.

Como su nombre lo indica, est basado en la librera Qt y cuenta con las siguientes caractersticas principales:

Editor avanzado para C++. Interfaz agradable y fcil de adaptar. Diseador de formularios (GUI) integrado. Herramientas para la administracin y construccin de proyectos. Es rpido. Completado automtico. 185

Capitulo 5: Diseo, Integracin e Implementacin

Depurador visual.

Figura 4-8: Entorno de Desarrollo QT Creator.

5.5.6

Integracin de QT y OpenCV en Dev-c++


La primera etapa en nuestro proyecto es el tratamiento de la imagen y para ello escogimos por

las diversas razones mencionadas anteriormente OpenCV, para esto previamente se debe instalar DevC++ que va ser quien albergar tanto a OpenCV y Qt.

Una vez instalado Dev-C++, se procede con la instalacin de OpenCV, a continuacin debemos modificar las opciones del copilador de Dev-C++, agregando en esta parte un nuevo compilador y los correspondientes directorios de OpenCV que hacen referencia a Binarios, Libreras y Cabeceras

186

Capitulo 5: Diseo, Integracin e Implementacin C/C++, previo esto ya estamos en condiciones de trabajar con las libreras de OpenCV.

El paso siguiente es instalar Qt Creator, este instala Qt por defecto, finalizado lo anterior podemos ejecutar Qt Creator y programar nuestra aplicacin con este IDE, cuando tengamos el proyecto Qt prcticamente desarrollado, lo que debemos hacer es compilarlo en Dev-C++ para integrarlo con las funciones de OpenCV, pero para compilar el proyecto Qt debemos asegurarnos que las variables de entorno estn debidamente configuradas, una vez verificado lo anterior, en la consola nos ubicamos donde tenemos el proyecto Qt y realizamos qmake project y luego qmake, generando as un archivo .pro con el nombre de la carpeta donde tenemos el proyecto, este archivo .pro debemos modificarlo agregando en INCLUDEPATH += los directorios de OpenCV, adems de agregar LIBS

+= que corresponden a las libreras de OpenCV, aparte del archivo .pro, nos genera tambin un Makefile y este lo ocuparemos cuando abramos el proyecto en Dec-C++ y modifiquemos en opciones del proyecto marcando en Archivo MAKEFILE su uso. Con todos estos pasos ya estamos en condiciones de compilar nuestro proyecto integrado desde Dev-C++.

5.5.7

Diagrama de Clases
Un diagrama de clases describe grficamente las especificaciones de las clases de software en

una aplicacin. Para la creacin del diagrama de clases se identifican todas las clases que participan en la solucin y se agregan los atributos encontrados, y los mtodos que hacen relacin a cada clase, por lo tanto a continuacin se muestra el diagrama de clases de nuestro sistema presentado en el ultimo Anexo al final del informe.

187

Capitulo 5: Diseo, Integracin e Implementacin

188

Capitulo 5: Diseo, Integracin e Implementacin

5.5.8

Diseo Fsico de Interfaces

Como sabemos el diseo de la aplicacin debe ser simple, no se necesitan muchos componentes visuales, como se especifico en los requerimientos, solo se necesita que la interfaz sea intuitiva para alguien que conozca el tema que se trata en este proyecto, as podr efectuar un mayor provecho de este. Encapsulando todos los mtodos que estn compuestos de algoritmos que procesaran cada etapa en el sistema, en donde veremos solo los resultados de este procesamiento en la interfaz, abstrayendo totalmente al usuario de la implementacin interna de la aplicacin

A continuacin se ira presentando la interfaz, que va etapa a etapa en el desarrollo de los temas propuestas en este proyecto, para que el usuario conocedor del tema valla asimilando y sacando sus propias conclusiones a lo largo del sistema.

Al iniciar el programa se despliega la pantalla principal, mostrando de esta forma la temtica del proyecto. Para dar inicio al funcionamiento de la aplicacin nos dirigimos al men archivo donde seleccionamos la opcin captura imagen.

189

Capitulo 5: Diseo, Integracin e Implementacin

Figura 4-8: Pantalla Principal.

A partir de la seleccin realizada anteriormente se muestra la siguiente ventana que es donde podemos ver la cmara en vivo de la superficie de trabajo donde se encuentran los objetos, una vez listos los objetos dentro de la superficie realizamos la captura de la imagen a travs de la webcam, y para ello se presiona en el botn Capturar Imagen, esta captura es visualizada en la siguiente pantalla (Figura 4-9), por lo tanto ya tenemos nuestra imagen de la superficie donde se encuentra los objetos, por lo que estamos en condiciones de comenzar el procesamiento de la imagen en mas profundidad y

190

Capitulo 5: Diseo, Integracin e Implementacin detalle, ya que para comenzar era primordial tener la imagen de los objetos, tambin se debe dejar claro que una vez tomada la imagen y comenzado el proceso de anlisis no se podrn mover los objetos de su posicin, ya que si esto ocurre al final del anlisis y cuando se desee tomar el objeto y si estos han sido movidos de su posicin de donde estaban inicialmente al tomar la imagen, la fase de demostracin queda anulada, ya que las coordenadas no corresponderan con las del objeto en su nueva posicin, por lo tanto esta posicin no debe cambiar durante el anlisis de la imagen.

Figura 4-9: Imagen capturada desde la webcam.

Como ejemplo de implementacin la forma de realizar la captura es gracias a las libreras que 191

Capitulo 5: Diseo, Integracin e Implementacin nos ofrece OpenCV, por lo que mostramos un fragmento de cdigo en el cual se captura una imagen de un video, aado que este fragmento es solo un ejemplo, el que realmente esta presente en nuestra implementacin es algo mas complejo, debido a las trasformaciones de formatos de imagen tanto de OpenCv a Qt,entonces para efecto de esto se a creado una clase llamada QOpenCVWidget que se puede ver en el diagrama de clases que se encuentra en el anexo donde esta representa gran parte de la captura de la imagen. Sin dejar de lado lo anterior los dejamos con el fragmento de cdigo:

Este cdigo muestra una variable capture, la cual es la encargada de tener la referencia a la cmara web ya que se inicializa esta mas abajo con cvCaptureFromCAM(0) y frame va a corresponder a la imagen obtenida de la cmara, para que el efecto sea de video se crea un ciclo while donde frame = cvQueryFrame(capture), para obtener una imagen de la webcam y a continuacin la mostremos a travs de la ventana creada con cvShowImage, esta aplicacin finaliza cuando se presiona la letra q, para salir del ciclo while.

La Figura siguiente corresponde a la aplicacin del algoritmo MeanShift a la imagen obtenida desde el video que nos proporciono la cmara, para aplicar el algoritmo presionamos el botn Meanshift y veremos los resultados a continuacin en la siguiente figura que nos muestra la pantalla de esta etapa (Figura 4-10), pero primero queremos que mas o menos vean como se aplica el algoritmo meanshift a nuestra aplicacin.

192

Capitulo 5: Diseo, Integracin e Implementacin

Figura 4-10: Aplicacin de algoritmo MeanShift a la Imagen.

193

Capitulo 5: Diseo, Integracin e Implementacin

Como vemos al presionar sobre el botn MeanShift se activo el botn Siguiente, por lo que estamos en condiciones de pasar a la siguiente etapa que corresponde a la binarizacin de la imagen, ac podremos realizar en primer lugar una binarizacin normal de la imagen a la cual se le aplico el algoritmo meanshift, para posteriormente realizar una binarizacin inversa de esta. Para realizar la binarizacin normal se debe presionar el nico botn activado que se encuentra en la pantalla de binarizacin, que corresponde a binarizacin 1 como veos a continuacin:

Figura 4-11: Pantalla Binarizacin.

194

Capitulo 5: Diseo, Integracin e Implementacin Como vemos si presionamos este boton binarizacin 1 se genera una nueva ventana que muestra la imagen meanshift pero lista para ser binarizada segn el umbral de binarizacin que le apliquemos al deslizar el slider, al realizar el movimiento del Slider podemos cambiar los niveles de binarizacin de la imagen (Figura 4-12), este proceso termina cuando logramos encontrar el resultado deseado y presionamos en el botn listo para enviar la imagen al form de Binarizacin principal, para continuar con el siguiente paso que es la generacin de una Binarizacin 2 en donde realizamos la aplicacin de una Binarizacin inversa a la imagen meanshift para obtener la forma completa del objeto requerido. Para ello presionamos el botn Binarizacin 2 del form de Binarizacin principal y este genera un nuevo form de Binarizacin inversa (Figura 4-13), tambin posee un slider donde modificamos los niveles de umbralizacin hasta encontrar el adecuado y presionamos el botn finalizar para enviar esta imagen al form de binarizacin principal.

Figura 4-12: Binarizacin Normal.

195

Capitulo 5: Diseo, Integracin e Implementacin

Figura 4-13: Binarizacin Inversa.

Cada vez que binarizamos estamos aplicando el siguiente mtodo a nuestra imagen al modificar cada valor de umbral entregado por el slider:

Con las dos imgenes binarizadas, una binarizada normal y la otra binarizada inversamente, podemos mezclar ambas para encontrar un resultado optimo que nos permita identificar completamente a los objetos, si al mezclar el resultado no es el que estamos buscando entonces podemos volver a la las ventanas mostradas en la figura 4-12, 4-13 y modificar los niveles de optimizacin hasta encontrar el 196

Capitulo 5: Diseo, Integracin e Implementacin deseado, una vez encontrado se presiona en el botn listo para cargar las imgenes en la pantalla de binarizacin principal, y volvemos a mezclar, obteniendo de esta forma una solo imagen a partir de las dos que tenamos, con ello podemos ver que las figuras estn totalmente identificados (Figura 4-14), por lo que entonces continuamos con la siguiente etapa al presionar el botn siguiente. Antes queremos mostrar un fragmento de como se realiza la mezcla entre ambas binarizaciones, normal e inversa.

Figura 4-14: Binarizacin, Imagen Mezclada.

197

Capitulo 5: Diseo, Integracin e Implementacin Al presionar siguiente el posterior paso es aplicar un proceso de deformacin de la imagen, el primero es una erosin de ella para rellenar los bordes faltantes y luego aplicar una dilatacin, con estas operaciones estamos en condiciones optimas de poder calcular los centroides de los objetos detectados, debido a que los objetos se encuentran bien definidos respecto a su forma original, estos se aprecia en la figura 4-15, a parte se introduce un cdigo en OpenCv que detalla esta operacin de trasformacin morfolgica de la imagen a nivel de implementacin.

Figura 4-15: Transformacin Morfolgica.

198

Capitulo 5: Diseo, Integracin e Implementacin A continuacin al presionar el botn siguiente de esta interfaz realizamos la deteccin de bordes de los objetos y la identificacin del centroide de ellos, para detectar el centroide de los objetos se implemento el siguiente mtodo, que recibe como parmetro de entrada la imagen y un rectngulo, que corresponde al rectngulo que rodea al objeto. Y como resultado nos entrega el centride de este mismo objeto. La operacin anterior es aplicable a todos los objetos detectados en la imagen que se tom inicialmente de la cmara web, por lo tanto si el objeto esta identificado, se le calcula de esta manera su centroide, con lo que ya estaramos cumpliendo gran parte del trabajo propuesto, debido a todo el anlisis realizado,de esta forma estamos identificando el centro de gravedad de cada uno de los objetos, que es justo el valor que necesitamos para pasar a la fase de la celda flexible. Ademas de la implementacin, se da a conocer la interfaz donde se muestran grficamente los centroides de cada objeto detectado en la imagen resultante de la trasformacin morfolgica ver figura 4-16 .

199

Capitulo 5: Diseo, Integracin e Implementacin

Figura 4-16: Deteccin de Centroides.

Una vez identificado el centroide de la imagen podemos mostrar los bordes de ella encerrando cada objeto en un rectngulo seleccionable en la imagen original, para que de esta forma podamos escoger el objeto que queremos tomar con la celda flexible. En seguida se muestra la pantalla que indica estos pasos.

200

Capitulo 5: Diseo, Integracin e Implementacin

Figura 4-17: Seleccin de Objetos.

Al seleccionar un objeto el mensaje que nos aparece es el que veremos mas abajo, este mensaje nos pregunta si estamos seguro si deseamos tomar el objeto que seleccionamos, si presionamos el botn ver detalle mostrara el centroide del objeto que se selecciono, en cambio si presionamos el botn no, este nos retornara a la pantalla seleccionar objetos para que de esta forma podamos escoger otro, y si presionamos el botn si, pasamos a la etapa de seleccin de destino de objetos, en esta muestra la misma pantalla de objetos detectados pero nos indica que debemos hacer click sobre la posicin dentro de los limites de la imagen, donde deseamos trasladar el objeto que escogimos, al seleccionar la posicin esta se verificara y nos retornara un mensaje si fue correcta o no, en caso de ser no, puede que se aya escogido una posicin fuera de los limites de alcance del scorbot o esta posicin entre en conflicto con alguna posicin donde ya se encuentre un objeto ubicado, pero si es si, quiere decir que la 201

Capitulo 5: Diseo, Integracin e Implementacin posicin esta libre por lo tanto podemos mover el objeto hacia ella, es justo en este momento donde se lanza la aplicacin de la lgica difusa y el puerto serial, que tiene como valores de entrada la posicin del objeto en pixeles y su ubicacin de destino, por lo que de aqu en adelante el procesamiento es solo de la maquina difusa y la celda flexible, son procedimientos internos de la aplicacin.

Figura 4-18: Mensaje Seleccin de Objetos.

5.6 Problemas surgidos y dificultades de esta Captulo

Este es el captulo decisivo donde todo lo estudiado a lo largo del proyecto y prototipos construidos de acuerdo a la metodologa se deben integrar en una solo solucin representada a travs de una aplicacin que contemplo todas las captulos anteriormente descritas, por lo tanto es claro que tuvimos muchos inconvenientes en el camino, como por ejemplo desde el primer minuto que se realizaron los requerimientos y casos de uso, ya tenamos una idea de como se deba armar estas piezas (fases) pero solo a nivel conceptual, las preocupaciones vinieron cuando necesitamos llevarlas a la implementacin, entonces para ver como interactan cada proceso del sistema fue fundamental el apoyo del diagrama de flujo de datos, que nos mostraba cada vez que estbamos confundidos que deba hacer el sistema y que no deba hacer, por lo que estos nos brindaron un gran apoyo.

Unos de los problemas mas complicados fue plantearnos que hara nuestro sistema a travs del diagrama de flujo de datos, por lo que le dedicamos bastante tiempo a detallar esta parte para despus de realizar todo este anlisis lgico debamos continuar con la integracin propia, es decir de que 202

Capitulo 5: Diseo, Integracin e Implementacin manera ivamos a realizar el enfoque de la trasformacin de pixeles, por ello tomamos varias muestras a las posiciones del scorbot y la ubicacin de este en la imagen hasta que logramos llegar a una correlacin que nos sirviera aproximadamente para la gran mayora de las posiciones dentro de los limites de la superficie en la imagen, esta tarea fue complicada. Tambin el tema de interpretar los valores que nos entregaba la maquina difusa fue difcil al principio por la poca experiencia practica sobre el tema, si conocamos tericamente su funcionamiento pero nunca habamos programado una concretamente, solo lo habamos realizado a nivel escrito en ejercicios prcticos en clases, por lo tanto fue parte fundamental aplicar todos nuestros conocimientos sobre esta rea y as logramos obtener los resultados deseados.

En la parte de la implementacin fsica a nivel de integracin de libreras tanto las de QT, Opencv en Dev-C++, fue complicado debido a la escasa documentacin, que solo la encontramos en Internet, pero lo poco que recolectamos nos sirvi de mucho para lograr configurar estas libreras hasta poder tenerlas funcionando correctamente, as proporcionamos el tema de la interfaz grfica que integraba las dems fases propuestas. El diseo de la interfaz se rigi por la simplicidad que debe tener este frete a temas de mayor complejidad como Inteligencia artificial, visin artificial, robtica, comunicacin serial entro otros, por lo tanto al final de todo sacamos cuentas alegres de todo lo aprendido en este captulo.

203

Conclusin

Conclusin del Proyecto


El tema propuesto en este proyecto trata reas muy complejas que no son estudiadas especficamente a profundidad a lo largo de nuestra malla curricular, por ello mas que todo lo que significaba realizar un proyecto de titulo , nosotros escogimos un reto, algo en lo que debiramos aplicar mas que conocimientos especficos, si no que deban ser conocimientos que representaran la suma de todos estos aos de estudio, en el cual los profesores de nuestra universidad nos formaron para se ingenieros, para pensar como tales, para ser capaces de enfrentarnos a cualquier situacin, y plantear una solucin concreta a esta.

Este proyecto trato temas relacionados con la robtica, la visin artificial, la inteligencia artificial, en el cual nosotros como futuros Ingenieros Civiles en Informtica, construimos prototipos de cada una de estos captulos a partir de la metodologa propuesta para enfrentarnos a la problemtica descrita en los captulos preliminares y logramos realizar la integracin de cada una de estas en un sistema que pudiera ser capaz de cumplir con los objetivos propuestos que era en conclusin Tomar un objeto cilndrico con un celda flexible dentro de un plano determinado a partir de las coordenadas obtenidas mediante visin artificial y desplazarlo.

Esto no fue fcil, tuvimos muchos inconvenientes pero no nos dejamos avasallar, en primera instancia se le dedico una buena parte de nuestro tiempo a estudiar cada unas de estas reas debido a que no estn contempladas en nuestro plan de estudios, pero para efecto de nuestro proyecto debamos comenzar por ah, lograr adquirir dominio del tema, para pasar a la siguiente instancia que fue comenzar a plantearnos como dar solucin y cumplimento a los requerimientos expuestos, por lo tanto la etapa de anlisis y diseo cumplieron un rol fundamental para que en ningn momento perdiramos de vista el objetivo del proyecto, as logramos realizar una representacin del sistema a travs de distintos tipos de diagramas que fueron explicados a lo largo del informe.

204

Conclusin

Por lo tanto la forma en que se abordo cada captulo, en resumen fue correcta, ya que estas se tomaron como procesos que a partir de los datos de entradas se deban generan salidas que serviran para el siguiente proceso, por lo tanto entre proceso y proceso deban haber integraciones ya que se deben establecer compatibilidades entre cada uno de ellos, entonces a lo largo del estudio se plantearon distas forma de integracin que fueran detalladas en el informe, que en resumidas cuentan sirvieron como puentes entre cada fase hasta lograr una comunicacin de todas ellas que entregaron como resultado la creacin de una aplicacin.

Los resultados obtenidos de esta aplicacin fueron satisfactorios debido a todo el esfuerzo plasmado en su desarrollo y pruebas realizadas, afinando los mximos detalles para lograr que a partir de una simple imagen tomada con una cmara web, a travs de nuestro programa, se pudiera analizarla hasta llegar a identificar los centroides de cada objeto y con esta informacin le indicamos al usuario que objeto desea seleccionar, y a partir de su respuesta le ofrecemos donde quiere trasladarlo, por lo tanto le damos la libertad de tomar y mover estos objetos con la celda flexible dentro del rea de trabajo disponible.

Con el aprendizaje de todos estos conceptos nos dimos cuenta de la importancia de la informtica en la automatizacin del procesos en el rea de la industria y como nuestro pas se atreve a abrir nuevos mercados e invertir en tecnologa de la cual necesita profesionales como nosotros para manejara y entregar de esta manera su mximo provecho en vas para el desarrollo de la empresa.

Para finalizar, esta fue la experiencia que nos permiti simular el rea de trabajo facilitada por el Laboratorio CIMUBB de nuestra Universidad del Bio-Bio, junto a nuestro profesor Gui Doctor Juan Carlos Parra y Don Christan Aguilera Carrasco Director del centro CIMUBB.

205

Bibliografa

Bibliografa
CIMUBB: Laboratorio de Sistemas Automatizados de Produccin. [on line] http://www.cimubb.ubiobio.cl

Laboratorio CIMUBB: Manuales operacionales y funcionales del Robot Scorbot ER-V Plus, facilitados por el Ingeniero de soporte a cargo Don Luis Vera : Scotbot-ER VpLus Manual de Usuario N Cat 100265 Rev.A; ACL Lenguaje de Control avanzado versin 1.43, F44 Gui de Referencia Para Controlador-A; ATS Software Terminal Avanzado versin 1.44 Gui de Referencia Para Controlador-A; Scorbase Para Windows SCORBASEpro, Manual Usuario N Cat. 100268 Rev.A; ACLoff-line Software version 1.67 Manual N Cat. 100273 Rev.01. de de Usuario

FLEB: Libro Electrnico sobre Lgica Difusa - Andrs Bermdez, Angel Barriga, Iluminada Baturone, Santiago Snchez - Instituto de Microelectrnica de Sevilla [on line] (http://www.imse.cnm.es/online/Articulos/671.pdf ).

Visin por Computador, Imgenes digitales y aplicaciones :Libro de la Biblioteca de Nuestra Universidad, Autores Gonzalo Pajares y Jess M. de la Cruz .

Inteligencia Artificial Un Enfoque Moderno, Libro de la Biblioteca de Nuestra Universidad, Segunda Edicin. Stuart Russell (Prentice Hall).

QT: La Pagina Oficial de la librera de desarrollo de interfaces graficas Qt, donde obtuvimos la documentacin de referencia [on line] (http://qt.nokia.com/).

206

Bibliografa Learning OpenCV, Computer Vision with the OpenCV Library: Libro que ensea a programar usando las librerias de OpenCV, escencial para cualquiera que necesite trabajar en vision por computador, o la vision artificial mediante C y/o C++, Kaehler. Autores Gary Bradski and Adrian

LearningOpenCV_Code (codigos de ejemplos de OpenCv): Documentation y ejemplos detallados del Libro Learning OpenCV.

Matlab: Pagina oficial con la documentacion necesaria de este software, se consulto la documentacion [on line] http://www.mathworks.com/

LnxComm: Libreria del puerto serial, que nos entrega el conocimiento necesario para manipular el puerto. [on line] http://zsoluciones.com/datos/?page_id=11

Introduccin a la Robotica: Libro que introduce a la robotica de forma experimenta desde cualquier nivel inicial.Autor Jose Maria Angulo, Susana Yesa Romero, editorial Paraninfo

Digital image processing: Libro de procesamiento de imagenes.Autor Gonzlez, Rafael C.

Digital image processing using MATLAB: Libro de procesamiento de imagenes usando matlab. Autor Gonzlez, Rafael C.

Volumetric image analysis: analisis de imagenes volumetricas. Autor Lohmann, Gabriele

207

También podría gustarte