“desarrollo de interfaz para el traslado de un objeto...

212
“Desarrollo de interfaz para el traslado de un objeto utilizando una celda flexible dentro del plano por medio de visión artificial” Trabajo de Titulación presentado en conformidad a los requisitos para obtener el título de Ingeniero Civil en Informática Por Cesar Hernaldo Flores Arteaga Leonardo Andres Ruiz Rodriguez Profesor Guiá JUAN CARLOS PARRA Profesor del Departamento de Sistemas de Información, Facultad de Ciencias Empresariales. Concepción, 26 de Febrero de 2010 Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Upload: others

Post on 19-Apr-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

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

medio de visión artificial”

Trabajo de Titulación presentado en conformidad a los requisitos para obtener el

título de Ingeniero Civil en Informática

Por Cesar Hernaldo Flores Arteaga

Leonardo Andres Ruiz Rodriguez

Profesor Guiá

JUAN CARLOS PARRA Profesor del Departamento de Sistemas

de Información, Facultad de Ciencias Empresariales.

Concepción, 26 de Febrero de 2010

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 2: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Tabla de Contenidos

Tabla de ContenidosResumen.....................................................................................................................................................1 Agradecimientos ........................................................................................................................................2 Introducción ...............................................................................................................................................4 Contenido...................................................................................................................................................6 1 Presentación del Problema.....................................................................................................................8

1.1 Origen del Tema. ............................................................................................................................8 1.2 Objetivos ........................................................................................................................................9

1.2.1 Objetivo General ....................................................................................................................9 1.2.2 Objetivos Específicos .............................................................................................................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 Presentación del Problema ...........................................................................................................11 1.6 Especificación de Requerimientos ...............................................................................................12

1.6.1 Descripción 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 comunicación ..........................................................................................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 Automatización? .....................................................................................................22 1.8.2 ¿Qué es Visión Artificial?.....................................................................................................23 1.8.3 ¿Qué es Inteligencia Artificial? ............................................................................................24 1.8.4 ¿Qué es Visión por Computador?.........................................................................................25 1.8.5 ¿Qué es Dev-C++? ...............................................................................................................26

1.9 Problemas surgidos y dificultades de éste “Capítulo” .................................................................27 2 Tratamiento de Imágenes .....................................................................................................................28

2.1 Presentación 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 imágenes .....................................................31 2.4 OpenCV........................................................................................................................................33

2.4.1 ¿Qué es OpenCv? .................................................................................................................33

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 3: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

2.4.2 OpenCV Estructura y Contenido..........................................................................................34 2.4.3 ¿Por qué usar OpenCV? .......................................................................................................35

2.5 Pasos a principales en la obtención de características 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 Binarización de Imágenes.....................................................................................................41 2.5.3 Transformaciones Morfológicas...........................................................................................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 Imágenes ...................................................................................49 2.8 Diseño...........................................................................................................................................50

2.8.1 Diagrama de flujo de datos...................................................................................................50 2.9 Problemas surgidos y dificultades de éste “Capítulo” .................................................................52

3 Lógica Difusa.......................................................................................................................................54 3.1 Definiciones previas.....................................................................................................................54

3.1.1 Conjuntos Difusos y Grado de pertenencia ..........................................................................54 3.1.2 Valores de Membresía ..........................................................................................................55

3.2 Definición Lógica Difusa.............................................................................................................56 3.3 Esquema Lógica Difusa ...............................................................................................................58

3.3.1 Fuzzificación ........................................................................................................................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 lógicos entre Antecedentes.........................................................................59

3.3.4 Desfuzzificación ...................................................................................................................60 3.3.4.1 Métodos de Desfuzzificación .......................................................................................60

3.4 Funcionamiento ...........................................................................................................................61 3.5 ¿Por qué Lógica Difusa? .............................................................................................................62 3.6 Como crear un Sistema Difuso Basado en Reglas .......................................................................63 3.7 Matlab...........................................................................................................................................64

3.7.1 Definición .............................................................................................................................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 librería de funciones matemáticas Matlab ...............................................................65 3.7.3.3 Gráficos.........................................................................................................................66 3.7.3.4 La interfaz de aplicación Matlab (API) ........................................................................66

3.7.4 Toolboxes..............................................................................................................................66 3.7.5 Simulink ...............................................................................................................................67 3.7.6 Fuzzy ....................................................................................................................................67

3.8 Implementación............................................................................................................................67

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 4: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

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 Lingüísticas ...................................................................................................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 Integración Fuzzy Toolbox y Simulink.........................................................................78

3.8.4 Generación de Código C en Simulink ..................................................................................79 3.9 Diseño e implementación.............................................................................................................83

3.9.1 Diagrama de Bloques ...........................................................................................................83 3.10 Problemas surgidos y dificultades de éste “Capítulo” ...............................................................84

4 Robótica ...............................................................................................................................................85 4.1 Laboratorio de Sistemas Automatizados de Producción CIMUBB .............................................86 4.2 Scorbot – ER V Plus.....................................................................................................................87 4.3 Modos de Operación: ...................................................................................................................90 4.4 Inicialización ................................................................................................................................92 4.5 Operación 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 Comunicación Por Puerto Serial ..................................................................................................95 4.9 Comunicación Serial en el Lenguaje de Programación C ...........................................................96 4.10 Monitoreo del Puerto Serial .....................................................................................................106 4.11 Comandos ACL a Utilizar ........................................................................................................112 4.12 Problemas surgidos y dificultades de ésta “Capítulo” .............................................................116

5 Diseño, Integración e Implementación ..............................................................................................118 5.1 Casos de Uso ..............................................................................................................................119 5.2 Diagrama de Secuencias.............................................................................................................125 5.3 Diseño Lógico ...........................................................................................................................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 Integración..................................................................................................................................169 5.4.1 Conversión de Escalas: Píxeles a Décimas de Milímetros.................................................170

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 5: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

5.4.2 Interpretación de los valores entregados por “Lógica Difusa”...........................................177 5.5 Diseño Físico..............................................................................................................................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 Integración de QT y OpenCV en Dev-c++.........................................................................186 5.5.7 Diagrama de Clases ............................................................................................................187 5.5.8 Diseño Físico de Interfaces ...............................................................................................189

5.6 Problemas surgidos y dificultades de esta “Capítulo” ...............................................................203 Conclusión del Proyecto ........................................................................................................................205 Bibliografía ............................................................................................................................................207

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 6: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Resumen

1

Resumen

El presente informe contempla los conocimientos básicos y experiencias de cómo se logró

realizar el proyecto de título para la obtención del grado de Ingeniero Civil en Informática. El cual

cumplió los objetivos propuestos, los que fueron lograr la unificación de conocimientos referente a

distintos temas : visión artificial, inteligencia artificial, tratamiento de imágenes implementándolo por

medio de un sistema capaz de manipular una celda flexible, la que mediante la visión que uno obtenga

a través de una cámara web, que vendría siendo el campo de visión que poseemos, se obtendrá un

objeto cilíndrico, el cual estará dentro de unos límites demarcados a priori, producto de esto la celda

flexible podrá proceder a obtener el objeto que se seleccionará gracias al tratamiento de imágenes

realizada previamente para poder identificarlos, por medio del software que se desarrollo.

La forma de interacción con el software es relativamente sencilla siendo de vital importancia el

conocimiento que se tenga en el tratamiento de imágenes, lo que al usuario no le será imposible

utilizarlo sin alguna ayuda al respecto. Mediante la manipulación del software se logrará poder obtener

los centroides de los objetos cilíndricos que se coloquen en el campo de visión 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 posición 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 algún sitio que el usuario le haya

designado con anterioridad. El logro se obtuvo mediante un arduo trabajo. La investigación y la

metodología 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 análisis y el diseño necesario

para no caer en problemas estructurales que podrían ser fatales durante el desarrollo del Sistema. Como

propuesta se podría dejar el presente proyecto como base para realizar avances en temas como manejo

de profundidad (consideración de la coordenada Z), siendo otro apartado muy interesante a estudiar e

implementar.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 7: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Agradecimientos

2

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

años 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 aún. Nuestras familias que nos han

entregado su amor incondicional, su compañía, apoyo, muchas gracias por sus consejos y su infinita

comprensión a nuestra ausencia como parte de la familia.

Por otra parte debemos agradecer de manera especial a nuestro profesor Guía Juan Carlos Parra

quien nos brindó su apoyo, consejos y nos dirigió a personas especializadas en ciertos temas, sin lo

cual no pudiésemos haber logrado el proyecto.

Don Cristian Aguilera quien nos brindó parte de su tiempo escuchándonos y dándonos consejos

de como abordar el tema de lógica 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 día a día en el

CIMUBB, quién 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.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 8: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Agradecimientos

3

No podemos dejar de dar las gracias a nuestro grupo de compañeros, que al inicio de esta

carrera sólo éramos un montón de desconocidos, pero que a través de este largo y pedregoso camino se

fueron estableciendo lazos de compañerismo y amistad. Nunca olvidaremos esas mañanas, tardes, días

o noches enteras en que estudiábamos o trabajábamos en grupo, ayudándonos mutuamente para que

todos pudiéramos pasar los ramos y seguir adelante, cada vez que cumplíamos este objetivo la

satisfacción era mucho mayor, ya que todo el esfuerzo entregado en forma colectiva daba sus frutos.

Pero no todo fueron estudios, sino que también compartíamos, nos reíamos, mientras esperábamos la

siguiente clase, así nos olvidábamos por algún rato de nuestros deberes y preocupaciones, Desde luego

gracias compañeros, esperamos que todos sigamos siendo amigos y podamos atesorar estos hermosos

recuerdos para siempre. Gracias, Nelson Pérez, Jorge Vergara, Oscar Demetrio, Robinson Hidalgo.

Debo agradecer especialmente a Paulina Sepúlveda por su apoyo incondicional, ayudando en la

lectura del informe, e ideas para conformar este proyecto además de correcciones ortograficas, muchas

gracias por tu ayuda.

Otra persona que también nos ayudo en un comienzo fue la profesora Yasna Mesa quien

gentilmente nos presto ayuda desinteresada y a quien le agradecemos toda su disposición frente a

nosotros.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 9: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Introducción

4

Introducción

El proceso automatizado en la industria es sin duda uno de los aspectos más 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 acción hasta realizar los procesos automáticos mediante infraestructura especializada y distintos

agentes automatizados que prestan ayudan importantes, es dentro de este marco que el CIMUBB de la

universidad del Bío-Bío 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 visión que nos

proporcione una cámara web, en este punto ya se están mezclando diferentes conceptos los cuales van

desde la visión por computadora, inteligencia artificial y el tratamiento de imágenes, todos temas de

peso e muy interesantes, siendo aplicaciones de ellos Mobile Eye, el cual mediante visión por

computadora incorporada a un vehículo es capaz de detectar personas y la distancias que hay desde al

auto a distintos objeto, siendo esto una tecnología de punta establecido hace poco tiempo, siendo

tecnologías de vanguardia. Siguiendo ésta línea se nos ocurre la investigación 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 título.

La utilización del CIMUBB, la infraestructura existente nos permite potenciar lo que deseamos

a través de sus celdas flexibles, constituyendo un desafío el obtener un objeto cilíndrico que se pueda

detectar dentro de un campo de visión, siendo ya importante que se pueda implementar en este

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 10: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Introducción

5

laboratorio, pudiendo experimentar la tecnología de punta que se maneja en este lugar.

Para poder realizar esta investigación práctica se necesitará de un estudio acabado en el tema y de la

guía necesaria para poder tener bases sólidas, como en qué lenguaje poder programarlo además estudiar

como incorporarlo a la infraestructura que ya existe presente en el lugar. Todos estos desafíos serán

expuestos en los siguientes capítulos que comprenderán módulos de funcionamiento autónomo, los

cuales serán integrados finalmente logrando el sistema completo.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 11: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Contenido

6

Contenido

El contenido del proyecto de título que se presenta se ha presentado de la siguiente forma:

A lo largo del primer Capítulo se tratará la Presentación del Problema, como ya se ha

expresado, ésta es el capítulo 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 título.

En el Segundo Capítulo se explicará el Tratamiento de las imágenes, describiéndose los

aspectos referentes a obtención y manipulación de imágenes, la realización de ciertos filtros y

obtención de información a partir de ella, por lo cual se dará sus respectivos preámbulos y detalles que

se consideren relevantes, lo cual servirá para poder detectar objetos que serán de interés para poder

capturarlo posteriormente con la celda flexible.

El Tercer Capítulo tratará el tema correspondiente a Lógica Difusa, ese tema presentará

fundamentos de lógica en la computación, el cómo se le puede intentar dar un cierto grado de

conocimiento a la computadora y que ésta pueda tomar entre comillas decisiones propias basándose en

ciertas reglas preestablecido de antemano, para de ésta manera lograr decidir hacia que punto moverse

la celda flexible, que está en una posición predefinida. También se establecerán las formas de cómo

utilizar el Toolbox de Matlab de lógica difusa además de un breve vistazo a Simulink.

El Cuarto Capítulo corresponderá a la Conexión con el Scorbot ER-V Plus, dando a conocer

aquellas formas en donde se le enviarán instrucciones de movimientos para poder desplazarse dentro de

un campo de visión establecido mediante las conexiones con la celda flexible con lo cual se podrá

capturar el objeto.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 12: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Contenido

7

El Quinto y último Capítulo corresponde al Desarrollo de la Aplicación. Hoy en día las

interfaces son indispensables para el manejo de cualquier programa, por lo cual se pretende mostrar

por medio de qué lenguaje de programación se realizará, el por qué se tomó esa decisión, su

portabilidad y otros aspectos a descubrir que influirán en el proyecto. Mientras que por otro lado en

este capítulo se expondrá todo el proceso involucrado en la Integración, estableciéndose este apartado

como un nexo entre las distintos capítulos nombradas anteriormente, esto debido a que cada parte se

trató como un módulo diferente, con lo cual la consolidación se establecerá al unir distintos tipos de

programaciones e ideas concluyendo así la finalización del proyecto, para esto se explicaran los

problemas y resultados que se obtuvieron en el vínculo de todos estos temas.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 13: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

8

1 Presentación del Problema

El presente capítulo pretende ser un primera aproximación al tema a tratar, dando a conocer

ideas y conceptos que son relevantes para su interiorización, se pretende dejar en claro qué es y cómo

se realizará el proyecto dejando bien marcado cuales son sus alcances y limitaciones a través 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 anticipación,

aplicándose a tareas de tipo reiterativas lo cual permitiría agilizarlas.

El tratamiento de imágenes, 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 imágenes o

aplicarle distintos tipos de efectos, filtros, etc. que trasformarán nuestra imagen, según nuestra

imaginación, siendo esto un estímulo importante en lo que se refiere a transformar imágenes, siendo

esto mas visto como una decoración o diseño. Desde este punto no es tan impactante como tratamiento

de imágenes reales en medicina para encontrar tumores en radiografías por ejemplo, u otro tratamiento

de imágenes.

Modernos software's de reconocimientos faciales como es el caso de las cámaras 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 mayoría de las personas cuando sonríen capturan la imagen, demostrando

la potencialidades que se pueden lograr utilizando una cámara.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 14: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

9

1.2 Objetivos

1.2.1 Objetivo General

Tomar un objeto cilíndrico con un celda flexible dentro de un plano determinado a partir de las

coordenadas obtenidas mediante visión artificial y desplazarlo, implementándolo en el laboratorio

CIMUBB de la Universidad del Bío-Bío.

1.2.2 Objetivos Específicos

1. Desarrollo de algoritmo capaz de identificar objetos dentro de un campo de visión determinado

apoyando el desarrollo de la aplicación.

2. Identificar las coordenadas de posicionamiento del objeto dentro del campo de visión

(coordenadas espaciales) mediante la creación de un algoritmo.

3. Aprender a utilizar el manejo de la celda flexible Scorbot ER-V Plus (celda flexible).

4. Diseñar modulo para identificar la posición de destino del objeto.

5. Implementar un algoritmo mediante lógica difusa que permita el encaminamiento del Scorbot

hasta tomar el objeto seleccionado.

6. Permitir la integración de los algoritmos anteriores en una aplicación.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 15: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

