• No se han encontrado resultados

Sistema de reconocimiento de objetos mediante imágenes aplicado a un brazo robótico

N/A
N/A
Protected

Academic year: 2023

Share "Sistema de reconocimiento de objetos mediante imágenes aplicado a un brazo robótico"

Copied!
64
0
0

Texto completo

(1)

SEMINARIO DE TITULACIÓN

“PROCESAMIENTO DIGITAL DE SEÑALES”

SISTEMA DE RECONOCIMIENTO DE OBJETOS MEDIANTE IMÁGENES APLICADO A UN BRAZO

ROBÓTICO

T E S I N A

Que para obtener el título de:

INGENIERO EN

COMUNICACIONES Y ELECTRÓNICA Presenta:

Luis Carlos Carrillo Tovar

INGENIERO EN COMPUTACION Presenta:

Gwendolyne Islas Cordero

ASESORES:

M. en C. ORLANDO BELTRÁN NAVARRO.

M. en C. BRAULIO SANCHEZ ZAMORA

México, D. F. Junio de 2009.

UNIDAD CULHUACAN

INGENIERÍA EN COMUNICACIONES Y ELECTRÓNICA

(2)

IPN

ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD CULHUACAN

TESINA

QUE PARA OBTENER EL TITULO DE:

INGENIERO EN COMUNICACIONES Y ELECTRONICA Luis Carlos Carrillo Tovar

E

INGENIERO EN COMPUTACION Gwendolyne Islas Cordero

NOMBRE DEL SEMINARIO: PROCESAMIENTO DIGITAL DE SEÑALES

NOMBRE DEL TEMA

“SISTEMA DE RECONOCIMIENTO DE OBJETOS MEDIANTE IMÁGENES APLICADO A UN BRAZO ROBÓTICO”

INTRODUCCION

Este trabajo muestra y da una posible solución a un problema que para todos en México es común “la separación de basura” y que en la vida cotidiana aun no se posee la educación necesaria para hacerlo de manera que el ambiente no se vea tan afectado como lo es ahora.

Por ello la importancia de realizar un prototipo robótico capaz de ayudar en la separación de basura para su reciclaje y por tanto la reutilización de materiales.

Este prototipo involucra conocimientos de software y electrónica que en conjunto crean un sistema autónomo capaz de entender e interpretar datos de un ambiente variable para hacer movimientos en un brazo robótico capaz de separar piezas con forma definida.

CAPITULADO

I. MARCO TEORICO II. SISTEMA PROPUESTO

III. DESARROLLO DEL SISTEMA

Fecha: México D.F. a junio de 2009

M. EN C. ORLANDO BELTRAN NAVARRO M. EN C. BRAULIO SANCHEZ ZAMORA COORDINADOR DEL SEMINARIO ASESOR

ING. IGNACION MONROY OSTRIA JEFE DEL DEPARTAMENTO DE I.C.E.

(3)

2

Índice

Introducción General ... 7

Capítulo I Marco Teórico ... 8

Introducción Procesamiento Imágenes ... 8

Procesamiento de imágenes ... 9

Representación de una imagen digital ... 9

Filtros para la eliminación de ruido en las imágenes... 10

1. Filtro gaussiano ... 11

2. Filtro mediana (rango de vecindades) ... 11

3. Filtro de suavizado direccional (preservación de bordes) ... 11

4. Filtro de suavizado conservador ... 12

5. Realce de contraste ... 12

6. Filtro paso bajo ... 12

7. Filtro paso alto ... 13

8. Filtro SUSAN (Smallest Univalue Segment Assimilationg Nucleus) ... 13

Operadores para la detección de bordes ... 13

1. Operador de Roberts ... 15

2. Operador de Sobel ... 15

3. Operador de Prewitt ... 16

4. Operador Isotrópico ... 17

Introducción a la Transmisión de Datos ... 18

Antecedente de Transmisión de datos ... 19

Selección del puerto de comunicación. ... 19

Principales conflictos con los dispositivos periféricos ... 20

(4)

3

Las Interrupciones (IRQ) ... 20

Direcciones de entrada/Salida ... 21

Interfaces no compartidas ... 22

Los problemas para el usuario final ... 22

Los diferentes tipos de cables ... 22

Instalación y configuración de las tarjetas de expansión ... 22

Conexión en caliente ... 22

Soluciones para la creación de un esquema de conexión ... 22

Soporte Plug and Play ... 23

Conexión en caliente ... 23

Bajo Costo ... 23

El USB ... 23

Motores ... 28

Motores de corriente continúa ... 28

Motores paso a paso ... 30

Principio de funcionamiento ... 30

Secuencias para manejar motores paso a paso Bipolares ... 33

Secuencias para manejar motores paso a paso Unipolares ... 33

Servomotores ... 36

Composición de un servomotor ... 37

Control del Servomotor ... 38

Capítulo II Sistema Propuesto ... 40

Diagrama a bloques general ... 41

Capítulo III Desarrollo del sistema ... 42

Diagrama Detallado ... 42

Obtención de información ... 42

(5)

4

Purificación de Imagen ... 43

Identificación del Objeto ... 44

Envío de Datos a VS 2005 ... 45

Interface de Usuario ... 46

Librería de Movimiento ... 47

Programa de Comunicación ... 48

Puerto USB ... 54

Comunicación con el Hardware ... 54

Procesamiento de la información en hardware ... 57

Conclusiones ... 62

Bibliografía. ... 63

(6)

5

Agradecimientos

Al Instituto Politécnico Nacional que durante mucho tiempo fue nuestro segundo hogar.

A la Escuela Superior de Ingeniería Mecánica y Eléctrica que forjo a los ingenieros que ahora somos.

A nuestros profesores que con sus conocimientos y experiencia nos dieron las herramientas necesarias para realizar este trabajo.

Gwendolyne

A mi padre y hermanos que me han apoyado y motivado en todo momento.

A Luis Carlos que con su cariño y motivación he logrado todo lo que me he propuesto.

Luis Carlos

A mis padres porque me dieron el mejor regalo que me pudieran dar “la educación”

A mis profesores que intervinieron a lo largo de mi vida y que cada uno dejo plasmado en mi ese amor al trabajo y a la educación.

A mi hermano que a lo largo de mi vida me ha acompañado y apoyado.

A todos los que en mi vida han influido, los que están y los que se han ido, a mi abuelita Hermenegilda que con sabiduría me ha impulso a seguir adelante donde quiera que este.

Y sobre todo a Gwendolyne que con su amor, motivación y apoyo me ha llevado a lograr cada una de mis metas teniendo en ella la compañera con la que compartiré mi vida.

(7)

6

SISTEMA DE RECONOCIMIENTO DE OBJETOS MEDIANTE IMÁGENES APLICANDO A UN BRAZO ROBOTICO

(8)

7

Introducción General

Este trabajo muestra y da una posible solución a un problema que para todos en México es común “la separación de basura” y que en la vida cotidiana aun no se posee la educación necesaria para hacerlo de manera que el ambiente no se vea tan afectado como lo es ahora.

La Subsecretaria de Fomento y Normatividad Ambiental menciona que actualmente en México se producen 94 mil 800 toneladas diarias de basura, de las cuales poco más del 40 por ciento se concentra en los estados de México, Jalisco, Veracruz y el Distrito Federal.

Asimismo, agregó, del total de residuos recolectados sólo dos terceras partes son depositadas en sitios controlados que cumplen con la Norma Oficial Mexicana 083 de la Semarnat.

Por ello la importancia de realizar un prototipo robótico capaz de ayudar en la separación de basura para su reciclaje y por tanto la reutilización de materiales.

Este prototipo involucra conocimientos de software y electrónica que en conjunto crean un sistema autónomo capaz de entender e interpretar datos de un ambiente variable para hacer movimientos en un brazo robótico capaz de separar piezas con forma definida.

En este caso la información de entrada se obtendrá de una cámara que posteriormente se analizara en software y se procesara, mandando el resultado del análisis a un dispositivo físico, el cual clasificara los objetos físicos que se le presentan.

