PROYECTO FINAL DE CARRERA
chayjgTesis6 de Noviembre de 2013
7.524 Palabras (31 Páginas)482 Visitas
PROYECTO FINAL DE CARRERA
Guiado gestual de un robot humanoide mediante un sensor Kinect.
Estudios: Ingeniería técnica en informática de sistemas. Autor: Sammy Pfeiffer
Director: Joan Aranda López
Año: 2011
Guiado gestual de un robot humanoide mediante un sensor Kinect.
2 / 60
Guiado gestual de un robot humanoide mediante un sensor Kinect.
Índice de contenido
1 Introducción 5
1.1 Kinect 5
1.2 ¿Cómo funciona Kinect? 7
1.3 Utilidad directa del sensor: Skeleton tracking 8
1.4 Robot humanoide: Bioloid 8
1.4.1 Servomecanismos: Dynamixels 10
2 Objetivos 11
3 Trabajos previos 13
3.1 OSCeleton, skeleton tracking 13
3.1.1 Protocolo OSC 13
3.1.2 OpenNI framework 13
3.2 Características Kinect 14
4 Diseño 15
4.1 Planificación temporal 15
4.2 Firmware de Bioloid 15
4.3 Adaptación de datos del esqueleto 15
4.4 Simulación del robot y cinemática inversa 16
5 Implementación 17
5.1 Programación del firmware del Bioloid para el acceso a los Dynamixel 17
5.2 Programación del simulador con cinemática inversa del Bioloid 18
5.2.1 Cinemática inversa 19
5.3 Programación del simulador de coordenadas de Kinect (3D) con el cambio sistema de
coordenadas 21
5.4 Programación del escalado de las coordenadas conseguidas tras el cambio de sistema de
referencia 22
5.5 Combinación de ambos simuladores para la aplicación final 24
6 Resultados 25
7 Análisis económico 29
7.1 Argumentos económicos del proyecto: 29
8 Conclusiones 31
9 Lineas futuras de trabajo 33
10 Bibliografía 35
11 Agradecimientos 37
12 Anexos: 39
12.1 Documentación de la aplicación, guía instalación, guía de uso 39
12.1.1 Bioloid 39
12.1.2 Ordenador 40
12.1.2.1 Instalación entorno Python Windows: 40
12.1.2.2 Instalación entorno python Linux: 40
12.1.2.3 Instalación OSCeleton 41
12.1.2.4 Uso de la aplicación 42
12.2 Anexo código fuente firmware Bioloid 43
12.3 Código fuente aplicación python: 46
12.4 Anexo código declaración estructura simulación Bioloid 57
12.5 Anexo código declaración del GUI 58
3 / 60
Guiado gestual de un robot humanoide mediante un sensor Kinect.
4 / 60
Guiado gestual de un robot humanoide mediante un sensor Kinect.
1 Introducción
1.1 Kinect
Ilustración 1: Sensor Kinect
Recientemente ha salido al mercado un interesante sensor, comercialmente llamado Kinect.Parafraseando a la Wikipedia encontramos que Kinect se puede definir como: “un controlador de juego libre y entretenimiento desarrollado por Microsoft para la videoconsola Xbox 360. Kinect permite a los usuarios controlar e interactuar con la consola sin necesidad de tener contacto físico con un controlador de videojuegos tradicional, mediante una interfaz natural de usuario que reconoce gestos, comandos de voz, y objetos e imágenes “.
Microsoft Research invirtió veinte años de desarrollo en la tecnología de Kinect. Fue anunciado por primera vez el 1 de junio de 2009 en la Electronic Entertainment Expo 2009 como "Project Natal".
El sensor de Kinect es una barra horizontal de aproximadamente 23 cm conectada a una pequeña base circular con un eje de articulación de rótula, y está diseñado para ser colocado longitudinalmente por encima o por debajo del televisor.
Kinect se compone principalmente de:
-Una cámara tradicional (Resolución 640x480 RGB 30fps VGA). -Un emisor de infrarrojos.
-Una cámara de infrarrojos.
-4 Micrófonos (16bit sampling rate: 16Hz). -Un motor.
5 / 60
Guiado gestual de un robot humanoide mediante un sensor Kinect.
Ilustración 2: Kinect desmontado
Ilustración 3: Imagen de profundidad en escala de grises, imagen webcam, profundidad en escala de colores
6 / 60
Guiado gestual de un robot humanoide mediante un sensor Kinect.
1.2 ¿Cómo funciona Kinect?
Ilustración 4: Esquema funcionamiento
Para conocer la distancia a la que se encuentra cada píxel de la imagen de profundidad se emite un a constelación de puntos con el emisor infrarrojo:
Ilustración 5: Constelación infrarroja Kinect
7 / 60
Guiado gestual de un robot humanoide mediante un sensor Kinect.
Entonces la cámara infrarroja detecta esta constelación y Kinect calcula la disparidad para cada píxel (la diferencia entre donde estaba el punto al proyectarlo a donde está en la proyección). A esto se le llama cámara de luz estructurada.
1.3 Utilidad directa del sensor: Skeleton tracking.
Ilustración 6: Ejemplo de Skeleton Tracking
Skeleton Tracking, o lo que es lo mismo, hacer seguimiento del cuerpo (esqueleto) de un usuario en tiempo real.
La situación actual es que Microsoft ha anunciado la salida de un SDK propio para usar el Kinect incluyendo Skeleton Tracking. Con lo cual ha surgido un movimiento para crear drivers y aplicaciones para Kinect mayormente opensource.
A partir de lo cual se ha creado OpenNI, una organización para promover la compatibilidad e interoperabilidad de dispositivos, aplicaciones y middleware de interacción natural (Natural Interaction).
En OpenNI han creado una librería para realizar Skeleton Tracking incluida en un paquete llamado NITE. Esta librería nos brinda seguimiento del cuerpo del usuario aportando las coordenadas en el espacio de cada uno de los puntos de interés (extremidades y articulaciones).
1.4 Robot humanoide: Bioloid
Un robot humanoide es robot antropomorfo que, además de imitar la apariencia humana, imita algunos aspectos de su conducta.
8 / 60
Guiado gestual de un robot humanoide mediante un sensor Kinect.
...