• No se han encontrado resultados

Brazo robótico controlado mediante sensor Kinect

N/A
N/A
Protected

Academic year: 2017

Share "Brazo robótico controlado mediante sensor Kinect"

Copied!
138
0
0

Texto completo

(1)

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA

MECÁNICA Y ELÉCTRICA

“BRAZO ROBÓTICO CONTROLADO MEDIANTE SENSOR

KINECT”

TESIS

QUE PARA OBTENER EL TÍTULO DE

INGENIERO EN COMUNICACIONES Y ELECTRÓNICA

PRESENTA:

FRANCISCO JAVIER VÁZQUEZ VÁZQUEZ

ASESOR:

ING. ARMANDO MANCILLA LEÓN

(2)

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELECTRICA

UNIDAD P ROFESIONAL "AD O LFO LÓPEZ MATEOS"

TEMA DE TE S I S

INGENIERO EN COMUNICACIONES Y ELECTRÓNICA

QUE PARA OBTENER EL TI TU LO DE

TESIS Y EXAMEN ORAL INDIVIDUAL

POR LA OPC I Ó N DE TITULACIÓN

DEBERA(N) DESA RR O LLA R C. FRANCISCO JAVIER V ÁZQUEZ V ÁZQUEZ

"BRAZO ROBÓTICO CONTROLADO MEDIANTE SENSOR KINECT"

CONSTRUIR EL PROTOTIPO DE UN BRAZO ROBÓTICO INTEGRADO POR TRES GRADOS DE LIBERTAD Y UNA PINZA DE SUJECIÓN, PROGRAMADO PARA MOVERSE DE ACUERDO A LOS MOVIMIENTOS HECHOS POR EL BRAZO DEL USUARIO DE FORMA SIMULTANEA, DICHOS MOVIMIENTOS DEL USUARIO SERÁN ADQUIRIDOS A

TRAVÉS DEL SENSOR MICROSOFT KINECT .

• :. INTRODUCCIÓN . • :. ESTADO DEL ARTE. .:. MARCO TEÓRICO.

• :. DESCRIPCIÓN DEL HARDWARE. .:. DISEÑO DEL SOFTWARE. .:. PRUEBAS y RESULTADOS . • :.

• :. • :.

CONCLUSIONES . BIBLIOGRAFÍA . ANEXOS.

JEFE DEL DEPA INGENIERÍA EN COM

(3)

i

Índice general

Introducción ... 1

Definición del problema ... 1

Justificación ... 2

Objetivos del proyecto ... 3

General ... 3

Específicos ... 3

Capítulo 1 Estado del arte ... 4

1.1 Control de un Robot ABB con Kinect ... 4

1.2 Brazo robótico controlado mediante gestos a través de Kinect ... 5

1.3 Uso médico del Kinect ... 5

1.4 Perro robot guía para ciegos ... 6

Capítulo 2 Marco teórico ... 7

2.1 Sistemas en tiempo real ... 7

2.1.1 Sensores ... 9

2.1.2 Acondicionamiento de la señal ...11

2.1.3 Conversión analógica a digital ...11

2.1.4 Procesamiento digital ...14

2.1.5 Clasificación de los sistemas en tiempo real ...16

Capítulo 3 Descripción del Hardware ... 17

3.1 Sensor de movimiento y obtención de datos ... 18

3.1.1 Sensor de profundidad ...21

3.1.2 Detección y seguimiento de usuario ...25

3.1.3 Librerías de libre acceso para la programación de Kinect ...29

3.2 Dispositivos de procesamiento digital ... 33

3.2.1 Descripción de los dispositivos de procesamiento ...33

3.2.2 Comunicación entre la computadora y microcontrolador PIC18F4550 ...35

(4)

ii

3.3.1 Principio de funcionamiento ...37

3.3.2 Control de un servomotor ...38

3.4 Tarjeta de control para los servomotores ... 39

3.4.1 Diagrama esquemático del circuito impreso para la tarjeta de control ...39

Capítulo 4 ... 43

Diseño del software ... 43

4.1 Descripción del software ... 43

4.2 Inicialización del Kinect ... 46

4.3 Software para adquisición de datos ... 50

4.3.1 Imagen de profundidad ...51

4.3.2 Imagen en el espacio RGB ...54

4.3.3 Imagen de puntos infrarrojos...56

4.3.4 Proceso de calibración ...56

4.3.5 Selección de las articulaciones a utilizar ...60

4.3.6 Cálculo de movimientos del brazo del usuario ...61

4.3.7 Detección de gesto de finalización ...73

4.3.8 Detección de dedos para apertura y cierre de la pinza ...75

4.3.9 Interfaz gráfica de usuario ...82

4.4 Programación del microcontrolador PIC18F4550 ... 83

Capítulo 5 Pruebas y resultados ... 90

5.1 Estructura del brazo robótico ... 90

5.1.1 Cálculo del torque para los motores ...92

5.2 Resultados de la detección de dedos ... 97

5.3 Resultados de movimiento del robot ... 98

5.4 Pruebas del brazo robótico ... 99

Conclusiones ... 103

Observaciones ...104

Limitaciones ...104

Mejoras del proyecto y trabajo a futuro ...104

(5)

iii

Anexo 1 ... 108

1.1 Análisis de costos ...108

Anexo 2 ... 112

2.1 Características del PIC18F4550 ...112

2.2 Terminales PIC18F4550 ...113

2.3 Registros transmisión UART ...114

2.4 Registros Timer2 ...116

Anexo 3 ... 118

3.1 Gráficas de descarga de la batería de ácido-plomo ...118

3.2 Plantilla del archivo xml para OpenNI ...118

Anexo 4 ... 119

4.1 Plantilla del archivo xml para programación del sensor ...119

4.2 Código para obtener imagen de profundidad ...120

4.3 Código para obtener imagen RGB ...121

4.4 Código para obtener imagen infrarroja ...121

4.5 Código para calibración de usuario ...122

4.6 Cálculo de ángulo entre dos joints ...123

4.7 Cálculo del ángulo de rotación ...124

4.8 Código detección de dedos ...125

4.9 Código de la interrupción UART del PIC18F4550 ...126

4.10 Código de la interrupción Timer2 del PIC18F4550 ...127

Anexo 5 Imágenes ... 128

5.1 Imagen de habitación no apta para funcionamiento del sensor ...128

5.2 Imágenes de los usuarios controlando el brazo robótico ...128

5.2.1 Usuario número 2 5.2.2 Usuario número 3... 128

5.2.3 Usuario número 4 5.2.4 Usuario número 5 ... 128

(6)

iv

ÍNDICE DE FIGURAS

Figura 1.1 Robot ABB moviendo piezas de madera, controlado por Kinect [1]. ... 4

Figura 1. 2 Prototipo de perro robot guiando a persona invidente [1]. ... 6

Figura 2.1 Diagrama a bloque de un sistema de procesamiento digital. ... 7

Figura 2.2 Diagrama a bloques de un sistema en tiempo real. ... 9

Figura 2. 3 (a) Señal original [3]... 12

Figura 2. 4 Multiprogramación... 15

Figura 3. 1 Diagrama de casos de uso para el sistema. ... 17

Figura 3.2 Principales componentes del sensor Kinect [5]. ... 18

Figura 3. 3 Ángulo de movimiento para la base [6]... 20

Figura 3. 4 Línea de vista vertical [6]. ... 20

Figura 3. 5 Línea de vista horizontal [6]... 20

Figura 3.6 Triangulación en visión estéreo [8]. ... 21

Figura 3.7 Imagen que muestra la proyección de puntos sobre una superficie [9]. ... 22

Figura 3.8 Cada punto es distinguible de otro dentro del patrón proyectado [9]. ... 22

Figura 3.9 Imagen de profundidad capturada por la cámara [9]. ... 23

Figura 3.10 Δx es proporcional para el punto proyectado [9]. ... 23

Figura 3. 11 Proceso de segmentación y obtención de articulaciones a partir de imágenes de profundidad [11]. ... 25

Figura 3. 12 Articulaciones del cuerpo del usuario, de las cuales se puede realizar un seguimiento (x,y,z). .... 26