(9)

8

Capítulo I Marco Teórico Introducción Procesamiento Imágenes

Para el prototipo que se propone involucra la creación de un software capaz de reconocer objetos físicos con formas definidas en un ambiente que continuamente cambia, esto hace que se tenga que analizar la información captada por un dispositivo físico a un sistema controlado el cual realizara el procesamiento de la información y con esto el envió de información a los demás dispositivos que se emplearan.

Para la recolección de información será por medio de una cámara web, la que estará conectada a una PC y por tanto procesara la información.

El proceso de la información será por medio de un programa en matlab y por ello la necesidad de explicar que es el procesamiento de imágenes y cuáles son los tipos de filtros que se pueden utilizar para el mejoramiento de la imagen.

En el siguiente apartado se mencionan los tipos de filtros que se utilizan para mejorar las imágenes de entrada.

(10)

9

Procesamiento de imágenes

En el procesamiento digital de imágenes se distinguen dos niveles principales de manera general:

• Procesamiento de imágenes a bajo nivel

o Muy poco uso de conocimiento respecto al contenido de las imágenes.

o Comúnmente se reconoce una secuencia de cuatro para el procesamiento a bajo nivel: adquisición de la imagen, pre-procesamiento, segmentación de la imagen, descripción y clasificación de objetos.

• Entendimiento de imágenes a alto nivel

o Existe la capacidad de realizar toma de decisiones respecto al contenido de las imágenes.

El procesamiento de imágenes esta dado por un conjunto de operaciones llevadas a cabo sobre las imágenes a fin de realizar mediciones cuantitativas para poder describirlas; es decir, extraer ciertas características que permitan mejorar, perfeccionar o detallar la imagen.

Una característica es un atributo usado para hacer decisiones respecto a objetos en la imagen. Algunos atributos son naturales y se definen mediante la apariencia visual de la imagen, en tanto otros, los artificiales, son el resultado de operaciones realizadas a la imagen.

El poder realizar mediciones sobre las imágenes generalmente requiere que sus características estén bien definidas, los bordes bien delimitados y el color y brillo sean uniformes. El tipo de mediciones a realizar para cada característica específica es un factor importante para poder determinar los pasos apropiados para su procesamiento. Los procedimientos aplicados para el procesamiento de imágenes están orientados a las aplicaciones. Lo que puede ser adecuado para una aplicación puede no serlo para otra.

Representación de una imagen digital

Una imagen f(x, y) está dada por sus coordenadas espaciales y su brillo, y es representada matemáticamente en una matriz, donde los índices de las filas y columnas indican un punto especifico de la imagen (figuras 1 y 2).

Figura 1 Índices en una matriz de pixeles

(11)

10

Figura 2 Relación entre los elementos de una imagen y su correspondiente representación de pixeles en una matriz.

Las herramientas para la adquisición de imágenes trasforman la imagen visual de un objeto físico y sus características intrínsecas en un conjunto de datos digitalizados, usados para procesarla.

En el procesamiento digital de imágenes, existen diversas aplicaciones y problemas:

 Representación

 Transformación

 Modelado

 Restauración

 Reconstrucción

 Análisis

 Compresión de datos

En este trabajo se utilizan las herramientas de análisis y compresión de datos en las aplicaciones de filtros para la eliminación de ruido (restauración), detección de esquinas, bordes, líneas, y puntos (análisis), para la detección de características, por lo que es necesario describir su funcionamiento.

Filtros para la eliminación de ruido en las imágenes

Se define como ruido cualquier entidad en las imágenes, datos o resultados intermedios que no son interesantes para la computación que se pretende llevar a cabo.

Para realizar el procesamiento en este sistema, se considera como ruido en las imágenes cualquier píxel ajeno al área de superficie blanca que pueda presentarse en la imagen.

Hoy en día existe una gran cantidad de algoritmos para la restructuración y mejoramiento de imágenes. Para los fines de este documento solamente se hará mención de los filtros más relevantes considerados como factibles a aplicar en el procesamiento de las imágenes.

(12)

11

Las técnicas de filtraje son trasformaciones de la imagen píxel a píxel, que no dependen solamente del nivel de gris de un determinado píxel, sino también del valor de los niveles de gris de los pixeles vecinos en la imagen original. El procesamiento de filtraje se realiza utilizando matrices denominadas mascaras, que son aplicadas sobre la imagen. La imagen resultante de la aplicación de un filtro es una nueva imagen. Los filtros sirven para suavizar o realizar detalles de la imagen, o inclusive minimizar efectos de ruido.

1. Filtro gaussiano

Este filtro implementa mascaras que intentan imitar la forma de una gaussiana:

donde x, y son las coordenadas de la imagen y sigma una desviación estándar de la probabilidad de distribución asociada.

La desviación estándar sigma es el único parámetro del filtro gaussiano y es proporcional al tamaño del área de los vecinos más cercanos en que opera este filtro. Los pixeles más lejanos del centro del operador tienen menor influencia y los pixeles mas allá de tres valores de sigma a partir del centro tienen una influencia insignificante.

Este filtro tiene el inconveniente de que, además de remover el ruido, empaña la imagen ocasionando perdida de los detalles más finos.

El filtro gaussiano es comúnmente utilizado en aplicaciones de detección de bordes y análisis de escala espacial.

2. Filtro mediana (rango de vecindades)

El objetivo del filtro mediana es reducir el empañamiento de los bordes. Este filtro reemplaza el píxel actualmente analizando en la imagen por la medida del brillo con respecto a los vecinos más cercanos. Este filtro tiene la ventaja de no ser afectado por pixeles individuales ruidosos. La eliminación de ruido obtenida con el filtro mediana es bastante buena, con la ventaja de no empañar demasiado los bordes.

Las principales desventajas del filtro mediana son que su desempeño disminuye cuando el número de pixeles con ruido es mayor a la mitad del número total de pixeles en la vecindad y tiene el inconveniente frente a los filtros lineales de ser más lento.

3. Filtro de suavizado direccional (preservación de bordes)

La eliminación de ruido mediante suavizado distorsiona la información con respecto a los bordes. Para reducir el empañamiento de bordes al realizar el suavizado se puede usar un filtro de promediado direccional que se calcula en varias direcciones según la ecuación:

(13)

12 4. Filtro de suavizado conservador

Esta técnica de reducción del nivel de ruido emplea un algoritmo de filtración simple y rápida que sacrifica su poder de eliminación de ruido a cambio de preservación del detalle espacial de la frecuencia en una imagen, removiendo pixeles aislados con un valor muy alto o muy bajo.

El procedimiento consiste en encontrar los valores máximo y mínimo de intensidad para cada uno de los pixeles que se encuentran alrededor del píxel a analizar (píxel central). Si la intensidad del píxel central cae dentro del rango de sus vecinos no se realiza cambio alguno, por el contrario, si la intensidad del píxel central es mayor que el valor máximo, el píxel central toma el valor del máximo. Si la intensidad del píxel central es menor que el valor mínimo, dicho valor es asignado al píxel central.

5. Realce de contraste

La técnica de realce de contraste tiene como objetivo mejorar la calidad de las imágenes bajo ciertos criterios subjetivos del ojo humano. Normalmente esta técnica es utilizada como una etapa de pre-procesamiento para sistemas de reconocimiento de patrones.

El contraste entre dos objetos se puede definir como la razón entre sus niveles de gris medios. La manipulación de contraste consiste en una transferencia radio métrica en cada píxel, con el objetivo de aumentar la discriminación visual entre los objetos presentes en la imagen. La operación es realizada punto a punto. Esta trasformación radio métrica se realiza con la ayuda de histogramas manipulados para obtener el realce deseado.

El histograma es una de las formas más comunes de representar la distribución de los niveles de gris de una imagen, y también la más utilizada en procesamiento de imágenes.

