DESARROLLO Y EVALUACIÓN DE UN SISTEMA DE
TELEOPERACIÓN DE ROBOTS BASADO EN
RECONOCIMIENTO DE GESTOS
USANDO EL SENSOR KINECT
Autor: Alberto González de Dios
Tutor: Juan Manuel Montero Martínez
0
ÍNDICE
INTRODUCCIÓN



Contexto
Medios usados
Objetivos
PRIMERA PARTE: EVALUADOR DE GESTOS
1.
2.
3.
4.
5.
6.
Introducción a Kinect
Detección del Movimiento
Preprocesamiento del esqueleto
Algoritmo DTW
Evaluador de Gestos
Evaluaciones
SEGUNDA PARTE: CONTROLADOR DE ROBOT
7.
8.
Teleoperador de Robot Lego Mindstorm
Conclusiones
1
CONTEXTO
Hasta ahora…
•
Teleoperación de robots con mandos o joysticks
 Manos Ocupadas
 Movimientos artificiales pulsando botones de un mando
 Necesario aprender qué hace cada botón
•
Reconocimiento de gestos con cámaras RGB
 Movimientos en 2 dimensiones: sin profundidad y con
distorsión (objetos lejanos más pequeños)
 Realización de gestos siempre de frente
2
MOTIVACIÓN - NECESIDADES
Necesitamos…
•
Teleoperación de robots mediante gestos
 Manos Libres
 Movimientos naturales
•
Reconocimiento de gestos
 Movimientos en 3 dimensiones
 Gestos realizados en cualquier posición, no sólo de frente
 Reconocimiento instantáneo (algoritmo de reconocimiento eficiente)
•
Sistema sencillo y económico
3
MEDIOS USADOS
Para realizar este proyecto se utilizó…
•
Sensor Kinect (desde noviembre de 2010)
 Imágenes en 3 dimensiones (cámara RGB + sensor de profundidad)
 Array de micrófonos incorporado
 Disponible Kit de Desarrollo de Software (Kinect SDK)
 Económico (Desde 100€)
•
Robot Lego Mindstorm (desde julio de 2006)
 Sencillo de montar
 Disponible librerías en .Net para mover el robot (monobrick)
4
OBJETIVOS
EL OBJETIVO
Desarrollar y evaluar un Sistema de Teleoperación de robots basado en
reconocimiento de gestos
Para conseguir este objetivo es necesario…
•
Desarrollar un Evaluador de Gestos
 Detectar el movimiento que corresponde a un gesto
 Detectar qué gesto es
•
Integrar la librería de detección de gestos en un sistema de
teleoperación de robots
5
KINECT
• Características:
– Cámara RGB
– Sensor de Profundidad
– Array de Micrófonos
• Funcionamiento
– Escáner 3D de luz estructurada: Kinect proyecta con el emisor de luz infrarroja
un patrón aleatorio de puntos, y la cámara infrarroja captura la luz reflejada.
Como el patrón emitido es conocido por Kinect, la cámara puede obtener la
información de profundidad a través de algoritmos de visión estéreo, como la
correlación cruzada o la triangulación estérea.
6
KINECT – DATOS ENVIADOS
• Datos enviados cada 33 ms (30 FPS):
– Imagen en color (Imagen RGB)
– Imagen en escala de grises (Imagen de Profundidad)
– Esqueletos detectados
• Esqueletos
– Conjunto de 20 puntos que definen el esqueleto de una persona
– Una vez que Kinect detecta un esqueleto, realiza un seguimiento.
• La detección de un esqueleto necesita un procesamiento y un conjunto de imágenes
nuevas, lo que se traduce en tiempo (cada imagen nueva se envía cada 33 ms).
• El seguimiento es un proceso mucho más simple, y que requiere sólo una imagen nueva
– Kinect es capaz de detectar hasta 6 personas, y realizar tracking sobre 2 de
ellas a la vez
7
KINECT – RANGO DE VISIÓN
• Rango de Visión:
– Profundidad: desde 80 cm hasta 4 metros
– Rango Horizontal: apertura de 58º
– Rango Vertical: apertura de 43º
• A una distancia de 2.5 metros:
– Rango Horizontal: Desde -1.2 metros hasta 1.2 metros del Kinect
– Rango Vertical: Desde -1 metro hasta 1 metro del Kinect
8
MOVIMIENTO - DEFINICIÓN
• Movimiento
 Variación de las posiciones de los puntos que forman el esqueleto
• Cantidad de Movimiento
 Cantidad de movimiento un punto del esqueleto P con coordenadas
cartesianas (x,y,z):
 =  