10

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 visión (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 cilíndricos establecidos posteriormente en el área de trabajo.

• El campo de visión es estática 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 visión y en una posición preestablecida.

• Para llegar hasta el objeto el Scorbot se irá desplazando por medio de lógica 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 lógica difusa.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 16: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

11

1.3.2 Limitaciones

• La calibración de la cámara 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 algún borde que corresponda a los limites establecidos

no sera posible seleccionarlo al momento de elegir un objeto.

• La identificación de el o los objetos dependerá de la correcta utilización del sistema en el

capítulo de análisis de la imagen correspondiente a la binarización que aplique, ya sea en su

parte normal o inversa.

• Los cilindros a colocar, estarán 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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 17: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

12

1.5 Presentación del Problema

El logro de poder capturar un objeto dentro de un campo de visión delimitado y dejarlo en una

posición distinta del campo de visión, mediante un Scorbot ER-V Plus implica distintos desafíos,

siendo la obtención y ubicación espacial dentro del campo de visión uno de los desafíos; además de

poder interpretar de una manera correcta esa información capturada por medio de una cámara web,

para así poder obtener las coordenadas de un objeto, por otra parte se encuentra el desafío 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 impresión del

problema, lo cual va a ser segmentado en diferentes partes, para poder atacar distintos problemas, esto

debido a que la planificación que tenemos presente es de ciclos iterativos de desarrollo.

1.6 Especificación de Requerimientos

Esta sección 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 guía Juan Carlos Parra, el señor 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 investigación por mezclar diferentes tipos de procedimientos que se describirán

más adelante, es por ello que no hay una persona que haya requerido el sistema como tal.

1.6.1 Descripción de Interfaces

1.6.1.1 Interfaz de Usuario

El sistema se basa en el uso de pantallas que mostrarán los procesos a realizar en el tratamiento

de la imagen que va a ir generando el usuario, siendo importante la flexibilidad que posee la sección de

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 18: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

13

la binarización, 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 realización de

algoritmos como meanshift, a demás la interfaz incorpora el uso del mouse refiriéndose al aspecto de

hacer click en una sección de una imagen, siendo esto de gran utilidad en la selección del objeto,

siendo importante destacar que si un objeto no es seleccionado la acción no se realizará, otro aspecto

son las alertas que se encuentras en ciertos puntos del sistema para darnos la posibilidad de retractarnos

de una acción dada facilitando de esta forma la interacción con el sistema.

1.6.1.2 Interfaz de Hardware

Se ha definido la implementación de una cámara web que servirá de soporte para la obtención

de una imagen de la superficie donde se encuentran los objetos, además para tomar el objeto se necesita

de la utilización del brazo robótico 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 efectúa una interacción con un sistema software externo que controla la

comunicación serial con el puerto siendo programado con este propósito para poder interactuar con el

Scorbot, además el software contiene la maquina de lógica difusa.

Es importante mencionar que el sistema actual no interactúa con la red de Internet.

1.6.1.4 Interfaces de comunicación

Se utilizará una comunicación serial con la celda flexible RS-232(instalada al mismo

computador donde se encuentra el sistema) , también se conecta la cámara web al puerto USB 2.0.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 19: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

14

1.6.2 Requerimientos Funcionales

1. Ser capaz de obtener objetos mediante la manipulación parcial de tratamientos en la imagen

2. Calcular centroides de objetos analizados

3. Al seleccionar captura Imagen en el menú principal podemos obtener la señal de video desde la

cámara 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 mostrándose los que se puedan seleccionar de una forma

diferente.

6. Seleccionar un objeto haciendo click sobre éste.

7. Seleccionar posición 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

críticas como realizar el algoritmo de meanshift no supere un segundo.

2. El tiempo de desplazamiento hasta el momento de obtención del Scorbot sera variable esto

debido al camino que piense entre comillas el sistema para llegar al objeto, ocupando la lógica

que se le aplica al llegar a posicionarse encima del objeto.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 20: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

15

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 aplicación compleja, grande y con alto grado de error. Por medio de los patrones se irán

construyendo fases por separado del proyecto las cuales serán 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 sección constituye una especie de sub-sistema, con lo que se harán pruebas

correspondientes a cada módulo, logrando identificar posibles fallas en la programación u lógica que

exista detrás haciendo posible la construcción de bases sólidas, no siendo estas un problema al

momento del siguiente avance. Con respecto a esto, es un riesgo el involucrarse e investigar o

implementar nuevas tecnologías, más aún siendo temas como el presente, por un lado de visión

artificial y por otro la manipulación de celdas flexibles, mas allá de simples pinceladas de

conocimientos teóricos al respecto, es por esto que el diseño 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 técnica vamos a tener una constante participación

con las personas expertas involucradas en el proyecto, siendo ellas nuestro profesor guía Juan Carlos

Parra que nos guío durante todo el proceso dándonos ideas y llevándonos a personas mas

especializadas en ciertos temas como, el Señor Cristian Aguilera quién nos dió un buen enfoque en lo

que se refiere a lógica difusa y Don Luis Vera quién nos prestaba ayuda en distintos aspecto del robot

Scorbot, permitiéndonos esto tener una mayor seguridad en que los requerimientos establecidos no

vayan a ser mal entendidos ni que nos salgamos del camino a seguir, también 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 cuestión, en los momentos necesarios pre-establecidos en el

proyecto en si.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 21: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

16

1.6.5 Requisitos No Funcionales

1. El sistema será implementado en Qt incorporándolo 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 utilización, 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 producción CIMUBB, con

el que cuenta la facultad de Ingeniería de nuestra Universidad. En él nos facilitaron una estación de

trabajo, compuesta a grandes rasgos por un Robot Scorbot ER-V Plus, un computador al cual va

conectado el Scorbot y una cámara Web, además del soporte a cargo del ingeniero del CIMUBB Don

Luis Vera, a continuación en la Figura 0-1 se aprecia el área de trabajo.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 22: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

17

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

Una vez presentado el ambiente de trabajo se procederá a realizar una descripción mas detallada

de los componentes que la conforman, acompañado de imágenes explicativas para dar una mayor

compresión, por ello en la Figura 0-2 se detallan los componentes de la estación de trabajo.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 23: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

18

Figura 0-2: Componentes del área de trabajo.

Descripción:

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 cámara web, éste análisis corresponde a la

detección de objetos dentro de la superficie de alcance del robot.

Corresponde al computador que se ocupó para la realización del proyecto, a el van

conectados el robot Scorbot ER-V Plus a través del puerto serial RS-232 y la cámara Web por medio

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 24: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

19

de USB 2.0, en este equipo es donde se monta la aplicación creada en el proyecto, que maneja tanto al

robot como a la cámara. Las especificaciones técnicas 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 cámara Web Microsoft LifeCam VX-6000 (ver Figura 0-3), esta emite video de una

resolución de 640x480 píxeles, del cual tomamos una imagen del área de alcance del Robot Scorbot

donde se encuentran situados los objetos, para ser analizada por el programa diseñado. La cámara se

encuentra situada en una barra de aluminio a una altura de 77,5 centímetros 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 sitúa la Figura 0-4.

Figura 0-3: Cámara Web Microsoft LifeCam VX-6000.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 25: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

20

Figura 0-4: Imagen tomada de la superficie, por la cámara.

Determina la barra de aluminio en la cual va montada la cámara web, esta tiene un grosor de 1.5

cm. y una altura total de 1,57 metros hasta el piso, podemos ver con más detalle las dimensiones y la

forma de la barra en la Figura 0-2. Como vemos tiene forma de “L invertida” debido a la posición

que debe llevar la cámara web en el espacio de trabajo. Todas las dimensiones están acordes para que

no interfieran en el funcionamiento del Scorbot.

Identifica a la superficie donde se encontrarán 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 límite el radio de alcance del robot (ver Figura 0-6), además

debemos coordinar que esta superficie esté enfocada correctamente por la cámara web. En la Figura 0-

5 se señala la superficie que se utilizara en las pruebas.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 26: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

21

Figura 0-5: Superficie donde se encontraran los objetos a seleccionar (Dimensión: 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

investigación no se ocupará como base para dejar los objetos a seleccionar, debido a que la cámara en

su ubicación actual no alcanza a tener una completa visión de esa área.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 27: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

22

Corresponde a uno de los objetos que será tomado por el Robot Scorbot ER-V Plus, es un cilindro

de 3,5cm de diámetro y 2,8cm de alto (Ver Figura 0-7), cabe mencionar que serán objetos de estas

características los que se podrán 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 están los objetos que serán seleccionados, ésta posee una dimensión 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 título, refiérase a esto como pinceladas de un tema

que se profundizara en cada una de sus capítulos presentes a lo largo de este documento.

1.8.1 ¿Que es Automatización?

Automatización es la tecnología referida al uso de sistemas mecánicos, eléctricos y

computarizados para operar y controlar la producción(Groover, 1980), un ejemplo es la producción

automática de envases plásticos de bebidas.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 28: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

23

Groover, indica que existen básicamente 3 tipos de automatización:

I. Automatización Rígida, se caracteriza por realizar procesos de producción de gran volumen

conllevando una gran velocidad en el desarrollo de la producción, 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 añadir una nueva

máquina a la producción de un producto X.

II. Automatización 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. Automatización Flexible, es una extensión de la programación programada diferenciándose en

su capacidad para cambiar parte de los programas o disposiciones físicas, sin perder tiempo de

producción.

1.8.2 ¿Qué es Visión Artificial?

Visión Artificial es el conjunto de técnicas que permiten la obtención de información por

métodos ópticos, tanto de manera automática como asistidas por un operador.

Este conjunto heterogéneo de técnicas incluye iluminación, captación de imagen, digitalización

de la misma, pre procesamiento o acondicionamiento, procesamiento y comunicación de los resultados.

Aspectos que serán 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 específicos que van desde la medida de distancia en pixeles o el contar de los mismos

hasta tratamientos en el dominio de la frecuencia.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 29: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

24

1.8.3 ¿Qué es Inteligencia Artificial?

Se denomina inteligencia artificial a la rama de la ciencia informática dedicada al desarrollo de

agentes racionales no vivos.

Para explicar la definición anterior, entiéndase a un agente como cualquier cosa capaz de

percibir su entorno (recibir entradas), procesar tales percepciones y actuar en su entorno (proporcionar

salidas), y entiéndase a la racionalidad como la característica que posee una elección de ser correcta,

más específicamente, de tender a maximizar un resultado esperado (este concepto de racionalidad es

más general y por ello más adecuado que inteligencia para definir la naturaleza del objetivo de esta

disciplina).

Por lo tanto, y de manera más específica la inteligencia artificial es la disciplina que se encarga

de construir procesos que al ser ejecutados sobre una arquitectura física producen acciones o resultados

que maximizan una medida de rendimiento determinada, basándose en la secuencia de entradas

percibidas y en el conocimiento almacenado en tal arquitectura.

Existen distintos tipos de conocimiento y medios de representación del conocimiento. El cual

puede ser cargado en el agente por su diseñador o puede ser aprendido por el mismo agente utilizando

técnicas de aprendizaje.

También se distinguen varios tipos de procesos válidos para obtener resultados racionales, que

determinan el tipo de agente inteligente. De más simples a más complejos, los cinco principales tipos

de procesos son:

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 30: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

25

• Ejecución de una respuesta predeterminada por cada entrada (análogas a actos reflejos en seres

vivos).

• Búsqueda del estado requerido en el conjunto de los estados producidos por las acciones

posibles.

• Algoritmos genéticos (análogo al proceso de evolución de las cadenas de ADN).

• Redes neuronales artificiales (análogo al funcionamiento físico del cerebro de animales y

humanos).

• Razonamiento mediante una lógica formal (análogo al pensamiento abstracto humano).

También existen distintos tipos de percepciones y acciones, pueden ser obtenidas y producidas,

respectivamente por sensores físicos y sensores mecánicos en máquinas, pulsos eléctricos 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, planificación automática, la

habilidad de responder a diagnósticos 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 economía, medicina, ingeniería 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 Visión por Computador?

Visión por computador es la ciencia y la tecnología de las máquinas que ven. Como una

disciplina científica, la visión por computador se refiere a la teoría para la construcción de sistemas

artificiales que obtengan información de las imágenes. Los datos de imagen puede tomar muchas

formas, como una secuencia de video, puntos de vista de varias cámaras, o datos multidimensionales

desde un escáner médico.

Como disciplina tecnológica, la visión por ordenador trata de aplicar sus teorías y modelos para

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 31: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

26

la construcción de sistemas de visión por computador. Ejemplos de aplicaciones de visión artificial son

los sistemas para:

*Control de procesos (por ejemplo, un robot industrial o un vehículo autónomo).

*Detección de eventos (por ejemplo, para la vigilancia visual en caso de objetos abandonados o

de conteo de personas).

Organizar la información (por ejemplo, para bases de datos de indexación de imágenes y

secuencias de imágenes).

*Modelado de objetos o entornos (por ejemplo, la industria de inspección, análisis de imágenes

médicas o el modelado topográfico).

*Interacción (por ejemplo, como la entrada de un dispositivo para la computadora la interacción

humana).

Visión por Computador también se puede describir como un complemento (pero no

necesariamente lo contrario) de la visión biológica. En la visión biológica, la percepción visual de los

seres humanos y los animales se estudian diferentes, dando lugar a modelos de cómo funcionan estos

sistemas en términos de procesos fisiológicos. Visión por ordenador, por otro lado, los estudios y se

describen los sistemas de visión artificial que se implementan en software y/o hardware. El intercambio

interdisciplinario entre lo biológico y la visión por ordenador ha demostrado ser cada vez más fructífera

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 programación 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

librerías estáticas. 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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 32: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 1: Presentación del Problema

27

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 aplicación, todo esto se vera a fondo en el 5

1.9 Problemas surgidos y dificultades de éste “Capítulo”

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 investigación que se realizo sobre los puntos principales ya expuestos.

El tiempo invertido en la recolección de datos fue esencial, hay que destacar que en internet y en

libros y publicaciones hay bastante información de tipo teórica sobre como tratar imágenes, sobre el

manejo de una celda flexible, inteligencia artificial, de la declaración de lenguaje ACL (utilizado para

la comunicación 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.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 33: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

28

2 Tratamiento de Imágenes

La vista es el sentido mas avanzado que poseemos siendo las imágenes las que juegan un papel

importante en la percepción que tenemos.

Las personas tenemos como limitante la banda visible del espectro electromagnético (EM), pero

no así las maquinas quienes pueden percibir prácticamente 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 aplicarán a una imagen para poder

obtener información 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 imágenes, lo cual sera abordado posteriormente. Se explicarán los diferentes procedimientos

realizados a la imagen además de nombrar el lenguaje que se utilizará para poder realizar este módulo.

2.1 Presentación del Problema

La obtención de información referente al temas es abundante, pero el tratamiento de

información por medio de lenguajes viene siendo mas recatada. Se investigó, se analizó que se podían

tratar imágenes por medio de librerías adicionales como GD de PHP, pero el tratamiento de ello era

algo simplón, no a la altura de algo mas experimentado como la biblioteca de visión artificial openCV

la cual se decidió ocupar.

Además de esto se tuvo que profundizar en temas referente al tratamiento de imágenes, el

filtrado de imágenes, máscaras y otros conceptos que eran nuevos, para nuestro entender.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 34: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

29

Como primera etapa se propuso la obtención de un objeto dentro de una imagen, además de sus

coordenadas, mediante distintos tratamientos de la imagen explicados más adelante en éste capítulo.

Todo esto mediante la librería openCV cuya sintaxis de lenguaje de programación 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 manipulación de las imágenes mostrando conceptos relacionados con el presente

capítulo.

2.2.1 ¿Que es una Imagen?

Una imagen puede ser definida matemáticamente como una función 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 resolución 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 imágenes además de aquellos procesos que extraen atributos a las imágenes, incluyendo el

reconocimiento de objetos individuales

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 35: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

30

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 imágenes, por ejemplo lograr que una imagen sea mas clara en el caso de imágenes tomadas

con escasa luz.

Se caracterizan porque sus entradas son imágenes y sus salidas también.

II. Procesos de Nivel Medio, Operaciones como segmentación y clasificación de objetos

individuales.

Se caracterizan porque sus entradas son generalmente imágenes, pero sus salidas son atributos

extraídos de esas imágenes, ejemplo de ello es la obtención de contornos, bordes, identidad de objetos

individuales.

III. Procesos de Alto Nivel, Implica el obtener algún significado de un conjunto de objetos

reconocidos mediante análisis de imagen y finalmente realizar las funciones cognitivas

asociadas con la vista, esto se refiere a como las personas le dan una interpretación a las señales

de tránsito, siendo una imagen nosotros al reconocerla le damos un significado y realizamos una

acción asociada a ella.

Un ejemplo de tratamiento de imagen al ver distintas banderas de distintos países sería: los

procesos de adquisición de la imagen del área que contiene a la bandera, el pre procesamiento de la

imagen, la extracción (segmentación) de banderas individuales, la descripción 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 Visión

por computador.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 36: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

31

2.3 Pasos fundamentales del procesamiento digital de imágenes

Las partes fundamentales del procesamiento digital de imágenes 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) Adquisición de imágenes

Generalmente incluye pre procesamiento. Consistiendo en reducir la información 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 características que son de nuestro interés. Logrando de esta forma que la

imagen procesada se vea mejor.

3) Restauración de la imagen.

Produce una mejora de la apariencia de la imagen, a diferencia de la mejora de la imagen, subjetiva, la

restauración es objetiva, en el sentido en que las técnicas de restauración tienden a ser modelos

probabilísticos o matemáticos de degradación de la imagen , esto quiere decir, que una imagen que no

se veía nítida producto de ruido externo, aplicando la restauración a la imagen obtenemos dicha imagen

como es originalmente sin el ruido causado por algún 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 imágenes digitales.

HSL,es un modelo de color que representa los colores por medio de su Tonalidad, de su Saturación y su

Luminosidad. El modelo HSL se representa gráficamente como un cono doble o un doble hexágono.

Los dos vértices 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 saturación y la distancia al eje blanco-negro se corresponde a

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 37: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

32

la luminancia.

5) Ondeletas

Fundamentalmente utilizadas para representar imágenes en varios grados de resolución. Se utiliza

principalmente en compresión.

6) Compresión

Reduce el almacenamiento requerido para guardar una imagen, o el ancho de banda para transmitirla,

un ejemplo de esto es la imágenes que se guardan en formato .jpg, este es una extensión de imagen que

ocupa un algoritmo de compresión para poder dejar la imagen en un peso menor al de la extensión

origina comparándola por ejemplo con una extensión .bmp que es más pesada y conserva muchos

detalles de la imagen.

7) Procesamiento morfológico

Es una herramientas para extraer componentes de la imagen útiles para la representación y descripción

de formas.

8) Segmentación

Divide una imagen en sus partes constituyentes.

9) Representación y descripción.

Acá se toman decisiones tales como si la forma obtenida debe ser tratada como un frontera o una

región, además de extrae atributos que resultan en información de interés.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 38: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

33

2.4 OpenCV

2.4.1 ¿Qué es OpenCv?

OpenCV es una biblioteca libre de visión artificial originalmente desarrollada por Intel.

Ejemplos de sistemas desarrollados con openCV son sistemas de seguridad con detección 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

publicación se da bajo licencia BSD, que permite que sea usada libremente para propósitos comerciales

y de investigación 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 Visión, como

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

robótica.

Como metas el proyecto pretende proveer un "Tool-Kit" o Marco de desarrollo fácil de utilizar

y altamente eficiente. Esto se ha logrado, realizando su programación en código c y c++ optimizados,

aprovechando además las capacidades que proveen los procesadores multi núcleo. Open CV puede

además utilizar el sistema las Primitivas de Rendimiento Integradas de Intel. Que es un conjunto de

rutinas de bajo nivel específicas para procesadores Intel (IPP).

Las siglas Opencv provienen de los términos anglosajones “Open Source Computer Vision

Library”. Por lo tanto, Opencv es una librería de tratamiento de imágenes, destinada principalmente a

aplicaciones de visión por computador en tiempo real.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 39: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

34

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 básico de imágenes y algoritmos de

alto nivel de visión por computador, ML es la máquina de aprendizaje de la colección, que incluye

muchas clasificadores de herramientas estadísticas y de la agrupación. HighGUI contiene rutinas I / O

y funciones para almacenar y cargar videos e imágenes, y CXCore consta de estructuras de datos y

funciones que proporcionan la base para todos los algoritmos de visión 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 harán. Algunas funciones que se encuentran en cvaux:

• Tracking de Ojos y Boca

• Descriptor de Texturas

• Calibracion de Camaras

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 40: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

35

2.4.3 ¿Por qué usar OpenCV? La otra opción para el tema del tratamiento de la imagen era utilizar Matlab, pero la verdad es

que OpenCV es una librería muy potente orientado a la visión por computadora, fácil de utilizar y

además portable a otras plataformas, Matlab también 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 implementación rapidez debido a la cantidad de información a utilizar por lo que OpenCV es

una excelente opción debido a que se puede trabajar con punteros en esta librería y además está

desarrollado en C++, lenguaje de programación en la que ya tenemos experiencia por lo que se nos

hará un poco mas sencillo utilizar esta librería.

También sabemos que OpenCV es una biblioteca de visión artificial por lo que cuenta con

innumerables problemas que ya se han solucionado, facilitando y complementando así el trabajo para

este proyecto. Transformándose de esta manera en una ventaja competitiva dentro de las herramientas

principales para el desarrollo óptimo de una solución 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 cuestión

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 capítulo como un

módulo 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 utilización.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 41: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

36

2.5 Pasos a principales en la obtención de características del objeto

Acá se señalarán los pasos a seguir para el correcto tratamiento de la imagen que se procesará,

obtenida por medio del punto de visión del sistema, que corresponderá a una cámara, 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 interés, con el que se trabajará más adelante (ver

figura 1.1).

Figura 1-2: Imagen inicial obtenida por webcam

2.5.1 Algoritmo Meanshift

La segmentación de imágenes por el algoritmo de corrimiento de media, Mean-Shift de ahora

en adelante nombrado como MS, se puede definir como la descomposición de una imagen en regiones

homogéneas, las cuales comparten características tales como intensidad y distribución espacial.

Los aspectos mas relevantes del algoritmo MS se mostraran a continuación.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 42: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

37

2.5.1.1 Umbral.

El algoritmo trabaja de manera similar a los métodos de filtrado que operan en la vecindad de

cada pixel de la imagen que se desea procesar, solamente que en la segmentación de imágenes,

(hablando en términos del dominio de intensidad), se minimiza el número de máximos locales en la

imagen dejando sólo aquellos que son significativos, y todos los pixeles que se encuentren en su

vecindad cercana serán asociados a ellos, generando así las regiones homogéneas.

Este algoritmo funciona eliminando el ruido de tipo aditivo que pudiera existir en nuestra

imagen previo a la segmentación.

El algoritmo MS trabaja mediante operaciones matemáticas 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 sólo aquellos cuyo valor

de intensidad esté dentro de un intervalo de ponderación T del valor de intensidad del píxel central. Es

a esta ponderación 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 número de elementos en la ventana que cumplen con la condición p(i,j) <

T. Entonces:

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 43: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

38

Donde P (i, j) es la transformación de p (i, j) con las mismas coordenadas espaciales. Por

ejemplo véase la Figura 1.2 para observar esto claramente. Considérese un umbral T=2 y un tamaño de

ventana de 3x3.

Figura 1-3: Sustitución del píxel central por el promedio de los píxeles 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). También observe que

se aplicó el mismo algoritmo para todos los pixeles dentro de la ventana.

2.5.1.2 Distancia Espacial

Otro parámetro importante que hace que el MS nos permita segmentar imágenes, 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 fácilmente dos matrices más 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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 44: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

39

imagen, que sustituimos cada pixel de estas matrices por el promedio de su vecindad. Promediando, (al

igual que con el umbral), sólo 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

además las coordenadas espaciales de los mismos estén 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 estén

dentro del umbral T;

ii) Se consideran solamente aquellos pixeles dentro de la ventana que estén 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 estén 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 demás en la imagen que deseamos segmentar.

El efecto de utilizar la información espacial en la imagen que deseamos segmentar provoca que

al momento de efectuar operaciones en la vecindad de cada píxel 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.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 45: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

40

2.5.1.3 Iteraciones.

La segmentación de la imagen, es decir, la visible agrupación de las diferentes estructuras

anatómicas presentes en la imagen de RM, se logra mediante la iteración del algoritmo descrito

anteriormente. Por tanto, la iteración de la imagen original que deseamos segmentar con MS converge

a una única imagen segmentada después de n iteraciones, y para la iteración n+1, n+2, ..., M; con

M>>n, la imagen resultante será la misma que la obtenida en la n-ésima iteración. Por lo tanto, el

número de iteraciones está acotado, y no necesariamente mientras más iteremos este algoritmo,

obtendremos mejores resultados

A continuación se muestra en la figura 1-4 el resultado del algoritmo MS aplicado sobre la

figura 1-2.

Figura 1-4: aplicación del algoritmo Mean Shift sobre la figura 1-2.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 46: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

41

2.5.2 Binarización de Imágenes

La binarización es un caso particular de la segmentación 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 métodos de búsqueda automática de umbrales, como es el

caso del método 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 continuación se mostrará binarización a diferentes niveles de Umbral:

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 47: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

42

Figura 1-5: aplicación de binarización sobre la figura 1-4 con un umbral de 127

Figura 1-6: aplicación de binarización sobre la figura 1-4 con un umbral de 180

2.5.3 Transformaciones Morfológicas

La base de la transformación morfológica es en el campo matemáticamente de la teoría de

conjuntos.

El objetivo de las transformaciones morfológicas es la extracción de estructuras geométricas en

los conjuntos sobre los que se opera, mediante la utilización de otro conjunto de forma conocida

denominado elemento estructurante. El tamaño y la forma de este elemento se escoge, a priori, de

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 48: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

43

acuerdo la morfología del conjunto sobre el que va a interaccionar y de acuerdo a la extracción de

formas que se desean obtener. Ejemplos básicos de elementos estructurantes utilizados en la práctica se

muestran en la figura 1-7.

2.5.3.1 Erosionar

En ‘teoría de retículos’, una erosión es una operación que conmuta con el ínfimo. Dado un

retículo completo X, una erosión es una función ε : X → X en la que:

donde I es cualquier conjunto de índices y {xi} es una colección arbitraria de valores xi ∈ X.

La transformación de erosión es el resultado de comprobar si el elemento estructurante Y está

totalmente incluido dentro del conjunto X. Cuando esto no ocurre, el resultado de la erosión es el

conjunto vacío.

La erosión de un conjunto X por un elemento estructurante Y se define como el conjunto de

puntos o elementos x, pertenecientes a X, de forma que cuando el elemento estructurante Y se traslada

a ese punto, el elemento queda incluido en X:

La ecuación anterior puede reformularse en términos de una intersección de conjuntos

trasladados. Las traslaciones vienen determinadas por el elemento estructurante Y:

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 49: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

44

El efecto de una operación de erosión 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 tamaño al

elemento.

Figura 1-7: Erosión de X por el elemento estructurante Y. Los elementos conectados del conjunto X más pequeños que Y

son eliminados.

La última definición de erosión puede extenderse directamente al caso de imágenes binarias y

de escala de grises. La erosión de una imagen f por un elemento estructurante Y se denota por εY(f) y

se define como el mínimo (^) de las traslaciones de f por los elementos s de Y:

En señales digitales o imágenes de escala de grises la noción de ínfimo pasa a denotarse

mínimo. En este caso, la erosión es el mínimo valor de la función imagen en la ventana (dominio)

definida por el elemento estructurante cuando su origen se sitúa en x (señales unidimensionales) ó (x,y)

(imágenes). Para señales unidimensionales se puede definir la erosión como:

Para imágenes la erosión puede ser definida como:

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 50: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

45

En la figura 1-7 se muestra la erosión de una señal unidimensional de función f. Se puede

observar el efecto de la intersección de traslaciones definidas por el elemento estructurante Y. El