El histograma provee la información de cuantos pixeles poseen un determinado nivel de gris en la imagen en un intervalo definido ente 0(negro) y 255(blanco) para una imagen de 8 bits, ofreciendo datos importantes como la intensidad media y la dispersión de los valores de niveles de gris, siendo esta ultima la medida de contraste de la imagen. Cuanto mayor es la dispersión a lo largo del eje que representa los niveles de gris, mayor es el contraste de la imagen.

6. Filtro paso bajo

El filtro paso bajo es un tipo de filtro de suavizado empleado para remover ruido de alta frecuencia espacial en una imagen digital. Este ruido es generalmente introducido en la imagen durante el proceso de conversión de analógico a digital como un efecto secundario de la conversión física de patrones de energía luminosa a patrones eléctricos.

La reducción del ruido mediante el filtro de paso bajo se lleva a cabo mediante una cancelación de las variaciones mas rápidas entre píxel y píxel. El ruido aparece de manera aleatoria a manera de puntos en la imagen, usualmente son valores bastante distintos a los vecinos mas cercanos.

(14)

13

El efecto visual de un filtro paso bajo es el suavizado de la imagen y reducción del número de niveles de gris de la escena. Las altas frecuencias, que corresponden a las transiciones abruptas, son atenuadas. El suavizado tiende a minimizar ruidos y origina una imagen menos nítida, con niveles de gris mas difuminados.

7. Filtro paso alto

De manera general, el filtro paso alto opera de la misma manera que el filtro paso bajo, mediante el análisis de los valores de cada píxel y cambiando estos de acuerdo a los valores de los pixeles vecinos. El efecto en este filtro es, sin embargo, el opuesto. En vez de obtener un suavizado de la imagen, el filtro paso alto realza detalles de la imagen.

Desafortunadamente, esto tiene también a enfatizar en muchas ocasiones el ruido existente en la imagen. Por ello, el uso de este filtro debe reservarse preferentemente a imágenes con muy poco ruido.

8. Filtro SUSAN (Smallest Univalue Segment Assimilationg Nucleus)

El algoritmo SUSAN para la eliminación de ruido preserva la estructura de la imagen alisando únicamente sobre los pixeles que se encuentran dentro de la región del píxel analizado (píxel central) tomento un excedente del promedio de los pixeles en la localidad que cae dentro del USAN (Univalue Segment Assimilating Nucleus), siendo este un núcleo circular de pixeles utilizado para el calculo matemático del nuevo valor del píxel central. Los pixeles que caen dentro del USAN obtienen valores con pesos similares, mientras que los pixeles que se encuentran fuera de esta región son asignados con valores prácticamente de cero.

Este filtro integra los mejores aspectos de los métodos de reducción de ruidos existentes incluyendo la preservación de bordes, arrojando, por consiguiente, resultados bastante aceptables.

Operadores para la detección de bordes

La detección de esquinas y líneas se basa en los operadores de detección de bordes, mismos que, mediante el calculo de primeras y segundad derivadas permiten determinar puntos de principal importancia para poder realizar las mediciones necesarias.

En el análisis de objetos dentro de las imágenes resulta esencial poder distinguir ente el objeto de interés y el resto de la imagen. Las técnicas utilizadas para determinar los objetos de interés son conocidas como técnicas de segmentación. Una de las más comunes es la segmentación mediante la detección de bordes.

(15)

14

Figura 4 Aplicación de primera y segunda derivadas a una función

Existe una gran variedad de métodos para la detección de bordes, mismos que se basan en información con respecto a los límites de una imagen. Los métodos de detección de bordes utilizan para sus fines diversos operadores que marcan puntos de acuerdo a discontinuidades en los niveles de gris, los colores o las texturas.

Al hablar de detección de bordes, el término sugiere que la aplicación de un algoritmo con este propósito dará como resultado un contorno. Sin embargo, el objetivo de un algoritmo de detección de bordes es obtener imágenes cuya salida muestre pixeles de mayor intensidad en los valores que detecten transiciones cercanas. Los bordes son encontrados en zonas de la imagen donde el nivel de intensidad fluctúa bruscamente.

Cuento más rápido se produce el cambio de intensidad, el borde es más fuerte. Para poder detectar los bordes de los objetos debemos detectar aquellos puntos de borde que los forman. Así, un punto de borde puede ser visto como un punto en una imagen donde se produce una discontinuidad en el gradiente. Un buen proceso de detección de bordes facilita la elaboración de fronteras de objetos, con lo que el proceso de reconocimiento de objetos se simplifica.

El método más aceptado en la detección de bordes consiste en la aplicación de filtros de suavizado seguidos por filtros de derivadas. Estos últimos son los que sirven para detectar los cambios o transiciones en los niveles de gris en la imagen.

A fin de lograr la localización de los puntos en los que se produce la variación de intensidad, se emplean métodos basados en los operadores derivada. Básicamente se tienen dos posibilidades: aplicar la primera derivada (gradiente) o la segunda derivada (laplaciana). En el primer caso se buscara grandes picos y en el segundo, pasos de respuesta positiva a negativa o viceversa (cruces por cero).

(16)

15

Algunos de los algoritmos de detección de bordes más comunes son los siguientes:

• Técnicas basadas en el gradiente:

o Operador de Roberts o Operador de Sobel o Operador de Prewitt

o Operador Isotropico (u operador de Frei-Chen)

• Operadores basados en cruces por cero:

o Operador de Marr-Hildreth o Detector de Canny

Los operadores basados en el gradiente asumen que los bordes de una imagen son pixeles con un alto gradiente. Un rápido índice de cambio de intensidad en alguna dirección dada por el ángulo del vector gradiente puede observarse en los pixeles de los bordes. En la figura 5 se muestra un píxel de borde ideal con su correspondiente vector de gradiente. En el píxel, la intensidad cambia de 0 a 255 en dirección del gradiente. La magnitud del gradiente indica que tan marcado esta el borde. Si calculamos el gradiente en regiones uniformes obtendremos un vector de valor 0, lo que significa que no hay pixeles de borde.

Un píxel de borde se describe mediante dos características importantes:

• Intensidad del borde, que es igual a la magnitud del gradiente.

• Dirección del borde, que es igual al ángulo del gradiente.

El gradiente se estima por medio del uso de operadores. Algunos de estos operadores se describen a continuación.

1. Operador de Roberts

Es el operador de gradiente más simple. Utiliza diagonales para calcular el vector gradiente mediante las mascaras que se muestran en la figura 5.

Figura 5 Mascaras del Operador de Roberts

2. Operador de Sobel

El operador de Sobel es la magnitud del gradiente, calculado mediante:

(17)

16 Donde las derivadas parciales son calculadas por:

Con la constante c=2

Figura 6 Etiquetado de pixeles para los operadores de Sobel y Prewitt

De igual manera que en el operador de Roberts, Sx y Sy pueden implementarse usando mascaras de convolución, tal como se muestra en la figura 7, para una distribución como la mostrada en la figura. Este operador pone un especial énfasis en pixeles cercanos al centro de la máscara. Es uno de los operadores mas comúnmente utilizados en la detección de bordes.

Figura 7 Mascaras del Operador Sobel

3. Operador de Prewitt

El operador de Prewitt, al igual que el de Sobel, expande la definición del gradiente en una mascara de 3 X 3 para ser mas inmune al ruido, utilizando la misma ecuación que Sobel, pero con una constante c=1 como se muestra en la figura 8.

A diferencia del operador de Sobel, este operador no otorga una importancia especial a pixeles cercanos al centro de la mascara.

Figura 8 Mascara del Operador de Prewitt

(18)

17 4. Operador Isotrópico

El operador de Prewitt proporciona una buena detección para bordes verticales y horizontales, mientras que el operador de Sobel es mejor en la detección de bordes diagonales. El operador isotópico intenta llegar a un equilibrio entre ellos aplicando las mascaras mostradas en la figura 9.

Figura 9 Mascara del Operador Isotrópico

(19)

18

Introducción a la Transmisión de Datos