=  ( 
+


+


)
 Cantidad de movimiento de un punto del esqueleto entre frames (∆ = 33 ):

 =  = 2 − 1 + 2 − 1 + 2 − 1
∆
 Cantidad de movimiento normalizada de un esqueleto entre frames:
=
20
= 1 
=
20
= 1
2 − 1
9
+ 2 − 1
+ 2 − 1
MOVIMIENTO - DISTANCIA
• Distancia o energía entre esqueletos
 Suma ponderada de la distancia entre los puntos correspondientes de cada esqueleto
20
= 1
=
 ∙ ( ,  )
 La distancia es la raíz cuadrada de la energía normalizada:
  ,  =
 − 
2
+  − 
2
+  − 
 Dependiendo de los pesos ci , se definen varios tipos de distancia:
 Distancia completa
 Distancia selectiva
 Distancia con umbral
 Distancia selectiva con umbral
10
2
MOVIMIENTO - UMBRALES
• Sin umbral
• No hay un umbral que marque el comienzo y el final de un gesto
• En el entrenamiento se realiza una grabación de duración fija (ej. 3 segundos)
• En la detección, se establece es una ventana de tiempo máxima (ej. 3
segundos) y continuamente se están comparando esa ventana con los gestos
entrenados.
• Umbral de Energía
 Se define el umbral de energía como la energía mínima necesaria para
cambiar de estado
 Considerando 2 estados básicos, reposo y gesto, superar el umbral supone
iniciar el gesto; y caer por debajo del umbral, terminar el gesto.
• Umbral de tiempo
 Se define el umbral de tiempo como la duración mínima de tiempo necesaria
durante la cual la energía de un movimiento tiene que estar superando un
cierto umbral para cambiar de estado.
11
MOVIMIENTO – MÁQUINA DE ESTADOS
Motivación
• Para filtrar el ruido es necesario aplicar umbrales de energía y tiempo.
• Estos umbrales definen la transición de un estado a otro, pero necesitamos
establecer los estados
• Modelando una máquina de estados con varios umbrales de energía y
tiempo, se consiguen unos umbrales dinámicos en función del estado en
que se encuentre el movimiento
Máquina de 4 Estados




Reposo
Inicio de Movimiento
Movimiento
Fin de Movimiento
12
LOS PROBLEMAS DE LA POSICIÓN Y DEL GIRADO
DISTANCIA ENTRE ENTRE EL GESTO ENTRENADO Y EL EVALUADO EN DISTINTA POSICIÓN
DISTANCIA ENTRE EL GESTO ENTRENADO Y EL EVALUADO EN LA MISMA POSICIÓN
(SUMA DEdos
LOS MÓDULOS
DE LAS FLECHAS
BLANCAS)
Cuando comparamos
gestos, aparecen
2 problemas:
(SUMA DE LOS MÓDULOS DE LAS FLECHAS BLANCAS)
DISTANCIA MÁS GRANDE QUE EL ANTERIOR
• Gesto entrenado y evaluado realizados en distinto lugar
• Aumenta la distancia entre los gestos iguales.
• Puede disminuir la distancia entre gestos distintos
 En el entrenamiento (izquierda),
• Gestos comparados sin estar de frente al Kinect
mueve la mano izquierda
• Cambia totalmente el movimiento
 El la evaluación (derecha), mueve la
mano derecha
Solucionamos estos problemas mediante transformaciones lineales
•
 Ambos gestos realizan el mismo
El preprocesamiento del esqueleto son transformaciones
lineales en 3
recorrido
dimensiones que se realizan antes de procesar
los datos del esqueleto para
 La distancia entre los dos gestos es
prácticamente cero!!!
calcular la distancia entre esqueletos
13
PREPROCESAMIENTO DEL ESQUELETO
Los preprocesamientos implementados son:
•
Centrado

•
Se realiza una traslación del esqueleto para situar la cadera en (0,0,1),
siendo el Kinect el punto de Referencia (0,0,0)
Rotado


Se realiza una rotación del esqueleto para que esté siempre de frente al
Kinect
Dos tipos de rotado:
 Rotado mediante cambio de base. La nueva base está formada por:
 Eje X = Recta que une los hombros
 Eje Y = Columna vertebral
 Eje Z = Perpendicular a Eje X y Eje Y
 ESQUELTO