Figura 3.13 Imagen que muestra cuando el sensor se encuentra sobre una superficie móvil, algunos objetos son detectados como usuarios siendo marcados con determinado color [12]. ... 28

Figura 3.15 Imagen 1 ... 29

Figura 3.16 Imagen 3 ... 29

Figura 3.14 Imagen 2 ... 29

Figura 3.17 Representación abstracta del concepto de OpenNI dividido en tres capas [14]. ... 31

Figura 3.18 Diagrama de comunicación entre los dispositivos de procesamiento. ... 35

Figura 3. 19 Módulo serial bluetooth. ... 35

Figura 3.20 Pines para transmisión y recepción de datos a través del modulo serial bluetooth [15]. ... 36

Figura 3.21 Elementos que conforman un servomotor [16]. ... 37

Figura 3.22 Cables de un servomotor [16]. ... 37

Figura 3.23 Ciclos de trabajo para posicionar un servomotor estándar [16]. ... 38

Figura 3.24 Diagrama de simulación para movimiento de los servomotores. ... 39

Figura 3.25 Diagrama esquemático de tarjeta controladora para los servomotores. ... 40

Figura 3. 27 Capa superior del circuito impreso. ... 40

Figura 3. 26 Capa inferior del circuito impreso. ... 40

Figura 3.28 Tarjeta de control para los servomotores. ... 41

Figura 3.29 Batería de acido-plomo. ... 41

Figura 4.1 Diagrama de flujo del software del sistema. ... 44

Figura 4.2 Diagrama a bloques de las etapas del sistema. ... 45

Figura 4.3 Diagrama de clases del software diseñado para la computadora. ... 50

Figura 4.4 Mapa de bits a utilizar para copiar imágenes entregadas por el sensor. ... 51

(7)

v Figura 4. 6 Imagen de profundidad y color del usuario a una distancia de 2metros utilizando el nodo

“Generador de profundidad”. ... 53

Figura 4.7 Imagen de profundidad y color cuando el usuario extiende la mano a una distancia menor de 15 cm. ... 53

Figura 4. 8 Algoritmo para obtener imagen a color. ... 55

Figura 4. 9 Imagen RGB obtenida con el nodo "generador de imagen". ... 55

Figura 4. 10 Imagen del patrón infrarrojo emitido por el sensor de profundidad, obtenida a través del nodo “Generador Infrarrojo”. ... 56

Figura 4.11 Algoritmo para calibración de usuario. ... 58

Figura 4. 12 Pose "Psi" para llevar a cabo el proceso de calibración [14]. ... 58

Figura 4.13 Alineación de las articulaciones adquiridas con imagen RGB. ... 60

Figura 4. 14 Representación de un vector formado por un punto o articulación del usuario dentro del plano del sensor. ... 62

Figura 4.15 Ángulo formado por dos vectores proyectados en las articulaciones del usuario. ... 64

Figura 4. 16 Ángulos a calcular para el movimiento del brazo. ... 65

Figura 4. 17 Ángulo formado por dos vectores en un espacio tridimensional. ... 66

Figura 4. 18 Traslación de un vector hacia el origen. ... 67

Figura 4. 19 Cálculo de ángulo entre dos vectores. ... 67

Figura 4.20 Ángulos que forma la rotación de un cuerpo en un sistema de coordenadas con respecto a otro [17]. ... 69

Figura 4. 21 Sistema de rotación de un cuerpo con referencia a un plano. ... 70

Figura 4. 22 Pose T que es el sistema de referencia para la rotación de una articulación [13]. ... 71

Figura 4. 23 Sistema de referencia para la rotación del hombro derecho... 71

Figura 4. 24 Algoritmos para obtener el ángulo de rotación de una articulación. ... 72

Figura 4. 25 Diagrama de flujo para la detección de gestos con OpenNI. ... 74

Figura 4. 26 Distancia de la cabeza al cuello, similar a la distancia de lo largo de la mano. ... 76

Figura 4. 27 Región de interés(amarillo) de la imagen de profundidad. ... 77

Figura 4. 28 Pixeles que serán tomados en cuenta para la forma de la imagen. ... 78

Figura 4. 29 Figura 49 Forma convexa X, y forma no convexa Y [18]. ... 79

Figura 4. 30(a) Rectángulo que cubre el área... 80

Figura 4. 31 Interfaz gráfica de usuario de la aplicación. ... 82

Figura 4.32 Diagrama de flujo de la programación del PIC18F4550. ... 85

Figura 4. 33 Diagrama de flujo de la interrupción generada por la recepción de datos a través del modulo UART. ... 86

Figura 4. 34 Diagrama de flujo de la rutina de interrupción del temporizador 2(Timer2). ... 88

Figura 4.35 Ciclo de trabajo para movimiento de servomotores en 0 grados (amarillo) ,45 grados (azul) ,90 grados (morado) y 180 grados(verde). ... 89

Figura 5. 1 Configuración de un brazo robótico antropomórfico o angular. ... 90

Figura 5. 2 Soporte para el servomotor utilizado. ... 91

Figura 5. 3 Servomotor utilizado. ... 91

Figura 5. 4 Medidas de los tubos de aluminio utilizados. ... 91

Figura 5.5 Medidas del eslabón para movimiento angular número 2. ... 92

Figura 5. 6 Medidas del eslabón para movimiento angular número 1. ... 93

(8)

vi

Figura 5. 8 Medidas del prototipo final. ... 95

Figura 5.9 Máxima apertura de la pinza. ... 96

Figura 5. 10 Área de trabajo del brazo robótico. ... 96

Figura 5.11 Formas convexas detectadas. ... 97

Figura 5. 12 Resultado de la detección de dedos. ... 97

Figura 5. 13 Resultado de la detección de dedos ... 97

Figura 5. 14 Posición con brazo estirado. ... 98

Figura 5. 15 Posición con brazo flexionado. ... 98

Figura 5. 16 Posición con brazo semi -flexionado. ... 99

Figura 5. 17 Modelo de pieza cilíndrica para pruebas del brazo robótico. ... 99

Figura 5.18 Distribución de las piezas sobre mesa de madera. ... 100

Figura 5. 19 Gráfica del tiempo en completar la prueba. ... 101

Figura A. 1 Habitación con condiciones no aptas para el funcionamiento del sensor. ... 128

Figura A. 2 Usuario 3 (1.62metros)... 128

Figura A.3 Usuario 2 (1.51metros) ... 128

Figura A. 4 Usuario 5 (1.50metros)... 128

Figura A. 5 Usuario 4 (1.60metros)... 128

ÍNDICE DE TABLAS

Tabla 3. 1 Características del sensor. ... 19

Tabla 3. 2 Datos de profundidad en espacio de color RGBA. ... 24

Tabla 3. 3 Datos de profundidad en espacio de color YUV. ... 24

Tabla 3. 4 Comparación de librerías de libre acceso. ... 30

Tabla 3. 5 Características técnicas de la batería acido-plomo. ... 41

Tabla 4. 1Ventajas del software de Microsoft para Kinect y OpenNI ... 47

Tabla 4. 2 Desventajas del software de Microsoft para Kinect y OpenNI. ... 47

Tabla 4. 3 Puntos utilizados del usuario. ... 60

Tabla 4. 4 Vectores utilizados para el cálculo de los ángulos. ... 68

Tabla 4. 5 Prioridades del sistema en tiempo real. ... 84

Tabla 5. 1 Medidas y pesos del eslabón para movimiento angular número 2. ... 92

Tabla 5. 2 Medidas y pesos del eslabón para movimiento angular número 1. ... 93

Tabla 5. 3 Diseño final del prototipo del brazo robótico. ... ¡Error! Marcador no definido. Tabla 5. 4 Resultados de las pruebas realizadas con el brazo robótico. ... 101

Tabla anexo 1 Costo total del proyecto. ... 111

(9)

vii

Prólogo

Existen procesos industriales o laboratorios de investigación química

donde al realizarse determinados trabajos, el personal o científico,

transporta y mueve sustancias u objetos peligrosos con las manos

exponiéndolo de forma peligrosa al entrar en contacto directo.