Una vez hecho el análisis de la información es necesario transmitir los datos al dispositivo físico de salida, por ello este capítulo trata de la importancia del puerto USB para enviar la información analizada de la PC y a los microcontroladores.

También se describe los tipos de microcontroladores y los motores que se encuentran en el mercado actualmente.

(20)

19

Antecedente de Transmisión de datos

Selección del puerto de comunicación.

El USB surge a partir de las dificultades que representaban el costo, la configuración y la conexión de los dispositivos periféricos en una computadora personal.

USB Creo un nuevo método simplificado de conexión y configuración de dispositivos periféricos desde la perspectiva del usuario final, así como la reducción del costo mecánico.

Anteriormente, un equipo con herencia de los modelos fabricados por IBM, en los cuales los dispositivos eran mapeados dentro del espacio de memoria del CPU, se les asignaba una IRQ especifica y en algunos casos un DMA, muchos de estos IRQs y DMAs ya habían sido predefinidos a otros dispositivos lo cual generaba que estos no estuvieran disponibles así como numerosos conflictos.

(21)

20

Principales conflictos con los dispositivos periféricos

Las Interrupciones (IRQ)

Uno de los mayores problemas de resolver en una arquitectura IBM es la localización de una interrupción disponible. Esto es particularmente cierto en un dispositivo periférico que se conecta por medio del bus ISA o EISA.

La figura 1 muestra cada línea de IRQ y el dispositivo periférico que típicamente lo utiliza, muchas de estas líneas de IRQ son dedicadas a dispositivos en particular que con el paso del tiempo se fueron heredando mientras que otras líneas pueden ser usadas para diferentes dispositivos periféricos. Para un sistema que además tiene un bus PCI el problema se podría incrementar al tener que tener más líneas de IRQ especificas disponibles.

(22)

21 LINEA

IRQ

DISPOSITIVO

IRQ0 Timer del sistema (dedicado en la placa del sistema) IRQ1 Teclado (dedicado en la placa del sistema)

IRQ2 Canal de cascada para el controlador de interrupciones esclavo (no disponible para dispositivos periféricos).

IRQ3 Mouse serial, modem, plotter, impresora serial, puerto de juegos, pluma, puerto infrarojo

IRQ4 Mouse serial, modem, plotter, impresora serial

IRQ5 Bus del Mouse, puerto paralelo, tarjeta de sonido, adaptador de red, unidad de cinta, puerto infrarrojo.

IRQ6 Unidad de floppy IRQ7 Puerto paralelo

IRQ8 Alarma RTC (dedicado en la placa del sistema)

IRQ9 Adaptador de red, adaptador de video, unidad de cinta, puerto de juegos IRQ10 Adaptador de red, Tarjeta de Sonido

IRQ11 Adaptador de red, controladora SCSI, controladora PCMCIA IRQ12 Mouse PS/2, controladora PCMCIA

IRQ13 Errores del coprocesador matemático (dedicado en la placa del sistema) IRQ14 Unidad de Disco Duro

IRQ15 Controladora SCSI, controladora PCMCIA

Tabla 1. Líneas de IRQ asignadas típicamente a dispositivos periféricos.

Direcciones de entrada/Salida

Otro de los conflictos más comunes son las direcciones de entrada /salida ya que los dispositivos periféricos requieren de un bloque de direcciones para reportar su estado y la salida de sus datos.

Los periféricos de tipo ISA solo puede decodificar 10 de los 16 bits de líneas de direcciones lo cual produce un efecto en el cual la separación entre cada dispositivo provoca que un bloque de 1KB de datos sea desperdiciado

(23)

22 Interfaces no compartidas

Las interfaces de periféricos estándar (serie y paralelo) soportan un solo dispositivo conectado a la vez con esto la flexibilidad de este tipo de conexión queda minimizada.

Esto lleva a la construcción de una tarjeta ISA o PCI con los respectivos problemas que ya se han descrito.

Los problemas para el usuario final

Los usuarios finales sufren de diferentes problemas al intentar conectar esto dispositivos esto por lo siguientes casos:

Los diferentes tipos de cables

Diferentes tipos de cables se ocupan en las PC desde los cables que lleva el mouse y el teclado hasta el cable de monitor e impresora, lo cual complica la conexión y detección del tipo del cable para el usuario final.

Instalación y configuración de las tarjetas de expansión

La instalación y configuración puede llegar a ser complicada ya que requiere apagar el equipo y abrirlo para colocar la tarjeta en su respectiva conexión, en algunos casos configurar algunos jumpers y después de ello instalar el software que incluye el dispositivo el cual puede ser complicado y hasta en algunos casos frustrante. En algunos casos cuando se llegan a presentar conflictos entre diferentes tipos de hardware, podría no lograr ser configurado el dispositivo periférico.

Conexión en caliente

Muchos de los dispositivos al ser conectados requieren el reinicio del sistema para poder ser usados por ello si encendemos nuestro equipo con el mouse desconectado e intentamos conectarlo este ya no funcionara hasta reiniciar nuevamente el equipo. De la misma forma desconectar el dispositivo periférico requiere que el equipo este apagado para evitar que este o el PC sea dañado. Además de ello algunos dispositivos llegan a comportarse distinto al ser conectado de un equipo a otro.

Soluciones para la creación de un esquema de conexión

La nueva solución debe vencer las fallas percibidas y proveer nuevas capacidades como son:

• Un conector sencillo para cualquier dispositivo periférico.

• Posibilidad de conectar muchos dispositivos periféricos al mismo conector.

• Un método que disminuya los conflictos de recursos del sistema.

• Detección y configuración automática de los dispositivos periféricos.

• Una solución de bajo costo tanto para el sistema como para el periférico.

• Soporte para nuevos diseños de dispositivos periféricos.

• Soporte de hardware y software heredado.

• Bajo consumo de potencia.

(24)

23 Soporte Plug and Play

La configuración automática es crucial para satisfacer los requerimientos del usuario final.

La nueva solución debería eliminar la necesidad de utilizar interruptores o jumpers para configurar el dispositivo y podría incluso eliminar la necesidad de instalar software cuando un nuevo dispositivo periférico es conectado. El usuario podría conectar el dispositivo periférico y estar listo inmediatamente para su uso.

Conexión en caliente

La nueva solución debe proveer un método para detectar que un nuevo periférico ha sido conectado y automáticamente instalar el software necesario para acceder al dispositivo.

Bajo Costo

La nueva solución de comunicación debe proveer las características antes mencionadas pero no debería incrementar significativamente el costo del dispositivo periférico, ni el costo del sistema, por ejemplo un Mouse USB que es más caro que uno de tipo PS2 podría ser rechazado por el usuario final.

El USB

El USB surge a partir de las dificultades que representaban el costo, la configuración y la conexión de los dispositivos periféricos en una computadora personal.

USB Creo un nuevo método simplificado de conexión y configuración de dispositivos periféricos desde la perspectiva del usuario fina, así como la reducción del costo mecánico.

El Universal Serial Bus(USB) es uno de los más comunes interfaces usadas en productos de consumo electrónico actualmente, incluyendo PC’s, cámaras, Dispositivos GPS, Reproductores de MP3, Modem, impresoras y escáneres por nombrar algunos.

El USB fue originalmente desarrollado por Compaq, Microsoft, Intel y Nec, y posteriormente por HP, Lucent y Philips. Estas compañías eventualmente formaron el foro de implementación de USB. Para organizar el desarrollo y publicación de las especificaciones de USB.

El USB es una interface serial de alta velocidad que puede también proveer energía al dispositivo conectado a este. Un bus USB soporta hasta 127 dispositivos (limitado por el ancho de del campo de direcciones que es de 7 bits- note que la dirección 0 no es usada y queda como propósito especial) conectando a través de 4 cables de hasta 3 o 5 metros de longitud. Muchos dispositivos USB pueden ser conectados al mismo bus por medio de Hubs o concentradores, los cuales pueden ser de 4, 8 o 16 puertos. Un dispositivo puede ser conectado en un hub el cual a su vez está conectado a otro hub, el máximo número de dispositivos en cascada es de 6. De acuerdo a la especificación la máxima distancia de un dispositivo con respecto a un equipo es de 13 metros usando 5 hubs. Para mayores distancias de comunicación es más recomendable otros métodos como por ejemplo el Ethernet.