Rotado mediante
giro sobre el eje Y (Columna
Vertebral).
ORIGINAL
ESQUELETO
CENTRADO
14
ESQUELETO ORIGINAL GIRADO
ESQUELETO GPROCESADO GIRADO
ALGORITMO DTW
Objetivo:
• Encontrar el alineamiento óptimo entre 2 secuencias temporales
Aplicado a este proyecto…
• Encontrar el alineamiento óptimo entre 2 gestos (secuencias de esqueletos)
Camino de Alineamiento
• Un camino de alineamiento es una secuencia  = 1 , 2 , … , 
 ,  ∈ 1,  × 1, 
/  =
∀  ∈ [1, ] cumple las siguientes condiciones:
 Condición de frontera: 1 = 1,1 ∧  = (, )
 Condición de monoticidad: 1 ≤ 2 ≤ … ≤  ∧ 1 ≤ 2 ≤ … ≤ 
 Condición de desplazamiento: +1 −  ∈
15
1,0 , 0,1 , 1,1
∀  ∈ [1,  − 1]
ALGORITMO DTW
Obtención del Camino óptimo
1) Se calcula la matriz de distancias acumuladas:
D es la distancia acumulada, y c es el coste o distancia entre dos esqueletos
2) Se obtiene el camino óptimo empezando por  = ,  y :
Aplicación al reconocimiento de gestos
• Se compara el gesto detectado con cada uno de los gestos de entrenamiento, y
aquél cuya distancia acumulada en el último punto, D(N,M), sea menor, es el
16
gesto buscado.
EVALUADOR DE GESTOS
Elementos clave del Evaluador de Gestos
•
La librería, donde se implementa todas las funcionalidades del evaluador de gestos
•
El Kinect
•
La base de datos
•
La aplicación gráfica, que hace uso de la librería , del Kinect y de la base de datos
17
EVALUADOR DE GESTOS – LIBRERÍA
¿Por qué se usa una librería?
•
Porque así desde cualquier aplicación que queramos usar las funcionalidades y la
potencia del evaluador de gestos, simplemente importando esta librería.
En la librería se implementa:
•
Preprocesador de esqueletos (centrado y rotados)
•
Grabador y Reproductor de gestos

Los gestos se graban escribiendo en un fichero de texto por cada frame en
binario: el tiempo transcurrido desde el último frame, el plano del suelo y,
como un objeto serializado, todos los esqueletos detectados .

Los gestos se reproducen lanzando eventos después de cada tiempo
transcurrido entre frames con el contenido de cada frame grabado.
•
Algoritmo DTW
•
Reconocedor de gestos
18
EVALUADOR DE GESTOS – BASE DE DATOS
¿Por qué usar una base de datos?
•
•
El acceso a la información es mucho más rápido que en ficheros de texto
Se pueden realizar consultar sobre grandes cantidades de datos filtrando
los resultados. Ideal para extraer datos concretos de las evaluaciones:
Datos guardados en base de datos
•
•
•
•
Usuarios
Configuraciones
Evaluaciones
Gestos, pero sólo la referencia al archivo de texto con cada gesto.
Datos no guardados en base de datos
•
La información de los esqueletos se guardan como objetos serializados en
ficheros de texto. Al ser datos muy grandes y en binario, es mejor
guardarlos en ficheros de texto para no sobrecargar la base de datos.
19
EVALUADOR DE GESTOS – BASE DE DATOS
Base de datos
•
MySQL porque es rápido, gratuito y existe un conector para C#
Implementación con EntityFramework (EF) mediante la técnica Code First
•
•
EntityFramework es un conjunto de APIS de .Net que permite interactuar con bases
de datos. Existen 3 técnicas para interactuar con bases de datos:

Code First: se escribe el código y EF genera la base de datos a partir del código

Database First: se crea la base de datos y EF genera entidades POCO para usar
en el código

Model first es un método donde se diseña la base de datos, y EF genera la
base de datos y el código
Code First:


Cada clase se mapea en una tabla de la base de datos, y cada propiedad de la
clase, se mapea en una columna de la tabla.
Se puede modificar la estructura de la base de datos, y EntityFramework
regenera la base de datos automáticamente.
20
EVALUADOR DE GESTOS – BASE DE DATOS
Primero….
Y Entity Framework crea después…
21
EVALUADOR DE GESTOS – SOFTWARE
Características generales
•
Aplicación gráfica en Windows, programada en C# usando WPF con .Net 4.5
•
Sistema de Usuarios:
•
•

Ventana principal de Login

Cada usuario tiene su propia configuración, gestos entrenados y evaluaciones
Dividida en dos partes

Evaluación