resultado es el mínimo valor de todos los presentes bajo la definición del elemento estructurante.

Figura 1-8: Erosión de una señal unidimensional definida por la función f. Elemento estructurante de tamaño 3. El

resultado es el mínimo de todos los valores presentes bajo la definición del elemento estructurante. El resultado de la erosión en señales bidimensionales de escala de grises (imágenes) es una

señal de menor valor, es decir, una imagen más oscura, puesto que la erosión pretende minimizar el

valor de la señal que, en el caso de los grises tiene una definición [0,255].

2.5.3.2 Dilatar

La dilatación es la operación dual de la erosión. En ‘teoría de retículos’, un operador δ : X → X

se denomina dilatación en el caso que conmute con el supremo de una colección de valores:

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 51: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

46

donde I es cualquier conjunto de índices y {xi} es una colección arbitraria de valores xi X.

El resultado de la dilatación es el conjunto de puntos origen del elemento estructurante Y tales

que el elemento contiene algún 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 ecuación puede reescribirse como una unión de conjuntos trasladados. Las

traslaciones vienen definidas por el dominio del elemento estructurante:

δY (X ) = U X −s

sY

El efecto de una operación de dilatación puede observarse en la figura 1-9, en donde un

elemento estructurante Y de forma de disco circular aumenta la definición del objeto X.

Figura 1-9: Dilatación de X por el elemento estructurante Y. El conjunto X aumenta su definición.

Se puede extender la última definición de dilatación a imágenes binarias o de escala de grises f,

interpretando la dilatación como el máximo valor de las traslaciones de f (definidas por la forma del

elemento estructurante) en cada punto de la imagen:

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 52: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

47

La dilatación 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 tamaño menor al del elemento

estructurante desaparecen.

Figura 1-10: Imagen Binaria sin Erosionar

Figura 1-11: Imagen Binaria Erosionada

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 53: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

48

En otras palabras, el valor de dilatación de un píxel (x,y) es el máximo valor de la imagen en la

ventana de vecindad definida por el elemento estructurante cuando su origen se sitúa en (x,y):

En la figura 1-12 se muestra la dilatación de una señal unidimensional de función f. Se puede

observar el efecto de la intersección de traslaciones definidas por el elemento estructurante Y. El

resultado es la selección del mínimo valor de todos los presentes bajo la definición del elemento

estructurante.

Figura 1-12: Dilatación de una señal unidimensional definida por la función f. Elemento estructurante de tamaño 3. El resultado es el máximo de todos los valores presentes bajo la definición del elemento estructurante.

2.5.4 Centroide

En geometría, el centroide o baricentro de un objeto X perteneciente a un espacio n-

dimensional es la intersección de todos los planos que dividen a X en dos partes de igual n-volumen.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 54: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

49

El centroide es un punto que define el centro geométrico de un objeto. Su localización 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 actúan sobre una figura irregular, o figuras geométricas 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 Dev-

C++ que va ser quien va a albergar a OpenCV.

Una vez instalado Dev-C++, se procede con la instalación de OpenCV, a continuación 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, Librerías y Cabeceras

C/C++, previo esto ya estamos en condiciones de trabajar con las librerías de OpenCV.

2.7 Aplicaciones del tratamiento de Imágenes

El tratamiento de imágenes es importante pues puede ser aplicado de muchas formas:

Medicina molecular, Se inyecta al paciente un isótopo radioactivo que emite rayos gamma cada

vez más débiles, estos se detectan y se forma la imagen.

Mapas en 3D para adquisición submarina, al disparar 2 pistolas de aire produciendo vibraciones

de frecuencia, al recuperar las ondas de regreso procesa la información y construye un mapa 3D del

fondo del océano.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 55: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

50

2.8 Diseño

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 imágenes, mostrando cada una de ellas al usuario, además de

poder hacer click sobre la imagen cuando se hallan encontrado los objetos, es aquí donde ésta

aplicación determinará si es que la posición donde se estableció la búsqueda del objeto se encuentra o

no devolviendo como resultado su centroide.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 56: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

51

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 57: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

52

2.9 Problemas surgidos y dificultades de éste “Capítulo”

El primer problema fue entender una librería con sus estructuras, debiendo invertirse tiempo

valioso de esta forma, debido a que existe muy poca documentación al respecto, siendo esto un punto

problemático pues todo lo que se realizara se debía hacer prácticamente desde cero, invertíendose

tiempo valioso en las pruebas y posibles soluciones al respecto, primero se empezó revisando librerías

en php lamentablemente habían cosas que se convertían muy problemáticas a realizar debido a que no

se encontró en su instante alguna librería de visión artificial como lo es OpenCV. Otro punto que causo

dificultad fue la conexión con la cámara web siendo en un primer instante bastante problemático,

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 58: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 2: Tratamiento de Imágenes

53

lográndose superar estos problemas a medida que se iban haciendo pruebas y leyendo libros al respecto

que dieran nociones al respecto.

Con respecto a la instalación de esta librería 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 momentáneamente e investigar como compilar a mano por consola a través del g++

y por otro lado en windows se tubo que aprender a incorporar instalarlo, luego incorporarlo a el

entorno de programación utilizado siendo devC++ resultando en un comienzo un acto relativamente

complejo, lográndose finalmente dando buenos resultados y aprendiendo a a partir de ello el manejo de

las variables de entorno de ellos sistemas.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 59: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

54

3 Lógica Difusa

Lógica difusa también llamada lógica borrosa, es la lógica que utiliza expresiones que no son ni

totalmente ciertas ni completamente falsas, es decir, es la lógica 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 dándole

ciertas nociones de conocimientos que se les va a entregar por medio de lógica difusa, para de esta

forma poder decidir entre comillas que acción debe realizar.

3.1 Definiciones previas

3.1.1 Conjuntos Difusos y Grado de pertenencia

Por definición conjunto es una agrupación de elementos bien definida, en un conjunto difuso a

cada elemento que compone la agrupación, 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 sería: una temperatura de 10ºC ¿Es fría o

tibio?, frío y caliente viene siendo un conjunto bien definido, en lógica difusa podemos definir un par

de conjuntos frío y tibio y especificar el grado de pertenencia de la temperatura dada en cada conjunto

con lo que se podría definir que 10ºC es tanto frío como tibio

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 60: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

55

Figura 2-1: Representación del grado de pertenencia

La ventaja de los conjuntos difuso es que se pueden tener cambios graduales en la salida para

cambios pequeños en las entradas. Como se puede observar ambas temperaturas tienen cierto grado de

pertenencia al conjunto Frío y al conjunto Tibio

3.1.2 Valores de Membresía

El concepto de función de membresía en un conjunto difuso se ilustra en el ejemplo

a continuación:

Figura 2-2: Función de membresía

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 61: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

56

Donde, según la figura anterior, la función de membresía 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 función de membresía es el mismo; es

decir, existe un grado de pertenencia que varia entre 0 y 1.

3.2 Definición Lógica Difusa

La lógica 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 variación de la variable,

es decir, que tanta correspondencia tiene la variable X en cada uno de los conjuntos definidos. Este

método de razonamiento de maquina es similar al pensamiento humano, que puede procesar

información incompleta o incierta, como se realiza cotidianamente. Precisamente es en esto en que se

diferencia de la lógica convencional (Lógica Clásica) la cual trabaja con información bien definida y

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 62: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

57

precisa, valores concretos, o es blanco o es negro.

El grado de pertenencia se cuantifica mediante la función 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 vehículo se mueve

rápido'', también se está obligado a considerar qué tan rápido es el vehículo, aunque esto último no

implique necesariamente cuantificar la velocidad del vehículo con toda precisión.

El concepto de lógica difusa fue introducido por el Dr. Lotfi Zadeh de UC/Berkeley en los años

60 como los medios de modelar la incertidumbre del lenguaje natural. Quien inconforme con los

conjuntos clásicos (crisp sets) que sólo permiten dos opciones, la pertenencia o no de un elemento a

dicho conjunto la presentó como una forma de procesar información permitiendo pertenencias parciales

a unos conjuntos que en contraposición a los clásicos 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

clásico de la lógica difusa, el artículo se titula "Fuzzy Sets", permitiendo de esta forma obtener

resultados más aproximados.

Pocos años después en 1974, el Británico Ebrahim Mandani, demuestra la aplicabilidad de la

lógica difusa en el campo del control. Desarrolla el primer sistema de control difuso (Fuzzy Control)

práctico, la regulación de un motor de vapor. Las aplicaciones de la lógica difusa en el control no se

pudieron ser implementadas con anterioridad a estos años debido a la poca capacidad de cómputo de

los procesadores de esa época.

Esta metodología proporciona una manera simple y elegante de obtener una conclusión a partir

de información de entrada vaga, ambigua, imprecisa o incompleta, en general la lógica difusa imita

como una persona toma decisiones basadas en información con las características mencionadas. Una de

las ventajas de la lógica difusa es la posibilidad de implementar sistemas basados en ella tanto en

hardware como en software o en combinación de ambos.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 63: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

58

3.3 Esquema Lógica Difusa

Figura 2-4: Esquema Lógica Difusa

3.3.1 Fuzzificación

En la fuzzificación se asignan grados de pertenencia a cada una de las variables de entrada

con relación 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, teniéndose un conjunto de reglas

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

Rm: Si u1es A1my u2es A2

my ...upes Apm ,

ENTONCES v es Bm

Con m=1,2,..., M

Y donde Aim

y Bm son conjuntos difusos en U i R (números reales) y VR respectivamente,

e son los valores numéricos

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 64: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

59

concretos de u y v, también respectivamente.

La base de conocimiento contiene el conocimiento asociado con el dominio de la

aplicación y los objetivos del control. En esta etapa se deben definir las reglas lingüísticas de control

que realizarán la toma de decisiones que decidirán la forma en la que debe actuar el sistema

3.3.3 Inferencia

Corresponde a la sección que mediante los mecanismos de inferencia que veremos más

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

también 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 implicación difusa. Es decir, el bloque de inferencia es aquel en el

cual se realiza la “traducción matemática” de las reglas difusas: estas reglas modelan el sistema pero

para poder trabajar con ellas y extraer un resultado se deben evaluar matemáticamente la información

que reflejan. Como ya se ha mencionado anteriormente, las reglas más utilizadas para diseñar un

sistema basado en lógica difusa toman la forma:

Siu1esA1 yu2esA2 yu3esA3 ENTONCESvesB

3.3.3.2 Conectores lógicos entre Antecedentes

En este caso límite, las tablas de verdad de los operadores lógicos clásicos y las de los

operadores lógicos difusos deben coincidir. Considerando las tablas clásicas de verdad de los

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 65: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

60

operadores AND, OR y NOT

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

3.3.4 Desfuzzificación

Corresponde a la sección que a partir del conjunto difuso obtenido en el mecanismo de

inferencia y mediante los métodos matemáticos de desfuzzificación, se obtiene un valor concreto de la

variable de salida, es decir, el resultado.

3.3.4.1 Métodos de Desfuzzificación

El bloque de desfuificación realiza la función contraria al de Fuzzificación. 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 desfuificación 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 agregación de todas las reglas, un resultado escalar, se

aplican métodos matemáticos. Ejemplos sencillos de algunos de estos métodos de cálculo son:

• Método del máximo: se elige como valor para la variable de salida aquel para el cual la

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 66: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

61

función característica del conjunto difuso de salida es máxima. En general no es un método

óptimo, ya que este valor máximo puede ser alcanzado por varias salidas.

• Método del centroide: utiliza como salida del sistema el centro de gravedad de la función

característica de salida. Matemáticamente :

Es el método más utilizado en aplicaciones de la lógica difusa a la ingeniería, ya que se obtiene una

solución única, aunque a veces es difícil de calcular.

• Método de la altura: se calcula para cada regla el centro de gravedad del conjunto difuso de

salida Bm y después se calcula la salida del sistema como la media ponderada:

3.4 Funcionamiento

Según todo lo previamente mostrado, lo primero que se debe realizar es comprender los

cuantificadores de nuestro lenguaje en términos 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 unión, intersección, diferencia,

negación o complemento, y otras operaciones sobre conjuntos, en los que se basa esta lógica.

Cada conjunto difuso posee asignada una función de pertenencia para sus elementos, que nos

indican en que medida ese elemento pertenece al conjunto difuso, también debemos decir que la lógica

difusa se basa en reglas heurísticas, donde estas reglas tienen la forma, SI (antecedente) ENTONCES

(consecuente), por ejemplo:

SI hace mucho frió ENTONCES aumento la calefacción.

Los métodos de inferencia para esta base de reglas deben ser simples, veloces y eficaces. Por lo

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 67: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

62

tanto los resultados de dichos métodos son un área final, que resulta de un conjunto de áreas solapadas

entre sí (cada área es resultado de una regla de inferencia). El método 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 lógica difusa se debe disponer de datos de entrada los suelen

ser recogidos por sensores, que miden las variables de entrada de un sistema. Después 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é Lógica Difusa?

Normalmente en la lógica convencional tenemos un conjunto de enunciados que pueden ser

verdaderos o falsos, si o no, 0 o 1. En el contexto de la lógica difusa, el enunciado de “la temperatura es

25 grados centígrados” puede ser verdadero o falso. Sin embargo, en muchas situaciones la respuesta

puede ser mas de un simple “no estoy seguro”, “quizás”, “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 opinión más 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 razón que no solamente se van a interpretar las instrucciones como, hacia

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 68: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

63

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 lógica difusa sera de gran ayuda en la interpretación de estos valores

lingüísticos que utilizaremos y serán explicados mas adelante.

Otro aspecto que importante es que el proceso de moverse por medio de un área demarcada es

difícil de implementar en una función matemática, por lo cual se deben ocupar reglas de tipo mas

intuitivas que serán reflejadas en la base de conocimiento del sistema.

3.6 Como crear un Sistema Difuso Basado en Reglas

1. Identificación de las variables de entrada y salida, la parte primordial, debió a que los sistemas

de tipo difuso pueden poseer múltiples variables de entrada, además de obtener múltiples

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 posición actual de la celda y

el objeto, de las coordenadas ordenada y abscisa.

2. Determinación de Conjuntos Difusos, se refiere al grado de pertenencia que existe para cada

una de las variables de entrada al sistema.

3. Selección de método para desfuzzificación, ya sea el método del máximo, del centroide o de la

altura.

4. Creación 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

algún grado de relación con una situación X que esté pasando dentro del contexto que rodea al

sistema.

5. Diseño de mecanismo de inferencia, en el caso de este proyecto de título, va a ser diseñado

mediante el Toolbox de lógica difusa que posee Matlab.

6. Evaluación 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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 69: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

64

nuestro caso la herramienta de Toolbox que trae Matlab además de ocupar Simulink para

comprobar el correcto funcionamiento.

3.7 Matlab

El sistema matlab se utilizará por motivos de diseño de mecanismo de inferencia, esto mediante

un toolbox que trae matlab que es especializado en lógica difusa, pudiendo practicar con ello los

conceptos de lógica difusa previamente desarrollados en el presente informe.

3.7.1 Definición

Describiéndolo en forma general, Matlab un programa para ingeniería dedicado a realizar

cálculos técnicos-científicos y de propósito general. En el se integran operaciones de calculo,

visualización y programación, donde la interacción con el usuario emplea una notación matemática

clásica.

Es un ambiente de computación técnica de alto rendimiento, para cómputo numérico y

visualización, que integra análisis numérico, cómputo de matrices, procesamiento de señales y gráficas

en un ambiente fácil de usar, donde los problemas y sus soluciones se expresan como se haría en

matemáticas, sin necesidad de la programación tradicional.

El nombre Matlab, surge de Matrix Laboratory, el cual es un sistema interactivo cuyo elemento

básico es una matriz que no requiere dimensionamiento. Esta característica permite resolver muchos

problemas numéricos en una fracción del tiempo que llevaría hacerlo en un lenguaje de programación

como Fortran, Basic, o C.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 70: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

65

3.7.2 Uso y aplicaciones

•Matemáticas y calculo.

•Desarrollo de algoritmos.

•Adquisición de datos.

•Modelado, simulación y prototipado.

•Análisis y procesado de datos.

•Gráficos científico y de ingeniería.

•Desarrollo de aplicaciones.

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 gráficas de usuario y de ventana de

comandos.

3.7.3.2 La librería de funciones matemáticas Matlab

Lo componen un conjunto de algoritmos de cálculo, los cuales lo componen las funciones mas

elementales como la suma, senos, cosenos o la aritmética compleja, hasta funciones mas avanzadas

como la inversión de matrices, el cálculo de autovalores, funciones de Bessel y transformadas rápidas

de Fourier.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 71: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

66

3.7.3.3 Gráficos

Son un conjunto de utilidades destinadas a visualizar vectores y matrices en forma de gráficos.

Dentro de estas utilidades existe una gran cantidad de opciones para poder ajustar el aspecto de los

gráficos, destacando de estos la visualización tridimensional con opciones de iluminación y sombreado

y la posibilidad de crear o incorporar animaciones

3.7.3.4 La interfaz de aplicación Matlab (API)

Es una librería que permite escribir programas ejecutables independientes en C y otros

lenguajes, accediendo mediante DLLs, a las utilidades de cálculo matricial de Matlab.

3.7.4 Toolboxes

En MATLAB las toolboxes son colecciones de funciones, códigos o macros de MATLAB,

conocidos como M-files, muy fáciles 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 Señales, Análisis y Diseño de Sistemas de Control, Simulación

Dinámica de Sistemas, Identificación de Sistemas, Redes Neuronales, Ecuaciones Diferenciales

Parciales, Procesamiento de Imágenes, Matemática Simbólica, Lógica Difusa, Estadística,

Optimización, Comunicaciones, Finanzas, etc. De las cuales se utilizaran para este proyecto

Simulación Dinámica de Sistemas y Lógica Difusa, los cuales se detallaran mas adelante.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 72: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

67

3.7.5 Simulink

Es una aplicación que proporciona al usuario un entorno gráfico por medio del cual se facilita el

análisis, diseño, construcción y simular modelos de sistemas físicos y sistemas de control, al incluir una

serie de rutinas que resuelve los cálculos matemáticos de fondo, junto con una sencilla interfaz para su

uso, proporcionando un entorno de usuario gráfico que permite el dibujar diagramas de bloques tal

como se haría sobre un papel. El comportamiento de estos sistemas se define mediante funciones de

transferencias, operaciones matemáticas, elementos de Matlab y señales predefinidas de todo tipo.

Los componentes incluidos junto al programa Simulink, incluye bibliotecas de fuentes de señal,

dispositivos de presentación de datos, sistemas lineales y no lineales, conectores y funciones

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

3.7.6 Fuzzy

Corresponde al área de lógica difusa, cuya utilidad consiste en poder realizar acciones

pareciéndose mas a como razonaría en cierta forma nuestro cerebro, esto mediante los inputs (entradas)

y outputs (salidas) que se agreguen en la interfaz. Además de sus correspondientes reglas para tomar las

decisiones en base a los distintos input que se posean.

3.8 Implementación

3.8.1 Entorno de trabajo Matlab

En la figura 1 muestra como están 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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 73: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

68

los comandos que se han utilizado en Matlab, en la ventana de la derecha se encuentra la linea de

comandos.

Figura 2-6: organización 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 lógica 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 podrán 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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 74: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

69

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 visión, los cuales van a poseer 7 conjuntos difusos, los

cuales se describirán más adelante.

Esta parte corresponde a la fuzzificación.

•El rectángulo blanco con el título 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 tendrán 7 conjuntos difusos, los cuales serán descritos más adelante.

Esta parte corresponde a la defuzzificación.

Figura 2-7: FIS Editor

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 75: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

70

3.8.2.2 Variables Lingüísticas

Para definir las funciones de pertenencia del controlador fuzzy (variables lingüísticas), se

considera la siguiente notación:

Notación correspondiente a la primera variable de entrada-salida:

•muy_izquierda: se encuentra muy a la izquierda.

•izquierda: se encuentra moderadamente a la izquierda.

•poco_izquierda: se encuentra solamente un poco a la izquierda.

•cero: se encuentra prácticamente en el centro.

•poco_derecha: se encuentra solamente un poco a la derecha.

•derecha: se encuentra moderadamente a la derecha.

•muy_derecha: se encuentra muy a la derecha.

Notación correspondiente a la segunda variable de entrada-salida:

•muy_abajo: se encuentra muy abajo.

•abajo: se encuentra moderadamente abajo.

•poco_abajo: se encuentra solamente un poco abajo.

•cero: se encuentra prácticamente en el centro.

•poco_arriba: se encuentra solamente un poco arriba.

•arriba: se encuentra moderadamente arriba.

•muy_arriba: se encuentra muy arriba.

De este modo la interpretación 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 algún

icono de variable de entrada o de salida de la Figura 2-7, en éste editor se encontrarán al lado izquierdo

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 76: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

71

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 numéricos 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 través de mediciones realizadas en

el Centro de Robótica de la Universidad del Bio-Bio CIMUBB obteniendo un rango de -4 a 4 ajustando

estos valores a las variables lingüísticas 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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 77: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

72

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

combinación de variables de entrada mediante los conectores And o Or seleccionando la combinación

de variables de salidas deseadas por el usuario que esta generando una base de conocimientos, además

de añadir reglas el editor permite eliminar y cambiar reglas. Formando de esta forma el cerebro del

sistema, puesto que éste reaccionará según las reglas que se hayan añadido acá.

Figura 2-9: Rule Editor

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 78: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

73

En el caso del proyecto a realizar se han añadido 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 Robótica. 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

combinación de variables de entrada esto mediante el corrimiento de la linea vertical roja, permitiendo

además 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 según como se hayan definido con anterioridad la base

de conocimiento.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 79: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

74

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 dejándolo en extensión “.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.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 80: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

75

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 propósito de esta ventana consiste en

permitir la navegación por la enorme cantidad de librerías 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 visión 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 cuestión 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.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 81: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

76

En la parte inferior se encuentra la descripción de los bloques Simulink seleccionados, que

servirán de utilidad para mayor comprensión del usuario.

Por último, cabe destacar que en la parte superior de la Figura 2-11, existen varias herramientas