(25)

24

Las especificaciones del bus USB están dadas en dos versiones: la anterior versión, USB 1.1, que soporta 11Mbps y la más reciente versión, USB 2.0 que soporta hasta 480Mbps (Universal serial bus specification). Las especificaciones de USB definen tres velocidades de datos:

• Baja velocidad (low speed) – 1.5 Mb/sec

• Velocidad Completa( Full speed) – 12 Mb/sec

• Alta velocidad ( High speed) – 480 Mb/sec

La máxima energía disponible para dispositivos externos está limitada a 5v y 100 mA.

El USB es una interface de cuatro cables implementada usando un blindaje, en donde dos tipos de conectores son especificados y usados: Tipo A y Tipo B.

En la siguiente imagen puede notarse la distribución de

su pines de entrada/salida.

(26)

25 Asignación de pines del USB

Pin No. Nombre Color

1 +5.0 v Rojo

2 Datos - Blanco

3 Datos + Verde

4 Tierra Negro

Las especificaciones también definen un conector mini-B, principalmente usado en pequeños dispositivos electrónicos portátiles tales como las cámaras y otros dispositivos de mano. Este conector tiene un quinto pin llamado ID, este pin no es usado. La asignación y los colores del conector mini-B están dados de las siguientes formas.

Pin No. Nombre Color

1 +5.0v Rojo

2 Datos - Blanco

3 Datos + Verde

4 No usado -

5 Tierra Negro

La señales del USB son bifases , y las señales son enviadas desde la computadora usando la técnica de codificación de información NRZI (inversión de no retorno a cero). En esta técnica, los niveles de la señal son invertidos en cada cambio de estado de cero lógico y no cambiados para 1 logico. Un bit 0 es colocado después de seis unos consecutivos en el flujo de la información para hacer la información dinámica. Este método es llamado “Bit Stuffing” (rellenado de bits) porque un bit extra incrementa el flujo de datos.

(27)

26

Datos en NRZI

Un paquete de información transmitido por el anfitrión es enviado a cada uno de los dispositivos conectados al bus, viajando hacia abajo a través de las conexiones de los concentradores. Todos los dispositivos reciben la señal pero solo uno de estos, el direccionado, acepta la información. De forma inversa, solo un dispositivo a la vez puede transmitir hacia el anfitrión, y la información viaja de subida a través de las conexiones de los concentradores hasta alcanzar el anfitrión.

Los dispositivos USB conectados al bus pueden ser dispositivos totalmente propios que requieren controladores propios, o estos podrían pertenecer a una clase de dispositivo.

Las clases de dispositivos permiten a los mismos drivers ser usados para dispositivos que tienen similares funciones. Por ejemplo, una impresora tiene la clase de dispositivo 0x07, y muchas impresoras pueden usar el mismo tipo de clase.

Las clases de dispositivos más comunes se muestran en la tabla 8.3. La clase de dispositivo de interfaz humana (HID) es de nuestro particular interés, ya que es el que usaremos.

Clase Descripción Ejemplo

0x00 Reservado -

0x01 Dispositivo de audio USB Tarjeta de sonido

0x02 Dispositivo de comunicaciones USB Modem, Fax 0x03 Dispositivo de interfaz humana USB Teclado, Mouse

0x07 Dispositivo Impresora USB Impresora

0x08 Dispositivo de almacenamiento

masivo

Memoria USB, Memoria Flash

0x09 Dispositivo concentrador USB Concentrador (HUB)

0x0B Dispositivo lector de tarjetas

inteligentes

Lector de tarjetas

0x0E Dispositivo de video USB Webcam, Scanner

0xE0 Dispositivo Inalámbrico USB Bluetooth

(28)

27 Comunicación en el USB

El sistema de conectividad del USB es centrada en el anfitrión, donde el anfitrión decide el uso del bus USB. Cada dispositivo en el bus tiene asignado una dirección única desde que se conecta al anfitrión y ningún dispositivo conectado al anfitrión puede introducir una señal al bus si este no se la ha pedido.

Cuando un nuevo dispositivo USB es conectado al bus, el anfitrión usa la dirección 0 para preguntar la información básica de el dispositivo. Entonces, el anfitrión le asigna una dirección única. Después el anfitrión pregunta para recibir información más avanzada acerca del dispositivo, como por ejemplo el nombre del fabricante, las capacidades del dispositivo, el Id del producto y después las transmisiones en el bus pueden iniciar.

Interface USB con un microcontrolador PIC18

Algunos de los microcontroladores PIC18 soportan la interface USB directamente. Por ejemplo, El PIC18F4550 contiene una interface USB compatible con Low-speed y Full- speed que permite la comunicación entre un PC y este microcontrolador.

En la figura se muestra una sección del USB que contiene el microcontrolador PIC18F4550. En el puerto C pin RC4 (pin 23) y RC5 (pin 24) son usados por la interface USB. RC4 es el pin Datos D-, y RC5 es el pin Datos +. Resistencias internas son provistas y podrían ser desactivadas (usando UPUEN=0) si se desea resistencias externas estas pueden ser colocadas. Para Full-speed las resistencias externas o internas podrían ser conectadas al pin Datos+, y para low-speed las resistencias podrían se conectadas a el pin Datos-.

(29)

28

El modulo de operación del USB es configurado usando tres registros, y un total de veintidós registros son usados para manejar el estado actual de las transacciones.

Además de la comunicación entre la PC y nuestro dispositivo también se requiere de la parte mecánica que soportara el peso de la estructura del robot. Para lograr realizar esta parte mecánica necesitamos entender los diferentes motores existentes para estas aplicaciones y así lograr encontrar el más adecuado

Motores

Un motor eléctrico es un dispositivo que transforma energía eléctrica en energía mecánica por medio de interacciones electromagnéticas.

Los motores de corriente alterna y los motores de corriente continua se basan en el mismo principio de funcionamiento, el cual establece que si un conductor por el cual circula una corriente eléctrica se encuentra dentro de la acción de un campo magnético, éste tiende a desplazarse perpendicularmente a las líneas de acción del campo magnético.

El conductor tiende a funcionar como un electroimán debido a la corriente eléctrica que circula por el mismo adquiriendo de esta manera propiedades magnéticas, que provocan, debido a la interacción con los polos ubicados en el estator, el movimiento circular que se observa en el rotor del motor.

Partiendo del hecho de que cuando pasa corriente eléctrica por un conductor se produce un campo magnético, además si lo ponemos dentro de la acción de un campo magnético potente, el producto de la interacción de ambos campos magnéticos hace que el conductor tienda a desplazarse produciendo así la energía mecánica. Dicha energía es comunicada al exterior mediante un dispositivo llamado flecha.

Motores de corriente continúa

El motor de corriente continua es una máquina que convierte la energía eléctrica en mecánica, principalmente mediante el movimiento rotatorio. En la actualidad existen nuevas aplicaciones con motores eléctricos que no producen movimiento rotatorio, sino que con algunas modificaciones, ejercen tracción sobre un riel. Estos motores se conocen como motores lineales.

Esta máquina de corriente continua es una de las más versátiles en la industria. Su fácil control de posición, par y velocidad la han convertido en una de las mejores opciones en aplicaciones de control y automatización de procesos. Pero con la llegada de la electrónica su uso ha disminuido en gran medida, pues los motores de corriente alterna, del tipo asíncrono, pueden ser controlados de igual forma a precios más accesibles para el consumidor medio de la industria. A pesar de esto los motores de corriente continua se siguen utilizando en muchas aplicaciones de potencia (trenes y tranvías) o de precisión (máquinas, micro motores, etc.)