Entrenamiento
Todos los parámetros de detección de gestos se pueden configurar, así como las
evaluaciones y el entrenamiento
•
A las secciones se accede pulsando los botones correspondientes, pero existe una
barra de navegación en la parte superior que permite volver atrás o adelante
22
EVALUADOR DE GESTOS – SOFTWARE
En la sección de entrenamiento
•
Se puede realizar un entrenamiento automático o que el sistema pare después de
entrenar cada gesto. Una vez parado, podemos reproducir el gesto, volver a
grabarlo o entrenar el siguiente gesto.
•
Los gestos a entrenar son configurables. Por defecto hay 11 gestos, todos
correspondientes a movimientos con los brazos
•
Para entrenar cada gesto, primero se reproduce una animación para que el usuario
realice la misma acción
•
Los gestos entrenados se pueden reproducir, volver a grabar o borrar.
•
En la reproducción de gestos, se puede:
•
Reproducir a distinta velocidad (más rápido o más lento)
•
Manejar la vista en 3 dimensiones, rotando o moviendo la vista
23
EVALUADOR DE GESTOS – ENTRENAMIENTO
24
EVALUADOR DE GESTOS – SOFTWARE
En la sección de evaluación
•
Se puede realizar una evaluación automática o que el sistema pare después de
entrenar cada gesto. Una vez parado, podemos reproducir el gesto, volver a
grabarlo o entrenar el siguiente gesto.
•
•
Tres tipos de evaluación:

Gestos configurados.

Gestos aleatorios

Sólo detección de gestos
Para evaluar cada gesto, primero se reproduce una animación para que el usuario
realice la misma acción
•
Después de cada evaluación, se pueden calcular los resultados de la evaluación
pulsando en la opción de Calcular Evaluación.
•
Los resultados de las evaluaciones son guardados en base de datos
25
EVALUADOR DE GESTOS – DETECCIÓN
26
CONFIGURACIÓN
DE
EVALUACIÓN
DETECCIÓN
DE
ENMOVIMIENTO
MODO LIBRE
REPRODUCIR
PANTALLA
PÁGINA
PANTALLA
GESTOS
DE
PRINCIPAL
REGISTRO
CONFIGURACIÓN
RESULTADOS
DE
DE
LAINICIAL
LA
EVALUACIÓN
EVALUACIÓN
EVALUADOR
DELA
GESTOS
–GRABADOS
PLATAFORMA
27
EVALUACIONES
Se han realizado 3 evaluaciones diferentes:
1)
Evaluación de 11 gestos con el cuerpo de frente a Kinect
2)
Evaluación de 11 gestos con el cuerpo girado 45º respecto al Kinect
3)
Evaluación de 16 gestos: 11 gestos del entrenamiento y 5 gestos no entrenados
Con 7 perfiles de configuración en cada evaluación:
1)
Por Defecto
2)
Esqueleto Centrado
3)
Esqueleto Centrado y Rotado mediante Cambio de Base
4)
Esqueleto Centrado y Rotado mediante Giro sobre el eje Y
5)
Esqueleto Centrado y Rotado - Desplazamiento (Sakoe-Chiba) = 2
6)
Esqueleto Centrado y Rotado - Desplazamiento (Itakura) = 2
7)
Esqueleto Centrado y Rotado - Distancia selectiva con umbral
28
EVALUACIONES
Con 11 gestos entrenados:
1)
Ambas Manos Abajo - Subir y Bajar
2)
Ambas Manos Abajo - Subir y Bajar de Frente
3)
Ambas Manos Abajo - Subir por completo y Bajar de Frente
4)
Mano Derecha Abajo - Subir y Bajar
5)
Mano Derecha Abajo - Subir y Bajar de Frente
6)
Mano Derecha Abajo - Subir por completo y Bajar de Frente
7)
Mano Izquierda Abajo - Subir y Bajar
8)
Mano Izquierda Abajo - Subir y Bajar de Frente
9)
Mano Izquierda Abajo - Subir por completo y Bajar de Frente
10) Saludo Mano Derecha
11) Saludo Mano Izquierda
29
EVALUACIONES
Por cada evaluación se analizan:





Los gestos acertados
Las distancias de los gestos detectados y la distancia entre el gesto detectado y
el siguiente gesto más próximo
Gráficas con probabilidad acumulada de distancia y probabilidad acumulada de
distancia normalizada por el número de frames
Matrices de confusión para distintos umbrales de rechazo
Tabla de valores de Acierto y Valor F-1 para distintos umbrales de rechazo
Umbrales de rechazo
Hay dos tipos de umbral de rechazo:
• UDG - Umbral de rechazo teniendo en cuenta la distancia del gesto detectado:
Distancia máxima que puede tener un gesto detectado para no ser descartado
• UGDS - Umbral de rechazo teniendo en cuenta la distancia entre el gesto
detectado y el segundo
Distancia mínima que puede haber entre el gesto detectado y el segundo más
30
próximo para no ser descartado
30
EVALUACIONES – MATRIZ DE CONFUSIÓN
31
EVALUACIONES
Ejemplo: para el perfil de Centrado y Rotado