El objetivo de esta tesis consiste en construir el prototipo de un brazo

robótico que realice movimientos similares a los realizados por el

brazo de un usuario, utilizando los datos capturados por el sensor

Microsoft Kinect

.

(10)

1

Introducción

Los brazos robóticos (también llamados brazos manipuladores) son comúnmente utilizados dentro de la industria en diferentes actividades como la transportación de piezas, ensamblado o diseño de componentes electrónicos. En el campo de la medicina también se ha trabajado con brazos robóticos, facilitando el trabajo a los médicos en operaciones quirúrgicas. Los brazos manipuladores pueden ser controlados mediante interfaces de usuario (palancas, botones, interfaces gráficas, etc.) o funcionar de forma autónoma. En el caso de los brazos autónomos se requiere conocer las coordenadas dentro de un plano, del objeto que se quiera transportar para implementar algún algoritmo que realice dicha labor. Para los robots que se controlan mediante interfaces de usuario se requiere un tiempo de respuesta favorable y precisión del robot para realizar una labor como la transportación de piezas.

Definición del problema

(11)

2

Justificación

La presente tesis propone la construcción y programación del prototipo de un brazo robótico que sea controlado mediante el movimiento del brazo del usuario a través de una interfaz de usuario basada en el dispositivo Microsoft Kinect, el brazo robótico debe imitar en tiempo real el movimiento del brazo del usuario, mejorando el tiempo de respuesta, precisión y facilidad para controlar los brazos manipuladores. El brazo robótico es construido para ayudar en tareas que sustituyan el trabajo que comúnmente es realizado por el contacto directo de la mano del usuario y el objeto, en una determinada labor, evitando así accidentes que son causados por dicha actividad. El brazo robótico también ayudará a realizar trabajos que tal vez no sean peligrosos pero dependen de una herramienta que realice movimientos similares a los ejecutados por el brazo del cuerpo humano, siendo el brazo del usuario el control para colocar el brazo robótico al punto deseado, además se pretende innovar el control de brazos manipuladores utilizando un dispositivo de última tecnología como Kinect, remplazando dispositivos que requieren mas recursos o son difíciles de trabajar en forma conjunta.

(12)

3

Objetivos del proyecto

General

Construir el prototipo de un brazo robótico integrado por tres grados de libertad y una pinza de sujeción, programado para moverse de acuerdo a los movimientos hechos por el brazo del usuario de forma simultanea, dichos movimientos del usuario serán adquiridos a través del sensor Microsoft Kinect .

Específicos

El diseño, construcción y programación del brazo robótico en conjunto, es considerado un sistema en tiempo real, por lo que el movimiento del brazo debe realizarse en un tiempo que sea visualmente paralelo al tiempo en el que se mueve el brazo perteneciente al usuario. Los objetivos específicos establecidos para realizar el trabajo se definen a continuación:

• Adquisición de datos de profundidad y de usuario por medio del sensor Kinect, utilizados para procesar y capturar cada movimiento que realiza el usuario con el brazo derecho.

• Desarrollar una interfaz gráfica de usuario que permita visualizar la ejecución del brazo del usuario, desplegando los grados desplazados por cada articulación.

• Construcción del prototipo del brazo robótico utilizando servomotores para el movimiento, permitiendo tres grados de libertad.

• Establecimiento de comunicación del sistema a través del protocolo RS232 utilizado para el envío de datos desde la computadora hacía un microcontrolador.

(13)

4

Capítulo 1 Estado

del arte

Desde que fueron liberadas las diferentes librerías de programación para el sensor Kinect en una computadora personal, el sensor ha sido utilizado en robots de uso medico e industrial [1]. Los proyectos se han desarrollado utilizando desde los más simples mecanismos de robótica hasta robots con mayor grado de complejidad en cuanto a mecánica y programación.

1.1 Control de un Robot ABB con Kinect

Estudiantes de Ingeniería Robótica que en el verano de 2011, en Suecia, usaron el software de seguimiento de esqueleto del Kinect, para controlar un brazo robótico ABB [1]. En la figura 1.1 se puede ver como manejan el robot con el Kinect, en donde apilan una serie de bloques de madera para después escribir utilizando el robot.

(14)

5

1.2 Brazo robótico controlado mediante

gestos a través de Kinect

En la Universidad Tsukuba (Ibaraki, Kanto, Japón), fue presentado el “Sistema de Brazo Robot Controlado por Gestos”, que tiene la capacidad de comprender los movimientos tanto del brazo en general, como de la mano y sus dedos. El sistema necesita de dos cámaras, encargadas de transmitir en tiempo real información sobre el movimiento y la forma de la mano, para después ser duplicados en la réplica robótica. Un detalle el cual ya parece haber sido resuelto por sus desarrolladores es que no todas las manos humanas son iguales, por esta razón cargaron al sistema con una gran base de datos repleta de manos, de forma que sólo es necesario encontrar una mano similar en forma y tamaño para que el brazo robot pueda operar sin inconvenientes [1].

1.3 Uso médico del Kinect

(15)

6

en pueblos pequeños y aislados. Chizeck asegura que esta idea se puede extrapolar en catástrofes o guerras. En un hospital de Canadá han mostrado un nuevo ejemplo del uso de Kinect para mantener la sala de operaciones como un entorno esterilizado. La idea es que se realicen determinadas tareas sin salir del quirófano, como puede ser la búsqueda de información sobre el estado de un paciente en un ordenador. La realización de un escáner por rayos X, ya que podría manejar de forma remota el ordenador que controla el aparato. Además de eso, se evitaría tener que lavarse y desinfectarse, como sucede ahora cada vez que utiliza esa máquina [1].

1.4 Perro robot guía para ciegos

Un inteligente diseño de perro-robot le saca bastante provecho a la tecnología del Kinect, ya que su capacidad de reconocer el espacio y las distancias le convierte en un preciso guía de ciegos. El uso es bastante sencillo, el usuario toma el mango del perro y lo presiona, entonces el robot avanza mientras da indicaciones de voz y describe el entorno para situar mejor y ayudar a su “dueño”. También sube y baja escaleras si es necesario, por lo que es bastante versátil. Está desarrollado por la Universidad de Electro-comunicaciones (Tokio) [1]. El plan es seguir mejorando el perro-robot, incluir comandos de voz y agregarle GPS para mejorar la navegación.

(16)

7

Capítulo 2 Marco

teórico

2.1 Sistemas en tiempo real

Es un sistema electrónico de procesamiento que interactúa con el medio, controla procesos, y entrega resultados dentro de tiempos establecidos de manera confiable y segura.

El principal objetivo de un sistema en tiempo real es controlar o realizar varios procesos de forma simultánea, lo que se conoce como multitarea. Estos procesos o tareas duran un tiempo determinado, dependiendo la aplicación o la determinación del usuario, y son atendidos por un mismo procesador o CPU (unidad central de procesamiento). Al tiempo que dedica el procesador a cada tarea se le conoce como prioridad, esta se define dependiendo la aplicación o el uso que tenga [2].

La figura 2.1 muestra la representación de forma general de un sistema de procesamiento digital, en el cual intervienen mínimo dos variables y se obtiene una respuesta en un tiempo acorde a la necesidad del usuario.

(17)

8

En el primer bloque se representa todas las variables que interactúan con el sistema, en el caso de un sistema electrónico, estas variables pueden ser sensores debido a que estos interactúan con la naturaleza o el medio, y además dependen del tiempo. El segundo bloque representa el proceso que se encarga de controlar todas las variables del sistema y realizar determinados procesos. El último bloque representa la respuesta del sistema, la cual debe ser entregada por el sistema en un tiempo que no afecte algún proceso o sea catastrófico para el sistema.

En un sistema en tiempo real intervienen los siguientes factores para el tiempo de respuesta:

Físicos

-Capacitancias, inductancias, resistencias de los circuitos, etc -Velocidad de propagación de los medios de comunicación digital -Velocidad de procesamiento

-Etapas del sistema

• Software -Algoritmo

-Nivel de lenguaje(c++,asm,etc.) -Compilador