La principal característica del motor de corriente continua es la posibilidad de regular la velocidad desde vacío a plena carga.

(30)

29

Una máquina de corriente continua (generador o motor) se compone principalmente de dos partes, un estator que da soporte mecánico al aparato y tiene un hueco en el centro generalmente de forma cilíndrica. En el estator además se encuentran los polos, que pueden ser de imanes permanentes o devanados con hilo de cobre sobre núcleo de hierro. El rotor es generalmente de forma cilíndrica, también devanado y con núcleo, al que llega la corriente mediante dos escobillas.

También se construyen motores de CC con el rotor de imanes permanentes para aplicaciones especiales.

Los motores de corriente continua se clasifican según la forma como estén conectados, en:

• Motor serie

• Motor compound

• Motor shunt

• Motor eléctrico sin escobillas

Además de los anteriores, existen otros tipos que son utilizados en electrónica:

• Motor paso a paso

• Servomotor

• motor sin núcleo

(31)

30

Motores paso a paso

Los motores paso a paso son ideales para la construcción de mecanismos en donde se requieren movimientos muy precisos.

La característica principal de estos motores es el hecho de poder moverlos un paso a la vez por cada pulso que se le aplique. Este paso puede variar desde 90° hasta pequeños movimientos de tan solo 1.8°, es decir, que se necesitarán 4 pasos en el primer caso (90°) y 200 para el segundo caso (1.8°), para completar un giro completo de 360°.

Estos motores poseen la habilidad de poder quedar fijos en una posición o bien totalmente libres. Si una o más de sus bobinas están energizadas, el motor estará fijo en la posición correspondiente y por el contrario quedará completamente libre si no circula corriente por ninguna de sus bobinas.

Principio de funcionamiento

Básicamente estos motores están constituidos normalmente por un rotor sobre el que van aplicados distintos imanes permanentes y por un cierto número de bobinas excitadoras bobinadas en su estator.

Las bobinas son parte del estator y el rotor es un imán permanente. Toda la conmutación (o excitación de las bobinas) deber ser externamente manejada por un controlador.

Existen dos tipos de motores paso a paso de imán permanente:

Bipolar: Estos tiene generalmente cuatro cables de salida (ver figura 1). Necesitan ciertos trucos para ser controlados, debido a que requieren del cambio de dirección del flujo de corriente a través de las bobinas en la secuencia apropiada

(32)

31

para realizar un movimiento. En figura podemos apreciar un ejemplo de control de estos motores mediante el uso de un puente en H (H-Bridge). Como se aprecia, será necesario un H-Bridge por cada bobina del motor, es decir que para controlar un motor Paso a Paso de 4 cables (dos bobinas), necesitaremos usar dos H- Bridges iguales al de la figura . El circuito de la figura es a modo ilustrativo y no corresponde con exactitud a un H-Bridge. En general es recomendable el uso de H-Bridge integrados como son los casos del L293

(33)

32

Unipolar: Estos motores suelen tener 6 o 5 cables de salida, dependiendo de su conexionado interno (ver figura 2). Este tipo se caracteriza por ser más simple de controlar. En la figura 4 podemos apreciar un ejemplo de conexionado para controlar un motor paso a paso unipolar mediante el uso de un ULN2803, el cual es un arreglo de 8 transistores tipo Darlington capaces de manejar cargas de hasta 500mA. Las entradas de activación (Activa A, B , C y D) pueden ser directamente activadas por un microcontrolador.

(34)

33

Secuencias para manejar motores paso a paso Bipolares

Como se dijo anteriormente, estos motores necesitan la inversión de la corriente que circula en sus bobinas en una secuencia determinada. Cada inversión de la polaridad provoca el movimiento del eje en un paso, cuyo sentido de giro está determinado por la secuencia seguida.

A continuación se puede ver la tabla con la secuencia necesaria para controlar motores paso a paso del tipo Bipolares:

PASO TERMINALES

A B C D

1 +V -V +V -V

2 +V -V -V +V

3 -V +V -V +V

4 -V +V +V -V

Secuencias para manejar motores paso a paso Unipolares

Existen tres secuencias posibles para este tipo de motores, las cuales se detallan a continuación. Todas las secuencias comienzan nuevamente por el paso 1 una vez alcanzado el paso final (4 u 8). Para revertir el sentido de giro, simplemente se deben ejecutar las secuencias en modo inverso.

Secuencia Normal: Esta es la secuencia más usada y la que generalmente recomienda el fabricante. Con esta secuencia el motor avanza un paso por vez y debido a que siempre hay al menos dos bobinas activadas, se obtiene un alto torque de paso y de retención.

PASO Bobina A Bobina B Bobina C Bobina D

1 ON ON OFF OFF

2 OFF ON ON OFF

(35)

34

3 OFF OFF ON ON

4 ON OFF OFF ON

Secuencia del tipo wave drive: En esta secuencia se activa solo una bobina a la vez. En algunos motores esto brinda un funcionamiento más suave. La contrapartida es que al estar solo una bobina activada, el torque de paso y retención es menor.

PASO Bobina A Bobina B Bobina C Bobina D

1 ON

OFF OFF OFF

2

OFF

ON

OFF OFF

3

OFF OFF

ON

OFF

4

OFF OFF OFF

ON

(36)

35

Secuencia del tipo medio paso: En esta secuencia se activan las bobinas de tal forma de brindar un movimiento igual a la mitad del paso real. Para ello se activan primero 2 bobinas y luego solo 1 y así sucesivamente. Como vemos en la tabla la secuencia completa consta de 8 movimientos en lugar de 4.

PASO Bobina A Bobina B Bobina C Bobina D

1 ON

OFF OFF OFF

2 ON ON

OFF OFF

3

OFF

ON

OFF OFF

4

OFF

ON ON

OFF

5

OFF OFF

ON

OFF

6

OFF OFF

ON ON

7

OFF OFF OFF

ON

8 ON

OFF OFF

ON

(37)

36

Aunque el motor a pasos tiene muy buena precisión, este carece de un buen torque necesario para la función que se desea dentro de este proyecto.

Servomotores

Un servomotor es un dispositivo con un eje de rendimiento controlado ya que puede ser llevado a posiciones angulares específicas al enviar una señal codificada. Con tal de que exista una señal codificada en la línea de entrada, el servomotor mantendrá la posición angular del engranaje. Cuando la señal codificada cambia, la posición angular de los engranes cambia. En la práctica, se usan servos para posicionar elementos de control como palancas, pequeños ascensores y timones. También se usan en radio-control, marionetas y, por supuesto, en robots. Los Servos son sumamente útiles en robótica. Los motores son pequeños. Un servomotor posee internamente una circuitería de control y es sumamente potente para su tamaño (un mayor torque respecto a motores de pasos con dimensiones y características semejantes). Un servomotor normal o estándar como el HS- 300 de Hitec proporciona un par de 3 kg*cm a 4.8 V, lo cual es bastante para su tamaño, sin consumir mucha energía. La corriente que requiere depende del tamaño del servomotor. Normalmente el fabricante indica cual es la corriente que consume. Eso no significa mucho si todos los servomotores van a estar moviéndose todo el tiempo. La corriente depende principalmente del par, y puede exceder un Amper si el servomotor está fijo.

(38)

37 Composición de un servomotor

El motor del servomotor tiene algunos circuitos de control y un potenciómetro conectado al eje central del motor. En la figura superior se puede observar a la derecha. Este potenciómetro permite a la circuitería de control, supervisar el ángulo actual del servomotor. Si el eje está en el ángulo correcto, entonces el motor está apagado. Si el circuito observa que el ángulo no es correcto, el motor volverá a la dirección correcta, hasta llegar al ángulo que es correcto. El eje del servomotor es capaz de llegar alrededor de los 180 grados. Normalmente, en algunos llega a los 210 grados, pero varía según el fabricante.