Distancias y gestos acertados:

Gráficas con probabilidad acumulada de distancia y probabilidad acumulada de
distancia normalizada por el número de frames

Matrices de confusión para distintos umbrales de rechazo

Tabla de valores de Acierto y Valor F-1 para distintos umbrales de rechazo
32
COMPARATIVA DE EVALUACIONES
Perfiles de configuración comparados:
1)
2)
3)
4)
5)
D - Por Defecto. Sin preprocesado.
C - Centrado.
CR-B - Centrado y Rotado mediante
cambio de base.
CR-G - Centrado y Rotado mediante giro.
CR-U - Centrado y Rotado. Distancia
Selectiva con Umbral
Valores comparados por cada PC (Perfil
de Configuración):
•
•
•
•
UDG - Umbral de distancia del gesto
detectado
UGDS - Umbral de distancia entre el gesto
detectado y el segundo
AC - Porcentaje de Aciertos
F1 - Valor F1
33
TELEOPERADOR DE ROBOT MINDSTORM
Usamos el Robot Mindstorm porque:
•
Puede mover brazos y piernas (servomotores en brazos y piernas)
•
Fácil de manejar
•
Permite enviar comandos desde un programa en C# (mediante WIFI o USB)
Movimiento del Robot mediante:


Voz
•
Microsoft Speech Platform
•
Archivo de texto con órdenes
•
Umbral de confianza > 0.3
Gestos
•
Integración con el Evaluador de Gestos
•
En la configuración, se asocian los posibles movimientos del robot a los
gestos entrenados.
34
TELEOPERADOR DE ROBOT CON GESTOS
35
TELEOPERADOR DE ROBOT CON VOZ
36
CONCLUSIONES
•
Limitaciones del Kinect:
 Distancia recomendada en torno a 2.5 metros del Kinect.
•
Umbrales de energía de tiempo y tiempo para la detección de gestos :
 Plataforma configurable para distintos umbrales.
•
Algoritmo DTW:
 Robusto en la detección de gestos con preprocesamiento del esqueleto.
 Sólo necesita un patrón con que comparar
•
Perfil de configuración:
 Mejores resultado con el perfil Centrado y Rotado mediante cambio de base
•
Umbral de rechazo
 Los mejores valores de acierto y valor F-1 se obtienen con UDG (Umbral de rechazo
teniendo en cuenta la distancia del gesto detectado)
•
Acierto y Valor F-1
 Evaluaciones realizadas con valores de precisión y F-1 de más del 90%
37
PREGUNTAS
Todo el material está disponible en http://alberto.gonzalezdedios.es/pfc :

Código fuente del proyecto publicado en GitHub bajo licencia MIT

Memoria

Vídeos

Transparencias
38
APÉNDICE…
39
KINECT 2.0
Nueva versión de Kinect (lanzamiento verano 2014)
• Características:
– Cámara 3D (Sensor CMOS 3D)
– Array de Micrófonos
• Funcionamiento
– Tiempo de Vuelo. Distintos tipos:
• Luz modulada con detector de fase: Kinect emite una señal de luz, y mide el
desfase de la señal reflejada.
• Tiempo de vuelo directo: Kinect emite una señal de luz, y mide el tiempo que
la señal
en ir y→
volver.
La distancia máxima
viene= 7.5 metros
f tarda
~ 20
MHz
Distancia
máxima
40
VARIANTES DTW
PARALELOGRAMO ITAKURA
BANDA DE SAKOE-CHIBA
41
VARIAS PERSONAS EN LA ESCENA
• Si hay varias personas en la escena, se grabarán y se reproducirán todos los
esqueletos detectados
• A la hora de calcular la energía, sólo se tiene en cuenta el primer esqueleto del
que se está realizando tracking.
• Un gesto sólo tiene un esqueleto por frame (sólo un esqueleto detectado):
42
PERSONAS DE DISTINTO TAMAÑO
• Programa diseñado para que cada usuario grabe sus propios gestos de
entrenamiento
• Sin embargo, es posible usar los gestos de entrenamiento de otra
persona.
• Si la persona del gesto entrenado es mucho más grande o pequeña, la
distancia de los gestos parecidos aumentará, y la de gestos distintos
puede aumentar o disminuir.
• En una futura mejora, se podrían normalizar los esqueletos
43
Descargar

Presentacion PFC - Alberto Gonzalez de Dios