Para los tipos de comunicación digital en un sistema en tiempo real, los más comunes son los siguientes:

Serie -USB -RS232 -RS485 -Ethernet

Paralelo -ICE -PCI -DB25

(18)

9

Para entregar resultados al usuario, los sistemas en tiempo real realizan diferentes procesos que determinan el tiempo de respuesta. En la figura 2.2 se muestra el diagrama a bloques de los procesos que realiza un sistema en tiempo real para entregar una respuesta o resultado, cada bloque representa un proceso que tiene determinada duración en el sistema. El tiempo total de respuesta del sistema esta dado por la suma de los tiempos correspondientes a cada etapa, como se determina en la ecuación 2.1.

Figura 2.2 Diagrama a bloques de un sistema en tiempo real.

ΔtT

=

Δt

(Ecuación 2.1)

En donde:

ΔtT = tiempo total de respuesta del sistema

Δ

= tiempo de etapa de procesamiento número

2.1.1 Sensores

(19)

10

La posibilidad de que un sensor perciba una determinada magnitud depende de:

Que exista una propiedad en algún material que cambie en función de esa magnitud

Preferiblemente esa función debe ser lineal para el rango en el que estemos interesados, por ejemplo la relación que se da en los conductores entre su resistencia al paso de la corriente eléctrica y la temperatura, es decir a mayor resistencia, mayor temperatura.

En otras ocasiones existe una relación entre una magnitud y un fenómeno físico

Si la relación es predecible y estable, el fenómeno se puede usar como base para la determinación de la magnitud. En muchas ocasiones la dificultad está en conseguir que la propiedad o fenómeno esté en función únicamente de la magnitud que queremos evaluar. Suele ocurrir que la medida es función de varios factores, de tal manera que cualquier variación en alguno de ellos altera el resultado final.

En la actualidad, la mayor parte de los sensores generan una salida en voltaje o corriente, o bien modifican una propiedad que puede ser evaluada de forma eléctrica. De esta manera, y con el debido acondicionamiento, la señal de salida puede ser tratada por un equipo digital de adquisición de datos.

Las señales del mundo real son, en general, analógicas y varían de manera continua en el tiempo, para que una computadora sea capaz de procesarla se debe convertir a datos digitales. Cada uno de estos sensores tiene unas características propias y genera una tensión o intensidad determinada, por lo que estas señales tienen que ser adaptadas para ser tratadas en una tarjeta de adquisición de datos.

En el tratamiento de imagen y sonido, los sensores más utilizados son:

Micrófono: Capta la información sonora que se propaga por el aire y la convierte a una señal eléctrica.

(20)

11

2.1.2 Acondicionamiento de la señal

El objetivo del acondicionador de señal es generar a partir de lo obtenido por los sensores, una señal que sea aceptable por las tarjetas de adquisición de datos. Las funciones principales que va a tener que realizar el acondicionador de señal son las siguientes:

Amplificación: La señal proporcionada por los sensores suele ser de un valor muy pequeño, por lo que debe ser amplificada con el fin de que pueda ser detectada correctamente por la tarjeta de adquisición de datos. La amplificación debe ser tal que las variaciones de la señal recorran todo el margen de la tarjeta de adquisición de datos. La amplificación de las señales, en su origen, reduce el ruido que les puede afectar en su transmisión hasta la computadora.

Filtrado: Con el filtrado se pretende eliminar ruidos de frecuencia que pueden hacer perder exactitud al sistema de adquisición de datos. Lo ideal es transportar la señal del sensor lo más limpia posible a la tarjeta de adquisición.

Excitación: Hay algunos sensores que necesitan de una excitación en corriente o voltaje, para producir la variación proporcional a la magnitud a medir.

Linealización: No todos los sensores tienen una variación lineal con respecto a las variaciones de la magnitud que se miden; a veces es necesario convertir la respuesta del sensor en lineal.

2.1.3 Conversión analógica a digital

Un conversor analógico-digital, es un dispositivo electrónico capaz de convertir una entrada analógica de voltaje en un valor binario, Se utiliza en equipos electrónicos como computadoras, grabadores de sonido y de vídeo. Como características más relevantes de un convertidor analógico a digital están:

Número de canales analógicos: Nos indica la cantidad de magnitudes distintas que podemos adquirir con el mismo convertidor analógico-digital. Generalmente disponen de un único ADC y los diferentes canales se generan por medio de un multiplexor analógico.

(21)

12

fmax es la frecuencia máxima de la señal. Si utilizamos esa frecuencia de muestreo, podremos reproducir posteriormente la señal a partir de las muestras tomadas.

Consideremos una señal con una frecuencia de 100 Hz. El Teorema de Nyquist indica que debemos utilizar una frecuencia de muestreo mayor que 200 Hz. Si utilizáramos una frecuencia más alta que la que nos dice Nyquist obtendríamos una representación más exacta de la señal de entrada. Sin embargo, cuanta más alta es la frecuencia de muestreo más alto es el número de muestras por segundo que se deberán procesar, por lo que los procesadores de señal deberán ser más potentes o realizar menos procesamiento en cada muestra.

(Ecuación 2.2)

Si utilizamos una frecuencia inferior aparece un fenómeno llamado” Aliasing”. Esto significa que cuando intentamos reconstruir la señal aparece una señal de frecuencia más baja. Este fenómeno se presenta por el hecho de que las muestras se pueden unir para crear una forma de onda de frecuencia más baja que es totalmente diferente de la onda original.

La velocidad de muestreo depende de los canales que queramos tener activos. Las especificaciones de los convertidores analógico-digital suelen indicar la velocidad de muestreo del ADC, a medida que aumenta el número de canales que este debe atender disminuirá el número de muestras por segundo que podemos obtener en cada canal.

Resolución: Viene dada por el número de bits del ADC que se utilizan para representar cada muestra, a mayor número de bits del ADC la tarjeta será capaz de detectar variaciones menores en la señal. El número de distintos niveles en que se divide la señal a convertir viene dada por 2n, siendo n la

(a) (b)

Figura 2. 3 (a) Señal original [3].

(22)

13

longitud de palabra del conversor. Por ejemplo un conversor de 8 bits tendrá 256 niveles distintos, suponiendo un rango de entrada de 10V proporcionaría una resolución de:

Resolución = (. )

(Ecuación 2.3)

Rango de entrada: Indica los márgenes entre los que debe estar la señal de entrada para que pueda ser convertida. Las tarjetas de adquisición de datos suelen dar varias posibilidades que se pueden seleccionar por hardware o por software.

Estas 4 características vienen a determinar la capacidad y la precisión de la tarjeta de adquisición:

A mayor número de canales mayor capacidad. A mayor velocidad de muestreo mayor capacidad A mayor resolución mayor precisión

A menor rango de entrada mayor precisión, ya que se con los mismos bits de resolución se tendrá que representar un menor rango.

El tiempo de conversión es el tiempo que tarda un ADC en muestrear, sintetizar y entregar en el bus de datos el resultado de la conversión. El tempo de conversión delimita la frecuencia máxima de muestreo:

Tmuestreo ≥ Tconversión (Ecuación 2.4)

Existen diversos tipos de ADC disponibles actualmente, la mayoría de los cuales también contienen el circuito para digitalizar señales analógicas. Los cuatro tipos más populares son:

ADC de aproximación sucesiva: Este tipo de ADC compara la forma de onda de la entrada de información con la salida de un DAC dentro del dispositivo. Repetidamente dividen el voltaje de entrada por la mitad produciendo una salida de n bits en n ciclos de su reloj. Los ADC de aproximación sucesiva son generalmente precisos y rápidos, y relativamente baratos de producir. Sin embargo, pueden ser lentos al responder a cambios repentinos en la señal de entrada y son sensibles a voltajes picos en la propia señal de entrada.

Tconversión= (n+1) (Tck) (Ecuación 2.5)

(23)

14

ADC de rampa: Los ADC de rampa utilizan un capacitor conectado a un voltaje de referencia. Este se carga durante un tiempo determinado a través del voltaje de entrada y después se descarga a través del voltaje de referencia. El tiempo para descargarse se alacena utilizando un contador digital, y es proporcional al voltaje de entrada. Esto produce resultados muy precisos, pero es muy lento y generalmente costoso.