Un servomotor normal se usa para controlar un movimiento angular de entre 0 y 180 grados. Un servomotor normal no es mecánicamente capaz de retornar a su lugar, si hay un mayor peso que el sugerido por las especificaciones del fabricante.

El voltaje aplicado al motor es proporcional a la distancia que éste necesita viajar. Así, si el eje necesita regresar una distancia grande, el motor regresará a toda velocidad. Si este necesita regresar sólo una pequeña cantidad, el motor girará a menor velocidad. A esto se le denomina control proporcional.

(39)

38 Control del Servomotor

La modulación por anchura de pulso, PWM (Pulse Width Modulation), es una de los sistemas más empleados para el control de servos. Este sistema consiste en generar una onda cuadrada en la que se varía el tiempo que el pulso está a nivel alto, manteniendo el mismo período (normalmente), con el objetivo de modificar la posición del servomotor según se desee.

Para la generación de una onda PWM en un microcontrolador, lo más habitual es usar un timer y un comparador (interrupciones asociadas), de modo que el microcontrolador quede libre para realizar otras tareas, y la generación de la señal sea automática y más efectiva. El mecanismo consiste en programar el timer con el ancho del pulso (el período de la señal) y al comparador con el valor de duración del pulso a nivel alto. Cuando se produce una interrupción de overflow del timer, la subrutina de interrupción debe poner la señal PWM a nivel alto y cuando se produzca la interrupción del comparador, ésta debe poner la señal PWM a nivel bajo. En la actualidad, muchos microcontroladores, disponen de hardware específico para realizar esta tarea, eso sí, consumiendo los recursos antes mencionados (timer y comparador).

PWM para recorrer todo el rango de operación del servo

El sistema de control de un servo se limita a indicar en qué posición se debe situar. Esto se lleva a cabo mediante una serie de pulsos tal que la duración del pulso indica el ángulo de giro del motor. Cada servomotor tiene sus márgenes de operación, que se corresponden con el ancho del pulso máximo y mínimo que el servo entiende. Los valores más generales se corresponden con pulsos de entre 1 ms y 2 ms de anchura, que dejarían al motor en ambos extremos (0º y 180º). El valor 1.5 ms indicaría la posición central o neutra (90º), mientras que otros valores del pulso lo dejan en posiciones intermedias. Estos valores suelen ser los recomendados, sin embargo, es posible emplear pulsos menores de 1 ms o mayores de 2 ms, pudiéndose conseguir ángulos mayores de 180°. Si se sobrepasan los límites de movimiento del servo, éste comenzará a emitir un zumbido, indicando que se debe cambiar la longitud del pulso. El factor limitante es el tope del potenciómetro y los límites mecánicos constructivos.

El período entre pulso y pulso (tiempo de OFF) no es crítico, e incluso puede ser distinto entre uno y otro pulso. Se suelen emplear valores ~ 20 ms (entre 10 ms y 30 ms). Si el intervalo entre pulso y pulso es inferior al mínimo, puede interferir con la temporización interna del servo, causando un zumbido, y la vibración del eje de salida. Si es mayor que el máximo, entonces el servo pasará a estado dormido entre pulsos. Esto provoca que se mueva con intervalos pequeños.

Es importante destacar que para que un servo se mantenga en la misma posición durante un cierto tiempo, es necesario enviarle continuamente el pulso correspondiente. De este

(40)

39

modo, si existe alguna fuerza que le obligue a abandonar esta posición, intentará resistirse. Si se deja de enviar pulsos (o el intervalo entre pulsos es mayor que el máximo) entonces el servo perderá fuerza y dejará de intentar mantener su posición, de modo que cualquier fuerza externa podría desplazarlo.

Tren de pulsos para control del servo

(41)

40

Capítulo II Sistema Propuesto

En México a partir de 1° de enero del 2004 la ley de residuos sólidos del Distrito Federal nos obliga a separar la basura de nuestros hogares sin embargo actualmente la población no posee la educación necesaria para llevar a cabo dicha ley así como también la infraestructura proporcionada por el gobierno no logra abarcar el cumplimiento de esta. Por lo tanto aun muchos residuos sólidos no son separados antes de su recolección, de esta forma el proceso de separación se realizan por medio de la intervención humana, en la separación de los residuos orgánicos e inorgánicos el criterio y sus manos es el único instrumento para realizar esta tarea, esto produce la exposición de las personas a residuos tóxicos que se desprenden y afecten en gran medida a las personas afectando su integridad física y deteriorando su salud.

Esta tesis propone un sistema electromecánico para identificar los residuos sólidos, separarlos y así obtener menor intervención de personas en el proceso.

Para el desarrollo del sistema se dividió en tres partes las cuales son:

• Visón por computadora

• Interfaz de usuario

• Hardware

Nos referimos a visión por computadora a la sección encargada de obtener imágenes por medio de una cámara Web, las cuales son procesadas mediante un algoritmo de purificación que está compuesto de varios filtros, obteniendo así una matriz de datos con valores más sencillos de procesar que la interfaz de usuario mostrara y generara la respuesta en hardware correspondiente.

Interfaz de Usuario es la sección que nos permite mostrar en forma amigable al operador las formas que el sistema encontró y por consiguiente la respuesta en hardware que se obtendrá. En ella se llevara a cabo la mayor parte de los procesos de comunicación entre las diferentes partes del sistema.

El Hardware es la respuesta física de la interpretación de los datos que se

analizaron en las secciones anteriores y por tanto el responsable de realizar la

tarea encomendada.

(42)

41

Diagrama a bloques general

Empezaremos explicando cada una de las partes principales del sistema de manera general para posteriormente hacer la aclaración y referencia detallada del mismo.

Adquisición de Datos: Esta sección es la encargada de obtener imágenes de una cámara Web que es la información de un entorno que para nosotros es común, sin embargo al ser un ambiente en continuo cambio se debe trasformar la información en un lenguaje comprensible para la computadora es por esto que la información es analizada por medio de un programa de análisis hecho en Matlab que se comunicara con la interfaz de usuario y mostrara el panorama de lo que se está recibiendo como entrada de datos.

Interface de Usuario: En este bloque la información proporcionada por el programa de análisis hecho en Matlab se interfaz a con el manejador de datos Visual Studio 2005 para así mostrar lo que en un inicio la cámara Web obtuvo. Esta sección muestra los datos Obtenidos del programa anterior y manda los datos a la interfaz de salida que en este caso se hace por medio del puerto USB.

Interfaz de Salida: Nos referimos por interfaz de salida al puerto USB que es el medio encargado de hacer la interacción computadora – hardware. Esta interfaz es la encargada de interpretar los datos analizados a un lenguaje de bajo nivel que está programado en un micro controlador.

Dispositivo Físico de Salida: Esta sección es interpretada como las herramientas físicas que nos ayudan en la tarea de coordinar y controlar los movimientos del brazo robótico;

esto es los circuitos que fueron creados con el propósito de dar movilidad y coordinación a la información captada de primer instancia.

Adquisición de Datos

Interface de Usuario

Dispositivo Físico de salida Interface de

salida

(43)

42

Capítulo III Desarrollo del sistema Diagrama Detallado

Es aquí donde detallaremos lo que anteriormente explicamos de manera general para así ver el funcionamiento del sistema de una forma más clara y apreciable para el lector.

Obtención de información

Esto se logra por medio de una cámara Web con una resolución de 640 x 480 a una distancia de 1m con respecto a la superficie que contiene los objetos, cabe aclarar que esta superficie tiene que ser de un color sólido así como también que los objetos tienen que tener contraste con respecto a la superficie que los contiene, en este caso se aplico el color blanco para los objetos y una tabla de madera de color café como superficie de contraste.

Obtención de Información

Purificación de Imagen

Identificación de objeto

Envió Datos Visual Studio2005

Interface Usuario Librería de

Movimiento Programa

(Comunicación USB)

Puerto USB

Comunicación con el Hardware

Procesamiento de información (Hardware)

Respuesta de Hardware

(44)

43