como la búsqueda 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 navegación de bloques de Simulink (Simulink Library Browser)

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 82: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

77

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

(página en blanco), se abrirá una ventana como la de la Figura 2-13 pero en blanco sobre la que se

podrá iniciar la creación de un modelo de simulación.

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 corresponderán a los In1 que serán las entradas de las variables que recibiremos del campo de

visión correspondientes a lo ejes coordenados del lugar donde se encuentre la celda flexible, tomando

como referencia la pinza que posee este.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 83: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

78

•Dos Out1 que tendrán como significado cuanto es lo que nos debemos desplazar para poder llegar

hasta el objeto en cuestión a capturar.

•Un Mux el cual es un Multiplexar escalar o un vector de señales, esto para poder enviar las

información a la maquina lógica.

•Un Demux el cual parte las señales obtenidas de la maquina logica en escalares o pequeños 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 según 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 Integración Fuzzy Toolbox y Simulink

Este paso se debe realizar una vez diseñado 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: Integración Controlador creado en Fuzzy Toolbox a Simulink

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 84: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

79

El parámetro 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 sección 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 números

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 numérico la salido obtenida, todo esto ubicado

la sección de Simulink. Cabe decir que esta es una de las posibles formas de probar el controlador

realizado, esto puede variar según el nivel de conocimiento que tenga la persona sobre el manejo de

Simulink.

3.8.4 Generación de Código C en Simulink

Simulink nos proporciona la posibilidad de generar código C sin necesidad de escribirlo a partir

de los modelos previamente creados, esto es invocando al generador de código C que permite convertir

el diagrama de bloques implementado en un código 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.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 85: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

80

Figura 2-15: Configuracion Real-Time Workshop

En ella se puede seleccionar el lenguaje al que se quiere generar el código, en el caso del proyecto C o

C++, además de ello se puede generar si se desea solamente el código. Pinchamos sobre el botón

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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 86: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

81

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

simulación, si se desea puede dejarse como Inf., o sea, sin tiempo de termino. Otro parámetro a ser

cambiado es en el recuadro Solver Options, en Type seleccionar Fixed-step, con lo cual ocurrirá una

disminución en la cantidad de opciones, seleccionando alado de type posteriormente la primera opción

“discrete”.

Figura 2-17: Configuración Solver

A partir de estas opciones ya es posible generar el código-C diseñado puede ser ejecutado en

tiempo real, dirigiéndose en el menú de la Figura 2-13 (espacio de trabajo simulink) a Tool->Real-Time

Workshop->Build Model, generándose de esta forma el código el cual no necesita ser escrito

manualmente por un programador pues es creado a nivel de diagramas de bloques en Simulink. El

código generado debido a su naturaleza al ser compilado en alguna maquina este correrá sin ningún

problema en ella (este código que se genera es el que utiliza Simulink cuando realiza una simulación).

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 87: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

82

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: Inclusión de cabeceras , declaración de estructuras a Parámetros, Bloques, Estados,

Entradas y Salidas.

NombreModelo_data.c: Inicializa las variables de parámetros 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 dirección puede variar dependiendo de la

versión de Matlab instalado.

Este puede ser útil para varios propósitos: puede ser usado para control en tiempo real,

simulación en tiempo real o simulación acelerada en tiempo no real. Sus aplicaciones pueden ser

control de movimiento, control de procesos, sistemas automotores, equipos médicos, robótica, etc.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 88: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

83

3.9 Diseño e implementación

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

botón el cual procesará la máquina 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 símbolo el cual produce el comienzo de la simulación, mostrándose en los displays de

la derecha el resultado correspondientes en porcentaje de los ejes X e Y.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 89: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 3: Lógica Difusa

84

3.10 Problemas surgidos y dificultades de éste “Capítulo”

El primer problema surgido fue con que elemento de programación poder darle cierto raciocinio

a nuestro sistema, es por ello que acudimos a Don Christian Aguillera quien nos pudo ayudar a decidir

la opción a elegir para poder terminar dichas incertidumbres, posteriormente surgir otra problemática,

debido a que utilizaríamos el toolbox de matlab, nuestro primer desafío consistió en comprender las

nociones básicas que posee matlab, incluyendo a Simulink con el que utilizaríamos nuestro sistema,

debido a que se puede modelar en bloque se hizo un diseño modesto de que necesitaríamos,

enfocándonos posteriormente a la concretación del la lógica mediante la comprensión de la teoría que

hay que poseer para poder desarrollar nuestras variables de entradas y de esta forma fusificarlas y luego

de su tratamiento a través de las reglas de conocimiento que fueron un desafío poder ir viendo como

cada una de las variables lingüísticas declaradas se podría mezclar entre si para darnos ciertos valores

lingüísticos de salida conformando de esta forma el conocimiento necesario que poseería nuestro

sistema para poder realizar la hazaña 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,

realizándolo primeramente mediante nuestro diseño e implentación de este por medio de simulink y asi

saber si los valores de salida correspondientes a porcentajes nos servirían mas menos para nuestro plan

final de localización del objeto, siendo este un proceso complejo de varias pruebas y aplicaciones de

conocimientos que se realizó en forma exhaustiva.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 90: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

85

4 Robótica

Como sabemos para el desarrollo de nuestro proyecto una de las partes fundamentales es la

utilización de un brazo robótico, el cual tomará el objeto seleccionado previamente a través de la

aplicación.

Por lo tanto este capítulo consiste en la descripción y estudio del funcionamiento del brazo

robótico Scorbot ER-V Plus perteneciente al laboratorio de sistemas automatizados de producción

CIMUBB de nuestra casa de estudios, con la finalidad de lograr el conocimiento necesario para

integrarlo a la aplicación 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 estación de

trabajo para el proyecto, luego de esto describimos a cabalidad la celda flexible, para dar a conocer su

funcionamiento y características principales que se deben conocer para el desarrollado del sistema,

entonces después de conocer su modo de operación, pasamos a interiorizarnos en establecer la

comunicación de una aplicación desarrollada por nosotros que nos permita comunicarnos directamente

con el brazo robótico, 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 además

integrar una de las fases con el sistema en general.

También otro aspecto importante es conocer los comandos del lenguaje ACL que son necesarios

para el movimiento y articulación del brazo en sus distintos ejes y componentes, entonces se realiza

una descripción de los comandos básicos a utilizar y una descripción de su funcionamiento en

conjunto.

Para finalizar este se dan a conocer los resultados obtenidos además de nuestras impresiones, a

lo largo del desarrollo necesario para esta etapa, también se muestran las problemáticas enfrentadas en

el trabajo y como se enfrentaron.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 91: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

86

4.1 Laboratorio de Sistemas Automatizados de Producción CIMUBB

Este laboratorio propiamente tal pertenece a la Facultad de Ingeniería de nuestra Universidad del

Bío-Bío, quien en conjunto con el ministerio de Educación del Estado de Chile lo financiaron,

surgiendo de esta manera en el año 2000 El Laboratorio de Sistemas Automatizados de Producción.

Demostrando la importancia de las industrias manufactureras en la contribución al desarrollo de

las naciones industrializadas, y hacer parte de esto a nuestro país, La industria manufacturera

comprende la elaboración 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 años. Por lo que la aplicación de la tecnología Informática-

Computacional 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,

además de una mejora considerable en la metodología 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 sólo sistema integrado, permitiendo la

comunicación de las diferentes áreas de la empresa y que cada una de ellas tiene influencias sobre las

demás y así sucesivamente.

Cuando ésta integración se establece completamente en un sistema de manufactura se estaría

hablando de CIM o actualmente sería un ERP, que hoy representa la herramienta de gestión mas

avanzada y eficiente hasta la fecha en materia de integración.

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 también de simulación,

integrando todo bajo el concepto CIM, logrando la automatización casi completa del ciclo del

producto, abarcado desde la etapa del diseño hasta la propia fabricación, considerando una perspectiva

de integración tanto horizontal como vertical.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 92: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

87

Algunos de los temas que se desarrollan en el laboratorio CIMUBB son:

• Gestión y Modelación de Sistemas Automatizados de Producción.

• CAD / CAM / CAE.

• Control Automático de Procesos Discretos, Sensores e Instrumentación.

• Redes Locales Industriales (LAN Industrial).

• Procesamiento de los Materiales.

• Transferencia Tecnológica.

• Robótica.

• Visión Artificial.

En nuestro proyecto como sabemos los temas que nos incumben corresponden al área de la

robótica y de la visión artificial, manejadas ambas a través del desarrollo de una aplicación simple, que

permita manipular estas dos partes. Como describiremos a continuación utilizamos el Robot Scorbot

ER V Plus de la estación de Trabajo 3 del CIMUBB, como también una cámara web que nos brindará

el soporte en el tema de visión 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. Además el robot posee seis grados de libertad.

Su controlador autónomo y multitarea trabaja en tiempo real, permitiendo ejecutar simultáneamente e

independientemente hasta un total de 20 programas en memoria, podemos decir también que es un

robot rápido, seguro, flexible y fiable, que esta diseñado para formación, investigación y aplicaciones

en laboratorio.

Los movimientos que las juntas rotativas pueden ejecutar son descritos a continuación:

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 93: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

88

Figura 3-1: Especificación de la Junta y la Acción.

Número de eje Nombre de la junta Acción que realiza 1 Base Gira el cuerpo (body) 2 Shoulder Sube o baja el brazo superior (uper arm) 3 Elbow Sube o baja el antebrazo (fore arm) 4 Wrist pitch Sube o baja la pinza (gripper) 5 Wrist roll Gira la pinza (gripper)

Figura 3-2: Tabla explicativa de la Junta y su correspondiente Acción.

Este controlador posee además 16 entradas y 16 salidas, destinadas a recibir y transmitir señales

de dispositivos externos que interactúen con el robot, estos pueden ser sensores, pulsadores, entre otros.

En las salidas tenemos que la mayoría son de transistor y tan solo 4 son a relay. Los parámetros del

controlador incluyen constantes proporcionales, diferenciales e integrales para cada uno de los ejes,

protecciones térmicas, de impacto, límites, compensado de centro de herramientas, parámetros de la

pinza y varios otros cálculos de parámetros. La totalidad de los 200 parámetros de control pueden ser

manejados por el usuario.

También el Scorbot posee un botón de parada de emergencia o interrupción completa en caso de

pruebas erróneas en las cuales se debe evitar cualquier daño a la celda flexible, por lo que este botón

desconecta el sistema y enciende una luz roja de alerta.

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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 94: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

89

programación avanzada. Permitiendo el control de la trayectoria continúa, interpolación líneal y

circular, también permite optimización de trayectorias, entre diferentes perfiles de control. El efecto

final de la trayectoria se puede definir como una fórmula 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 parabólica, trapezoidal, de funcionamiento libre, aceleración y desaceleración.

Especificaciones Técnicas Scorbot ER-V Plus:

Scorbot ER-V Plus (Brazo Mecánico) Número de ejes 5 más pinza Construcción Brazo vertical articulado Radio de operación 610 mm Movimiento de los ejes Var. Ejes Vel. Compuesta Eje 1:Base Eje 2:Brazo inferior Eje 3:Brazo superior Eje 4:-elev. pinza Eje 5:Giro pinza

310º +130/-35º +/-130º +/-130º

600mm/seg.

Velocidad Puede cambiarse en incrementos de un 1% Capacidad de carga 1kg. en la extensión del brazo Repetibilidad 0. 5mm Tipo de motores 6 servomotores DC con control de lazo cerrado Transmisión Engranaje con correa dentada. Realimentación Encoders ópticos de alta resolución Abertura de la pinza 75mm. con almohadillas de goma, 65mm con ellas. Antibacklash El eje de la base es soportado por sistema de engranaje tipo

antibacklash Sincronización del robot (Home)

Búsqueda punto 0 de referencia en todos los ejes, usando microinterruptores

Peso del brazo 10.8 Kg Temperatura ambiente de funcionamiento

2º C a 40º C

Figura 3-3: Especificaciones Técnicas del Robot.

Para el manejo del Scorbot – ER V plus se cuenta con diferentes modos de operación que en

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 95: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

90

siguiente punto se trataran.

4.3 Modos de Operación:

Software

ACL (Advanced Control Lenguage)

Es un avanzado lenguaje de programación 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 robóticos.

• Programación por el usuario del sistema robótico.

• Control de entradas/salidas.

• Ejecución de programas simultanea, sincronizada e interactiva; soporte multi-tasking completo.

• Fácil 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 edición de programas y la descarga de un programa realizado en un procesador de textos.

Utiliza Lenguaje de programación ACL y comandos de acción directa.

Este modo fue clave para conocer el funcionamiento y manipulación del Scorbot a través del

lenguaje de programación ACL, proporcionándonos su posición actual, cambio de posiciones,

movimientos de sus ejes, creación 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.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 96: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

91

• Definición de periféricos.

• 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

periféricos conectados al controlador. Es práctico 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

multifunción, pantalla LCD de 32 caracteres. En la Figura 3-5 podemos ver como es el Teach Pendant.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 97: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

92

Figura 3-5: Teach Pendant.

4.4 Inicialización

Como sabemos la posición de los ejes es medida por encoders que registran la variación de

movimiento referida a una posición inicial. Se recomienda para que el robot funcione correctamente

que esta posición 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 periféricos) escriba en el ATS:

>home nº de eje

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 98: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

93

4.5 Operación del Robot

Modo manual

Este modo se puede ejecutar cuando el sistema esta en modo directo, la función 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 Acción Eje

Q – 1 eje 1 W – 2 eje 2 E – 3 eje 3 R – 4 eje 4 T – 5 eje 5 Y – 6 eje 6 U – 7 eje 7 I – 8 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 posición de los ejes robóticos en unidades de encoders, ya que

estos proporcionan un número de señales proporcional al movimiento de los ejes.

Coordenadas cartesianas: Es un sistema geométrico para especificar la posición del punto central de

la herramienta del robot TCP definiendo la distancia en unidades lineales (décimas de milímetros)

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 99: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

94

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 ubicación y referencia de la

cámara que se esta ocupando, entonces las posiciones del eje Z van a estar predefinidas con

anterioridad y no serán 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 capítulo tratados anteriormente fueron de vital importancia para que en

primera instancia nos familiarizáramos 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 operación,

conocer su sistema de coordenadas, su lenguaje de programación, 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 robótico es una de las partes mas importantes en el

proyecto por no decir la más 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

después de haber procesado la imagen se encargue de tomar el objeto, y lo desplace a una posición de

destino dentro de los limites de la superficie.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 100: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

95

Y para poder tomar el objeto seleccionado en la aplicación debemos conocer primero a fondo

los comandos del lenguaje de programación ACL que se requerirán para el correcto funcionamiento del

robot y además cuales serán necesarios para lograr el objetivo de este capítulo que es mover el brazo

robótico por medio de la aplicación desarrollada. Este movimiento del brazo robótico ocurre como

consecuencia a partir de la integración entre la fase correspondiente al Análisis de la Imagen que nos

entrega el centroide del objeto en pixeles, pero éste se debe trasformar a décimas de milímetros que

corresponden a las unidades en que vamos a desplazar al Scorbot. Siguiendo la fase de análisis de

imagen se integra esta con la Fase de la Maquina de Lógica 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 máquina difusa le diga que se encuentra en posición de tomar el objeto que se seleccionó

previamente a través del sistema, por lo que esta aplicación debe tener claro como hacer moverse al

Scorbot.

Todo este tema de la integración se verá en el capítulo final del proyecto donde todas las demás

fases de desarrollo se unirán y se verá con mas claridad como se integran al sistema final y de que

forma fueron integradas.

Este análisis 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 ejecución de comandos ACL para que el robot se pueda desplazar.

También debemos ver la forma de comunicar el Scorbot con la aplicación que estamos desarrollando ya

que la interacción va a estar a cargo de este sistema y no por el modo ATS o por el Teach Pendant ni

modo manual, solo a través de comandos en leguaje ACL.

4.8 Comunicación Por Puerto Serial

Como necesitamos interactuar directamente con el Scorbot a través de la aplicación que

estamos desarrollando, vimos primero que este se conecta al computador directamente al puerto serial

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 101: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

96

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

El puerto serial en años anteriores era uno de los accesos de comunicación más comunes que

permite conectar periféricos, como lo es el caso del robot Scorbot, otros de estos dispositivos pueden

ser mouse, teclado, modem o simplemente establecer una conexión 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 comunicación que se establece con el robot es bit a bit, es decir permite enviar un bit a la

vez, al contrario de dispositivos de transmisión más modernos que envían varios bit simultáneamente.

Por lo tanto debemos buscar un lenguaje de programación en el cual podamos comunicarnos a

través del puerto serial con la celda flexible y además debe ser compatible en la integración con la

aplicación que junta todas las fases de desarrollo del proyecto.

Luego de tener muy presente estas restricciones optamos por realizar la conexión del puerto

serial con el Scorbot en el lenguaje de programación C, debido a la compatibilidad entre la interfaz del

sistema que es desarrollada en C++, destacando así la línea de la eficiencia en la aplicación y la

portabilidad.

4.9 Comunicación Serial en el Lenguaje de Programación C

Como sabemos este lenguaje de programación fue creado en la década de los 70 por Dennis M.

Ritchie, cuyo propósito 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 características de bajo nivel para realizar implementaciones óptimas, además debemos

agregar la portabilidad de este a los diversos sistemas operativos, trasformando así nuestras

aplicaciones en sistemas multiplataformas.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 102: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

97

Para la implantación de la comunicación serial vamos a utilizar la librería LnxComm que fue

diseñada especialmente para entregar apoyo a personas involucradas en el diseño y construcción de

hardware, además de programadores que estén interesados en manejar este conocimiento, esta librería

permite establecer una conexión con el puerto serial solamente programando escasas linead de código,

proporcionando de esta manera una mejor forma de entender este concepto, ya que esta librería tiene lo

necesario para comunicarnos tanto en Linux como en Windows a través del puerto serial, apoyando la

portabilidad de nuestros códigos desarrollados. Esta librería esta en su totalidad desarrollada en

Lenguaje C.

Como ya dijimos esta librería tiene funciones, las cuales cumplen las mismas características

tanto para Linux como para Windows.

Las funciones con las que cuenta son las siguientes:

Open_Port

Esta corresponde a la función de lectura del puerto serial.

HANDLE Open_Port(char COMx[]);

Abre el puerto de comunicaciones, esta función recibe como parámetro 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 ″ , …

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 103: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

98

“/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 configuración actual del puerto serie.

DCB Get_Configure_Port(HANDLE fd);

Esta función devuelve un variable de tipo DCB con la configuración actual del puerto serie, la

función recibe un parámetro de tipo HANDLE que es el manejador con la configuración actual del

puerto, devuelto por la función Open_port

fd : Es el HANDLE manejador del puerto.

Retorna: Una estructura DCB con la configuración actual del puerto.

La estructura DCB define los valores de control para dispositivos de comunicación serie.

typedef struct _DCB { DWORD DCBlength; // sizeof(DCB) DWORD BaudRate; // velocidad en baudios actual DWORD fBinary: 1; // modo binario, no se comprueba EOF DWORD fParity: 1; // comprobación de paridad activa DWORD fOutxCtsFlow:1; // CTS control de flujo de salida DWORD fOutxDsrFlow:1; // DSR control de flujo de salida DWORD fDtrControl:2; // DTR tipo de control de flujo DWORD fDsrSensitivity:1; // DSR sensitividad DWORD fTXContinueOnXoff:1; // XOFF continuar Tx DWORD fOutX: 1; // XON/XOFF control de flujo de salida DWORD fInX: 1; // XON/XOFF control de flujo de entrada DWORD fErrorChar: 1; // activa reemplazo de error DWORD fNull: 1; // activa null stripping DWORD fRtsControl:2; // RTS control de flujo DWORD fAbortOnError:1; // aborta lectura/escritura si hay error DWORD fDummy2:17; // reservado WORD wReserved; // no usado WORD XonLim; // transmitir umbral XON WORD XoffLim; // transmitir umbral XOFF BYTE ByteSize; // número de bits por byte, 4-8

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 104: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

99

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

Configure_Port

Con esta función podemos establece la nueva configuración del Puerto serial dependiendo del

periférico que queremos manejar, en nuestro caso corresponde al scorbot ER V Plus, que necesita

manejarse a 9600 baudios, bits de datos de tamaño 8, ninguna paridad y bit de parada 1.

DCB Configure_Port( HANDLE fd, unsigned int BaudRate, char CharParity[]);

Esta función configura el puerto serie con los parámetros fd, BaudRate y CharParity.

fd : Es el manejador del puerto devuelto por la función Open_Port.

BaudRate : Es la velocidad del puerto. (B115200, B19200, B9600, ...)

CharParity: Indica el numero de bits de la transmisión. (”8N1″,”7E1″,”7O1″,”7S1″)

Retorna: Una estructura DCB con la configuración del puerto

Set_Configure_Port

Establece la configuración del puerto, es decir reestablezco la configuración 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 configuración del puerto serie, los parámetros serán pasados mediante una variable tipo

DCB.

fd : Es el manejador del puerto devuelto por Open_Port

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 105: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

100

oldConf : Es una variable DCB con la configuración del puerto, generalmente se usa la devuelta por

la funcion Get_Configure_Port.

Retorna: TRUE si todo fue bien o FALSE si hubo algún error.

Write_Port

Como lo indica su nombre esta función 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 número de bytes que se quieren escribir.

Retorna: En caso de éxito este devuelve el número 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 número de bytes que se quieren recibir.

Retorna: En caso de éxito se devuelve el número de bytes leídos, cero indica que no se ha leído nada y

en caso de error, se devuelve -1.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 106: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

101

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 0×0A,0×0D 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 máximo número de bytes que se quieren recibir.

Retorna: El numero de caracteres recibidos.

Getc_Port

También recibe un carácter por el puerto.

long Getc_Port( HANDLE fd, char *Data);

Recibe un único carácter por el puerto y es cargado en la variable Data de tamaño 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 número de caracteres disponibles en

buffer.

int Kbhit_Port( HANDLE fd);

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 107: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

102

Recibe como parámetro el manejador del puerto.

fd : Es el manejador del puerto devuelto por Open_Port.

Retorna: El numero de caracteres en el buffer de recepción

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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 108: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

103

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 máximo tiempo entre bytes en milisegundos

fd : Es el manejador del puerto devuelto por Open_Port.

Time: Multiplicador en m-seg, para el tamaño 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.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 109: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

104

IO_Blocking

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

int IO_Blocking( HANDLE fd,int Modo);

La función recibe como parámetro el manejador del puerto y TRUE si se quiere una conexión

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 recepción y de

transmisión de datos.

int Clean_Buffer( HANDLE fd);

La función recibe como parámetro 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 función hilo que se ejecuta cuando existan caracteres en el buffer de de entrada del

puerto.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 110: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

105

pthread_t Create_Thread_Port( HANDLE *fd);

Recibe como parámetro 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 básicas para manejar, controlar, configurar, setear, limpiar, leer,

escribir en el puerto serial entre otras. Como mencionamos al principio de la descripción de la librería

esta posee portabilidad a múltiples 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 función Open_Port también cambiara de argumento según el sistema operativo.

Linux:

“/dev/ttyS0 ″ , “/dev/ttyS1 ″ ,…

“/dev/ttyUSB0 ″, “/dev/ttyUSB1 ″,…

“/dev/ttyACM0 ″, “/dev/ttyACM1 ″,…

Windows:

“COM1″, “COM2, “COM3 ″,…

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 111: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

106

4.10 Monitoreo del Puerto Serial

La parte de la comunicación 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

posición 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"; // comado ACL

Write_Port(fd,mensaje,strlen(mensaje)); // 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 acción, entonces lo que necesitamos es conocer como

realmente envía los comandos el modo ATS al scorbot, ya que es la única forma que tenemos para

comunicarnos a través 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 aplicación.

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 pestaña fichero y seleccionar de la

lista una nueva sesión, aparecerá entonces una ventana que nos indica un asistente de nueva sesión, hay

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 112: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

107

debemos presionar el botón siguiente, a continuación debemos elegir el tipo de sesión 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 continuación:

Figura 3-8: Selección del puerto COM.

Acá debemos seleccionar el puerto COM correspondiente, para nuestro caso sería COM1 y

presionamos siguiente, luego se nos abrirá la Aplicación de Elaboración de Datos

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 113: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

108

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

La figura 3-9, nos indica que deseamos monitorear, los datos, las señales, las llamadas, la

consola entre otras cosas, nuestro objetivo es ver los datos, por lo tanto lo seleccionamos. Una vez

realizado esto presionamos el botón finalizar para terminar con la configuración 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 )

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 114: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