Tconversión= (2n) (Tck) (Ecuación 2.6) Tck= periodo de reloj utilizado en el ADC

ADC Flash: Este tipo de ADC compara el voltaje de entrada con un conjunto de voltajes de referencia creados por una escala de resistencias de igual valor. Se utilizan comparadores entre cada nivel de voltaje y la salida digital decodificada. Este proceso es muy rápido pero requiere 2n resistencias exactas para un ADC de n bits. Esto hace el ADC flash caro, y comercialmente no práctico para utilizar una exactitud de 8 bits. El tiempo de respuesta esta dado por el hardware (normalmente picosegundos a nanosegundos).

2.1.4 Procesamiento digital

En esta etapa se implementa algún tipo de proceso o algoritmo computacional que modifique la señal recibida. Una de las ventajas de utilizar sistemas computacionales es que la mayor parte del procesamiento de la señal reside en la programación, permitiendo realizar modificaciones de forma más rápida y económica sobre el algoritmo, ya que si se requiere realizar cambios, estos se ejecutan dentro del programa o algoritmo de procesamiento y no en el hardware, ahorrando recursos y tiempo que podrían ser consumidos en la modificación de las partes tangibles del sistema.

Ventajas de utilizar sistemas de procesamiento digital:

-Fáciles y confiables para el procesamiento digital

-Mayor inmunidad al ruido

(24)

15 Multiprogramación

Es la ejecución de dos o más procesos de manera aparentemente simultánea utilizando un CPU y sus periféricos. En la figura 2.4 se muestra un diagrama en donde se muestra como los datos de entrada deben ser procesados y entregados de forma simultánea utilizando un solo CPU.

Sistema operativo

Se encarga de administrar los recursos de cada proceso, tiempo de ejecución de cada proceso, espacio de memoria, etc. También es la capa que permite al usuario ejecutar aplicaciones sin necesidad de conocer y programar la capa física(hardware), un sistema operativo en tiempo real es comúnmente utilizado en dispositivos de procesamiento como microcontroladores, DSP, FPGA, normalmente se denota con las siglas RTOS(sistema operativo en tiempo real).

(25)

16

2.1.5 Clasificación de los sistemas en tiempo real

Los sistemas en tiempo real se pueden dividir según los errores que se puedan presentar:

Críticos: si no se cumplen con los tiempos establecidos se destruye el sistema y/o causa una catástrofe al medio o al usuario.

No críticos: es aquel en el que se puede tolerar que en algunas ocasiones los resultados no se obtengan en los tiempos establecidos, ya que no se degrada el servicio o el proceso que esta controlando el sistema, en este tipo se especifica una tasa de probabilidad que permite tolerar las fallas en los tiempos de respuesta.

Inflexibles: no se cumplen con tiempos de respuesta, no ocurre daño al sistema, pero la aplicación queda inservible.

(26)

17

Capítulo 3

Descripción del

Hardware

El proyecto tiene como base al sensor Microsof Kinect, el cual envía datos que se actualizan constantemente, los cuales determinan los movimientos del brazo robótico cuya estructura cuenta con tres grados de libertad. Cada grado está limitado por el movimiento máximo de un servomotor (0-180 grados) y al ángulo de los movimientos del brazo del usuario, mismos que se encuentran normalmente dentro del mismo rango.

El diagrama de casos de uso que se muestra en la figura 3.1 representa como debe el usuario interactuar con el sistema.

(27)

18

La figura 3.1 muestra el diagrama de casos de uso para el sistema del brazo robótico, el usuario debe interactuar con el sistema en todo momento, realizando alguna de las siguientes tareas:

• Pose de calibración: es necesaria para poder iniciar el movimiento del brazo y poder controlarlo.

• Movimiento del brazo derecho: es el control del brazo robótico, el cual realiza los movimientos en tiempo real que sean realizados por el usuario.

• Apertura o cierre de la mano izquierda: movimiento establecido para tomar (cerrar la mano), o dejar objetos (abrir la mano) utilizando la pinza del brazo robótico.

• Gesto de finalización: gesto predeterminado para finalizar el movimiento del brazo.

3.1 Sensor de movimiento y obtención de

datos

Kinect es un dispositivo electrónico que se constituye de dos sensores: una cámara infrarroja utilizada para la detección de profundidad, y una cámara RGB para imágenes a color [4]. La resolución para las cámaras es de 640*480 pixeles con 11bits de resolución y 640*480 pixeles con 32 bits de resolución para la cámara de profundidad y de color respectivamente. La velocidad de envío es de 30 tramas por segundo para ambas cámaras. La cámara de color RGB soporta alta resolución 1280*1024 pero la velocidad de envío disminuye a 15 tramas por segundo. En adición, el sensor Kinect contiene un arreglo de cuatro micrófonos, además de una base motorizada que puede rotar el sensor hacia arriba o hacía abajo. En la figura 3.2 se muestra de manera general los componentes que conforman al Kinect, indicando el nombre de cada uno de ellos.

1.-Sensor de profundidad 2.-Cámara RGB

3.-Arreglo de micrófonos 4.-Base

(28)

19

1. Sensor de profundidad que consiste en un proyector láser infrarrojo y un sensor monocromático, ambos trabajan en conjunto para obtener imágenes de profundidad en un espacio 3D bajo condiciones donde no exista luz ambiental.

2. Cámara RGB con 32 bits de resolución de 640*480 pixeles a 30 tramas por segundo. Esta cámara obtiene imágenes a color en dos dimensiones. 3. Arreglo de cuatro micrófonos localizados en la parte baja del sensor, de

forma horizontal. Estos micrófonos son utilizados para el reconocimiento de voz, ya que cuentan con herramientas de gran ayuda para el tratamiento de audio como lo son: localización de la fuente acústica, supresión de ambiente de ruido, y cancelación del eco. La trama de datos para audio en los cuatro micrófonos es de 16 bits a 16khz.

4. Base motorizada que sirve para establecer la línea de vista del sensor, el rango de movimiento de la base motorizada es de ±27 grados de forma vertical.

El sensor entrega los siguientes datos utilizando los componentes:

Sensor de profundidad: mapas de profundidad que permiten obtener la distancia en milímetros de objetos o personas con referencia al sensor. También permite detectar a usuarios (máximo 6), dentro del rango del alcance del sensor, y obtener las coordenadas dentro del plano 3D comprendido por el área que cubre del sensor, de las coordenadas (x,y,z) de diferentes puntos o articulaciones del cuerpo humano.

Cámara RGB: permite capturar imágenes a color en un espacio 2D con resolución de 640*480 pixeles.

Arreglo de micrófonos: capturan audio que se encuentre dentro del entorno del sensor, permitiendo anular ecos u otro tipo de ruido que afecte el reconocimiento de voz.

La tabla 3.1 muestra las características para el correcto funcionamiento del sensor.

Tabla 3. 1 Características del sensor.

Línea de vista horizontal 57

Línea de vista vertical 43◦

Rango de movimiento de la base

motorizada ±27

(29)

20

Las características mencionadas en la tabla 3.1 se refieren a:

Línea de vista horizontal: ángulo máximo de proyección que forman los vértices de la superficie que abarca el sensor de forma horizontal.

Línea de vista vertical: ángulo máximo de proyección que forman los vértices de la superficie que abarca el sensor de forma vertical.

Rango de la base motorizada: es el rango que puede rotar el motor de la base de forma vertical.

Rango del sensor de profundidad: la distancia que tiene que mantener el usuario con respecto al sensor, para que el sensor pueda entregar datos correctos.

En la figura 3.5 se muestra la línea de vista del sensor de forma horizontal y vertical en la figura 3.4, también se observa la distancia mínima y máxima que cubre el sensor, estableciendo así el área que deberá ser ocupada por el usuario.

Figura 3. 4 Línea de vista vertical [6].

Figura 3. 3 Ángulo de movimiento para la base [6].

(30)

21

3.1.1 Sensor de profundidad