Las figuras son objetos geométricos (circulo, cuadrado, triangulo) de diferentes tamaños sin exceder un tamaño de 5cm de diámetro ya que por la distancia de captación de imágenes nos hace difícil exceder el tamaño así como también la fuerza y longitud del brazo hace que no excedamos estas características.

Como primer paso en el proceso de captación de formas se configuro la cámara con las características que se requieren (como formato, tamaño, etc.).

vid = videoinput('winvideo', 1, 'YUY2_640x480')

Se especifico la cantidad de frames que se captaran a razón de los segundos que se emplearan.

frames=10;

set(vid,'FramesPerTrigger',frames) trigger=2;

set(vid, 'TriggerRepeat', trigger);

Purificación de Imagen

Este proceso se realiza puesto que el ambiente no siempre es el adecuado y se logra captar otros elementos ajenos a los objetos de estudio. En esta parte es cuando se toma la imagen captada de la cámara y la envía a un programa realizado en Matlab el cual en primer instancia convierte la imagen a escala de grises para poder normalizar la cantidad de luz que en muchos de los casos afecta la integridad de los objetos, posteriormente se hace un proceso de binarizacion lo cual nos genera una imagen más limpia.

I = rgb2gray(f);

threshold = graythresh(I);

bw = im2bw(I,threshold);

(45)

44

Haciendo esto es posible hacer un negativo de la imagen para así tener solo dos colores sólidos, posteriormente se aplica un filtro el cual limpia la imagen de pequeños puntos esparcidos fuera de los elementos sólidos que se destacan.

Identificación del Objeto

El siguiente paso es captar el centro de los objetos que se obtuvieron de la limpieza anterior para captar las esquinas del objeto y con esto saber de que figura geométrica se trata es necesario hacer una agrupación de los puntos de vecindad esto nos proporciona una mejor referencia de en qué posición se encuentra las esquinas del objeto y así poder relacionarlo con una figura geométrica especifica.

Lo primero que realizaremos será etiquetar las formas encontradas por medio de la función bwlabel la cual agrupara todas las formas encontradas mostrándonosla de un tono de gris diferente cada una.

Se=bwlabel(bw);

Quedando de la siguiente forma:

Ahora obtendremos el centroide de cada una de las formas por medio de función regionprops la cual determinara este dato.

Idealmente una figura como un triangulo solo debería tener 3 vértices pero al capturar la imagen se obtienen imperfecciones esto no permite determinar fácilmente estos vértices ya que podrían mostrarse mas.

(46)

45

Para poder eliminar estas imperfecciones en los extremos se utilizo la técnica de dilatación de puntos la cual se encarga de agrupar los puntos cercanos a las superficies de color blanco.

mask2 = imdilate(mask,se);

Ahora recorremos todas las figuras y dependiendo de la cantidad de esquinas encontradas será la figura reconocida, así al mismo tiempo se va creando una matriz con los datos de cada figura conteniendo las coordenadas de la figura y su descripción.

Envío de Datos a VS 2005

En Matlab ya procesada la formación es convertida en un paquete de datos en forma de matriz la cual se ingresa a VS 2005 con el propósito de mostrar al usuario del sistema la información que se analizo y también interpretar los datos que se recolectaron para convertirlos en un lenguaje más compresible en el manejo del puerto USB y para que el

(47)

46

dispositivo Hardware realice su tarea. Esto se realiza mediante las librerías de matlab específicas para visual studio 2005.

Esto es realizado por medio de las librerías de matlab builder NE, estas crean componentes basados en .NET o COM que permiten libremente desarrollar aplicaciones para equipos de escritorio o servidores WEB. El compilador crea componentes encriptados de las funciones creadas en matlab, así mismos crea una envoltura que permite el fácil entendimiento desde .NET. Solo se requiere referenciar estas librerías creadas como cualquier otra librería de .NET y estas funcionaran utilizando las MCR (matlab compiler runtime) de matlab las cuales pueden ser distribuidas dentro de la misma aplicación.

Interface de Usuario

Es aquí en donde ya procesada la información el resultado es mostrado de forma tal que el usuario pueda entenderla y donde el observador supervisara que se hayan reconocido todas las formas expuestas en la tabla de trabajo.

(48)

47

Librería de Movimiento

Nos referimos como librería de movimiento a los movimientos que el brazo robótico puede realizar ya que siendo un agente externo y no teniendo comunicación de entrada al sistema lógico es de suma importancia tener esta información para lograr que se desplace a la dirección y distancia necesaria. Esta librería interpretara los datos ya analizados de coordenadas convirtiéndolas en unas entendible a la parte de hardware.

El primer paso es recibir las coordenadas en las que se encuentra el objeto que se quiere alcanzar, esto por medio de matlab. Una vez que tenemos estas coordenadas deberemos hacer un corrimiento ya que el robot se encuentra en el centro de la imagen así como la cámara pero en sentido inverso.

De esta forma haremos que el robot este en la coordenada (0,0). Seguido a esto deberemos convertir las coordenadas obtenidas a coordenadas polares con lo cual obtendremos el ángulo Ɵ con respecto a que se encuentra el objeto este será nuestro primer ángulo que transmitiremos al robot para el primer motor así lo posicionaremos observando el objeto.

(49)

48

El vector r representa la distancia a la que se encuentra el objeto con respecto al robot, conociendo la distancia al objeto y la distancia del brazo y antebrazo del robot podemos determinar por medio del teorema del seno y cosenos los ángulos en los que el brazo deberá abrirse para posicionarse sobre el objeto

Teorema de los cosenos

Teorema del seno

De esta forma determinamos el ángulo α el cual nos dirá que tan alto se levantara el brazo para posicionarse sobre el objeto, seguido a esto el ángulo γ determina la apertura del ángulo del antebrazo con respecto al brazo para así quedar totalmente posicionado en el objeto.

Ya que tenemos estos tres ángulos ahora serán pasados a la parte de comunicación de USB que se encargara de enviarla al puerto.

Programa de Comunicación

En esta sección se lleva a cabo la comunicación de la interfaz de usuario al exterior con el hardware mediante el protocolo de puerto USB. Esto es, una comunicación por medio de las API’s de nuestro sistema operativo Windows hacia el dispositivo USB que llevara a cabo la tarea. Convirtiendo la información de un lenguaje de alto nivel a otro de bajo nivel.

(50)

49

La comunicación se divide en tres partes, una que encuentra y configura el dispositivo en el puerto USB, una que envía datos y una que transmite.

Inicio

Insertar dispositivo

Conectar a dispositivo

Existe dispositivo

Crear Buffer de Envió/Salida de

datos

Rellenar buffer Enviar Comando

Enviar Buffer Leer Buffer

Fin

No

Si

Enviar informacion Recibir Informacion

La primera parte que encuentra y configura el dispositivo se puede ver de la siguiente forma.

(51)

50

Inicio

Crear un GUID

Obtener un Arreglo de disp.

con SetupDiGetClass

Devs

Es el ultimo elemento del arreglo

Obtener detalles de la interfaz del

disp.

Reservar espacio de memoria para

la estructura

Obtener ruta

Crear archivo virtual

Obtener atributos del Disp.

VenderoId y

ProductoId coinciden No Cerrar archivo

Si

Crear archivo virtual solo lectura

Obtener su capacidades guardar tamaño

Buffer

Liberar apuntadores

Fin Si

No

Referencias

Documento similar

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

[r]

[r]

[r]

Tras establecer un programa de trabajo (en el que se fijaban pre- visiones para las reuniones que se pretendían celebrar los posteriores 10 de julio —actual papel de los

Asegurar una calidad mínima en los datos es una de las tareas más difíciles de conseguir para los organismos públicos cuyo objetivo es publicar datos lo más rápidamente posible

Datos sobre el empleo y crisis. Vicente Sampedro

Pero lo más inquietante son estas cinco cuestiones radi- cales que el texto nos plantea: la que se refiere a la falta de sentido si Cervantes hubiera apostado por el sistema