Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Brazo Robotico
Brazo Robotico
TESIS
QUE PARA OBTENER EL TTULO DE
INGENIERO EN COMUNICACIONES Y ELECTRNICA
PRESENTA:
FRANCISCO JAVIER VZQUEZ VZQUEZ
ASESOR:
ING. ARMANDO MANCILLA LEN
TEMA DE TE S I S
QUE PARA OBTENER EL TI TU LO DE
CONSTRUIR EL PROTOTIPO DE UN BRAZO ROBTICO INTEGRADO POR TRES GRADOS DE LIBERTAD Y UNA
PINZA DE SUJECIN, PROGRAMADO PARA MOVERSE DE ACUERDO A LOS MOVIMIENTOS HECHOS POR EL
BRAZO DEL USUARIO DE FORMA SIMULTANEA, DICHOS MOVIMIENTOS DEL USUARIO SERN ADQUIRIDOS A
:.
:.
.:.
:.
.:.
.:.
:.
:.
:.
INTRODUCCIN.
ESTADO DEL ARTE.
MARCO TERICO.
DESCRIPCIN DEL HARDWARE.
DISEO DEL SOFTWARE.
PRUEBAS y RESULTADOS .
CONCLUSIONES .
BIBLIOGRAFA .
ANEXOS.
ndice general
Introduccin .......................................................................................................................... 1
Definicin del problema ............................................................................................................. 1
Justificacin ............................................................................................................................... 2
Objetivos del proyecto ............................................................................................................... 3
General .................................................................................................................................. 3
Especficos ............................................................................................................................. 3
Captulo 1 Estado del arte ......................................................................................................... 4
1.1 Control de un Robot ABB con Kinect ..................................................................................... 4
1.2 Brazo robtico controlado mediante gestos a travs de Kinect ............................................. 5
1.3 Uso mdico del Kinect .......................................................................................................... 5
1.4 Perro robot gua para ciegos................................................................................................. 6
Captulo 2 Marco terico .......................................................................................................... 7
2.1 Sistemas en tiempo real ....................................................................................................... 7
2.1.1 Sensores ........................................................................................................................ 9
2.1.2 Acondicionamiento de la seal ....................................................................................11
2.1.3 Conversin analgica a digital.......................................................................................11
2.1.4 Procesamiento digital ...................................................................................................14
2.1.5 Clasificacin de los sistemas en tiempo real ..................................................................16
Captulo 3 Descripcin del Hardware ....................................................................................... 17
3.1 Sensor de movimiento y obtencin de datos ..................................................................... 18
3.1.1 Sensor de profundidad .................................................................................................21
3.1.2 Deteccin y seguimiento de usuario .............................................................................25
3.1.3 Libreras de libre acceso para la programacin de Kinect ..............................................29
3.2 Dispositivos de procesamiento digital................................................................................. 33
3.2.1 Descripcin de los dispositivos de procesamiento.........................................................33
3.2.2 Comunicacin entre la computadora y microcontrolador PIC18F4550 ..........................35
3.3 Servomotores .................................................................................................................... 36
iii
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) Seal original [3]...................................................................................................................... 12
Figura 2. 4 Multiprogramacin......................................................................................................................... 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 Lnea de vista vertical [6]. ............................................................................................................... 20
Figura 3. 5 Lnea de vista horizontal [6]........................................................................................................... 20
Figura 3.6 Triangulacin en visin estreo [8]. ................................................................................................ 21
Figura 3.7 Imagen que muestra la proyeccin de puntos sobre una superficie [9]. ........................................ 22
Figura 3.8 Cada punto es distinguible de otro dentro del patrn proyectado [9]. .......................................... 22
Figura 3.9 Imagen de profundidad capturada por la cmara [9]. ................................................................... 23
Figura 3.10 x es proporcional para el punto proyectado [9]. ....................................................................... 23
Figura 3. 11 Proceso de segmentacin y obtencin de articulaciones a partir de imgenes 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 mvil, 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 Representacin abstracta del concepto de OpenNI dividido en tres capas [14]. .......................... 31
Figura 3.18 Diagrama de comunicacin entre los dispositivos de procesamiento. .......................................... 35
Figura 3. 19 Mdulo serial bluetooth. .............................................................................................................. 35
Figura 3.20 Pines para transmisin y recepcin de datos a travs 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 estndar [16]. .................................................. 38
Figura 3.24 Diagrama de simulacin para movimiento de los servomotores. ................................................. 39
Figura 3.25 Diagrama esquemtico 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 Batera 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 diseado para la computadora. ................................................ 50
Figura 4.4 Mapa de bits a utilizar para copiar imgenes entregadas por el sensor......................................... 51
Figura 4.5 Algoritmo para obtener una imagen de profundidad. .................................................................... 52
iv
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 patrn infrarrojo emitido por el sensor de profundidad, obtenida a travs del nodo
Generador Infrarrojo. .................................................................................................................................... 56
Figura 4.11 Algoritmo para calibracin de usuario. ......................................................................................... 58
Figura 4. 12 Pose "Psi" para llevar a cabo el proceso de calibracin [14]. ....................................................... 58
Figura 4.13 Alineacin de las articulaciones adquiridas con imagen RGB. ...................................................... 60
Figura 4. 14 Representacin de un vector formado por un punto o articulacin 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 Traslacin de un vector hacia el origen. ...................................................................................... 67
Figura 4. 19 Clculo de ngulo entre dos vectores. .......................................................................................... 67
Figura 4.20 ngulos que forma la rotacin de un cuerpo en un sistema de coordenadas con respecto a otro
[17]. .................................................................................................................................................................. 69
Figura 4. 21 Sistema de rotacin de un cuerpo con referencia a un plano....................................................... 70
Figura 4. 22 Pose T que es el sistema de referencia para la rotacin de una articulacin [13]. ...................... 71
Figura 4. 23 Sistema de referencia para la rotacin del hombro derecho........................................................ 71
Figura 4. 24 Algoritmos para obtener el ngulo de rotacin de una articulacin. ........................................... 72
Figura 4. 25 Diagrama de flujo para la deteccin 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 Regin de inters(amarillo) de la imagen de profundidad. .......................................................... 77
Figura 4. 28 Pixeles que sern 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) Rectngulo que cubre el rea................................................................................................... 80
Figura 4. 31 Interfaz grfica de usuario de la aplicacin. ................................................................................. 82
Figura 4.32 Diagrama de flujo de la programacin del PIC18F4550. ............................................................... 85
Figura 4. 33 Diagrama de flujo de la interrupcin generada por la recepcin de datos a travs del modulo
UART. ................................................................................................................................................................ 86
Figura 4. 34 Diagrama de flujo de la rutina de interrupcin 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 Configuracin de un brazo robtico antropomrfico 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 eslabn para movimiento angular nmero 2.............................................................. 92
Figura 5. 6 Medidas del eslabn para movimiento angular nmero 1. ............................................................ 93
Figura 5. 7 Diseo final del prototipo del brazo robtico. ................................................................................ 95
NDICE DE TABLAS
Tabla 3. 1 Caractersticas 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 Comparacin de libreras de libre acceso. ....................................................................................... 30
Tabla 3. 5 Caractersticas tcnicas de la batera 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 clculo de los ngulos. .......................................................................... 68
Tabla 4. 5 Prioridades del sistema en tiempo real. ........................................................................................... 84
Tabla 5. 1 Medidas y pesos del eslabn para movimiento angular nmero 2. ................................................ 92
Tabla 5. 2 Medidas y pesos del eslabn para movimiento angular nmero 1. ................................................ 93
Tabla 5. 3 Diseo final del prototipo del brazo robtico. ..................................... Error! Marcador no definido.
Tabla 5. 4 Resultados de las pruebas realizadas con el brazo robtico. ......................................................... 101
Tabla anexo 1 Costo total del proyecto. ........................................................................................................ 111
vi
Prlogo
vii
Introduccin
Los brazos robticos (tambin llamados brazos manipuladores) son comnmente
utilizados dentro de la industria en diferentes actividades como la transportacin
de piezas, ensamblado o diseo de componentes electrnicos. En el campo de la
medicina tambin se ha trabajado con brazos robticos, facilitando el trabajo a los
mdicos en operaciones quirrgicas. Los brazos manipuladores pueden ser
controlados mediante interfaces de usuario (palancas, botones, interfaces grficas,
etc.) o funcionar de forma autnoma. En el caso de los brazos autnomos se
requiere conocer las coordenadas dentro de un plano, del objeto que se quiera
transportar para implementar algn algoritmo que realice dicha labor. Para los
robots que se controlan mediante interfaces de usuario se requiere un tiempo de
respuesta favorable y precisin del robot para realizar una labor como la
transportacin de piezas.
Justificacin
La presente tesis propone la construccin y programacin del prototipo de un
brazo robtico que sea controlado mediante el movimiento del brazo del usuario a
travs de una interfaz de usuario basada en el dispositivo Microsoft Kinect, el
brazo robtico debe imitar en tiempo real el movimiento del brazo del usuario,
mejorando el tiempo de respuesta, precisin y facilidad para controlar los brazos
manipuladores. El brazo robtico es construido para ayudar en tareas que
sustituyan el trabajo que comnmente 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 robtico tambin 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
robtico al punto deseado, adems se pretende innovar el control de brazos
manipuladores utilizando un dispositivo de ltima tecnologa como Kinect,
remplazando dispositivos que requieren mas recursos o son difciles de trabajar en
forma conjunta.
Especficos
El diseo, construccin y programacin del brazo robtico 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 especficos establecidos
para realizar el trabajo se definen a continuacin:
Captulo 1 Estado
del arte
Desde que fueron liberadas las diferentes libreras de programacin 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 ms
simples mecanismos de robtica hasta robots con mayor grado de complejidad en
cuanto a mecnica y programacin.
Figura 1.1 Robot ABB moviendo piezas de madera, controlado por Kinect [1].
Captulo 2 Marco
terico
2.1 Sistemas en tiempo real
Es un sistema electrnico de procesamiento que interacta 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 simultnea, lo que se conoce como multitarea. Estos procesos
o tareas duran un tiempo determinado, dependiendo la aplicacin o la
determinacin 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 aplicacin o el
uso que tenga [2].
La figura 2.1 muestra la representacin de forma general de un sistema de
procesamiento digital, en el cual intervienen mnimo dos variables y se obtiene una
respuesta en un tiempo acorde a la necesidad del usuario.
Fsicos
-Capacitancias, inductancias, resistencias de los circuitos, etc
-Velocidad de propagacin de los medios de comunicacin digital
-Velocidad de procesamiento
-Etapas del sistema
Software
-Algoritmo
-Nivel de lenguaje(c++,asm,etc.)
-Compilador
Serie
-USB
-RS232
-RS485
-Ethernet
Paralelo
-ICE
-PCI
-DB25
Inalmbricos
-Bluetooth
-Wifi
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 duracin 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 ecuacin 2.1.
tT =
(Ecuacin 2.1)
En donde:
tT = tiempo total de respuesta del sistema
2.1.1 Sensores
Una parte fundamental en todo sistema de adquisicin de datos es el elemento
encargado de percibir la magnitud a medir. Los sensores son dispositivos capaces
de convertir una magnitud fsica como puede ser temperatura, presin, etc., en
una diferencia de potencial o una variacin de intensidad de corriente, es decir,
realizan una conversin de energas y suministran informacin sobre el estado y
tamao de la magnitud. Los sensores informan de su entorno y adems esa
informacin es cuantificable, es decir, medible por algn instrumento.
10
(a)
(b)
(Ecuacin 2.2)
Si utilizamos una frecuencia inferior aparece un fenmeno llamado
Aliasing. Esto significa que cuando intentamos reconstruir la seal aparece
una seal de frecuencia ms baja. Este fenmeno se presenta por el hecho
de que las muestras se pueden unir para crear una forma de onda de
frecuencia ms 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 analgico-digital suelen
indicar la velocidad de muestreo del ADC, a medida que aumenta el
nmero de canales que este debe atender disminuir el nmero de
muestras por segundo que podemos obtener en cada canal.
Resolucin: Viene dada por el nmero de bits del ADC que se utilizan para
representar cada muestra, a mayor nmero de bits del ADC la tarjeta ser
capaz de detectar variaciones menores en la seal. El nmero de distintos
niveles en que se divide la seal a convertir viene dada por 2n, siendo n la
12
(.
(Ecuacin 2.3)
Rango de entrada: Indica los mrgenes entre los que debe estar la seal
de entrada para que pueda ser convertida. Las tarjetas de adquisicin de
datos suelen dar varias posibilidades que se pueden seleccionar por
hardware o por software.
Tmuestreo Tconversin
(Ecuacin 2.4)
(Ecuacin 2.5)
13
14
Multiprogramacin
Es la ejecucin de dos o ms procesos de manera aparentemente simultnea
utilizando un CPU y sus perifricos. 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 simultnea utilizando un solo CPU.
Figura 2. 4 Multiprogramacin
Sistema operativo
Se encarga de administrar los recursos de cada proceso, tiempo de ejecucin de
cada proceso, espacio de memoria, etc. Tambin es la capa que permite al
usuario ejecutar aplicaciones sin necesidad de conocer y programar la capa
fsica(hardware), un sistema operativo en tiempo real es comnmente utilizado en
dispositivos de procesamiento como microcontroladores, DSP, FPGA,
normalmente se denota con las siglas RTOS(sistema operativo en tiempo real).
15
16
Captulo 3
Descripcin del
Hardware
El proyecto tiene como base al sensor Microsof Kinect, el cual enva datos que se
actualizan constantemente, los cuales determinan los movimientos del brazo
robtico cuya estructura cuenta con tres grados de libertad. Cada grado est
limitado por el movimiento mximo 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.
17
La figura 3.1 muestra el diagrama de casos de uso para el sistema del brazo
robtico, el usuario debe interactuar con el sistema en todo momento, realizando
alguna de las siguientes tareas:
2.-Cmara RGB
3.-Arreglo de micrfonos
4.-Base
Figura 3.2 Principales componentes del sensor Kinect [5].
18
1.2m a 3.5m
19
20
Triangulacin
En visin por computadora, la triangulacin se refiere a el proceso para determinar
un la distancia de un punto en un espacio 3D a partir de la visin de dos o mas
imgenes. La figura 3.6 muestra la geometra epipolar de un par de cmaras de
visin estreo.
21
Figura 3.7 Imagen que muestra la proyeccin de puntos sobre una superficie [9].
Figura 3.8 Cada punto es distinguible de otro dentro del patrn proyectado [9].
22
23
Imgenes de profundidad
El sensor Kinect entrega imgenes de profundidad a una velocidad de 30 tramas
por segundo, con una resolucin de 640*480 pixeles. Los datos de profundidad
son representados en un espacio de color RGB o YUV (dependiendo la
configuracin), 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 nmero 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.
R
3 bits de 8
G
8 bits
B
0 ID de usuario
A
255
24
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 decisin de que imagen corresponde
a la imagen del usuario se establecen diferentes caractersticas. Una caracterstica
esta definida como una funcin f(I,x) que define una imagen I y una posicin x,
adems de un parmetro que describe las caractersticas de la imagen dentro
del espacio tridimensional, a travs de estas caractersticas, 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 especficos 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. Tcnica para encontrar eficiencia en la densidad.
3. Algoritmo que obtiene la aproximada localizacin de los puntos o
articulaciones.
La deteccin 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:
Figura 3. 12 Articulaciones del cuerpo del usuario, de las cuales se puede realizar un seguimiento (x,y,z).
26
27
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 deteccin de usuario, a diferencia que se ilumina de color azul,
debido a que el sensor asume que es un nuevo usuario.
29
Nombre
Open Kinect/
Libfreenect
Lenguajes
C,Python, ActionScript,
C#,C++, Java JNI and Java
JNA, JavaScript,
Com-monLisp
C, C#
Plataformas
Linux, Windows,
Mac OS X
Windows
Robot Operating
System
Pyhon, C++
UNIX
OpenNI/NITE
Middle-ware
C,C++,C#, Java
Windows,
Linux,
Ubuntu, Mac OS X
C++,C#, Visual
SDK Microsoft Kinect
Caractersticas
Imgenes de color y
profundidad, control de
la base motorizada y del
led.
Imgenes de color y
profundidad, control del
led y de la base
motorizada.
Imgenes de color y
profundidad.
Acceso a base
motorizada.
Identificacin de
usuario, deteccin de
gestos, seguimiento y
orientacin de
articulaciones de
usuario, imgenes de
color y profundidad.
Identificacin de
usuario, deteccin de
gestos, seguimiento de
articulaciones de
usuario, imgenes de
profundidad y de color.
30
31
Figura 3.17 Representacin abstracta del concepto de OpenNI dividido en tres capas [14].
Los nodos relacionados con las libreras de OpenNI son los siguientes:
Calibracin
Para la produccin del nodo de generacin de usuario es necesaria una pose por
parte del usuario, debido a que antes de realizar este proceso, los datos del
usuario que proporciona la cmara de profundidad no estn alineados con
32
33
34
En este proyecto se utiliza comunicacin serial RS232 para enviar los datos de la
computadora al microcontrolador, pero se realiza de forma inalmbrica utilizando
el mdulo bluetooth de la computadora para el envo de datos y el modulo serial
inalmbrico que se muestra en la figura 3.19 para la recepcin por parte del PIC,
mdulo basa su funcionamiento en el protocolo bluetooth, pero entrega los datos
de forma serial a una velocidad de 9600 baudios por segundo. La comunicacin
entre los dispositivos de procesamiento es totalmente inalmbrica como se
ejemplifica en la figura 3.18, en donde se envan los datos por el mdulo bluetooth
de la computadora y ser reciben por el modulo serial que se encarga de entregar
los datos al microcontrolador.
35
3.3 Servomotores
Es un motor de corriente continua que tiene la capacidad de ser controlado en una
determinada posicin. El motor es capaz de ubicarse en cualquier posicin dentro
de un rango de operacin (generalmente de 180) y mantenerse estable en dicha
posicin. Los servomotores se suelen utilizar en robtica, automatizacin, debido a
su gran precisin en el posicionamiento.
En general, los servomotores suelen estar compuestos por 4 elementos
fundamentales:
36
37
Las seales PWM (modulacin por acho de pulso) utilizadas para controlar los
servos estn formadas por pulsos positivos cuya duracin es proporcional a la
posicin deseada del servo y que se repiten cada 20ms (50Hz). Todos los servos
pueden funcionar correctamente en un rango de movimiento de 90, que se
corresponde con pulsos PWM comprendidos entre 0.9 y 2.1ms. Sin embargo,
tambin existen servos que se pueden mover en un rango extendido de 180 y sus
pulsos de control varan entre 0.5 y 2.5ms. Antes de utilizar un servo se debe
comprobar experimentalmente su rango de movimiento para no daarlo. Para
mantener fijo un servo en una posicin habr que enviar peridicamente el pulso
correspondiente; ya que si no recibe seales, el eje del servo quedar libre y se
podr mover ejerciendo una leve presin.
38
39
En las figuras 3.26 y 3.27 se muestran las capas que forman el diseo del circuito
impreso basado en el diagrama esquemtico que corresponde a la tarjeta
controladora de servomotores incluyendo las conexiones para los servomotores y
el mdulo de comunicacin entre la computadora y el microcontrolador.
40
En la figura 3.28 se muestra el diseo fsico del circuito impreso, indicando las
medidas que corresponden a la tarjeta controladora para los servomotores del
brazo robtico e indicando los componentes ms importantes que constituyen a la
tarjeta.
41
!"
( %
#$ %$ &$
"
$)
42
Captulo 4
Diseo del software
Como se mencion anteriormente, el trabajo realizado en esta tesis es un sistema
en tiempo real, el brazo robtico tiene que moverse en un determinado tiempo
que asimile ser paralelo al tiempo en que el usuario mueve el brazo derecho. El
funcionamiento del software se basa en el diagrama de flujo que se describe
posteriormente, el cual muestra los diferentes procesos para que se ejecuten en
los dispositivos de procesamiento.
44
Ventajas
SDK de Microsoft
OpenNI
Seguimiento de usuario
No necesita pose de
calibracin
Mejor tratamiento de
articulaciones
ocluidas.
Seguimiento de usuario
Calcula rotacin de las
articulaciones
Soporta Windows, Linux y
Mac.
Instalacin simple
Desventajas
SDK de
Microsoft
OpenNI
Licencia
nicamente para
uso no comercial.
Seguimiento de
usuario completo
(no permite seguir
nicamente las
manos)
No calcula la
rotacin de las
articulaciones.
Exclusivamente
para Windows 7
Consume mas
CPU que OpenNI
Laboriosa instalacin
47
especifico sin tomar en cuenta que otros nodos hayan generado o no, nuevos
datos.
El mtodo Detener todo se encarga de detener la generacin de todos los nodos
a travs del sensor, este mtodo puede utilizarse para dejar de utilizar alguna
configuracin de un archivo xml y poder utilizar otro archivo con la extensin
indicada.
Seguimiento: contiene los mtodos para obtener todos los datos referentes
al seguimiento de el usuario como las coordenadas (x,y,z) de las
articulaciones y su rotacin.
Imgenes: realiza la adquisicin y procesamiento de todas las imgenes
con las que se trabajan como imagen de profundidad e imagen RGB.
Clculos: implementa todos los algoritmos matemticos utilizados en el
software.
50
480 bytes
640 bytes
Figura 4.4 Mapa de bits a utilizar para
copiar imgenes entregadas por el
sensor.
51
Cada byte dentro del mapa contiene 8 bits, esto indica que solo se pueden
almacenar datos con valor mximo de 255. Realizando el producto entre las filas y
columnas del mapa de bits, obtenemos un total de 307200 bytes para cada canal
utilizado en las imgenes. La representacin de los datos en una imagen de
profundidad en OpenNI es establecida en escala de grises. Normalmente el valor
de un pixel en escala de grises se representa por un canal, y cuyo valor del pixel
se encuentra en el rango de 0-255, el nodo de profundidad entrega normalmente
valores de 0 a 10000 para cada pixel, este valor representa la distancia en cm que
existe entre el sensor y las coordenadas del espacio3D que corresponden a ese
pixel, pero para poder representarlo en escala de grises se normaliza al rango de
0-255. Perceptivamente dentro de la imagen de profundidad, este valor representa
la intensidad de un pixel, graficndose en pantalla como un determinado color
entre el blanco y el gris, por ejemplo: si el valor del pixel es 0, el color del pixel es
negro, y de forma contraria, si el valor es 255 ,el color es blanco, si el valor se
encuentra dentro de ese rango, obtendr el color al cual su valor este mas
cercano, ejemplo: 150 (obtenemos un color parecido al blanco), 30(obtenemos un
color parecido al negro), el umbral establecido para definir la frontera de los
valores de cada pixel es 128. Para poder obtener una imagen de profundidad y
visualizarla dentro de una interfaz grfica de usuario, se debe implementar un
algoritmo que capture los datos de profundidad que entrega el sensor cada 30
milisegundos, y realice el proceso de copiado hacia el mapa de bits, para despus
mostrarlos de forma grfica. El algoritmo de la figura 4.5 obtiene una imagen de
profundidad y es implementado en el cdigo del anexo 4.2.
52
Figura 4.5 Algoritmo para obtener una imagen de profundidad.
El objeto de tipo Bitmap sirve para poder almacenar los datos de profundidad
obtenidos de la funcin GetMetaData, el cual debe ser bloqueado durante el
proceso de copiado, para evitar que algunos datos sean sobre escritos. El objeto
de tipo DepthMetaData es utilizado para almacenar todos los datos de
profundidad en el caso de que se quiera trabajar con ellos. La figura 4.6 despliega
la imagen de profundidad que se obtiene cada 30 milisegundos a una distancia de
2 metros. Curiosamente se puede observar en la imagen de profundidad que los
contornos del usuario o de los objetos se visualizan de color negro, simulando una
sombra, esto se debe a que los puntos infrarrojos son desviados por los contornos
de un objeto o persona, por lo que el valor de esas regiones se establece en 0.
Los valores de estos pixeles que se encuentran en la frontera entre el usuario y la
imagen, no afectan de forma directa dentro de la deteccin de usuario, debido a
que el contorno puede ser obtenido utilizando otros algoritmos de visin por
computadora.
Figura 4. 6 Imagen de profundidad y color del usuario a una distancia de 2metros utilizando el nodo Generador de
profundidad.
Figura 4.7 Imagen de profundidad y color cuando el usuario extiende la mano a una distancia menor de 15 cm.
53
En la figura 4.7 se observa otro detalle importante cuando se trabaja con el sensor
de profundidad del Kinect, cuando algn objeto se encuentra dentro de una
distancia menor a 15 cm delante del sensor, el valor de profundidad del pixel de
este objeto siempre ser nulo, debido a la arquitectura con la que cuenta el
sensor de profundidad, en este caso el diseo de la cmara de profundidad, no es
capaz de detectar los puntos infrarrojos que se proyecten en objetos que se
encuentren a 15cm o a una menor distancia delante del sensor, por este motivo
todos estos objetos o formas se visualizan de color negro en la imagen de
profundidad.
54
En la figura 4.9 se muestra la imagen a color que se obtiene a travs del nodo
Generador de Imagen. La resolucin de la imagen es normalmente de 640*480
pixeles, pero el sensor Kinect puede generar imgenes a color con una resolucin
de 1280*1024 reduciendo la velocidad de envo a 15 tramas por segundo.
55
Figura 4. 10 Imagen del patrn infrarrojo emitido por el sensor de profundidad, obtenida a
travs del nodo Generador Infrarrojo.
Los procesos marcados de color azul dentro del algoritmo de calibracin mostrado
en la figura 4.11 representan los eventos que se generan cada que ocurre dicho
proceso, los procesos de color verde representan mtodos que deben ser
llamados para realizar la tarea especfica. El proceso de calibracin debe ser
realizado para cada usuario detectado, si es el caso que se requiera trabajar con
los datos de un nuevo usuario. El proceso de calibracin de un usuario se puede
describir de la siguiente manera: un nuevo o primer usuario es detectado por el
sensor generando el evento Nuevo usuario , a partir de este momento se realiza
la peticin para detectar una pose de calibracin, es decir, se asume que el
usuario detectado realizar la pose de calibracin, el mtodo que realiza esta
peticin es Iniciar pose de deteccin, este mtodo recibe dos parmetros: el
ID(nmero de usuario) del que se desea calibrar, y la pose de calibracin a
realizar, la cual esta definida de forma predeterminada en OpenNI y es la que se
muestra en la figura 4.12 .
58
Figura 4. 12 Pose "Psi" para llevar a cabo el proceso de calibracin [14].
59
Hombro derecho
Cadera derecha
Codo derecho
Mano derecha
Mano izquierda
Cuello
Cabeza
60
= x X + y Y + z Z (Ecuacin 4.1)
61
Donde x, y y z denotan los componentes del vector dentro del plano 3D, a
travs de los ejes de referencia. La posicin de puede ser compactada y
representada como un vector 3*1, como se muestra en la ecuacin 4.2.
2
035
4
(Ecuacin 4.2)
Figura 4. 14 Representacin de un vector formado por un punto o articulacin del usuario dentro del
plano del sensor.
A1, A2 y A3 representan los ngulos que forma el vector con respecto a cada eje
del plano 3D. Los puntos se relacionan con cada movimiento que ejecuta el
usuario que a su vez se considera un cuerpo rgido debido a que las dems
partes de su cuerpo se pueden mantener estticas mientras alguna parte en
especifica se mueve, que no es lo mismo que el usuario no pueda moverse de
lugar dentro del plano 3D al estar controlando el robot. Utilizando este concepto se
lleg a la conclusin de implementar cinemtica directa para la obtencin de los
ngulos, esto implica que se debe realizar el clculo de los movimientos de
62
Figura 4.15 ngulo formado por dos vectores proyectados en las articulaciones del usuario.
A partir de este ejemplo, podemos definir las articulaciones que formarn los
vectores que darn movimiento al brazo robtico, el cual estar dotado de tres
grados de libertad. La imagen 4.16 muestra los vectores que forman los puntos
que sern tomados en cuenta para obtener dos vectores por cada grado de
libertad y su respectivo ngulo, en la imagen solo se muestran dos ngulos
encontrados, debido a que el tercer ngulo es obtenido con otro mtodo que se
explicar ms adelante. Los puntos o articulaciones elegidos del esqueleto del
usuario para formar los vectores de movimiento son: hombro derecho, cadera
derecha, codo derecho y mano derecha. El motivo por el cual se eligen estos
puntos es debido que la posicin del vector que forma cada uno de ellos depende
de la posicin de otro, si la mano derecha del usuario es levantada,
64
En la figura 4.16 se observa como se forman dos ngulos con tres vectores, los
cuales tienen al hombro como origen, esto implica que el movimiento de los
vectores puede desarrollarse dentro de todo el espacio 3D y no solo en un espacio
2D de frente al sensor, debido a que el punto que define el origen(hombro
derecho) no cambia de posicin mientras la mano o codo derecho si pueden
hacerlo, otro punto que tampoco cambiar de posicin es la articulacin
correspondiente a la cadera derecha, por lo cual los nicas articulaciones que
influyen en el cambio del valor de ngulo que forman los vectores son los
articulaciones correspondientes a la mano derecha y codo derecho.
El siguiente paso es calcular los mencionados ngulos que forman los vectores ya
definidos. Las coordenadas proporcionadas por Kinect para el seguimiento de
usuario varan acorde a la distancia en la que se encuentre el usuario, tanto para
el eje x, y, z, es por eso que el clculo de los ngulos del movimiento del brazo
65
(Ecuacin 4.3)
66
Como podemos observar, solo necesitamos realizar la resta de los vectores que
se proyecten del origen hacia los puntos extremos del vector que necesitemos
trasladar, en nuestra aplicacin conocemos los puntos que forman cada uno de los
vectores, adems de que podemos proyectar vectores desde el origen hacia el
punto que forma nuestro vector deseado, por lo tanto es posible realizar la
traslacin de los vectores que deseemos, hacia el origen.
A partir de este procedimiento podemos aplicar la ecuacin 4.3 y podemos
calcular nuestros dos primeros ngulos que determinan dos de los tres grados de
libertad del robot, el algoritmo para implementar las formulas anteriores y obtener
en grados el respectivo ngulo, se explica en la figura 4.19y se implementa en el
anexo 4.6.
67
Antes de poder aplicar este algoritmo es necesario trasladar los vectores que se
ocupen hacia el origen, en nuestro caso los vectores a ocupar se definen en la
tabla 4.4 .
Nombre
Vector 1
Vector 2
Vector 3
Vector 4
Punto de origen
Hombro derecho
Hombro derecho
Codo derecho
Codo derecho
Punto destino
Cadera derecha
Codo derecho
Mano derecha
Hombro derecho
Vector 1: vector del origen a la cadera derecha - vector del origen al hombro
derecho.
Vector2: vector del origen al codo derecho - vector del origen al hombro
derecho.
Vector 3: vector del origen a la mano derecha - vector del origen al codo
derecho.
Vector 4: vector del origen al hombro derecho - vector del origen al codo
derecho.
Como se puede observar en dos vectores se utilizaron los mismos puntos, pero la
traslacin se hizo de diferente forma para cada uno de ellos, esto se debe a que el
ngulo que se forma para los cuatro vectores toma a un eje distinto como
referencia, el primer ngulo toma como referencia al eje formado por la cadera y
hombro derecho, mientras que el segundo toma el eje formado por el hombro
derecho y el codo derecho, esto implica que en el primer ngulo el origen sea el
hombro, mientras que el segundo tenga como origen al codo derecho, es por eso
que se tienen que trasladar de diferente manera para poder utilizarlos. Con estos
datos podemos implementar la funcin del algoritmo de la figura 4.19 y poder
obtener los movimientos de dos grados de libertad de nuestro brazo.
68
Los grados Euler pueden ser representados por una matriz de rotacin 3*3 que
contiene la rotacin de un marco de referencia fija, con respecto a otro marco de
referencia en movimiento, esto se puede explicar en la figura 4.21 ,en donde se
tiene un plano fijo denotado por los ejes X1,Y1,Z1, y otro X0,Y0,Z0 que contiene
un ngulo de rotacin
con respecto al primero, este desplazamiento solo
interviene en los ejes X y Y, es decir: si proyectamos un vector dentro del espacio
X0,Y0,Z0, este vector tendr el mismo componente tanto en Z0, como en Z1. Para
poder representar un vector del plano X0,Y0.Z0 se utiliza una proyeccin de
vectores denominada proyeccin ortogonal, la cual se representa con las matrices
de las ecuaciones 4.4, 4.5 y 4.6 para cada eje de rotacin.
69
1
0
Rx( )= 0 ;,/
0 /=>
;,/
Ry( )= 0
</=>
;,/
Rz( )= /=>
0
0
1
0
0
</=>
;,/
</=>
;,/
0
/=>
0
;,/
0
0
1
(Ecuacin 4.4)
(Ecuacin 4.5)
(Ecuacin 4.6)
70
El algoritmo para calcular los tres ngulos de rotacin de una articulacin se define
por la multiplicacin de las tres matrices RX( ), RY( ) y RZ( ), en donde se
obtiene una tercer matriz, que es la matriz proporcionada por las libreras de
OpenNI. La siguiente matriz muestra el resultado final de multiplicar las tres
matrices de rotacin.
-00
-10
-20
-01
-11
-21
-02
-12
-22
@A@B C DEDADB
@EDB
<@BDA C @ADEDB
][
=
@EDA
<DE
@E@A
(Ecuacin 4.7)
En donde:
Cx=cos
(Ecuacin 4.8)
Cy=cos
(Ecuacin 4.9)
Cz=cos
(Ecuacin 4.10)
Sx=sen
(Ecuacin 4.11)
Sy=sen
(Ecuacin 4.12)
Sz=sen
(Ecuacin 4.13)
71
1. Si
3. En el caso de que y=< entones sy=-1 y cy=0, para estas condiciones los
I
ngulos se obtienen:
y = - , z - x = atan2(r10, r11) (Ecuacin 4.16)
El algoritmo de la figura 4.24 implementa las condiciones de la factorizacin de la
matriz de rotacin entregada por cada articulacin del esqueleto, en donde se
determina un ngulo por cada eje de rotacin, tomando en cuenta el plano de la
posicin t del usuario, el resultado es entregado en grados, el cdigo esta
disponible en el anexo 4.7.
72
De estos tres gestos provedos por OpenNI, eleg el gesto de saludo debido a que
su movimiento no requiere extender demasiado los brazos, basta con simular un
saludo tpico de hola con la mano para que el gesto sea detectado. La deteccin
del gesto basa su funcionamiento en eventos que se generan en las libreras de
OpenNI, cuyo diagrama de flujo de los procesos que lleva la deteccin del gesto
se muestra en la figura 4.25. El inicio marca un movimiento de la mano que puede
propiciar que el usuario realice el gesto indicado al sensor, despus de que
efectivamente el usuario lleva acabo el gesto se genera el evento, en donde se
realiza un seguimiento de la mano y se puede acceder o no a las coordenadas
(x,y,z) de la mano que realiz el gesto, si el seguimiento de la mano es perdido por
el sensor de profundidad, se genera un nuevo evento, el cual realiza una peticin
para la nueva deteccin del gesto, a partir de entonces el usuario tendr que
realizar nuevamente el gesto.
73
74
que segmentara una imagen a color para formar una imagen de la mano del
usuario a partir de la deteccin del color de la piel utilizando la cmara RGB del
Kinect, debido a que no todas las personas presentan el mismo tono de piel,
adems de que las imgenes RGB capturadas por el sensor pueden llegar a
capturar otros colores de objetos que se confundan con el color de la piel del
usuario. El objetivo de utilizar el sensor Kinect es aprovechar al mximo los
recursos que ofrece, por lo tanto el algoritmo implementado para la deteccin del
gesto que implica la apertura o cierre de una mano del usuario se basa en la
extraccin de una imagen de profundidad del recuadro que cubre nicamente la
mano izquierda del usuario.
El procedimiento de deteccin del gesto de apertura o cierre de la pinza se
describe a continuacin:
76
Figura 4. 26 Distancia de la cabeza al cuello, similar a la distancia de lo largo de la mano.
(Ecuacin 4.17)
Figura 4. 27 Regin de
inters (amarillo) de la
imagen de profundidad.
77
Una vez completado este proceso se obtiene una figura dentro de nuestra imagen
parecida a la forma de una mano, cabe destacar que esta imagen es analizada en
un plano en dos dimensiones, por lo que carece de todas las ventajas que se
tienen al trabajar con imgenes 3D, ventajas que tienen los datos entregados por
el sensor. El algoritmo de filtrado nicamente coloca el valor de los pixeles que
se encuentren dentro del rango del ancho de una mano en 255, y los pixeles que
se encuentren fuera de ese rango sobre el eje z, son colocados en 0, permitiendo
mantener nicamente los pixeles que dan forma a la mano del usuario. Debido a
que la regin de inters es calculada de forma propuesta y con un tamao no
exacto, la imagen resultante del proceso de filtracin puede no corresponder a la
imagen de solo la mano, y tomar tambin una parte del brazo dentro de esta
78
Una vez que se tiene una imagen en escala de grises, debido a que se trabaja con
imgenes de profundidad, se requiere encontrar todas aquellas formas que
puedan parecerse a la forma de un dedo, en sta parte es donde se implementan
las libreras de cdigo abierto de algoritmos de visin por computadora
denominado EmguCV. EmguCV contiene libreras que implementan algoritmos
sobre imgenes que se encuentren en el espacio RGB en escala de grises,
adems aceleran la velocidad de procesamiento de las imgenes, factor que es
vital para esta aplicacin.
Una figura convexa se define de la siguiente manera:
Si para cada par de puntos de C, el segmento que los une est totalmente incluido
en C, es decir, un conjunto es convexo si se puede ir de cualquier punto a
cualquier otro en lnea recta, sin salir del mismo.
La figura 4.29 muestra el ejemplo de una figura convexa
Como se puede observar, dentro de la figura 4.29 X, los puntos denotados desde
A hasta B, se encuentran unidos por una lnea recta hacia otro punto que
pertenece al conjunto, por ejemplo: el punto A, al punto B, el C al D, etc, en ningn
caso, la lnea que los une sale del rea de la figura, es por eso que se define como
figura convexa, caso contrario de la figura 4.29 Y, en la cual algunas lneas
trazadas dentro de sus puntos , salen del rea de la figura.
79
Par poder abrir o cerrar la pinza del brazo robtico, es necesario detectar cuando
un usuario abre o cierra la mano. Los procesos explicados anteriormente permiten
tener la ubicacin de puntos que puedan pertenecer a la forma de los dedos de la
mano, a partir de esos datos, se implementa un procedimiento para conocer si el
usuario esta abriendo o cerrando la mano. Este procedimiento consiste en obtener
mediante el mtodo Obtener la mnima rea de EmguCV, que cubre la figura de
la imagen, en nuestro caso la forma de la mano, esta funcin devuelve un
rectngulo que cubre al rea comprendida por la figura encontrada dentro de la
imagen a la que se le aplica esta funcin. En la figura 4.30(a) se dibuja este
rectngulo que marca el rea que cubre la figura encontrada. El siguiente paso es
dibujar otro rectngulo que abarque la mitad del rectngulo encontrado
anteriormente, con el objetivo de trazar el rectngulo a un rea que
aproximadamente sea el rea que cubre la palma de la mano, en la figura 4.30(b)
se muestra el polgono.
(a)
(b)
80
Una vez que tenemos trazadas estas figuras dentro de nuestra imagen, el
siguiente paso es aplicar las condiciones de nuestro algoritmo que permiten
detectar el nmero de dedos que el usuario extiende con la mano izquierda, estas
condiciones se basan tambin en la medicin de distancia entre el centro de la
palma la cual se puede obtener mediante la ubicacin (x,y) del sensor, y la punta
de los dedos de la mano que como ya se mencion, se puede tambin obtener. La
condicin para realizar el conteo del nmero de dedos es la siguiente: si la
distancia del centro de la mano a la punta de los dedos es mayor a la distancia del
centro de la mano a la frontera del rectngulo que abarca la mitad del rea de la
figura, se considera que el usuario a extendido el dedo, en caso contrario se
considera como si el dedo estuviese doblado. A partir de esta condicin se hace
un anlisis de todas las formas convexas encontradas y se realiza un conteo de
aquellas que cumplan la condicin, sin embargo tambin se establece otra
condicin: las coordenadas (x,y), de las puntas de los dedos deben de ser
menores que la frontera del rectngulo que cubre el rea debido a que se
considera que el usuario siempre mantiene la mano con los dedos en direccin
hacia arriba, en el proceso de encontrar formas convexas, la forma de la imagen
que es analizada puede tener formas convexas que no correspondan a los dedos,
denominado tambin como ruido, es por eso que mediante esta condicin se
evitan errores de ese tipo.
El procedimiento de deteccin de dedos no es del todo preciso porque puede
detectar formas en la imagen y clasificarlas como dedos aunque no lo sean, o
puede verse afectado por la distancia en la que se encuentra el usuario con
respecto al sensor, lo cual causa que la regin de inters sea muy pequea dentro
de la imagen de 640*480 pixeles y el algoritmo no obtenga de forma correcta las
formas de las imgenes.
Para determinar si el usuario cerr o abri la mano, simplemente se hace un
intervalo en el conteo de los dedos extendidos detectados, si el contador indica
que se extendieron 4 o 5 dedos, se considera la mano abierta debido a que el
dedo pulgar es difcil de detectar dentro de este algoritmo. Si el contador indica 1
0 nmero de dedos, se contempla que el usuario ha cerrado la mano, de esas dos
formas se detecta el movimiento realizado por el usuario que contribuye al cierre o
la apertura de la pinza. El cdigo del procedimiento para detectar la apertura o
cierre de la mano se implementa en el anexo 4.8.
81
Deteccin
de usuario.
Valor de
ngulos
del robot.
82
Tarea
Motor 1( 1 gdl)
Motor 2 (2 gdl)
Motor 3 (3 gdl)
Motor 4(pinza)
Recepcin UART
Prioridad
1
1
1
1
2
Duracin
Ciclo de trabajo
Ciclo de trabajo
Ciclo de trabajo
Ciclo de trabajo
2.5 us
85
86
88
89
Captulo 5 Pruebas
y resultados
En el presente captulo se explica el diseo mecnico y funcionamiento del brazo
robtico, adems se presentan las pruebas finales realizadas para explicar el
funcionamiento del manipulador y obtener la eficiencia del proyecto, tomando
como referencia determinados parmetros relacionados tanto al brazo robtico
como a los diferentes usuarios que realizaron pruebas con el prototipo.
90
91
= d
(Ecuacin 5.1)
En donde:
= torque o torsin
= fuerza aplicada
d = distancia
Elemento
Soporte para
servomotor
Tubo de
aluminio
Pinza con
motor
Distancia
4.5cm
Peso
20 gr
7.5cm
15 gr
6.5cm
74 gr
92
Elemento
Tuvo de aluminio
movimiento angular 1
Soporte
con motor
Tubo de aluminio
movimiento angular 2
Pinza con motor
Distancia
12.5cm
Peso
30gr
4.5cm
84gr
7.5cm
15 gr
6.5cm
74 gr
93
94
La figura 5.8 muestra las medidas del brazo robtico, estas medidas son tomando
en cuenta el origen y destino de las articulaciones, en donde el motor gira para
realizar los movimientos angulares.
95
Apertura de la pinza
La pinza de sujecin puede abrirse una distancia de 3.5 cm y cerrarse por
completo, en la figura 5.9 se muestra la medida de la apertura de la pinza de
sujecin.
El espacio de trabajo para el prototipo del brazo robtico se basa en la figura 5.10,
la cual corresponde al espacio que normalmente tiene acceso un manipulador de
configuracin antropomrfica, en donde la parte rayada, marca el rea de
movimiento que abarca el brazo robtico utilizando sus tres grados de libertad.
Esta rea es aproximada, debido a que como se ha venido mencionando, el
movimiento del brazo robtico, ser controlado por el movimiento del usuario, por
lo que si la persona no puede realizar movimientos tan flexibles con su brazo,
entonces el brazo robtico no podr moverse mas de lo que permitan dichos
movimientos.
96
Los crculos rojos representan inicio de una forma convexa y los crculos amarillos
representan la profundidad de la forma convexa. En las figuras 5.12 y 5.13 se
muestran los resultados que se obtienen cuando el usuario extiende 2 y 5 dedos
respectivamente utilizando la mano izquierda. Este procedimiento no es del todo
preciso debido a que se analizan imgenes de profundidad y partir de ellas se
detectan formas convexas que pueden ser similares a las de un dedo, esto
provoca que existan algunas otras formas en la imagen y puedan ser contadas
como formas similares a las de un dedo.
97
98
99
En la tabla 5.4 se muestran los tiempos que realiz cada usuario al tratar de mover
las piezas, adems se indica el nmero de piezas que piezas que fueron soltadas,
y las piezas que quedaron fuera del alcance del robot por un movimiento errneo
del robot, adems se incluye como dato adicional, la estatura del usuario, para
demostrar que cualquier usuario puede controlar el brazo robtico. En los anexos
5.2 se puede consultar los imgenes de los usuarios controlando el prototipo,
tambin se incluye el tiempo que realic en ejecutar las mismas pruebas, con el
objetivo de comparar con el tiempo realizados por los usuarios que controlaron
el robot sin tener un previo entrenamiento.
100
1 (Desarrollador
del prototipo)
1 (Desarrollador
del prototipo)
2 (Ver anexo
5.2.1)
2 (Ver anexo
5.2.1)
3 (Ver anexo
5.2.2)
3 (Ver anexo
5.2.2)
4 (Ver anexo
5.2.3)
4 (Ver anexo
5.2.3)
5 (Ver anexo
5.2.4)
5 (Ver anexo
5.2.4)
No. de
prueba
Piezas
soltadas
Piezas
Nmero de
fuera del pizas
alcance depositadas
del
robot
Tiempo
total
(minutos)
1.69m
2.20
1.69m
3.59
1.51m
6.37
1.51m
5.12
1.62m
2.47
1.62m
6.05
1.60m
13.06
1.60m
12.56
1.50m
8.33
1.50m
10.20
Minutos
14
12
10
8
6
4
2
0
2
Nmero de usuario
Figura 5. 19 Grfica del tiempo en completar la prueba.
101
El promedio general del tiempo que se obtiene al tratar de transportar las 6 piezas
al contenedor es el mostrado en la ecuacin 5.11:
Q =RS, S-,R=K , =
Donde:
V
TWV
T
(Ecuacin 5.11)
i = nmero de usuario
n= total de usuarios
ti= tiempo del usuario en completar la prueba
Sustituyendo en la ecuacin 5.2 obtenemos el siguiente promedio:
Tiempo promedio
=
X.YZ [\]
. Z [\] X.
Y. X
. X ^.YY
Para obtener la eficiencia del brazo robtico se realizaron la suma de las pruebas
realizadas (incluyendo la realizada por el autor del presente trabajo) y se obtuvo
un porcentaje de las piezas que fueron colocadas correctamente en el contenedor,
tomando las piezas soltadas o que quedaron fuera del alcance del robot, como un
error, el porcentaje de eficiencia se determina con la siguiente formula:
% de eficiencia =
_ ( ` a$b ( ` b $($b
c $% ( ` a$b
102
Conclusiones
Dentro de las pruebas se observ que el movimiento del brazo robtico puede ser
un poco brusco, debido a que las coordenadas entregadas por el Kinect no son del
todo constantes dentro de cada imagen entregada por el sensor, aun as, se
pudieron tomar algunas piezas de pequeo tamao y peso ligero, demostrando
que el brazo robtico podra llegar a transportar piezas u objetos pequeos como
los utilizados en las pruebas los cuales tienen un ancho menor a la apertura total
de la pinza
El tiempo promedio para que un usuario que desconoce el funcionamiento del
prototipo pueda utilizar el robot, depende la habilidad de la persona para
acostumbrarse al control del robot; para algunos usuarios fue difcil mantener la
mano izquierda referenciada al sensor para abrir y cerrar la pinza y al mismo
tiempo realizar el control con el brazo derecho.
El porcentaje de error fue considerable, debido a que no todas las piezas fueron
transportadas de forma correcta durante las pruebas, debido a que ligeros
movimientos del robot desplazaban las piezas dejndolas fuera su alcance.
Adems de que otras piezas fueron soltadas al presentarse fallas dentro de la
deteccin de dedos para la apertura y cierre de la pinza.
En cuanto a la respuesta del sistema se obtuvieron resultados favorables, el robot
se mueve a una velocidad que asimila ser paralela a la velocidad con la que el
usuario mueve el brazo, permitiendo menor tiempo en el transporte de piezas u
objetos. Una de las limitaciones del proyecto, como se ha mencionado
anteriormente, es que ninguno de sus tres grados de libertad alcanza el mximo
movimiento permitido por los servomotores (180 grados), debido a que la
flexibilidad en los movimientos del brazo de la mayora de las personas, no se
ajusta a dicho movimiento, delimitando como consecuencia el movimiento del
brazo robtico.
Finalmente, este trabajo de tesis produjo un brazo robtico con tres grados de
libertad, que puede ser controlado de forma natural por cualquier persona que
cuente con las extremidades requeridas, sin necesidad de utilizar interfaces fsicas
como palancas o botones.
103
Observaciones
El cuarto donde se utilice el sensor es de gran importancia, se debe procurar que
el sensor proyecte sobre una superficie rgida y no transparente o reflejante
(vidrios, etc.), adems de que la habitacin debe ser un espacio en donde no
afecte la luz solar de forma directa, por ejemplo colocar el sensor cerca de una
ventana o puerta. La altura donde se coloque el sensor debe estar dentro de los
rangos que indica el fabricante (0.60m a 1.50m), ya que al no cumplirse esta
especificacin, el sensor adquiere y entrega los datos de forma incorrecta debido a
la mala proyeccin que ejecuta el sensor infrarrojo sobre la superficie cuando se
coloca el sensor en una altura fuera del rango especificado.
Limitaciones
Ninguno de los tres grados de libertad del brazo robtico puede desplazarse los
180 grados que limita un servomotor, los movimientos realizados por un usuario
dependiendo de su capacidad para mover el brazo controlan el robot, limitan el
movimiento de cada articulacin. Otro aspecto que limita este proyecto, es que no
puede utilizarse en ambientes donde exista luz solar, debido a que el sensor
Kinect no trabaja bajo esas condiciones, de igual forma si algn objeto o persona
se encuentra entre el sensor y el usuario, se obstruye la lectura de los datos del
sensor, como consecuencia la aplicacin tendr un funcionamiento incorrecto,
provocando fallas catastrficas en el movimiento del brazo robtico.
105
Bibliografa
[1]UDC. (2012). OpenNI and software. Obtenido de http://sabia.tic.udc.es/gc/trabajos%20201112/Kinect/codigo.html
[2]Alejandro, I. L. (Noviembre de 2012). Sistemas en tiempo real. Apuntes del semestre.
[3] Sistemas de asquicisin de datos,H Mora Mora
[4] Atif Khan, F. M. (2011). KinDectect: Kinect Detecting Objects.
[5] http://es.scribd.com/doc/86437713/kinectdoc pagina 22
[6] SignLanguageTranslator rticulo por Daniel Martinez Capilla pagina 17.
[7] DEPT, H. E. (2012). Kinect docs. Obtenido de http://es.scribd.com/doc/86437713/kinectdoc
[8] Jaime, M. M. (Noviembre de 2012). Diapositivas de clase. Vision Stereo.
[9] http://es.scribd.com/doc/86437713/kinectdoc pginas 23 y 24.
[10] Matthias Kronlachner, I. m. (2012). THE KINECT SENSOR AS HUMAN-MACHINE-INTERFACE IN
AUDIO-VISUAL ART PROJECTS. Austria.
[11] Real-Time Human Pose Recognition in Parts from Single Depth Images, Jamie Shotton ,
Andrew Fitzgibbon, Mat Cook.
[12] KinDectect: Kinect Detecting Objects , Atif Khan, Febin Moideen, Juan Lopez, Wai L. Khoo
and Zhigang Zhu Department of Computer Science, City College of New York, New York.
[13] Sense, P. (2011). OpenNI User Guide.
[14] http://www.openni.org/
[15] http://articulo.mercadolibre.com.mx/MLM-419491511-bluetooth-modulo-serialmicrocontrolador-pic-arduino-atmel-_JM
[16] Publicacin Interna 9 20-09-2007 Francisco A. Candelas Heras Juan A. Corrales Ramn
[17]http://es.wikipedia.org/wiki/%C3%81ngulos_de_Euler.
[18]http://es.wikipedia.org/wiki/Convexidad
[19]Arranz Aranda Francisco, L. Y. (2011 - 2012). Interaccin persona-computador basada en el
reconocimiento visual de manos. UNIVERSIDAD COMPLUTENSE DE MADRID.
106
107
Anexo 1
1.1 Anlisis de costos
Para la construccin e implementacin de este proyecto se utilizaron los siguientes
materiales:
Sensor Kinect: El sensor Kinect es el principal componente de este
proyecto, debido a que todos los datos son adquiridos a travs del l, este
dispositivo puede comprarse en cualquier tienda donde este a la venta la
consola Xbox 360, debido a que es un complemento de la consola, es
recomendable comprarlo por separado para que se incluya el cable USB
que se requiere para la conexin
con la computadora.
Precio: $1800.00
Tamao (mm): 40 x 20 x 37
Peso (g/oz): 43/1.51
Precio: $210.00
Cantidad: 2
Servomotor estndar alto torque: Para el
movimiento de rotacin del brazo y el movimiento
del primer eslabn, se utiliz un servomotor con
mayor torque, funcionando con las mismas
caractersticas que el HITEC HS-311.
Velocidad: (sec/60o): 0.19
Torque (Kg-cm): 17kg
Tamao (mm): 40 x 20 x 37
Peso (g/oz): 43/1.51
Precio: $350.00
Cantidad: 2
Gripper: pinza que abre o cierra para tomar objetos
pequeos con el brazo robtico, la apertura del
gripper es de 1.3 pulgadas.
Precio:$ 300.00
Tubo de aluminio ligero: utilizado para construir los
eslabones del brazo robtico, debido al material con
el que est fabricado, no se requiere demasiado
torque para poder levantar dicho eslabn.
Precio: $30.00
Cantidad: 2
109
el
correcto
110
Material
Kinect
Soporte para
servomotor
Mdulo bluetooth
Servomotor 3.7kg
Servomotor 17kg
Pinza
Tubo de aluminio
Tabla fenlica
Batera acidoplomo
PIC18F4550
Base 40pin
Cristal 20Mhz
Conector USB
Capacitor 22pf
Total
Cantidad
1
3
Costo total
$1800.00
$825.00
1
2
2
1
2
1
1
$250.00
$210.00
$350.00
$300.00
$30.00
$18.00
$120.00
$250.00
$420.00
$700.00
$300.00
$60.00
$18.00
$120.00
1
1
1
1
2
$120.00
$5.00
$15.00
$8.00
$2.00
$120.00
$5.00
$15.00
$8.00
$4.00
$4645.00
111
Anexo 2
2.1 Caractersticas del PIC18F4550
Es un microcontrolador de la familia pic18 fabricado por Microchip, el cual cuenta con las
siguientes caractersticas:
Memoria RAM de datos: memoria SRAM interna de 2048 bytes en la que estn
incluidos los registros de funcin especial. Almacena datos de forma temporal
durante la ejecucin del programa y puede ser escrita/leda en tiempo de ejecucin
mediante diversas instrucciones.
112
113
114
115
116
117
Anexo 3
3.1 Grficas de descarga de la batera de cido-plomo
</Node>
</ProductionNodes>
</OpenNI>
118
Anexo 4
4.1 Plantilla del archivo xml para programacin del sensor
Archivo xml utilizado para la aplicacin
<OpenNI>
<Licenses>
<License vendor="PrimeSense" key="0KOIk2JeIBYClPWVnMoRKn5cdY4="/>
</Licenses>
<Log writeToConsole="false" writeToFile="false">
<!-- 0 - Verbose, 1 - Info, 2 - Warning, 3 - Error (default) -->
<LogLevel value="3"/>
<Masks>
<Mask name="ALL" on="true"/>
</Masks>
<Dumps>
</Dumps>
</Log>
<ProductionNodes>
<Node type="Depth" name="Image1">
<Configuration>
<MapOutputMode xRes="640" yRes="480" FPS="30"/>
<Mirror on="true"/>
</Configuration>
</Node>
<Node type="Image" name="Image2">
<Configuration>
<MapOutputMode xRes="640" yRes="480" FPS="30"/>
<Mirror on="true"/>
</Configuration>
</Node>
<Node type="User"/>
<Node type="Gesture"/>
<Node type="Hands"/>
</ProductionNodes>
</OpenNI>
119
lock (this)
{
Rectangle rectangulo = new Rectangle(0, 0, 640, 480);
BitmapData mapadatos = this.mapa_profundidad.LockBits(rectangulo,
ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
imagen_profundidad.GetMetaData(Metadata_profundidad);
ushort* apuntadorprofundidad =
(ushort*)imagen_profundidad.DepthMapPtr.ToPointer();
for (int a = 0; a < 480; a++)
{
byte* valores = (byte*)mapadatos.Scan0.ToPointer() + a *
mapadatos.Stride;
valores[0] = (byte)*apuntadorprofundidad;//canal 1
valores[1] = (byte)*apuntadorprofundidad;//canal 2
valores[2] = (byte)*apuntadorprofundidad;//canal 3
}
}
this.mapa_profundidad.UnlockBits(mapadatos);
}
return this.mapa_profundidad;
}
120
}
mapa_IR.UnlockBits(mapadatos);
return mapa_IR;
121
122
123
}
}
124
125
switch(variable)
{
case 1:
grados=RCREG;
break;
case 2:
gradosdos=RCREG;
break;
case 3:
gradostres=RCREG;
break;
case 4:
gradoscuatro=RCREG;
variable=0;
break;
default:
break;
126
//interrupcin Timer2
if(PIR1bits.TMR2IF==1) //bandera interrupcion timer2
{
PR2=120; //cargamos registro
contador++; //incrementamos contador
if(contador==60+grados)
//preguntamos
por la primera variable
{
LATBbits.LATB1=0;
//si el pulso
esta completo,terminamos el ciclo de trabajo
}
if(contador==60+gradosdos)
//segunda variable
{
LATBbits.LATB3=0;
//terminamos el
pulso de la segunda variable
}
if(contador==60+gradostres)
//segunda variable
{
LATBbits.LATB6=0;
//terminamos el
pulso de la segunda variable
}
if(contador==60+gradoscuatro)
LATBbits.LATB7=0;
}
//segunda variable
{
//terminamos el pulso de la segunda variable
//
colocando los bits en uno
if(contador == 3800)
//reiniciamos el pulso
if(contador==1800)
LATBbits.LATB1=1;
{
//iniciamos nuevo periodo
LATBbits.LATB3=1;
LATBbits.LATB6=1;
LATBbits.LATB7=1;
contador=0;
127
Anexo 5 Imgenes
128
Figura A. 5 Usuario 4 (1.60metros)
129