Basa su funcionamiento en una técnica llamada “luz estructurada”, la cual consiste en la proyección de un patrón de puntos infrarrojos sobre una superficie, al hacer corresponder la imagen captada con el patrón original, es posible triangular la posición de cada píxel y determinar su profundidad con respecto al plano perpendicular a la cámara [7] .

Emisión del patrón de puntos infrarrojos

Cuando una superficie es iluminada por una onda de luz, cada punto actúa como una fuente de onda esférica. La luz en cualquier punto en el campo de luz dispersa, se compone de ondas que han sido emitidas desde cada punto de la superficie iluminada. Si la superficie es suficiente rugosa para crear longitud de trayectoria superior a la longitud de onda del punto, se da lugar a cambios de fase mayor que la amplitud, y por lo tanto la intensidad.

La tecnología usada por Kinect para adquirir la imagen de profundidad es llamada “LightCoding”, la cual utiliza un emisor infrarrojo para la proyección del patrón de puntos, los cuales son invisibles para el ojo humano. Cada punto del patrón esta hecho para que sea diferente a los demás, de esta forma, la cámara infrarroja lee la luz codificada y ejecuta un sofisticado algoritmo de procesamiento paralelo para descifrar el código de la luz y poder generar una imagen de profundidad. El método es sensible en luz ambiental [7].

Triangulación

En visión por computadora, la triangulación se refiere a el proceso para determinar un la distancia de un punto en un espacio 3D a partir de la visión de dos o mas imágenes. La figura 3.6 muestra la geometría epipolar de un par de cámaras de visión estéreo.

(31)

22

Un punto “P” es proyectado en un espacio tridimensional, que pasa por el punto focal de cada cámara, lo que resulta en dos puntos correspondientes de imagen, si estos puntos son conocidos y la geometría de la imagen es conocida, la proyección de esas dos líneas puede ser determinada. Usando algebra lineal se puede determinar la distancia de ese punto. Esta técnica es empleada por el sensor Kinect para calcular la profundidad de los objetos y obtener una reconstrucción 3D, la triangulación es realizada por cada punto entre una imagen virtual y el patrón de observación [7].

El proceso de triangulación para obtener la profundidad de los objetos es mostrado a continuación:

1.- Patrones de luz son proyectados en la escena

2.- Los patrones son distinguibles uno de otro

Figura 3.7 Imagen que muestra la proyección de puntos sobre una superficie [9].

(32)

23

3.-Una imagen de profundidad es capturada para usarse como referencia

4.- ∆x es proporcional para la profundidad del objeto Figura 3.9 Imagen de profundidad capturada por la cámara [9].

(33)

24

Imágenes de profundidad

El sensor Kinect entrega imágenes de profundidad a una velocidad de 30 tramas por segundo, con una resolución de 640*480 pixeles. Los datos de profundidad son representados en un espacio de color RGB o YUV (dependiendo la configuración), en 16bits de datos. Para el caso del espacio RGB se utilizan 16 bits para establecer los datos de profundidad, los cuales corresponden al canal R(rojo) y al canal G(verde), el canal B(azul) se utiliza para establecer datos de usuario, por ejemplo cuando un pixel corresponde a los datos de usuario, este es establecido en el octeto del canal azul, por último el canal A es establecido en 255. Cuando se utiliza el espacio de color YUV (espacio en frecuencia) se utilizan 4 bytes por cada dos pixeles, por lo tanto se pueden almacenar 16 bits en datos de profundidad, pero valores adicionales como el número de usuario detectado, no pueden ser incluidos [10].

Las tablas 3.2 y 3.3 muestran como se distribuyen los datos de profundidad utilizando los espacios de color RGBA y YUV.

Tabla 3. 2 Datos de profundidad en espacio de color RGBA.

R G B A

3 bits de 8 8 bits 0 ó ID de usuario 255

Tabla 3. 3 Datos de profundidad en espacio de color YUV.

(34)

25

3.1.2 Detección y seguimiento de usuario

Cuando se adquieren datos a través de la cámara de profundidad, imagen con la información de la distancia de los objetos o usuario, esta imagen es analizada para extraer información que esté relacionada con el usuario, su posición y la pose realizada. El sensor contiene dentro de su software un algoritmo de detección que consiste en dividir el cuerpo del usuario en 31 partes que son reconocidas en un plano tridimensional. Una representación del proceso de detección de usuario se muestra en la figura 3.11.

El análisis de imágenes de profundidad tiene ventajas sobre el análisis de imágenes a color, las imágenes de profundidad proporcionan mayor calidad en condiciones de ambiente ligeras, es decir, en espacios en donde la luz solar no afecte de forma directa. Esto hace que el sensor realice muestras de dichas imágenes a través de la cámara de profundidad y estas sean más fáciles de analizar que las imágenes a color. Para segmentar la imagen del cuerpo del usuario en diferentes imágenes se utiliza en clasificador de imágenes, cuyo

(35)

26

algoritmo esta basado en un árbol de decisiones. Este algoritmo utiliza una base de datos con una similar pose para cada imagen, con aproximadamente 100 000 poses para cada imagen. Para establecer la decisión de que imagen corresponde a la imagen del usuario se establecen diferentes características. Una característica esta definida como una función f(I,x) que define una imagen I y una posición x, además de un parámetro que describe las características de la imagen dentro del espacio tridimensional, a través de estas características, el algoritmo detecta que imagen se asemeja a la imagen almacenada dentro de la base de datos. A partir de este algoritmo el sensor obtiene articulaciones o puntos específicos del cuerpo del usuario.

Para obtener las articulaciones del cuerpo del usuario se llevan a cabo tres pasos:

1. Un estimador de densidad por cada parte del cuerpo del usuario, basado en la probabilidad de la superficie del área de cada pixel. 2. Técnica para encontrar eficiencia en la densidad.

3. Algoritmo que obtiene la aproximada localización de los puntos o articulaciones.

La detección de articulaciones es demasiado precisa, con un 91.4 % de probabilidad de ser localizados correctamente dentro del plano tridimensional.

Las articulaciones o puntos del cuerpo, de los cuales se puede realizar un seguimiento dentro del plano que abarca el sensor, son los siguientes:

(36)

27

Limitaciones de la detección de usuario

La detección y seguimiento de usuario que proporciona Kinect es precisa y de cierta forma confiable, aunque también sufre algunas limitaciones. Estas limitaciones son insignificantes cuando la aplicación del sensor es exclusivamente en software, pero cuando se aplica a campos como el de la robótica, estas limitaciones pueden ser vitales para la aplicación. Las principales limitaciones en cuanto a la detección y seguimiento de usuario son las siguientes:

No trabaja bajo la luz solar (hardware)

El sensor Kinect proyecta una luz infrarroja a través de su emisor de 60mW (mili Watts) con una longitud de onda de 830nm (nano metros). La luz solar tiene un ancho espectro de luz infrarroja que afecta a la luz proyectada por el sensor, la luz proyectada es blindada por el brillo de la luz solar, entonces la cámara que detecta la proyección de puntos infrarrojos es deshabilitada para poder detectar los patrones emitidos por el emisor. Esto propicia que exista una muy pobre detección de profundidad en áreas que están expuestas a la luz solar.

No detecta usuarios dentro de superficies transparentes y reflejantes (hardware)

La detección en superficies reflejantes o transparentes es también difícil cuando se utilizan sensores ópticos, como es el caso del sensor Kinect. Este factor se debe a que la mayoría de los sensores ópticos reflejan la luz sobre la superficie, esta reflexión puede ser alta o baja y puede afectar en las lecturas del sensor.

La resolución de la cámara limita el reconocimiento de gestos demasiados precisos, como pueden ser gestos realizados con los dedos a determinada distancia (hardware)

(37)

28

debido a que la región de interés de la imagen que debe ser analizada, es pequeña en comparación con la imagen del cuerpo.

El Kinect debe de mantenerse fijo sobre una base o superficie (hardware)