109

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 representación hexadecimal corresponde a un

letra que ha sido escrita o leída 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 comunicación 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 envía 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 acompañado del retorno de carro “\r”, por ejemplo

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 115: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

110

Al iniciar nuestra aplicación que se comunica por puerto serial con el robot, antes de enviar

cualquier comando, esta claro que previamente ya abrimos el puerto, obtuvimos su configuración y lo

configuramos según nuestras necesidades y le indicamos que iva a ser no bloqueante, debemos enviar

la siguiente cadena de caracteres

char mensaje[]="|echo\r\r\r"; // comado ACL

Write_Port(fd,mensaje,strlen(mensaje)); // 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 continuación un simple ejemplo de comunicación

serial con el robot scorbot, escrito en lenguaje C, utilizando la librería LnxComm.

#define __WINDOWS_COM__ /* #define __LINUX_COM__ */ #include "serial.h" /* Incluimos las funciones para la

comunicación serial*/ void escrituraLecturaScorbot(char [],HANDLE); int main() { HANDLE fd; DCB OldConf; char inicializar[]="|echo\r\r\r"; /*inicializa el envio de comandos*/ char speed[]="speed 20\r"; /*cambia la velocidad*/ char open[]="open\r"; /*abre la pinza*/ char close[]="close\r"; /*cierra la pinza*/ char finalizar[]="|show par 1\r\03\03"; /*finaliza comunicación*/ int n; fd=Open_Port("COM1"); /* Abre el puerto serie fd=Open_Port("/dev/ttyS0"); */ OldConf=Get_Configure_Port(fd); /* guardo la configuración del

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 116: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

111

Puerto*/ Configure_Port(fd,B9600,"8N1"); /* Configuro el puerto serie */ IO_Blocking(fd,FALSE); /* 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 configuración 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); /* Leimos del puerto*/

printf("resp: %s" ,resp);

memset(resp,'\0', 100); /*Limpiamos la cadena*/

if(n!=0) sleep(1000); /*Dormimos el proceso*/

else sleep(500);

}while(Kbhit_Port(fd)); /*Se ejecuta hasta que se

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 117: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

112

leean los caracteres

necesarios*/

Clean_Buffer(fd); /*Limpia buffer*/

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

getchar();

}

Lo que hace este ejemplo es establecer comunicación serial con el scorbot, para ello en primer

lugar abrimos el puerto COM1, luego obtenemos su configuración en una variable DCB, a

continuación 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 inicialización, 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 configuración antigua del puerto y se procede a cerrarlo en ultima instancia.

4.11 Comandos ACL a Utilizar

En esta etapa debemos determinar cuales serán los comandos del Lenguaje ACL que vamos a

utilizar en la aplicación, recordando que estos comandos deben cumplir con el objetivo de poder mover

el brazo robótico, por lo que estas secuencias de comandos deben estar programadas internamente en la

aplicación que desarrollamos, por ello es importante definirlos en este capítulo. Ya que los comandos

que definamos acá son los que se necesitaran en la aplicación. Tabla de comandos necesarios.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 118: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

113

Nombre del Comando Descripción

ECHO Es el primer comando que se necesita antes de enviar cualquier

acción al controlador.

MOVE 0 Realiza un proceso de inicialización de los ejes del robot.

SPEED 20 La velocidad se especifica en porcentajes. La velocidad

máxima es 100 y la mínima es 1, la velocidad por defecto es

50, para efectos del proyecto fijamos la velocidad en 20%

DEFP pos Crea una posición 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 posición actual en la variable de memoria pos creada

con DEFP o DIMP.

LISTPV pos

LISTPV POSITION

Despliega las coordenadas de la posición 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 décimas de milímetro, 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 décimas de grado. Estos

comandos son utilizados en el proyecto para conocer la

asignación de posiciones del robot dentro de la superficie, es

decir es empleada solo para el registro de posiciones, en la

aplicación desarrollada no se utiliza como tal, ya que tenemos

el control interno de los ejes cartesianos X, Y y Z a través de

variables.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 119: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

114

SETPVC pos X 2799

Este comando esta pensado solo para modificar posiciones.

Permite cambiar una coordenada cartesiana en una posición

previamente registrada con el comando SETPV.

Tiene el siguiente formato SETPVC <pos> <coord> <valor>

Donde:

<pos> es una posición del robot (grupo A) definida

previamente por nosotros.

<coord> es una coordenada cartesiana: X,Y,Z,P o R.