Para simplificar la detección y seguimiento de usuario, el sensor debe estar totalmente fijo, esto debido a que cuando el sensor se encuentra sobre una superficie móvil, puede detectar determinados objetos como si estos estuvieran en movimiento y/o confundirlos con siluetas humanas para después entregar resultados incorrectos. La figura 3.13 muestra los datos erróneos que entregaría el sensor Kinect cuando se encuentre montado sobre una superficie móvil, algunos objetos son detectados como usuarios debido a que cuando el sensor se mueve, la imagen obtenida aparenta el movimiento del objeto.

La solución a este problema es la calibración que lleva a cabo el usuario para confirmar que se trata de una silueta humana.

La inicialización para la detección y seguimiento de usuario toma determinado tiempo (software)

Otro problema importante es la inconsistente detección de usuario. El problema consiste que cuando el seguimiento de un usuario es perdido por una trama de la imagen de profundidad y el usuario es recuperado por otra imagen, es detectado como si se tratara de otro usuario aunque se trate del mismo. La imagen 3.14 muestra la perdida de un usuario por una trama de profundidad, en la tercera trama (figura 3.16), se recupera la imagen del usuario, pero se determina como un segundo usuario.

Figura 3.13 Imagen que muestra cuando el sensor se encuentra sobre una superficie móvil, algunos objetos son detectados como usuarios siendo marcados con determinado

(38)

29

3.1.3 Librerías de libre acceso para la programación

de Kinect

Cuando el sensor Kinect salió a la venta, no existían controladores ni librerías para habilitar el uso del sensor en una computadora personal, el uso de este sensor se aplicaba exclusivamente a la consola Xbox360. Fue hasta el 2010 que Microsoft liberó el SDK (Kit de desarrollo de software) para Kinect, el cual permite acceder a todas las funciones del sensor: sensor de profundidad, seguimiento de usuario, cámara RGB y acceso al arreglo de micrófonos. Debido a que Microsoft no fue el creador del controlador principal del sensor Kinect, se han desarrollado diferentes librerías de programación de libre acceso compatibles con el sensor Kinect.

En la tabla 3.4 se muestran las diferentes librerías de libre acceso que se han desarrollado para el sensor Microsoft Kinect, algunas son compatibles con distintos lenguajes de programación y plataformas de desarrollo.

En la primera figura (3.14) se detecta al usuario iluminado con rojo, en la segunda trama (figura 3.15) el usuario es perdido, por último en la tercera trama (figura 3.16) se recupera la detección de usuario, a diferencia que se ilumina de color azul, debido a que el sensor asume que es un nuevo usuario.

Figura 3.15 Imagen 3 Figura 3.16 Imagen 2

(39)

30

Tabla 3. 4 Comparación de librerías de libre acceso.

Nombre Lenguajes Plataformas Características

Open Kinect/ Libfreenect

C,Python, ActionScript, C#,C++, Java JNI and Java JNA, JavaScript,

Com-monLisp

Linux, Windows, Mac OS X

Imágenes de color y profundidad, control de la base motorizada y del led.

CL SDK NUI and driver

C, C# Windows Imágenes de color y profundidad, control del led y de la base

motorizada. Robot Operating

System

Pyhon, C++ UNIX Imágenes de color y profundidad. Acceso a base motorizada. OpenNI/NITE

Middle-ware

C,C++,C#, Java Windows, Linux, Ubuntu, Mac OS X

Identificación de usuario, detección de gestos, seguimiento y orientación de articulaciones de usuario, imágenes de color y profundidad.

SDK Microsoft Kinect

C++,C#, Visual Identificación de usuario, detección de gestos, seguimiento de articulaciones de usuario, imágenes de profundidad y de color.

(40)

31

Descripción de las librerías de uso libre para programar

el sensor

OpenNI (Interfaz natural de uso libre) es un conjunto de librerías multiplataforma y multilenguaje para desarrollar aplicaciones utilizando interfaces naturales como e sensor Kinect. Las librerías fueron desarrolladas por una organización llamada “OpenNI” que fue fundada por la empresa Israelí “PrimeSense”, la compañía que otorgó la licencia a Microsoft para construir el sensor Kinect [13]. El principal propósito de OpenNI es establecer un desarrollo de software estándar que habilite la comunicación con:

• Sensores de audio y visión: en esta tesis de utiliza el sensor Microsoft Kinect, pero OpenNI puede utilizarse con el sensor desarrollado por “PrimeSense” llamado “XAzus”.

• Percepción de audio y video(los componentes del software analizan los datos de audio y video que son capturados a través de las imágenes), por ejemplo software que recibe datos visuales como imágenes, regresando la localización de la palma de la mano.

El estándar de OpenNI es aplicado al desarrollo de aplicaciones de interacción natural para realizar un seguimiento dentro de una escena tridimensional, estos datos son capturados por medio de las imágenes de profundidad obtenidas por el sensor. Las librerías de programación de OpenNI se puede describir en tres capas (véase figura 3.17), en donde cada una representa un elemento integro. La capa inferior contiene el hardware o dispositivos que adquieren los datos del mundo real. La segunda capa contiene los componentes de las librerías que interpretan y analizan los datos del sensor. Finalmente la capa superior contiene el software que implementa las aplicaciones de interacción natural.

.

(41)

32

La forma en la que trabaja OpenNI es a través de la producción de nodos. La producción de nodos es el establecimiento de componentes que forman los datos del sensor que serán utilizados en las aplicaciones.

OpenNI clasifica la producción de nodos en dos categorías:

• Producción de nodos relacionada con el sensor

• Producción de nodos relacionada con las librerías

Los nodos relacionados con el sensor son los siguientes:

Dispositivo: Un nodo que representa un dispositivo físico (por ejemplo un sensor de profundidad o una cámara RGB), el principal objetivo de este nodo es habilitar el dispositivo que se utilizará.

Generador de profundidad: Genera mapas de profundidad, este nodo debe ser implementado en algún sensor que capture imágenes en tercera dimensión y esté certificado por la compañía OpenNI.

Generador de imágenes: Nodo que genera imágenes a color, debe ser implementado en algún sensor que obtenga imágenes a color y esté certificado por la compañía OpenNI.

Generador infrarrojo: Nodo que genera imágenes infrarrojas.

Generador de audio: Genera cadenas de audio.

Los nodos relacionados con las librerías de OpenNI son los siguientes:

Generador de gestos: genera eventos en la aplicación cuando determinados gestos son detectados.

Analizador de escena: separa el fondo de una escena de un objeto o imagen de usuario, permitiendo trabajar los pixeles de fondo de forma independiente.

Generador de puntos en la mano: permite reconocer la palma de la mano de un usuario y realizar un seguimiento cuando la mano cambia de posición.

Generador de usuario: representación del cuerpo(o parte del cuerpo) en una escena tridimensional.

Calibración

(42)

33

respecto a los datos de la cámara de color. La calibración se utiliza para poder utilizar los datos de profundidad, junto con los de la imagen de color. También optimiza el seguimiento de usuario, debido a que ofrece una mayor precisión a diferencia de no utilizar la mencionada calibración.

3.2 Dispositivos de procesamiento digital

Para poder programar el sensor Kinect se requiere el uso de una computadora personal, debido a que la mayor parte de los datos, se adquieren, procesan y muestran en forma de video (datos digitales), lo cual demanda velocidades de procesamiento altas como las que se llevan a cabo en computadoras personales de reciente tecnología, además de que la adquisición de datos que se obtiene del sensor es a través del puerto USB(bus serial universal) y todas las librerías de desarrollo son únicamente compatibles con sistemas operativos que se ejecutan en computadoras personales y entornos de desarrollo para las mismas (Visual Studio, NetBeans, Eclipse, etc.).

A diferencia del procesamiento para el sensor Kinect, el brazo robótico requiere de un dispositivo ajeno a la computadora personal para generar el movimiento de los servomotores (modulación por ancho de pulso) que conforman la estructura del robot, este dispositivo debe contar con algún protocolo de comunicación que facilite la recepción de datos desde la computadora y los procese para poder generar el movimiento de los servomotores bajo el concepto de sistema multitarea, es decir, de forma simultánea.

3.2.1 Descripción de los dispositivos de

procesamiento

Computadorapersonal paraprocesamientode datos del sensor

De acuerdo con las especificaciones de los desarrolladores de las librerías utilizadas para la programación del sensor Kinect [13], las características de procesamiento para la computadora que se utilice para tratar los datos del sensor deben de ser las siguientes:

• Sistemas operativos basados en arquitectura de 32 bits ó 64 bits

(43)

34

Para el presente proyecto se utilizó una computadora personal con procesador Intel i7 a 2.20 GHz, y sistema operativo Windows 7 edición Ultímate, debido a que es la computadora personal con la que se cuenta y cumple las exigencias para la programación del sensor.

Microcontrolador PIC18F4550

Como se mencionó anteriormente el control del robot requiere un dispositivo de procesamiento que sea capaz de establecer una comunicación con la computadora para la recepción de datos, y de forma simultanea genere el movimiento de los motores, los cuales ejercen la fuerza sobre la estructura del brazo y producen su movimiento. A partir de estas necesidades se propone el uso del microcontrolador PIC18F4550, este microcontrolador fabricado por Microchip, cuenta con recursos que cumplen con las características que se requieren para la recepción, procesamiento, y generación de señal de movimiento de los motores, añadiendo que se cuenta con experiencia en la programación y recursos de este dispositivo, basada en los cursos tomados y trabajos desarrollados a lo largo de la carrera.

En el anexo 2.1 se muestran las características del PIC18F4550 y a continuación se describen los recursos del PIC que se utilizan en el presente trabajo:

Comunicación serial síncrona (USART): utilizada para establecer la recepción de datos que provienen desde la computadora a través del protocolo RS232, que corresponden a los grados de movimiento que deben realizar los servomotores.

Puertos de salida (PORTB): permiten la salida de datos que son procesados por el microcontrolador y son enviados a un dispositivo electrónico externo, en nuestro caso se utilizan enviar los estados de voltaje alto y bajo para la señal de los servomotores.

(44)

35

3.2.2 Comunicación entre la computadora y

microcontrolador PIC18F4550

Un sistema en tiempo real necesita de un protocolo de comunicación que permita transportar los datos enviados hacia el dispositivo final (en nuestro caso micro controlador), desde la computadora. Este protocolo debe favorecer al rápido transporte de los datos para evitar retrasos en los tiempos de respuesta.

El protocolo que establece la comunicación entre la computadora y el micro controlador, el cual es el encargado de mover el brazo robótico, es el protocolo RS232, dicho protocolo es uno de los mas usados dentro de los sistemas en tiempo real, además de que permite fácilmente transmitir datos como caracteres de forma rápida, eficiente y sin fallas. La figura 3.18 muestra el diagrama que representa la comunicación entre los dispositivos de procesamiento.

En este proyecto se utiliza comunicación serial RS232 para enviar los datos de la computadora al microcontrolador, pero se realiza de forma inalámbrica utilizando el módulo bluetooth de la computadora para el envío de datos y el modulo serial inalámbrico que se muestra en la figura 3.19 para la recepción por parte del PIC, módulo basa su funcionamiento en el protocolo bluetooth, pero entrega los datos de forma serial a una velocidad de 9600 baudios por segundo. La comunicación entre los dispositivos de procesamiento es totalmente inalámbrica como se ejemplifica en la figura 3.18, en donde se envían los datos por el módulo bluetooth de la computadora y ser reciben por el modulo serial que se encarga de entregar los datos al microcontrolador.

Figura 3.18 Diagrama de comunicación entre los dispositivos de procesamiento.

(45)

36

Este módulo se adapta a cualquier bluetooth de computadora como si se tratara de un dispositivo de este protocolo que se encuentra en celulares, cámaras, etc. Una vez que se lleva a cabo el proceso de “emparejamiento”, se crea un puerto virtual dentro de la computadora con la que se emparejó al módulo, como si se tratara de un puerto físico serial con conector DB9. Una vez que el puerto se ha creado de forma virtual, es posible enviar datos desde nuestro programa al puerto virtual, los cuales viajan mediante el protocolo bluetooth, pero son nuevamente entregados hacia el microcontrolador o dispositivo final de forma serial (RS332). Este tipo de comunicación ayuda en el proyecto para la supresión de cables en la comunicación entre la computadora y el PIC18F4550, además de que contiene todas las ventajas del protocolo bluetooth, como la distancia de alcance y la compatibilidad con cualquier dispositivo que maneje comunicación serial. Cabe destacar que aunque el módulo base su funcionamiento en el protocolo bluetooth, no es necesario conocer propiedades demasiado adentradas acerca del protocolo bluetooth, ni realizar ningún tipo de configuración en la programación interna del módulo.

En la figura 3.20 se muestran los pines del modulo, los cuales corresponden a la conexión a VCC, GND y los pines de envío TX, y recepción RX, de datos para el dispositivo final, que en nuestro caso es el PIC18F4550.

3.3 Servomotores

Es un motor de corriente continua que tiene la capacidad de ser controlado en una determinada posición. El motor es capaz de ubicarse en cualquier posición dentro de un rango de operación (generalmente de 180º) y mantenerse estable en dicha posición. Los servomotores se suelen utilizar en robótica, automatización, debido a su gran precisión en el posicionamiento.

En general, los servomotores suelen estar compuestos por 4 elementos fundamentales:

Motor de corriente continua (DC): Es el elemento que le brinda movilidad al servomotor. Cuando se aplica un potencial a sus dos terminales, este

(46)

37

motor gira en un sentido a su velocidad máxima. Si el voltaje aplicado sus dos terminales es inverso, el sentido de giro también se invierte.

Engranajes reductores: Tren de engranajes que se encarga de reducir la alta velocidad de giro del motor para incrementar su capacidad de torque.

Sensor de desplazamiento: Suele ser un potenciómetro colocado en el eje de salida del servomotor que se utiliza para conocer la posición angular del motor.

Circuito de control: Es una placa electrónica que implementa una estrategia de control de la posición por realimentación. Para ello, este circuito compara la señal de entrada de referencia (posición deseada) con la posición actual medida por el potenciómetro. La diferencia entre la posición actual y la deseada es amplificada y utilizada para mover el motor en la dirección necesaria para reducir el error.

En la figura 3.21 se muestran los 4 elementos mencionados anteriormente, además se muestra la carcasa en donde vienen incluidos estos elementos y en conjunto forman al servomotor.

3.3.1 Principio de funcionamiento

Los servos disponen de tres cables (Figura 3.22): dos cables de alimentación (positivo y negativo) que suministran un voltaje 4.8-6V y un cable de control que indica la posición deseada al circuito de control mediante señales PWM (“Modulación por ancho de pulsos”).

Figura 3.21 Elementos que conforman un servomotor [16].

Figure

Figura 3. 27 Capa inferior del circuito impreso.
Figura 3.29 Batería de acido-plomo.
Figura 4.1 Diagrama de flujo del software del sistema.
Tabla 4. 1Ventajas del software de Microsoft para Kinect y OpenNI
+7

Referencias

Documento similar

El fin de este proyecto es el montaje, programación y puesta en marcha de un sistema de visión artificial coordinado con un brazo robótico, para la realización de manipulación

Figura D.2: Recall acumulado de ε -greedy tras 500.000 épocas en la base de datos CM100K. Como vemos, el mejor valor para ε sigue siendo 0,2 , mientras que el valor inicial no

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

El nuevo Decreto reforzaba el poder militar al asumir el Comandante General del Reino Tserclaes de Tilly todos los poderes –militar, político, económico y gubernativo–; ampliaba

quiero también a Liseo porque en mi alma hay lugar para amar a cuantos veo... tiene mi gusto sujeto, 320 sin que pueda la razón,.. ni mande

Estos capítulos contienen diseño de las distintas piezas, selección, funcionamiento y programación de los distintos módulos, sensores, componentes y motores, desarrollo del

Además, en este capítulo, se detalla el trabajo realizado tanto en Windows XP, con el uso de la herramienta facilitada por Schunk para controlar los motores, como en Linux, con la

− Un manipulador de menú, si el ítem tiene el flag MF_POPUP, en éste caso hay que hacer un casting a (UINT). − O puede ser cero, si se trata de un separador. El último