<valor> esta en décimas de milímetros (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 posición

registrada. Se utiliza para setear valores en encoders.

SETPVC <pos> <eje> <valor> no avisa de coordenada de

punto inválida hasta que prueba y no lo alcanza.

MOVE pos Mueve el brazo a la posición definida en pos. Esta instrucción

“deposita” un comando de movimiento en el buffer de

movimientos, y no espera a que la operación haya sido

terminada para enviar otra instrucción de movimiento. Este

desplazamiento lo realiza de acuerdo a la velocidad actual

CLOSE Cierra la pinza hasta el fin de su movimiento.

OPEN Abre la pinza hasta el final de su movimiento.

DELP pos Borra las posiciones y los vectores de posición de la tabla de

posiciones.

SHOW PAR <n> Presenta el valor del parámetro del sistema <n>

Esta tabla nos indica el comando y una pequeña descripción de que es lo que hace y para que

sirve, en nuestro proyecto establecimos una rutina de comandos necesarios para ser utilizados en la

aplicación que tiene que ver con el manejo de la celda flexible, ya anteriormente vimos algo de esto en

el ejemplo de comunicación por el puerto serial con el scorbot.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 120: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

115

Como sabemos esta rutina de comandos que corresponde a la que se implemento para tomar el

objeto a través de las indicaciones entregadas por la maquina de lógica 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 continuación enviamos el

comando MOVE 0, con este inicializamos los ejes de la celda a su posición 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 rápidos y bruscos.

Con esto ya estamos listos para crear nuestra variable de posición 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 posición 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 posición 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 ubicación por defecto del scorbot, tomando en cuenta

diferentes factores que fueron resultados de nuestro estudio, como por ejemplo que esta posición no

interfiera con la cámara 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 posición de partida que hemos

definido, por lo tanto estamos a la espera de que la maquina difusa nos indique hacia donde movernos.

Después de que esta maquina difusa nos haya guiado hasta posicionarnos encima del objeto,

debemos recordar que esta máquina sólo nos entrega información hacia donde movernos en los ejes X

e Y (debido a la ubicación 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 también 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 posición seleccionada dentro

de los límites de la superficie y se envía 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 acción se borra la posición pos con DELP pos y se envía la

confirmación para borrarlo “YES”, y se indica al controlador que ya no se van a enviar mas comandos,

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 121: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

116

SHOW PAR 1.

Estas serían las operaciones básicas con las que trabajaremos en el manejo de la celda flexible.

Esperamos que se halla comprendido básicamente el manejo del brazo robótico a partir de su lenguaje

de programación ACL.

4.12 Problemas surgidos y dificultades de ésta “Capítulo”

Esta es uno de los capítulos principales de nuestro proyecto, sin desmerecer los demás capítulos

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 lográbamos manejar la celda flexible, no podríamos tomar estos objetos ni

mucho menos trasladarlos, por lo que este capítulo 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 capítulo solo contábamos con nuestros

conocimientos Ingenieriles e Informáticos adquiridos a lo largo de estos años de estudios en nuestra

Universidad, nunca antes habíamos incursionado en la robótica, ya que en la carrera no tenemos

asignaturas relacionadas con el tema, por lo que debíamos empezar de cero en este capítulo, siendo esa

nuestra primera dificultad, al preguntarnos ¿Por dónde 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 investigación, por lo tanto ya teníamos el laboratorio CIMUBB

donde podíamos trabajar en el proyecto, además desde el inicio del tema nuestro Profesor Guía Don

Juan Carlos Parra, profesor de nuestra facultad, nos guió como podíamos 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 Mantención del laboratorio Don Luis Vera, fue realmente

fundamental, acá descubrimos todo el funcionamiento del Scorbot, modos de operación, su lenguaje de

programación, y todo lo necesario para lograr nuestro proyecto.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 122: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capítulo 4: Robótica

117

En esta parte debimos formularnos horarios para poder hacer uso del laboratorio, entonces esto se torno

en un obstáculo para poder avanzar mas rápido en nuestro proyecto, ya que nos limitada el tiempo que

teníamos para trabajar con el robot, por lo tanto cada sesión la aprovechábamos al máximo.

Una de nuestra mayores dificultades fue establecer la comunicación serial con el robot debido al

lenguaje de programación en el que estábamos 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 teníamos

que encontrar una librería 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 venía el análisis 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 inicialización y finalización que nos permiten enviar los comandos en ACL en un formato

determinado, por lo que de esta manera el brazo robótico comprenderá la acción que le estamos

solicitando.

Más o menos a grandes rasgos esas fueron las dificultades para este capítulo, tratamos de darle

solución a todos y si lo conseguimos, por lo tanto nos mostramos satisfechos con haber cumplido con

los objetivos propuestos para este capítulo.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 123: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

118

5 Diseño, Integración e Implementación

Este capítulo viene a ser la etapa culmine del proyecto debido a que a través de todo los

estudios desarrollados y prototipos implementados, debemos diseñar una solución que sea capaz de

integrar todo en un solo sistema, cumpliendo a cabalidad con los objetivos propuestos y los

requerimientos establecidos.

Para lograr una visión 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 través de los diagramas de secuencia, luego continuamos con los diagramas de flujo,

estos son los que en general nos dan una visión global de como interactúa 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 acompañados de su diccionario de datos que detallan cada uno de

los componentes en el diagrama, trasparentando cada acción propuesta en el diseño.

Luego de establecer el diseño lógico y antes de pasar al diseño físico debemos exponer el tema

referente a la integración de las fases de desarrollo, donde los puntos a destacar son , primero la

transformación de pixeles a décimas de milímetros, esto permite enlazar las fases de análisis de imagen

con la fase de la celda flexible, debido a que debemos encontrar una compatibilidad entre las unidades

de medida que representan la ubicación del centroide del objeto seleccionado en la superficie de

trabajo. Otro aspecto de integración es lo que ocurre entre las fases de lógica difusa y el brazo

robótico 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 diseño físico del sistema donde primero hablamos de la

biblioteca de desarrollo escogida para la implementación de la interfaz gráfica, destacando su

importancia, y ventajeas principalmente, a continuación se destaca la integración física de las diferentes

bibliotecas ocupadas en el desarrollo y como se integraron en un solo IDE, para dar paso al diagrama

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 124: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

119

de clases de la implementación y finalmente al diseño de la interfaz gráfica.

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 comprensión de los

requerimientos del sistema, definir los límites 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 ejecución del CU.

• Postcondiciones: Acciones que ocurren tras la ejecución del CU.

• Escenario Principal (Flujo básico): Descripción en detalle de la ejecución normal del Caso de

Uso.

• Extensiones (Flujos alternos): Descripción de otras formas de ejecución del Caso de Uso.

• Otros: Requisitos especiales, Lista de tecnología y variaciones de datos, etc.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 125: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

120

Nombre: SELECCIONAR OBJETO

Actores:

• Usuario

• Scorbot

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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 126: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

121

1.- El usuario realiza click sobre el botón

'siguiente', de la pantalla donde se despliegan

todos los centroides localizados en la imagen

binarizada

2.- El sistema despliega por pantalla la imagen

original capturada por la cámara web pero

mostrando botones correspondientes a cada uno

de los objetos detectados.

3.- El usuario selecciona un objeto haciendo

click sobre este.

4.- El sistema muestra un mensaje de alerta

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

desplazamiento

5.- El sistema por medio del procesamiento de

los datos envía instrucciones de movimiento al

scorbot.

7.- Scorbot envía al respuesta sistema si se pudo

realizar la instrucción de desplazamiento

Extensiones:

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

desplazamiento del objeto.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 127: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

122

Nombre: SELECCIONAR DESTINO OBJETO

Actores:

• Usuario

• Scorbot

Objetivo:

Depositar el objeto en alguna posición 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

click sobre este.

2.- Llamar rutina para depositar objeto.

3.- Scorbot realiza instrucciones de

desplazamiento

4.- Una vez depositado el objeto se vualve a la

pantalla de inicio del programa.

Extensiones:

1.- Si se realiza un click fuera de los limites aceptados, se desplegara una alerta expresando

dicho problema, teniendo que seleccionar nuevamente la posición destino

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 128: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

123

Nombre: ANALIZAR IMAGEN

Actores:

• Usuario

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:

Acción del actor Respuesta del Sistema

1.- El sistema muestra una pantalla de inicio,

donde el usuario debe seleccionar desde el menú,

capturar imagen

2.- Genera la ventana donde se despliega la cama

web en vivo, donde esta muestra el area de

interés, con todo lo que se encuentre dentro de

ella

3.- El usuario realiza click sobre el botón

'capturar imagen'.

4.- Se muestra la imagen capturada.

5.- El usuario realiza click sobre el botón

'meanshif'

6.- Aplicación del algoritmo meanshift a la

imagen desplegándola por pantalla.

7.- El usuario realiza click sobre el botón

'siguiente'

8.- Se despliega en pantalla la ventana de

binarización sin erosión

9.- El usuario realiza click sobre el botón

'binarizacion1' que corresponde a la binarización

normal.

10.- Se despliega una nueva ventana mostrando

la imagen binarizada en un valor de umbral que

se puede cambiar a través del slider.

11.- El usuario realiza click sobre el botón 'listo'

una vez quedado satisfecho con el nivel de

umbral seleccionado.

12.- Se minimiza la ventana de binarización

normal y vuelve a la pantalla de binarización sin

erosión, encontrándose esta vez activo el botón

'binarizacion2' que corresponde a la binarización

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 129: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

124

inversa

13.- El usuario realiza click sobre el botón

'binarizacion2'

14.- Se despliega una nueva ventana mostrando

la imagen binarizada en un valor de umbral que

se

puede cambiar a través del slider.

15.- El usuario realiza click sobre el botón 'listo'

una vez quedado satisfecho con el nivel de

umbral seleccionado.

16.- Se minimiza la ventana de binarización

invertida y vuelve a la pantalla de binarización

sin erosión, encontrándose esta vez activo el

botón 'mezclar' que corresponde a la

binarización inversa

17.- El usuario realiza click sobre el botón

'mezclar'.

18.- Se despliega en pantalla la mescla de las

binarizaciones y activa boton 'siguiente'.

19.- El usuario realiza click sobre el botón

'siguiente'.

20.- Se despliega en pantalla la imagen aplicado

la trasformación morfológica

21.- El usuario realiza click sobre el botón

'siguiente'.

22.- Se despliega el centroide de los objetos

identificados.

Extensiones:

3,5,7.- Se puede retroceder a la pantalla anterior, por medio del botón del menú

7.- Se puede avanzar a la siguiente etapa por medio del botón del menú

13,15,17,19.- Se puede volver a la ventana de binarización normal, haciendo click sobre su

ventana minimizada.

17,19.- Se puede volver a la ventana de binarización inversa, haciendo click sobre su ventana

minimizada.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 130: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

125

Nombre: SELECCIONAR IMAGEN

Actores:

• CamaraWeb

Objetivo:

Seleccionar una imagen a partir el video transmitido por la cámara web.

Precondiciones:

Obtener imagen a partir de la cámara web.

Postcondiciones:

Obtención del centroide de cada objeto.

Escenario Principal:

Acción del actor Respuesta del Sistema

2.- Transmisión de lo que obtiene la cámara a

traves de su sensor.

1.- Sistema inicializa transmisión camaraWeb.

4.- Enviar captura imagen camaraWeb. 3.- Petición de imagen a la cámara.

Extensiones:

5.2 Diagrama de Secuencias

El diagrama de secuencia de un sistema muestra gráficamente los eventos que originan los actores y

que impactan al sistema. Por lo tanto antes de hacer el diseño lógico de la aplicación 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 cómo

lo hace. Entonces como objetivo para lograr la comprensión de estos diagramas podemos decir, que el

diagrama de secuencia de un sistema es una representación 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 continuación del caso de uso.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 131: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

126

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 132: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

127

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 133: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

128

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 134: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

129

5.3 Diseño Lógico

Este comprende un análisis completo del sistema representado a través de diagramas de flujo, por

lo tanto vamos a tener una visión 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, también para

cada diagrama se especifica un diccionario de datos, que corresponde a una explicación 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 visión global

que nos entrega.

5.3.1 Diagrama de Flujo de Datos

Esta busca modelar un sistema desde el punto de vista de la información, en el cual se estudia

como se usan los datos que corresponden a las entradas, en salidas que vendría a ser la información,

por lo tanto el propósito para un Diagrama de Flujo de Datos es mostrar para un sistema o subsistema

lo siguiente:

• Cuáles son los límites del sistema

• De dónde vienen los datos

• A dónde van los datos cuando dejan el sistema

• Dónde se almacenan los datos

• Qué procesos transforman los datos y las interacciones entre los procesos y los depósitos de datos

Definición de Elementos:

Entidades :

Representan las Fuentes o Destinos delos Datos.

Ejemplo : Paciente,Alumno, Contabilidad, Cliente, etc..

Proceso:

Transformación de los Datos.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 135: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

130

Ejemplos: Calcular Total Factura, Inscribir Asignatura, Registrar Reserva.,etc.

Flujos de Información:

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 notación de DFD que ocuparemos en nuestro proyecto es la de Yourdon/Demarco, con esta

breve presentación 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 diseño mostrado en todos los puntos anteriores. Este

tiene tres componentes esenciales:

− Especificación de procesos:

Por cada proceso especificado en el sistema, se indica su función, los datos que

recibe, y los datos que salen de el .

− Especificación de flujo de datos datos

Corresponde a los información que circula entre procesos, entidades y almacenes de

datos, se describe cada una de estas en forma detallada.

− Especificación de Entidades

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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 136: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

131

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 continuación junto

a los DFD

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 137: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

132

5.3.1.2 DFD Nivel Contexto

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 138: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

133

5.3.1.3 DFD Nivel Superior

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 139: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

134

5.3.1.4 DFD Nivel Detalle del Proceso 1

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 140: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

135

Diccionario de Datos Nivel de Detalle Segmentar Imagen Descripción de procesos Segmentar Imagen

Nivel Detalle

Numero 1.1

Nombre Realizar MeanShift

Parte-de Segmentar Imagen

Descripción Narrativa Corresponde a la aplicación del algoritmo meanshift a la imagen que hemos capturado desde la cámara web, pro lo tanto después de ocurrida esta acción podemos continuar con las demás etapas de análisis de imagen.

Flujo de Entrada solicitud aplicación meanshift

Flujo de Salida Datos imagen meanshift respuesta aplicación meanshift

Nivel Detalle

Numero 1.2

Nombre Realizar binarización y mezcla imagen

Parte-de Segmentar Imagen

Descripción Narrativa Este proceso nos permite realizar la etapa de binarización, 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 binarización normal e invertida para posteriormente efectuar la mezcla de ambas.

Flujo de Entrada solicitud binarización normal solicitud binarización datos imagen binarizada invertida datos imagen binarizada normal Datos imagen meanshift solicitud binarización invertida solicitud mezcla binarización

Flujo de Salida Respuesta solicitud binarización Respuesta solicitud binarización normal Respuesta solicitud binarización invertida Respuesta solicitud mezcla binarización

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 141: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

136

datos imagen a binarizar normal datos imagen a binarizar datos imagen a binarizar invertida

Nivel Detalle

Numero 1.3

Nombre Realizar binarización invertida

Parte-de Segmentar Imagen

Descripción Narrativa Corresponde a la etapa de aplicación de binarización inversa, a la imagen meanshift, esto nos ayudara a la detección del objeto en fases posteriores, por lo tanto una vez encontrado el nivel de umbral adecuado para destacar el o los objetos, la binarización inversa esta lista para ser mezclada con la normal.

Flujo de Entrada Respuesta solicitud umbral binarización invertida datos imagen a binarizar invertida

Flujo de Salida solicitud umbral binarización invertida datos imagen binarizada invertida

Nivel Detalle

Numero 1.4

Nombre Realizar binarización normal

Parte-de Segmentar Imagen

Descripción Narrativa Corresponde a la etapa de aplicación de binarización normal, a la imagen meanshift, esto nos ayudara a la detección del objeto en fases posteriores, por lo tanto una vez encontrado el nivel de umbral adecuado para destacar el o los objetos, la binarización normal esta lista para ser mezclada con la inversa.

Flujo de Entrada Respuesta solicitud umbral binarización normal datos imagen a binarizar normal

Flujo de Salida solicitud umbral binarización normal datos imagen binarizada normal

Flujo de Entrada en el proceso 1.1 de Realizar Meanshift Nombre Flujo Solicitud aplicación Meanshift

Flujo Descripción Datos enviados al sistema para poder realizar la aplicación del algoritmo Meanshift una vez capturada la imagen del video en vivo desplegado por el sistema.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 142: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

137

Origen Entidad: Usuario

Destino Proceso 1: Segmentar Imagen

Flujo de salida del proceso 1.1 Realizar meanshift Nombre Flujo Datos Imagen Meanshift

Flujo Descripción Envia los datos de la imagen trasformada según la aplicación del algoritmo meanshift

Origen Proceso 1.1: Realizar Menashift

Destino Proceso 1.2: Realizar Binarización y Mezcla Imagen

Nombre Flujo respuesta aplicación meanshift

Flujo Descripción Es la información que se le hace llegar al usuario, una vez aplicado el algoritmo Meanshift, esta respuesta es la nueva imagen una vez aplicado este algoritmo.

Origen Proceso 1.1: Realizar Menashift

Destino Entidad : Usuario

Flujo de Entrada en el proceso 1.2 de Realizar Binarización y Mezcla Imagen Nombre Flujo Solicitud Mezcla Binarización.

Flujo Descripción Acción realizada por el usuario que consta de hacer click sobre el botón 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.

Origen Entidad: Usuario

Destino Proceso 1.2: Realizar Binarizacion y Mezcla Imagen

Nombre Flujo Solicitud Binarización Normal.

Flujo Descripción Datos enviados al sistema mediante click realizado por el usuario para solicitar la binarización normal.

Origen Entidad: Usuario

Destino Proceso 1.2: Realizar Binarizacion y Mezcla Imagen

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 143: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

138

Nombre Flujo Solicitud Binarización Invertida.

Flujo Descripción Datos enviados al sistema mediante click realizado por el usuario para solicitar la binarización invertida.

Origen Entidad: Usuario

Destino Proceso 1.2: Realizar Binarizacion y Mezcla Imagen

Nombre Flujo Solicitud Binarización.

Flujo Descripción Datos enviados al sistema correspondientes a la imagen aplicado meanshift previamente para poder realizar binarización posteriormente norma e inversa.

Origen Entidad: Usuario

Destino Proceso 1.2: Realizar Binarizacion y Mezcla Imagen

Nombre Flujo Dato Imagen Binarizada Inversa

Flujo Descripción Datos resultantes de la aplicación de la binarización invertida

Origen Entidad: Usuario

Destino Proceso 1.2: Realizar Binarización y Mezcla Imagen

Nombre Flujo Dato Imagen Binarizada Normal

Flujo Descripción Datos resultantes de la binarización normal

Origen Entidad: Usuario

Destino Proceso 1.2: Realizar Binarización y Mezcla Imagen

Flujo de salida del proceso 1.2 Realizar Binarización y Mezcla Imagen Nombre Flujo Datos imagen a binarizar invertida

Flujo Descripción Se enviá la información referente a la imagen para que se le aplique la binarización invertida.

Origen Proceso 1.2: Realizar Binarización y Mezcla Imagen

Destino Proceso 1.3: Realizar Binarización Invertida

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 144: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

139

Nombre Flujo respuesta solicitud binarizacion

Flujo Descripción Corresponde a la respuesta de la acción de iniciar el proceso de binarización de imagen, esta nos indica que podemos comenzar la binarización normal de la imagen.

Origen Proceso 1.2: Realizar Binarización y Mezcla Imagen

Destino Entidad : Usuario

Nombre Flujo respuesta solicitud binarización normal

Flujo Descripción La respuesta de esta solicitud es la imagen lista para aplicar binarización normal sobre ella.

Origen Proceso 1.2: Realizar Binarización y Mezcla Imagen

Destino Entidad : Usuario

Nombre Flujo Datos imagen a binarizar normal

Flujo Descripción Se enviá la información referente a la imagen para que se le aplique la binarización normal.

Origen Proceso 1.2: Realizar Binarización y Mezcla Imagen

Destino Proceso 1.4: Realizar Binarización Normal

Nombre Flujo respuesta solicitud binarización invertida

Flujo Descripción La respuesta de esta solicitud es la imagen lista para aplicar binarización invertida sobre ella.

Origen Proceso 1.2: Realizar Binarización y Mezcla Imagen

Destino Entidad : Usuario

Nombre Flujo respuesta solicitud mezcla binarización

Flujo Descripción Este flujo entrega el resultado de mezclar la imagen binarizada normal y binarizada invertida, por lo tanto se genera una nueva imagen.

Origen Proceso 1.2: Realizar Binarización y Mezcla Imagen

Destino Entidad : Usuario

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 145: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

140

Nombre Flujo Datos Imagen binarizada

Flujo Descripción Entrega la imagen mezclada (Binarización Normal-Binarización Invertida) al siguiente proceso que es la transformación morfológica

Origen Proceso 1.2: Realizar Binarización y Mezcla Imagen

Destino Proceso 2: Transformación Morfológica

Flujo de Entrada en el proceso 1.3 de Realizar Meanshift Nombre Flujo Dato Imagen Binarizada Inversa

Flujo Descripción Datos resultantes de la aplicación de la binarización invertida

Origen Proceso 1.2: Realizar Binarización y Mezcla Imagen

Destino Proceso 1.3: Realizar Meanshift

Nombre Flujo Respuesta Solicitud Umbral Binarización Invertida.

Flujo Descripción 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

Origen Entidad: Usuario

Destino Proceso 1.3: Realizar Meanshift

Flujo de salida del proceso 1.3 Realizar Binarización Invertida

Nombre Flujo solicitud umbral binarización Invertida

Flujo Descripción Enviá una solicitud al usuario respecto al valor del nivel de umbral que se le debe aplicar a la binarización invertida

Origen Proceso 1.3 Realizar Binarización Invertida

Destino Entidad : Usuario

Nombre Flujo Datos Imagen Binarizada invertida

Flujo Descripción Corresponde a los datos de la imagen a la cual se le aplico la binarización invertida, por lo cual esta lista para ser mezclada.

Origen Proceso 1.3 Realizar Binarización Invertida

Destino Proceso 1.2: Realizar Binarización y Mezcla Imagen

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 146: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

141

Flujo de Entrada en el proceso 1.4 de Realizar Binarizacion Normal

Nombre Flujo Respuesta Solicitud Umbral Binarización Normal.

Flujo Descripción 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

Origen Entidad: Usuario

Destino Proceso 1.4: Realizar binarizacion normal

Nombre Flujo Datos Imagen a binarizar Normal

Flujo Descripción 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 binarización

Origen Entidad: Usuario

Destino Proceso 1.4: Realizar binarizacion normal

Flujo de salida del proceso 1.4 Realizar Binarización Normal

Nombre Flujo solicitud umbral binarización normal

Flujo Descripción Enviá una solicitud al usuario respecto al valor del nivel de umbral que se le debe aplicar a la binarización normal

Origen Proceso 1.4 Realizar Binarización Normal

Destino Entidad : Usuario

Nombre Flujo Datos Imagen Binarizada Normal

Flujo Descripción Corresponde a los datos de la imagen a la cual se le aplico la binarización normal, por lo cual esta lista para ser mezclada.

Origen Proceso 1.4 Realizar Binarización Normal

Destino Proceso 1.2: Realizar Binarización y Mezcla Imagen

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 147: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

142

5.3.1.5 DFD Nivel Detalle del Proceso 2

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 148: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

143

Transformación morfológica Nivel 2

Numero 2,1

Nombre Realizar Erosión

Parte-de Transformación morfológica

Descripción Narrativa Proceso por el cual la imagen previamente binarizada se le aplica erosión para poder juntar partes de la imagen que no se encuentran bien juntas debido posiblemente a la elección del umbral.

Flujo de Entrada Datos imagen Binarizada

Flujo de Salida Datos imagen Erosionada

Nivel 2

Numero 2,2

Nombre Realizar Dilatación

Parte-de Transformación morfológica

Descripción Narrativa Proceso por el cual la imagen previamente a sido erosionada por lo que mediante a la dilatación se volverá a la normalidad los pixeles que han aumentado su tamaño.

Flujo de Entrada Datos imagen Erosionada

Flujo de Salida Datos imagen Imagen Transformada

Flujo de Entrada en el proceso 2.1 de Realizar Erosión. Nombre Flujo Datos Imagen Binarizada

Flujo Descripción Datos correspondientes a la imagen ya binarizada, osea enviada en blanco, para aplicar el procesos de erosión

Origen Proceso 1: Segmentar Imagen

Destino Proceso 2.1: Realizar Erosión

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 149: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

144

Flujo de Salida en el proceso 2.1 de Realizar Dilatación. Nombre Flujo Datos Imagen erosionada

Flujo Descripción Datos correspondientes a la imagen erosionada, que ya se encontraría en condiciones optimas para ser dilatada

Origen Proceso 2.1: Realizar Erosión

Destino Proceso 2.2: Realizar Dilatación

Flujo de Salida del proceso 2.2 Realizar Dilatación

Nombre Flujo Datos Imagen Transformada

Flujo Descripción Una vez aplicada la dilatación a la imagen se enviá esta a la siguiente etapa donde se analizaran los objetos.

Origen Proceso 2.2 Realizar Dilatación

Destino Proceso 3: Análisis Objeto Flujo de Entrada del proceso 2.2 Realizar Dilatación

Nombre Flujo Datos Imagen Erosionada

Flujo Descripción Una vez aplicada la erosión a la imagen se enviá esta a la siguiente etapa donde se dilatara.

Origen Proceso 2.1 Realizar Dilatación

Destino Proceso 2.2 Realizar Dilatación

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 150: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

145

5.3.1.6 DFD Nivel Detalle Proceso 3

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 151: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

146

Analizar Objeto Nivel 2

Numero 3,1

Nombre Realizar Búsqueda de contornos

Parte-de Analizar objeto

Descripción Narrativa Obtiene todo los contornos a partir de la imagen previamente binarizada, procesándola y obteniendo de cada uno de los contornos el los rectángulos que componen al contorno correspondiente, guardándolo en el almacén lista de objetos

Flujo de Entrada Dato imagen transformada contornos

Flujo de Salida Datos rectángulo del contorno,datos contorno,datos rectangulo del contorno.

Nivel 2

Numero 3,2

Nombre Calcular centroides

Parte-de Analizar objeto

Descripción Narrativa Calcular los centroide mediante la imagen binarizada y el rectángulo correspondiente al área justa del contorno de cada objeto.

Flujo de Entrada Dato imagen transformada centroide,Datos rectángulo del contorno

Flujo de Salida Datos centroide

Nivel 2

Numero 3,3

Nombre Identificación Objetos

Parte-de Analizar objeto

Descripción Narrativa Proceso en el que se muestra por pantalla los centroides correspondientes a cada objetos, posteriormente se despliega cada uno de los botones que están asociado a su contorno para poder pincharlos y así seleccionar el objeto a ser capturado.

Flujo de Entrada Solicitud selección objeto,respuesta solicitud lista objeto

Flujo de Salida Respuesta Solicitud selección objeto, solicitud lista objeto, datos centroide pixel X objeto seleccionado,datos centroide pixel Y objeto seleccionado.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 152: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

147

Nivel 2

Numero 3,4

Nombre Identificación Destino Objetos

Parte-de Analizar objeto

Descripción Narrativa Proceso en donde el usuario hace un click sobre la posición destino, identificando las coordenadas posteriormente al scorbot.

Flujo de Entrada Solicitud destino objeto,Respuesta solicitud información lista objetos

Flujo de Salida Respuesta Solicitud destino objeto,datos centroide pixel X posición destino,datos centroide pixel Y posición destino, solicitud información lista objetos

Flujo de Entrada en el proceso 3.1 de Realizar Búsqueda de Contorno. Nombre Flujo Datos Imagen Transformada Contornos.

Flujo Descripción Datos correspondientes a la imagen ya binarizada, osea enviada en blanco, pero aplicado los procesos de dilatación y de emocionar, generando producto de ello una nueva imagen que se transmite

Origen Proceso 2: Transformación Morfológica

Destino Proceso 3.1: Realizar búsqueda Contornos

Flujo de Salida del proceso 3.1 Realizar Búsqueda de Contornos

Nombre Flujo Datos del rectángulo del contorno

Flujo Descripción Almacena información referente al rectángulo de contornos de la imagen

Origen Proceso 3.1 Realizar Búsqueda de Contornos

Destino Almacén de datos : Lista Objetos

Nombre Flujo Datos contorno

Flujo Descripción Enviá la información de los contornos detectados en la imagen

Origen Proceso 3.1 Realizar Búsqueda de Contornos

Destino Almacén de datos : Lista Objetos

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 153: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

148

Nombre Flujo Datos Rectángulo del contorno

Flujo Descripción Contornos relevantes para calcular el centroide del objeto en la imagen obtenida desde la cámara.

Origen Proceso 3.1 Realizar Búsqueda de Contornos

Destino Proceso 3.2 calcular centroides

Flujo de Entrada en el proceso 3.2 de Calcular Centroides. Nombre Flujo Datos Imagen Transformada Centroide.

Flujo Descripción Datos correspondientes a la imagen ya binarizada aplicado las transformaciones morfológicas de erosionar y dilatar

Origen Proceso 2: Transformación Morfológica

Destino Proceso 3.2: Calcular Centroides

Nombre Flujo Datos Rectangulo del Contorno

Flujo Descripción Datos correspondientes al rectángulo del objeto, utilizado como dato para obtener su centroide.

Origen Proceso 3.1: Realizar búsqueda Contornos

Destino Proceso 3.2: Calcular Centroides

Flujo de Salida del proceso 3.2 Calcular Centroide

Nombre Flujo Datos Centroide

Flujo Descripción Se almacenan las coordenadas del centroide del objeto en el almacén para que posteriormente sean consultadas.

Origen Proceso 3.2 calcular centroides

Destino Almacén de datos : Lista Objetos

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 154: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

149

Flujo de Entrada en el proceso 3.3 de Identificar Objetos. Nombre Flujo Respuesta Solicitud lista Objetos

Flujo Descripción Datos de los objetos almacenados para poder desplegarlos por pantalla, con sus respectivos botones.

Origen Almacén de datos: Lista Objetos

Destino Proceso 3.3: Identificar Objetos

Nombre Flujo Solicitud selección Objetos

Flujo Descripción Dato entregado por el usuario correspondiente a la coordenadas para obtener un objeto a partir de los objetos que aparecen por pantalla

Origen Usuario

Destino Proceso 3.3: Identificar Objetos

Flujo de Salida del proceso 3.3 Identificar Objetos

Nombre Flujo Respuesta solicitud selección objeto

Flujo Descripción 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 selección de onjetos para escoger uno nuevo ver detalle:muestra el centroide del objeto.

Origen Proceso 3.3 Identificar Objetos

Destino Entidad : Usuario

Nombre Flujo Solicitud Lista Objetos

Flujo Descripción Solicita la información al almacén perteneciente a la imagen

Origen Proceso 3.3 Identificar Objetos

Destino Almacén de datos : Lista Objetos

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 155: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

150

Nombre Flujo Datos centroide pixel X objeto seleccionado

Flujo Descripción Flujo de información que representa la ubicación del objeto en la coordenada X, del objeto seleccionado.

Origen Proceso 3.3 Identificar Objetos

Destino Proceso 5 Analizar Coordenadas

Nombre Flujo Datos centroide pixel Y objeto seleccionado

Flujo Descripción Flujo de información que representa la ubicación del objeto en la coordenada Y, del objeto seleccionado.

Origen Proceso 3.3 Identificar Objetos

Destino Proceso 5 Analizar Coordenadas

Flujo de Entrada en el proceso 3.4 de Identificar Destino Objetos.

Nombre Flujo Respuesta Solicitud Información lista Objetos

Flujo Descripción Datos correspondientes a los datos guardados en la lista de objetos que contiene los centroides, contorno y rectángulo del objeto.

Origen Almacén de datos: Lista Objetos

Destino Proceso 3.3: Identificar Destino Objeto

Nombre Flujo Solicitud Destino Objetos

Flujo Descripción Dato entregado por el usuario correspondiente a la coordenadas para dejar el objeto seleccionando la pantalla con el mouse a partir de un click.

Origen usuario

Destino Proceso 3.3: Identificar Destino Objeto

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 156: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

151

Flujo de Salida del proceso 3.4 Identificar Destino Objeto

Nombre Flujo Respuesta solicitud destino Objeto

Flujo Descripción Después de procesar la posición de destino del objeto, se enviá la respuesta de este análisis al usuario

Origen Proceso 3.4 Identificar Destino Objeto

Destino Entidad: Usuario

Nombre Flujo Datos centroide pixel X posición destino

Flujo Descripción Corresponde a la posición destino de la coordenada X en la superficie del espacio de trabajo, que contiene a los demás objetos.

Origen Proceso 3.4 Identificar Destino Objeto

Destino Proceso 5 Analizar Coordenada

Nombre Flujo Datos centroide pixel Y posición destino

Flujo Descripción Corresponde a la posición destino de la coordenada Y en la superficie del espacio de trabajo, que contiene a los demás objetos.

Origen Proceso 3.4 Identificar Destino Objeto

Destino Proceso 5 Analizar Coordenada

Nombre Flujo Solicitud Información lista de Objetos

Flujo Descripción Corresponde a los solicitud de los datos necesarios para analizar la posición de destino del objeto en la superficie de trabajo.

Origen Proceso 3.4 Identificar Destino Objeto

Destino Almacén de datos : Lista Objetos

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 157: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

152

5.3.1.7 DFD Nivel Detalle del Proceso 4

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 158: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

153

Obtener output cámara web Nivel 2

Numero 4,1

Nombre Transmisión Video Aplicación

Parte-de Obtener output cámara web

Descripción Narrativa Obtiene la salida que obtiene la cámara web hacia el sistema, mostrando al usuario lo que ocurre en el campo de vision.

Flujo de Entrada Respuesta Solicitud video, solicitud imagen

Flujo de Salida Respuesta Solicitud Imagen, Solicitud video

Nivel 2

Numero 4,2

Nombre Captura imagen del video

Parte-de Obtener output cámara web

Descripción Narrativa Obtiene una imagen del video que es transmitido en el sistema a través de la cámara web, esta instrucción la solicita el usuario

Flujo de Entrada Respuesta Solicitud Imagen,solicitud captura imagen

Flujo de Salida solicitud imagen,respuesta solicitud captura imagen

Flujo de Entrada en el proceso 4.1 de Transmisión Video Aplicación. Nombre Flujo Solicitud Imagen

Flujo Descripción Información de petición de la Imagen a Obtener de la webcam

Origen Proceso 4.2: Captura imagen de video

Destino Proceso 4.1: Transmisión video Aplicación

Nombre Flujo Respuesta Solicitud Video

Flujo Descripción Datos de video de salida obtenida de la cámara ser procesados

Origen Entidad: Cámara Web.

Destino Proceso 4.1: Transmisión video Aplicación

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 159: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

154

Flujo de Salida del Proceso 4.1 Transmisión Video Aplicación

Nombre Flujo Solicitud Video

Flujo Descripción Enviá la sugerencia a la cámara web, que se necesita la utilización del video que esta nos entrega.

Origen Proceso 4.1 Transmisión Video Aplicación

Destino Entidad: CamaraWeb

Nombre Flujo Respuesta Solicitud imagen

Flujo Descripción Enviá los datos de la imagen que se capturo, estos datos representan la imagen de la superficie.

Origen Proceso 4.1 Transmisión Video Aplicación

Destino Proceso 4.2 Capturar imagen del video

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

Flujo Descripción Información de petición de captura de una imagen asociado al video transmitido por la webcam

Origen Entidad: Usuario

Destino Proceso 4.2: Captura imagen de video

Nombre Flujo Respuesta Solicitud Imagen

Flujo Descripción Dato de la imagen pedida por el usuario,tratada desde la webcam

Origen Proceso 4.1: Transmisión video Aplicación

Destino Proceso 4.2: Captura imagen de video

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 160: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

155

Flujo de Salida del proceso 4.2 Capturar imagen del video

Nombre Flujo Respuesta solicitud captura imagen

Flujo Descripción Es la información referente a la captura de la imagen, es decir se muestra por pantalla la imagen capturada del video emitido por la cámara.

Origen Proceso 4.2 Capturar imagen del video

Destino Entidad: Usuario

Nombre Flujo Solicitud Imagen

Flujo Descripción Enviá la solicitud de la necesidad de obtener una imagen desde el video entregado por la cámara de la superficie actual donde se encuentran los objetos.

Origen Proceso 4.2 Capturar imagen del video

Destino Proceso 4.1 Transmisión Video Aplicación

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 161: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

156

5.3.1.8 DFD Nivel Detalle del Proceso 5

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 162: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

157

Analizar coordenadas

Nivel 2

Numero 5,1

Nombre Conversión a décimas de milímetros

Parte-de Analizar Coordenadas

Descripción Narrativa Proceso realizado para convertir los pixeles enviados correspondientes al centroide del objeto en cuestión, o de la nueva localización de este a tener a décimas de milímetros.

Flujo de Entrada Datos centroide pixel X objeto seleccionado,Datos centroide pixel Y objeto seleccionado,Datos centroide pixel Y posición destino,Datos centroide pixel X posición destino

Flujo de Salida Coordenada X depositar objeto,Coordenada Y depositar objeto, coordenada X centroide objeto seleccionado,coordenada Y centroide objeto seleccionado

Nivel 2

Numero 5,2

Nombre Maquina Difusa

Parte-de Analizar Coordenadas

Descripción Narrativa Proceso que le confiere cierto grado de conocimiento al sistema, mediante la introducción de los centroides establecidos se calcula el porcentaje de desplazamiento que se debe mover.

Flujo de Entrada coordenada X centroide objeto seleccionado,coordenada Y centroide objeto seleccionado, nueva posición Scorbot en Y,nueva posición Scorbot en X.

Flujo de Salida Margen de error eje X,Margen de error eje Y.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 163: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

158

Nivel 2

Numero 5,3

Nombre Interpretación valores maquina difusa

Parte-de Analizar Coordenadas

Descripción Narrativa Interpretación que se le da al porcentaje que se debe realizar del movimiento obtenido de la maquina difusa, enviando estos valores al proceso de comunicación scorbot

Flujo de Entrada Margen de error eje X,Margen de error eje Y.

Flujo de Salida Desplazamiento en coordenada X,Desplazamiento en coordenada Y

Flujo de Entrada en el proceso 5.1 de Conversión a décimas de milímetros. Nombre Flujo Datos centroide pixel X objeto seleccionado

Flujo Descripción Conversión de los pixeles obtenidos del centroide del objeto correspondientes al pixel X origen para pasarlos a décimas de milímetros y poder trabajar en las mismas medidas que trabaja el Scorbot

Origen Proceso 3: Análisis Objeto

Destino Proceso 5.1: Conversión a Décimas de Milímetros

Nombre Flujo Datos centroide pixel Y objeto seleccionado

Flujo Descripción Conversión de los pixeles obtenidos del centroide del objeto correspondientes al pixel Y origen para pasarlos a décimas de milímetros y poder trabajar en las mismas medidas que trabaja el Scorbot

Origen Proceso 3: Análisis Objeto

Destino Proceso 5.1: Conversión a Décimas de Milímetros

Nombre Flujo Datos centroide pixel X posición destino

Flujo Descripción Conversión de los pixeles obtenidos del centroide del objeto correspondientes al pixel Y destino para pasarlos a décimas de milímetros y poder trabajar en las mismas medidas que trabaja el Scorbot

Origen Proceso 3: Análisis Objeto

Destino Proceso 5.1: Conversión a Décimas de Milímetros

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 164: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

159

Nombre Flujo Datos centroide pixel Y posición destino

Flujo Descripción Conversión de los pixeles obtenidos del centroide del objeto correspondientes al pixel Y destino para pasarlos a décimas de milímetros y poder trabajar en las mismas medidas que trabaja el Scorbot

Origen Proceso 3: Análisis Objeto

Destino Proceso 5.1: Conversión a Décimas de Milímetros

Flujo de Salida del Proceso 5.1 Conversión a décimas de milímetros

Nombre Flujo Coordenada X centroide objeto seleccionado

Flujo Descripción Corresponden a la coordenada X del objeto trasformada a décimas de milímetros

Origen Proceso 5.1 Conversión a décimas de milímetros

Destino Proceso 5.2 Maquina Difusa

Nombre Flujo Coordenada Y centroide objeto seleccionado

Flujo Descripción Corresponden a la coordenada Y del objeto trasformada a décimas de milímetros

Origen Proceso 5.1 Conversión a décimas de milímetros

Destino Proceso 5.2 Maquina Difusa

Nombre Flujo Coordenada X posición destino

Flujo Descripción Corresponden a la coordenada X donde se va a desplazar el objeto trasformada a décimas de milímetros

Origen Proceso 5.1 Conversión a décimas de milímetros

Destino Proceso 6 Comunicación Scorbot

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 165: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

160

Nombre Flujo Coordenada Y posición destino

Flujo Descripción Corresponden a la coordenada Y donde se va a desplazar el objeto trasformada a décimas de milímetros

Origen Proceso 5.1 Conversión a décimas de milímetros

Destino Proceso 6 Comunicación Scorbot

Flujo de Entrada en el proceso 5.2 de Maquina Difusa. Nombre Flujo Coordenada X centroide objeto seleccionado

Flujo Descripción Dato correspondiente a el eje X del centroide expresado en décimas de milímetros para ser procesado por la maquina difusa

Origen Proceso 5.1: Conversión a Décimas de Milímetros

Destino Proceso 5.2: Maquina Difusa

Nombre Flujo Coordenada Y centroide objeto seleccionado

Flujo Descripción Dato correspondiente a el eje Y del centroide expresado en décimas de milímetros para ser procesado por la maquina difusa

Origen Proceso 5.1: Conversión a Décimas de Milímetros

Destino Proceso 5.2: Maquina Difusa

Nombre Flujo Nueva Posición Scorbot en X

Flujo Descripción Dato correspondiente a la posición del scorbot una vez desplazado en el eje X, utilizándose para ser procesado por la maquina difusa y obtener de ellos nuevas posiciones de salida en conjunto con el eje Y

Origen Proceso 6: comunicación Scorbot

Destino Proceso 5.2: Maquina Difusa

Nombre Flujo Nueva Posición Scorbot en Y

Flujo Descripción Dato correspondiente a la posición del scorbot una vez desplazado en el eje Y , utilizándose para ser procesado por la maquina difusa y obtener de ellos nuevas posiciones de salida, en conjunto con el eje X

Origen Proceso 6: comunicación Scorbot

Destino Proceso 5.1: Conversión a Décimas de Milímetros

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 166: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

161

Flujo de Salida del Proceso 5.2 Maquina Difusa

Nombre Flujo Margen error eje X

Flujo Descripción Es el valor porcentual que nos indica cuanto y hacia donde debemos mover la celda flexible en su coordenada X

Origen Proceso 5.2 Maquina Difusa

Destino Proceso 5.3 Interpretación valores maquina difusa

Nombre Flujo Margen error eje Y

Flujo Descripción Es el valor porcentual que nos indica cuanto y hacia donde debemos mover la celda flexible en su coordenada Y

Origen Proceso 5.2 Maquina Difusa

Destino Proceso 5.3 Interpretación valores maquina difusa

Flujo de Entrada en el proceso 5.3 de Interpretación de Valores Maquina Difusa. Nombre Flujo Margen Error eje X

Flujo Descripción Dato correspondiente al margen de error en la coordenada X obtenido de la maquina difusa, a ser procesada

Origen Proceso 5.2: Maquina Difusa

Destino Proceso 5.3: Interpretación valores Maquina difusa

Nombre Flujo Margen Error eje Y

Flujo Descripción Dato correspondiente al margen de error en la coordenada Y obtenido de la maquina difusa, a ser procesada

Origen Proceso 5.2: Maquina Difusa

Destino Proceso 5.3: Interpretación valores Maquina difusa

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 167: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

162

Flujo de Salida del Proceso 5.3 Interpretación valores maquina difusa

Nombre Flujo Desplazamiento en coordenada X

Flujo Descripción Es el valor que nos indica cuanto y hacia donde debemos mover la celda flexible en su coordenada X.

Origen Proceso 5.3 Interpretación valores maquina difusa

Destino Proceso 6 Comunicación Scorbot

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 168: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

163

5.3.1.9 DFD Nivel Detalle del Proceso 6

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 169: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

164

Comunicación Scorbot Nivel 2

Numero 6,1

Nombre Escritura en puerto Serial

Parte-de Comunicación Scorbot

Descripción Narrativa Proceso correspondiente a enviar instrucciones en ACL para establecer una comunicación con el Scorbot a través de puerto serial

Flujo de Entrada Comando Tomar Objeto,comando desplazar objeto.

Flujo de Salida Solicitud finalización celda, envío de comandos, inicialización celda flexible.

Nivel 2

Numero 6,2

Nombre Lectura del puerto Serial

Parte-de Comunicación Scorbot

Descripción Narrativa Se establece la recepción de los mensajes obtenidos del scorbot de todas las respuestas de los mensajes enviados hacia el.

Flujo de Entrada Respuesta inicialización celda flexible,Respuesta envío comando, respuesta finalización celda.

Flujo de Salida Respuesta comando desplazar objeto,respuesta comando tomar objeto.

Nivel 2

Numero 6,3

Nombre Tomar Objeto

Parte-de Comunicación Scorbot

Descripción Narrativa Proceso que interpreta las coordenadas obtenidas y transformarlas a instrucciones ACL.

Flujo de Entrada Desplazamiento en coordenada X,Desplazamiento en coordenada Y,Nueva Posición Scorbot en X,Nueva Posición Scorbot en Y.

Flujo de Salida Comando Tomar Objeto

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 170: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

165

Nivel 2

Numero 6,4

Nombre Desplazar Objeto

Parte-de Comunicación Scorbot

Descripción Narrativa Proceso en el que recibe la posición a la cual se tiene que desplazar el objeto, realizando un proceso para enviar instrucciones en ACL y lograr su cometido.

Flujo de Entrada Respuesta Comando desplazar Objeto, coordenada X posición destino,coordenada Y posición destino.

Flujo de Salida Comando desplazar Objeto

Flujo de Entrada en el proceso 6.1 de Escritura en Puerto Scorbot. Nombre Flujo Comando Tomar Objeto

Flujo Descripción Instrucciones necesarias para tomar el objeto, de tipo move position, siento estas a una posición en décimas de milímetros , escritas en ACL

Origen Proceso 6.3: Tomar Objeto

Destino Proceso 6.1: Escritura en el puerto Serial

Nombre Flujo Comando Desplazar Objeto

Flujo Descripción Instrucciones necesarias para desplazar el objeto,hasta un lugar de destino,con instrucciones escritas en ACL

Origen Proceso 6.4: Desplazar Objeto

Destino Proceso 6.1: Escritura en el puerto Serial

Flujo de Salida del Proceso 6.1 Escritura en el Puerto serial

Nombre Flujo Solicitud de finalizacion celda

Flujo Descripción Se le indica al scorbot que la trasmisión de comandos ha finalizado, por lo tanto se le indica que se abandonara en seguida el puerto serial.

Origen Proceso 6.1 Escritura en el Puerto serial

Destino Entidad : Scorbot

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 171: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

166

Nombre Flujo Envío de comandos

Flujo Descripción Entrega a la celda flexible instrucciones en su lenguaje ACL, que el controlador las procesara y ejecutara a continuación de esta operación.

Origen Proceso 6.1 Escritura en el Puerto serial

Destino Entidad : Scorbot

Nombre Flujo Inicializacion celda flexible

Flujo Descripción Se le indica al brazo robótico que a continuación del comando enviado se procederá a enviar una serie de comandos, para que el controlador interno de la celda este atento a recibir cualquier instrucción.

Origen Proceso 6.1 Escritura en el Puerto serial

Destino Entidad : Scorbot

Flujo de Entrada en el proceso 6.2 de Lectura en Puerto Serial. Nombre Flujo Respuesta iniciación celda flexible

Flujo Descripción Respuesta a la inicialización enviadas por el scorbot, para de esta forma poder comunicarnos con el mediante instrucciones en ACL

Origen Scorbot

Destino Proceso 6.2: Lectura en puerto Serial

Nombre Flujo Respuesta envio Comandos

Flujo Descripción Es la respuesta que entrega el scorbot al comando previamente enviado.

Origen Scorbot

Destino Proceso 6.2: Lectura en puerto Serial

Nombre Flujo Respuesta finalización celda flexible

Flujo Descripción Respuesta a la finalización del ocupar el scorbot, y asi liberarlo para que pueda ser ocupado por otras personas.

Origen Scorbot

Destino Proceso 6.2: Lectura en puerto Serial

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 172: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

167

Flujo de Salida del Proceso 6.2 Lectura en el puerto serial

Nombre Flujo Respuesta comando tomar objeto

Flujo Descripción Enviá la información pertinente a la respuesta que se analizo al ser leída del puerto serial, en base a tomar el objeto.

Origen Proceso 6.2 Lectura en el puerto serial

Destino Proceso 6.3 Tomar Objeto

Nombre Flujo Respuesta comando desplazar objeto

Flujo Descripción Enviá la información pertinente a la respuesta que se analizo al ser leída del puerto serial en base a desplazar el Objeto.

Origen Proceso 6.2 Lectura en el puerto serial

Destino Proceso 6.4 Desplazar Objeto

Flujo de Entrada en el proceso 6.3 de Toma Objeto.

Nombre Flujo Desplazamiento en coordenada X

Flujo Descripción Es el valor que nos indica cuanto y lo que se debe mover la celda flexible a su coordenada X

Origen Proceso 5: Análisis Coordenadas

Destino Proceso 6.3: Toma Objeto

Nombre Flujo Desplazamiento en coordenada Y

Flujo Descripción Es el valor que nos indica cuanto y lo que se debe mover la celda flexible a su coordenada Y

Origen Proceso 5: Análisis Coordenadas

Destino Proceso 6.3: Toma Objeto

Nombre Flujo Respuesta Comando tomar Objeto

Flujo Descripción Dato relacionado a con la realización del comando enviado, para ir a tomar el objeto

Origen Proceso 6.2: Lectura Puerto Serial

Destino Proceso 6.3: Toma Objeto

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 173: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

168

Flujo de Salida del Proceso 6.3 Tomar Objeto

Nombre Flujo Comando Tomar Objeto

Flujo Descripción Se enviá el comando para que sea escrito en el puerto serial

Origen Proceso 6.3 Tomar Objeto.

Destino Proceso 6.1 Escritura en el puerto serial.

Nombre Flujo Nueva posición del scorbot en Y

Flujo Descripción Una vez calculada la nueva posición del scorbot se analiza y se enviá a esta nueva posición en la coordenada Y para que sea analizada en el proceso correspondiente.

Origen Proceso 6.3 Tomar Objeto.

Destino Proceso 5 Analizar coordenadas.

Nombre Flujo Nueva posición del scorbot en X

Flujo Descripción Una vez calculada la nueva posición del scorbot se analiza y se enviá a esta nueva posición en la coordenada X para que sea analizada en el proceso correspondiente.

Origen Proceso 6.3 Tomar Objeto.

Destino Proceso 5 Analizar coordenadas.

Flujo de Entrada en el proceso 6.4 de Toma Objeto. Nombre Flujo Coordenada X posición destino

Flujo Descripción Coordenada enviada para el desplazar al objeto hasta una posición señalada por el usuario, siendo esto correspondiente en el eje X y procesado para enviar las correspondientes instrucciones en ACL

Origen Proceso 5: Análisis Coordenadas

Destino Proceso 6.3: Toma Objeto

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 174: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

169

Nombre Flujo Coordenada Y posición destino

Flujo Descripción Coordenada enviada para el desplazar al objeto hasta una posición señalada por el usuario, siendo esto correspondiente en el eje Y y procesado para enviar las correspondientes instrucciones en ACL

Origen Proceso 5: Análisis Coordenadas

Destino Proceso 6.3: Toma Objeto

Flujo de Salida del Proceso 6.4 Desplazar Objeto

Nombre Flujo Comando desplazar objeto

Flujo Descripción Corresponde al comando de la posición de destino a donde se debe llevar el objeto.

Origen Proceso 6.4 Desplazar Objeto.

Destino Proceso 6.1 Escritura en el puerto serial.

5.4 Integración

En esta sección se tratan los temas de integración 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 análisis de la imagen nos entrega valores en píxeles, que deben ser traducidos

para que la fase que utiliza la celda flexible pueda interpretar estos valores, por lo tanto esa conversión

es la integración de ambas fases.

También el proceso de ingresar los valores a la maquina difusa e interpretar los valores que nos

entrega esta, es otro proceso de integración, donde las fases de la maquina difusa se unen con la fase

del brazo Robótico.

El tema de integración de la aplicación como tal, se vera en la parte del diseño físico, donde se

integran los conceptos del entorno de desarrollo, OpenCv, Dev-C++.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 175: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

170

5.4.1 Conversión de Escalas: Píxeles a Décimas de Milímetros

El objetivo de la etapa de análisis de la imagen es obtener los centroides de todos los objetos

detectados dentro de la superficie de trabajo indicada, bueno estos centroides están en píxeles debido a

la imagen y necesitamos saber su ubicación en décimas de milímetros, porque esa es la unidad de

medida en que opera el Scorbot ER-V Plus, para ello debemos hacer una correlación entre los píxeles

de la imagen y las posiciones del Scorbot, por lo tanto seguimos los siguientes pasos:

Primera Parte “Conversión 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, capturándolo, sin haberlo movido de su posición, a

continuación en el computador abrimos el modo de operación ATS y escribimos el comando

“listpvposition” ( Figura 4-1) para ver la posición actual del Scorbot en décimas de milímetros, esta

posición 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 posición cartesiana del objeto, por lo tanto

hacemos lo mismo para el objeto B.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 176: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

171

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 cámara web a través del programa que hemos creado (Figura 4-

2), la cámara ya se encuentra instalada en la posición que se utilizara en la estación 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 píxeles. Con esto estamos en condiciones de realizar

la conversión de píxeles a décimas de milímetros para la componente “X”.

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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 177: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

172

4.- Por lo tanto ya tenemos las coordenadas de los centroides en décimas de milímetros y pixeles para

cada objeto, con ello podemos realizar la siguiente comparación:

Figura 4-3: De Píxeles a Décimas de Milímetros 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 según las coordenadas obtenidas en el modo ATS el objeto en esa misma posición se encuentra en la

coordenada cartesiana X=2592 décimas de milímetros, lo mismo ocurre para el objeto B que su

centroide en la imagen esta en el pixel X=144 y según modo ATS esa misma posición corresponde a

X=3372 décimas de milímetros, con esta información podemos decir que desde el objeto A al objeto B

hay una diferencia de 62 pixeles (144-82=62), o una diferencia de 780 décimas de milímetros (3372-

2592=780) , estos valores van a ser nuestro rango de equivalencia para trasformar los pixeles a décimas

de milímetros. A continuación veremos un par de ejemplos de esta transformación:

Como referencia para toda transformación en eje X tomaremos el valor que conocemos del

centroide del objeto A (centroide en: pixel X=82 que es equivalente a la posición X=2592 décimas de

milímetros).

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 178: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

173

-Ejemplo: Píxel X=110

Lo primero es preguntar si el pixel que queremos transformar es mayor igual o menor a nuestro píxel x

de referencia (píxel x=82), como es mayor entonces realizamos la siguiente operación:

Como

resultado de las operaciones anteriores para el píxel X=110, indicaron que este correspondería

aproximadamente a la coordenada cartesiana X=2944 dm.

-Ejemplo Píxel X= 60

Al comparar si es mayor igual o menor que el píxel X=82 de referencia, resulto ser menor, por lo tanto

seguimos estos pasos:

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 179: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

174

En consecuencia obtenemos que el píxel X=60 correspondería aproximadamente a X=2315

décimas de milímetros.

Segunda Parte “Conversión para el eje Y”

Para obtener la escala de conversión 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 Conversión

para eje X”, en resumen con el Teach tomamos primero el objeto C y sin moverlo de su posición,

registramos su ubicación a través del modo ATS, esto es valido también para el objeto D, la posición

que nos interesa es la coordenada cartesiana del eje Y que esta en décimas de milímetros. Por lo tanto

ya tenemos el centroide de ambos objetos.

3.- Con las coordenadas del eje Y en unidades cartesianas lo que hacemos a continuación es tomar una

imagen de los objetos (Figura 4-4) y llevarla al programa “Paint”, acá registramos el valor en píxeles

de la coordenada “Y” del centroide de ambos objetos, entonces con los valores del centroide de lo s dos

objetos en décimas de milímetros y píxeles, podemos realizar la conversión de escala para el eje Y.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 180: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

175

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

4.- En resumen ya tenemos las coordenadas de los centroides en décimas de milímetros y píxeles para

cada objeto, por lo que estamos en condiciones de realizar la conversión de escala para el eje Y.

Figura 4-5: De Píxeles a Décimas de Milímetros para eje Y

En la Figura 4-5, el centroide del objeto C se encuentra en el píxel Y=87 de la imagen obtenida

por el programa que hemos diseñado y según las coordenadas obtenidas en el modo ATS el objeto en

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 181: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

176

esa misma posición se encuentra en la coordenada cartesiana Y=0 décimas de milímetros, lo mismo

ocurre para el objeto D que su centroide en la imagen esta en el píxel Y=151 y según modo ATS esa

misma posición corresponde a Y=693 décimas de milímetros, con esta información podemos decir que

desde el objeto C al objeto D hay una diferencia de 64 píxeles (151-87=64), o una diferencia de 693

décimas de milímetros (693-0=693) , estos valores van a ser nuestro rango de equivalencia para

trasformar los píxeles a décimas de milímetros en el eje Y. A continuación veremos un par de ejemplos

de esta transformación:

Como referencia para toda transformación en el eje Y tomaremos el valor que conocemos del

centroide del objeto C (centroide en: píxel Y=87 que es equivalente a la posición Y=0 décimas de

milímetros).

-Ejemplo: Píxel Y=125

Lo primero es preguntar si el píxel que queremos transformar es mayor igual o menor a nuestro píxel

“Y” de referencia (píxel y=87), como es mayor entonces realizamos la siguiente operación:

Como resultado de las operaciones anteriores para el píxel Y=125, indicaron que este

correspondería aproximadamente a la coordenada cartesiana Y=411 dm.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 182: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

177

-Ejemplo: Píxel Y=55

Al comparar si es mayor igual o menor que el píxel Y=87 de referencia, como vemos resulto ser menor,

por lo tanto seguimos estos pasos:

En consecuencia obtenemos que el píxel Y=55 correspondería aproximadamente a Y=-347

décimas de milímetros.

5.4.2 Interpretación de los valores entregados por “Lógica Difusa”

Como vimos anteriormente en el capítulo correspondiente a la maquina de lógica difusa, esta

recibe como variables de entrada el margen de error, tanto del eje X, como del eje Y, y tras la aplicación

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 utilización de esta maquina difusa, por lo que hemos preparado

un pequeño ejemplo al momento de ingresar los margenes de error a la maquina difusa.

Sabemos de ante mano que la posición 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 posición, la cual es en el eje X=2799, eje Y=90.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 183: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

178

Ahora también conocemos el centroide del objeto en décimas de milímetros, debido a la

conversión realizada en el punto anterior de este capítulo, 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 márgenes de error de ambos ejes y para

ello presentamos la figura 4-6, donde se muestra la posición de inicio del scorbot representada por la

letra “A” y la posición del objeto que se desea tomar con la celda flexible, que correspondería a la letra

“B”:

Figura 4-6: Representación Cartesiana.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 184: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

179

Por lo tanto independiente de la posición 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 posición actual del Scorbot

(posición conocida y registrada por nosotros) y la posición del centroide del objeto (posicionObjetoX),

recordemos que esta posición es el resultado de la fase de desarrollo de análisis de la imagen y se

encuentra en píxeles, por lo que fue necesario pasarla a décimas de milímetros como explicamos

paginas anteriormente, entonces ya se encuentra en décimas de milímetros, este calculo y explicación

también 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 linguístico se lleva a

una representación 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 posición del

scorbot se compone de estos valores ya calculados.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 185: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

180

Esta operación 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

robótico y tomar el objeto seleccionado.

5.5 Diseño Físico

Lo correspondiente al diseño físico son temas relacionados en primer lugar con la elección del

lenguaje de programación de la interfaz gráfica 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 metodología escogida

para este proyecto, por lo tanto esta interfaz debe ser capaz de integrar estos prototipos y mejorarlos,

también otro aspecto a considerar es que para efectos del sistema según los requerimientos no es una

aplicación 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 métodos 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 común y corriente pueda usarlo, debido al nivel de

complejidad que trata el tema propuesto. Con lo anterior mencionado, consideramos que la mejor

opción era trabajar bajo el lenguaje C++, por que nos permite flexibilidad en la integración de todas las

fases, además de su eficiencia.

Esta sección por lo tanto da a conocer las librerías para el desarrollo de la interfaz gráfica, su

IDE, la importancia de este, ventajas que nos entrega, entre otros conceptos. También se ha incluido la

integración, por decir física de las diferentes bibliotecas empleadas para la programación de cada fase

de desarrollo, y como todas estas se integran en un solo IDE de desarrollo. También se incluye una

representación de diagrama de clases para ver en forma global la implementación del sistema en si,

hasta llegar al diseño de interfaces, que muestra gráficamente como es el sistema y su funcionalidad.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 186: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

181

5.5.1 QT

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

para la programación y diseño de la interfaz gráfica de la aplicación del sistema, a continuación se

presentara con mas detención, 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 librerías o también llamada biblioteca que tiene la

característica de ser multiplataforma, la cual esta implementada para desarrollar interfaces gráficas de

usuario principalmente, pero además podemos realizar aplicaciones completas sin interfaces gráficas

haciendo sólo uso de éstas librerías, como aplicaciones de consola entre otras.

Como nombramos que esta librería 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 librería totalmente Orientada a Objetos, es por ello que la API

cuenta con diferentes métodos, soporta el uso de diferentes motores de Base de Datos entre ellos SQL y

el uso de archivos XML, además de otras estructuras de datos tradicionales.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 187: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

182

Qt en su forma originaria trabaja con el lenguaje de programación C++, pero existen módulos

para otros lenguajes de programación gracias a una adaptación o referencia (bindings), entre los cuales

tenemos Python (PyQT), Java (QT Jambi), Perl (PerlQT) , Ruby (QTRuby), PHP (PHP-QT), entre los

más reconocidos.

Hay que destacar que Qt fue credo por Trolltech, que es una compañía de software fundada en

el año 1994, posteriormente esta compañía es comprada por Nokia en el año 2008, y es de donde

actualmente se dirige su desarrollo. Hoy en día Qt cuenta con tres tipos diferentes de licencias, una para

el desarrollo de software de código 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 versión 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, también 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 aplicación

del Proyecto.

5.5.3 Estructura de Qt Dentro de la estructura de Qt, tenemos varias características como “look an feel” variable

dependiendo del Sistema Operativo, para parecerse a estilos ya existentes (Windows, Mac, Motif…),

Internacionalización a través de QString y Unicote, OpelGL multiplataformas, Parser XML integrado,

manejo de Base de Datos SQL, además de Herramientas de generación automática Qt Designer.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 188: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

183

Su estructura de librerías esta descrita de la siguiente forma:

Modulo I:

QtCore: Clases básicas, no GUI, usadas por todos los módulos.

QtGui: Componentes GUI (lo útil para gráficos)

QtNetwork: Clases para programación de redes

QtOpenGL: Clases para soporte OpenGL

QtSql: Clases para integración de bases de datos SQL

QtSvg: Clases para integración 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 línea online.

Qt3Support: Clases para compatibilidad Qt3.

Otros: QtHealp, QtTest, QtDBus(Solo Unix), y a partir de Qt 4.6 QtOpenVG y QtMultimedia.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 189: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

184

Figura 4-7: Conjunto de Características de QT.

5.5.4 ¿Por qué usar QT?

• QT es un proyecto de Código Abierto y gratuito de libre distribución.

• Otra de las principales ventajas que nos ofrece QT es que es multiplataforma, una aplicación

desarrollada utilizando estas librerías se podría compilar tanto en linux como en Windows, Mac

OS o inclusive en un dispositivo móvil, sin necesidad de hacer ningún cambio en el código.

• La diferencia entre Qt y otras soluciones multiplataforma es que no esta basada en una maquina

virtual tal como Java, .NET. Sino que su compilación es totalmente a un código nativo con

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 190: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

185

instrucciones maquina y no en código intermedio con instrucciones para la maquina virtual. Lo

cual se refleja en un mejor desempeño en comparación con otras soluciones.

• Otra ventaja es que nos permite construir interfaces de usuario complejas de una forma visual y

rápida, lo que nos deja más tiempo para centrarnos en la parte más importante de todo

programa.

• Al utilizar el lenguaje de programación C++, podemos hacer uso del potencial de la

programación orientada a objetos, además de la compatibilidad que debe existir ya que estamos

trabajando con OpenCV.

• Podemos construir interfaces gráficas visualmente muy atractivas en poco tiempo.

• Otra característica que nos llamó la atención es que nos da la posibilidad de integrar nuestro

código desarrollado bajo QT, y agregarlo a un proyecto en Dev-C++ (gracias al Makefile

generado del código QT), que es donde tenemos integrado OpenCV, por lo que al final podemos

compilar desde Dev-C++ aplicación 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 rápida.

Como su nombre lo indica, está basado en la librería Qt y cuenta con las siguientes características

principales:

• Editor avanzado para C++.

• Interfaz agradable y fácil de adaptar.

• Diseñador de formularios (GUI) integrado.

• Herramientas para la administración y construcción de proyectos.

• Es rápido.

• Completado automático.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 191: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

186

• Depurador visual.

Figura 4-8: Entorno de Desarrollo QT Creator.

5.5.6 Integración 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 Dev-

C++ que va ser quien albergar tanto a OpenCV y Qt.

Una vez instalado Dev-C++, se procede con la instalación de OpenCV, a continuación 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, Librerías y Cabeceras

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 192: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

187

C/C++, previo esto ya estamos en condiciones de trabajar con las librerías de OpenCV.

El paso siguiente es instalar Qt Creator, este instala Qt por defecto, finalizado lo anterior

podemos ejecutar Qt Creator y programar nuestra aplicación con este IDE, cuando tengamos el

proyecto Qt prácticamente 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 estén 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, además de agregar LIBS

+= que corresponden a las librerías de OpenCV, aparte del archivo .pro, nos genera también 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 gráficamente las especificaciones de las clases de software en

una aplicación. Para la creación del diagrama de clases se identifican todas las clases que participan en

la solución y se agregan los atributos encontrados, y los métodos que hacen relación a cada clase, por

lo tanto a continuación se muestra el diagrama de clases de nuestro sistema presentado en el ultimo

Anexo al final del informe.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 193: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

188

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 194: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

189

5.5.8 Diseño Físico de Interfaces

Como sabemos el diseño de la aplicación 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 métodos que están 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 implementación interna de la aplicación

A continuación 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 temática del

proyecto. Para dar inicio al funcionamiento de la aplicación nos dirigimos al menú archivo donde

seleccionamos la opción captura imagen.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 195: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

190

Figura 4-8: Pantalla Principal.

A partir de la selección realizada anteriormente se muestra la siguiente ventana que es donde

podemos ver la cámara 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 través de la webcam, y

para ello se presiona en el botón 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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 196: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

191

detalle, ya que para comenzar era primordial tener la imagen de los objetos, también se debe dejar claro

que una vez tomada la imagen y comenzado el proceso de análisis no se podrán mover los objetos de su

posición, ya que si esto ocurre al final del análisis y cuando se desee tomar el objeto y si estos han sido

movidos de su posición de donde estaban inicialmente al tomar la imagen, la fase de demostración

queda anulada, ya que las coordenadas no corresponderían con las del objeto en su nueva posición, por

lo tanto esta posición no debe cambiar durante el análisis de la imagen.

Figura 4-9: Imagen capturada desde la webcam.

Como ejemplo de implementación la forma de realizar la captura es gracias a las librerías que

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 197: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

192

nos ofrece OpenCV, por lo que mostramos un fragmento de código en el cual se captura una imagen de

un video, añado que este fragmento es solo un ejemplo, el que realmente esta presente en nuestra

implementación 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 código:

Este código muestra una variable capture, la cual es la encargada de tener la referencia a la

cámara web ya que se inicializa esta mas abajo con cvCaptureFromCAM(0) y frame va a corresponder

a la imagen obtenida de la cámara, 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 continuación la mostremos a través

de la ventana creada con cvShowImage, esta aplicación finaliza cuando se presiona la letra “q”, para

salir del ciclo while.

La Figura siguiente corresponde a la aplicación del algoritmo MeanShift a la imagen obtenida

desde el video que nos proporciono la cámara, para aplicar el algoritmo presionamos el botón

Meanshift y veremos los resultados a continuación 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 aplicación.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 198: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

193

Figura 4-10: Aplicación de algoritmo MeanShift a la Imagen.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 199: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

194

Como vemos al presionar sobre el botón MeanShift se activo el botón Siguiente, por lo que

estamos en condiciones de pasar a la siguiente etapa que corresponde a la binarización de la imagen,

acá podremos realizar en primer lugar una binarización normal de la imagen a la cual se le aplico el

algoritmo meanshift, para posteriormente realizar una binarización inversa de esta.

Para realizar la binarización normal se debe presionar el único botón activado que se encuentra

en la pantalla de binarización, que corresponde a binarización 1 como veos a continuación:

Figura 4-11: Pantalla Binarización.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 200: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

195

Como vemos si presionamos este boton binarización 1 se genera una nueva ventana que

muestra la imagen meanshift pero lista para ser binarizada según el umbral de binarización que le

apliquemos al deslizar el slider, al realizar el movimiento del Slider podemos cambiar los niveles de

binarización de la imagen (Figura 4-12), este proceso termina cuando logramos encontrar el resultado

deseado y presionamos en el botón listo para enviar la imagen al form de Binarización principal, para

continuar con el siguiente paso que es la generación de una Binarización 2 en donde realizamos la

aplicación de una Binarización inversa a la imagen meanshift para obtener la forma completa del objeto

requerido. Para ello presionamos el botón Binarización 2 del form de Binarización principal y este

genera un nuevo form de Binarización inversa (Figura 4-13), también posee un slider donde

modificamos los niveles de umbralización hasta encontrar el adecuado y presionamos el botón finalizar

para enviar esta imagen al form de binarización principal.

Figura 4-12: Binarización Normal.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 201: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

196

Figura 4-13: Binarización Inversa.

Cada vez que binarizamos estamos aplicando el siguiente método a nuestra imagen al modificar

cada valor de umbral entregado por el slider:

Con las dos imágenes 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 optimización hasta encontrar el

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 202: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

197

deseado, una vez encontrado se presiona en el botón listo para cargar las imágenes en la pantalla de

binarización principal, y volvemos a mezclar, obteniendo de esta forma una solo imagen a partir de las

dos que teníamos, con ello podemos ver que las figuras están totalmente identificados (Figura 4-14),

por lo que entonces continuamos con la siguiente etapa al presionar el botón siguiente.

Antes queremos mostrar un fragmento de como se realiza la mezcla entre ambas binarizaciones,

normal e inversa.

Figura 4-14: Binarización, Imagen Mezclada.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 203: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

198

Al presionar siguiente el posterior paso es aplicar un proceso de deformación de la imagen, el

primero es una erosión de ella para rellenar los bordes faltantes y luego aplicar una dilatación, 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 código en OpenCv que detalla esta operación de trasformación

morfológica de la imagen a nivel de implementación.

Figura 4-15: Transformación Morfológica.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 204: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

199

A continuación al presionar el botón siguiente de esta interfaz realizamos la detección de bordes

de los objetos y la identificación del centroide de ellos, para detectar el centroide de los objetos se

implemento el siguiente método, que recibe como parámetro de entrada la imagen y un rectángulo, que

corresponde al rectángulo que rodea al objeto. Y como resultado nos entrega el centróide de este mismo

objeto.

La operación anterior es aplicable a todos los objetos detectados en la imagen que se tomó

inicialmente de la cámara web, por lo tanto si el objeto esta identificado, se le calcula de esta manera su

centroide, con lo que ya estaríamos cumpliendo gran parte del trabajo propuesto, debido a todo el

análisis 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 implementación, se da a conocer la interfaz donde se muestran gráficamente los

centroides de cada objeto detectado en la imagen resultante de la trasformación morfológica ver figura

4-16 .

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 205: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

200

Figura 4-16: Detección de Centroides.

Una vez identificado el centroide de la imagen podemos mostrar los bordes de ella encerrando

cada objeto en un rectángulo 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.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 206: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

201

Figura 4-17: Selección 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

botón ver detalle mostrara el centroide del objeto que se selecciono, en cambio si presionamos el botón

no, este nos retornara a la pantalla seleccionar objetos para que de esta forma podamos escoger otro, y

si presionamos el botón si, pasamos a la etapa de selección de destino de objetos, en esta muestra la

misma pantalla de objetos detectados pero nos indica que debemos hacer click sobre la posición dentro

de los limites de la imagen, donde deseamos trasladar el objeto que escogimos, al seleccionar la

posición esta se verificara y nos retornara un mensaje si fue correcta o no, en caso de ser no, puede que

se aya escogido una posición fuera de los limites de alcance del scorbot o esta posición entre en

conflicto con alguna posición donde ya se encuentre un objeto ubicado, pero si es si, quiere decir que la

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 207: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

202

posición esta libre por lo tanto podemos mover el objeto hacia ella, es justo en este momento donde se

lanza la aplicación de la lógica difusa y el puerto serial, que tiene como valores de entrada la posición

del objeto en pixeles y su ubicación 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 aplicación.

Figura 4-18: Mensaje Selección de Objetos.

5.6 Problemas surgidos y dificultades de esta “Capítulo”

Este es el capítulo decisivo donde todo lo estudiado a lo largo del proyecto y prototipos

construidos de acuerdo a la metodología se deben integrar en una solo solución representada a través de

una aplicación que contemplo todas las capítulos 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 teníamos una idea de como se debía armar estas piezas

(fases) pero solo a nivel conceptual, las preocupaciones vinieron cuando necesitamos llevarlas a la

implementación, entonces para ver como interactúan cada proceso del sistema fue fundamental el

apoyo del diagrama de flujo de datos, que nos mostraba cada vez que estábamos confundidos que debía

hacer el sistema y que no debía hacer, por lo que estos nos brindaron un gran apoyo.

Unos de los problemas mas complicados fue plantearnos que haría nuestro sistema a través del

diagrama de flujo de datos, por lo que le dedicamos bastante tiempo a detallar esta parte para después

de realizar todo este análisis lógico debíamos continuar con la integración propia, es decir de que

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 208: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Capitulo 5: Diseño, Integración e Implementación

203

manera ivamos a realizar el enfoque de la trasformación de pixeles, por ello tomamos varias muestras a

las posiciones del scorbot y la ubicación de este en la imagen hasta que logramos llegar a una

correlación que nos sirviera aproximadamente para la gran mayoría de las posiciones dentro de los

limites de la superficie en la imagen, esta tarea fue complicada. También el tema de interpretar los

valores que nos entregaba la maquina difusa fue difícil al principio por la poca experiencia practica

sobre el tema, si conocíamos teóricamente su funcionamiento pero nunca habíamos programado una

concretamente, solo lo habíamos realizado a nivel escrito en ejercicios prácticos 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 implementación física a nivel de integración de librerías tanto las de QT,

Opencv en Dev-C++, fue complicado debido a la escasa documentación, que solo la encontramos en

Internet, pero lo poco que recolectamos nos sirvió de mucho para lograr configurar estas librerías hasta

poder tenerlas funcionando correctamente, así proporcionamos el tema de la interfaz gráfica que

integraba las demás fases propuestas.

El diseño de la interfaz se rigió por la simplicidad que debe tener este frete a temas de mayor

complejidad como Inteligencia artificial, visión artificial, robótica, comunicación serial entro otros, por

lo tanto al final de todo sacamos cuentas alegres de todo lo aprendido en este capítulo.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 209: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Conclusión

204

Conclusión del Proyecto

El tema propuesto en este proyecto trata áreas muy complejas que no son estudiadas

específicamente 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 debiéramos

aplicar mas que conocimientos específicos, si no que debían ser conocimientos que representaran la

suma de todos estos años 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 situación, y

plantear una solución concreta a esta.

Este proyecto trato temas relacionados con la robótica, la visión artificial, la inteligencia

artificial, en el cual nosotros como futuros Ingenieros Civiles en Informática, construimos prototipos

de cada una de estos capítulos a partir de la metodología propuesta para enfrentarnos a la problemática

descrita en los capítulos preliminares y logramos realizar la integración de cada una de estas en un

sistema que pudiera ser capaz de cumplir con los objetivos propuestos que era en conclusión “Tomar

un objeto cilíndrico con un celda flexible dentro de un plano determinado a partir de las coordenadas

obtenidas mediante visión artificial y desplazarlo”.

Esto no fue fácil, 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 están contempladas en nuestro plan de estudios, pero para efecto de nuestro proyecto debíamos

comenzar por ahí, lograr adquirir dominio del tema, para pasar a la siguiente instancia que fue

comenzar a plantearnos como dar solución y cumplimento a los requerimientos expuestos, por lo tanto

la etapa de análisis y diseño cumplieron un rol fundamental para que en ningún momento perdiéramos

de vista el objetivo del proyecto, así logramos realizar una representación del sistema a través de

distintos tipos de diagramas que fueron explicados a lo largo del informe.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 210: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Conclusión

205

Por lo tanto la forma en que se abordo cada capítulo, en resumen fue correcta, ya que estas se

tomaron como procesos que a partir de los datos de entradas se debían generan salidas que servirían

para el siguiente proceso, por lo tanto entre proceso y proceso debían haber integraciones ya que se

deben establecer compatibilidades entre cada uno de ellos, entonces a lo largo del estudio se plantearon

distas forma de integración que fueran detalladas en el informe, que en resumidas cuentan sirvieron

como puentes entre cada fase hasta lograr una comunicación de todas ellas que entregaron como

resultado la creación de una aplicación.

Los resultados obtenidos de esta aplicación fueron satisfactorios debido a todo el esfuerzo

plasmado en su desarrollo y pruebas realizadas, afinando los máximos detalles para lograr que a partir

de una simple imagen tomada con una cámara web, a través de nuestro programa, se pudiera analizarla

hasta llegar a identificar los centroides de cada objeto y con esta información 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

informática en la automatización del procesos en el área de la industria y como nuestro país se atreve a

abrir nuevos mercados e invertir en tecnología de la cual necesita profesionales como nosotros para

manejara y entregar de esta manera su máximo provecho en vías 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 Christían Aguilera Carrasco Director del centro CIMUBB.

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 211: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Bibliografía

206

Bibliografía

CIMUBB: Laboratorio de Sistemas Automatizados de Producción.

[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 versión 1.43, F44

Guiá de Referencia Para Controlador-A; ATS Software Terminal Avanzado versión 1.44 Guiá

de Referencia Para Controlador-A; Scorbase Para Windows SCORBASEpro, Manual de

Usuario Nº Cat. 100268 Rev.A; ACLoff-line Software version 1.67 Manual de Usuario

Nº Cat. 100273 Rev.01.

FLEB: Libro Electrónico sobre Lógica Difusa - Andrés Bermúdez, Angel Barriga, Iluminada

Baturone, Santiago Sánchez - Instituto de Microelectrónica de Sevilla

[on line] (http://www.imse.cnm.es/online/Articulos/671.pdf ).

Visión por Computador, Imágenes digitales y aplicaciones :Libro de la Biblioteca de Nuestra

Universidad, Autores Gonzalo Pajares y Jesús M. de la Cruz .

Inteligencia Artificial Un Enfoque Moderno , Libro de la Biblioteca de Nuestra Universidad,

Segunda Edición. Stuart Russell (Prentice Hall).

QT: La Pagina Oficial de la librería de desarrollo de interfaces graficas Qt, donde obtuvimos la

documentación de referencia [on line] (http://qt.nokia.com/).

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile

Page 212: “Desarrollo de interfaz para el traslado de un objeto ...repobib.ubiobio.cl/jspui/bitstream/123456789/2386/1/Ruiz_Rodrigue… · “Desarrollo de interfaz para el traslado de un

Bibliografía

207

Learning OpenCV, Computer Vision with the OpenCV Library: Libro que enseña 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++, Autores Gary Bradski and Adrian

Kaehler.

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

Introducción 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 González, Rafael C.

Digital image processing using MATLAB: Libro de procesamiento de imagenes usando matlab.

Autor González, Rafael C.

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

Universidad del Bío-Bío. Sistema de Bibliotecas - Chile