Acuerdo entre Showleap y el ITCL para desarrollar el primer traductor bidireccional de lengua de signos

Showleap Technologies y el Instituto Tecnológico de Castilla y León han acordado colaborar en el desarrollo del software de traducción, un proyecto pionero en España cuyas primeras pruebas podrán verse el 6 y el 7 de octubre en el South Summit 2016 , evento tecnológico de referencia que se ha consolidado como el epicentro del talento tecnológico en España y Latinoamérica.

Nuestro objetivo es ofrecer una traducción bidireccional en tiempo real que permita la comunicación entre sordos y oyentes sin que ninguno tenga que renunciar a expresarse en su propia lengua. Este es el mayor avance de nuestro proyecto.

En Showleap estamos desarrollando una tecnología pionera para reconocer el signado de una persona sorda en LSE (Lengua de Signos Española) y traducirlo al castellano (lenguaje oral). Por su parte, el ITCL se centrará en el desarrollo del avatar que se encarga de la traducción voz-LSE, un sistema que ya es capaz de reproducir más de 2.000 signos y mostrarlos en tiempo real formando oraciones.

Showleap en La Brújula de Onda Cero

«Imaginaos las aplicaciones que este traductor puede tener a nivel educativo o de la administración pública». Así nos presentaba David Robles en su sección ‘What’s Cooking’, el espacio sobre emprendedores del programa radiofónico.

Escucha aquí la entrevista:

Emilio Guerra, nuestro CEO, explicó el funcionamiento del software de traducción y desvelamos que estamos trabajando en la programación de un brazalete que nos permitirá realizar una traducción mucho más precisa. Next stop: South Summit!

Solo un par de apuntes: preferimos sordos y lengua de signos 😊¡Muchas gracias a todo el equipo por la oportunidad!

Showleap gana la tercera edición de Startup Alcobendas

¡Hemos ganado! Después de cinco meses de aceleración, el traductor de lengua de signos que estamos desarrollando ha sido el proyecto mejor valorado por el panel de inversores, grandes empresas y agentes del ecosistema emprendedor que decidió ayer el ganador de la tercera edición Startup Alcobendas.

Foto: Ayuntamiento de Alcobendas
Foto: Ayuntamiento de Alcobendas

El acto estuvo presidido por el Concejal de Economía y Nuevas Oportunidades, Agustín Martín, y por Ignacio García de Vinuesa, alcalde de Alcobendas, y las startups finalistas en este demo day presentaron sus proyectos durante cinco minutos.

Desde aquí queremos agradecer a Cink Emprende y al Ayuntamiento de Alcobendas la confianza que han tenido en nosotros y todo lo que nos han enseñado en este periodo de aceleración.

Lee más en enalcobendas.es: Un software que permitirá comunicarse a sordos y oyentes, la mejor startup de Alcobendas

2016: nuestro año

Hace poco más de un año estrenamos este blog compartiendo con vosotros los primeros pasos de Showleap como proyecto (lo hicimos en cuatro partes: I, II, III y IV); y, la verdad, es que este 2015 ha dado para mucho. ¡Hacemos repaso!

Contenido de calidad en el blog

Era nuestro objetivo principal. Queríamos informar personalmente de los avances del proyecto, pero por encima de todo queríamos que el blog se llenara, con el tiempo, de contenido de calidad que fuera de utilidad para nuestros seguidores y para cualquiera que tuviera un mínimo interés por la tecnología o la lengua de signos.

A lo largo del año, desde nuestro departamento de Desarrollo hemos explicado las principales características de Leap Motion y también hemos entrado en su configuración, tanto a nivel usuario como para desarrolladores. Por su parte, Carmen Quiles, quien nos ha asesorado a lo largo de todo el proyecto en materia de LSE, ha publicado varios posts sobre la gramática básica de la Lengua de Signos Española.

Gracias a ello acabamos el año con muy buenas noticias en cuanto a posicionamiento: el blog de Showleap está entre los primeros resultados de búsqueda en Google para “funcionamiento leap motion”, “características leap motion” y “gramática lengua de signos”, por delante de grandes blogs de tecnología como Xataka o, respecto a la LSE, de la web del CNLSE o la Biblioteca Virtual Miguel de Cervantes.

Nuevas incorporaciones

A mediados de año nos tuvimos que parar a pensar en el futuro del proyecto. Buscábamos inversión para continuar con el proyecto pero apenas teníamos experiencia y quizá no llamábamos a las puertas adecuadas. Nadie podrá decir que no lo intentamos, eso sí.

En verano, Emilio Guerra y Blanca Alonso se incorporaron al proyecto y, con nuevo organigrama, constituimos Showleap Ltd con seis socios fundadores.

Foro de inversión Madri+d

Tras varias gestiones en Madrid, nos reunimos con la red de inversores Business Angels Network madri+d y nos dieron la oportunidad de presentar nuestro proyecto en el XIX Foro de Inversión madri+d, punto de encuentro de proyectos y empresas tecnológicas que se encuentran en fases tempranas de desarrollo y que buscan financiación. Varios inversores se interesaron por Showleap y continuamos en contacto con varios de ellos, madurando posibles inversiones y/o colaboraciones que tienen muy buena pinta.

Internacionalización

Otra de las cosas de las que estamos muy orgullosos es de haber generado interés internacional. Hace unos meses, Clara Luz Álvarez, miembro del Sistema Nacional de Investigadores de México e investigadora de la Universidad Panamericana, se puso en contacto con nosotros para presentar Showleap en América Accesible, un congreso en el que se debate sobre políticas de accesibilidad en todo el continente americano.

Apoyo del colectivo sordo

Conocer la opinión del colectivo al que te diriges es imprescindible para la viabilidad de cualquier producto. Y, por eso, estamos también particularmente satisfechos con este punto. Además del feedback que recibimos de los particulares y empresas que conocen el proyecto, hemos conseguido presentar nuestro prototipo en el Centro de Normalización Lingüística de la Lengua de Signos Española (CNLSE), organismo de titularidad publica que trabaja por la normalización de la LSE y contribuye a garantizar los derechos lingüísticos de sus usuarios.

Además de poder intercambiar opiniones y conocer las necesidades reales del colectivo sordo respecto a una tecnología como la que hemos desarrollado en Showleap, tras probar nuestro prototipo, la fundación ha redactado un informe con su valoración, tanto a nivel técnico como lingüistico, animándonos a continuar con su desarrollo y ofreciéndonos su colaboración para llevarlo a cabo. Otras entidades como la Fundación ONCE también tienen conocimiento del proyecto y lo están evaluando.

Y para 2016…

Para 2016 tenemos pendientes muchas cosas, aunque aún no os las podemos contar todas (¡siempre hay que guardarse algo!). Sí podemos deciros que, después de desarrollar el primer prototipo de nuestro traductor, hemos comprobado que nuestro producto es viable y ya estamos realizando las gestiones necesarias para conseguir la financiación que nos permita acelerar el desarrollo y poner a punto el software de traducción.

Además, estamos entre los 18 prefinalistas de StartUp Alcobendas, aceleradora a la que se presentaron más de 100 proyectos en su tercera edición. En enero sabremos si accedemos al programa —junto a otros ocho proyectos—, con todo lo que ello conlleva: formación, mentoring y acceso a empresas e inversores. De StartUp Alcobendas han salido empresas con muchísimo potencial, como Metrikea, que ganó la pasada edición y recientemente ha sido seleccionada por el Instituto Tecnológico de Massachusetts como una de las 40 empresas con mayor potencial tecnológico de España.

Pronto os podremos contar más y —esperemos— mejor. ¡Vamos a necesitar vuestro apoyo! Hemos desarrollado el software de traducción al 90 % y ahora solo necesitamos un pequeño empujón que nos ayude a hacer posible esta gran labor social. Nosotros pondremos todas nuestras ganas.

ShowLeap en el congreso ‘América Accesible’, que se celebrará en Medellín

El año pasado, Sao Paulo (Brasil) acogió por primera vez América Accesible, un encuentro para apoyar la implementación en toda América de tecnologías accesibles para personas con discapacidad. El objetivo de este congreso es encontrar estrategias y prácticas para asegurar que las TIC sean accesibles e identificar los roles y las acciones más seguidas por los gobiernos, el sector privado, el mundo académico y la sociedad civil americana; y, en este sentido, desde el evento se apela al compromiso internacional para juntar esfuerzos e implementar políticas, normas y códigos de conducta destinados a promover la plena inclusión de las personas con discapacidad en la sociedad.

Este año , la sede del congreso será Medellín (Colombia) y por allí pasarán, del 4 al 6 de noviembre, diferentes profesionales y representantes de todas las partes involucradas para debatir sobre la importancia de la tecnología para empoderar a las personas con discapacidad, destacando que a través del desarrollo de herramientas, políticas y estrategias, es posible eliminar las barreras y permitir el desarrollo humano y la inclusión social.

Hace unos días, la investigadora mexicana Clara Luz Álvarez se puso en contacto con nosotros para interesarse por ShowLeap y para nosotros es un orgullo anunciaros que Clara presentará nuestro proyecto en su intervención en el congreso, donde hablará sobre diferentes casos de implementación de políticas de accesibilidad. ¡Muchas gracias!

Showleap se presentará en el XIX Foro de Inversión madri+d

Los foros de inversión madri+d son un punto de encuentro de proyectos y empresas tecnológicas que se encuentran en fases tempranas de desarrollo y que buscan financiación en capital, aunque en muchos casos los proyectos presentados también buscan acuerdos de colaboración de gestión, comercialización o de otro tipo. La 19ª edición se celebrará el próximo 6 de noviembre y Showleap es una de los 21 proyectos seleccionados.

Llegamos al evento de la mano de Business Angels Network madri+d, una red de inversores privados especializada en proyectos tecnológicos cuyo objetivo es facilitar el acceso a la financiación de nuevas empresas tecnológicas en la Comunidad de Madrid durante sus primeros años de vida.

Ya estamos trabajando en la presentación y estamos seguros de que estaremos a la altura, aunque la competencia sea mucha. ¡Os informaremos si hay novedades!

Día Nacional de las Lenguas de Signos Españolas

02 Dia Nacional Lenguas Signos EspaEl reconocimiento de las lenguas de signos ha sido una lucha constante por parte de las personas sordas. Por eso, el año pasado el Consejo de Ministros declaró el 14 de junio como el Día Nacional de las Lenguas de Signos Españolas con el objetivo de fomentar la inclusión, la igualdad de oportunidades y participación en una sociedad diversa, multilingüe y multicultural.

Hace relativamente poco que la lengua de signos es reconocida oficialmente; sí, pero… ¿a qué siglo se remonta su origen? Existe muy poca información sobre el origen de esta lengua, pero todos estaremos de acuerdo en que surgió en el mismo momento en que se encontraron dos personas sordas en un mismo lugar, ¿verdad? Entonces nos preguntamos… ¿es una lengua tan antigua que incluso podría haber surgido antes que las lengua orales? Porque sería un error pensar que la lengua de signos depende de la lengua oral…

Aproximación a la historia de la lengua de signos

La lengua de signos es una lengua minoritaria y minorizada por la sociedad desde hace siglos. Nos remontamos al siglo IV: San Agustín expone que «los sordos y bufones significan con los gestos… mucho y casi todo lo que nosotros hablamos; de donde encontramos que  los gestos mismos son signos». Para que os hagáis una idea, en esta época, los sordos no tenían derechos de ciudadanía reconocidos, y esto se mantendría hasta el siglo XVI, época del Renacimiento. Es aquí donde a las personas sordas se les comienza a reconocer esa capacidad de pensamiento, esa inteligencia “dormida”… pero ¿cómo? Siempre desde la dependencia y el aprendizaje de la lengua oral.

Durante estos años, los monjes comienzan a educar a los niños sordos y así surgen algunos proyectos educativos enfocados a la enseñanza de las personas sordas con alto nivel adquisitivo (familias de nobles); y bueno, se puede decir que utilizan como herramienta de aprendizaje las señas. En este sentido, la figura de Fray Pedro Ponce de León pasará a la historia por considerarse el primer educador de personas sordas del mundo.

Un cambio de mentalidad es lo que necesitaba la sociedad. ¿Por qué los monjes y no otras personas fueron los que enseñaron a los niños sordos a expresar su pensamiento mediante los signos? Porque, antiguamente, los monjes estaban obligados a respetar el voto de silencio en los monasterios y se hacían comprender mediante señas. Fue por ello por lo que Ponce de León cayó en la cuenta de que era posible expresar la razón sin habla, así que utilizó con los niños sordos un sistema gestual de comunicación.

A lo largo de la historia, muchas personas han tenido como objetivo crear sistemas de enseñanza para las personas sordas (el Licenciado Lasso con su Tratado legal sobre los mudos de 1550, Juan Pablo Bonet con su Reduction de las letras y Arte para enseñar á ablar los Mudos de 1620…), sin embargo hay que esperar hasta la época de la Ilustración para encontrar un reconocimiento claro de que la lengua materna de las personas sordas es verdaderamente la lengua de signos. Esta afirmación se puede encontrar en el libro publicado por el abad L´Epée, Introducción de los sordomudos a través de los signos metódicos, (1776). Charles-Michel de l’Épée llegó a un acuerdo con los alumnos sordos, estableciendo signos artificiales pactados para poder comunicarse con ellos. Fue la primera vez que las personas sordas recibían educación de forma colectiva.

Tres años después, en 1779, se publica el primer libro en defensa de la lengua de signos,  ¡escrito por una persona sorda!: Observaciones de un sordomudo sobre un curso elemental de educación de sordos y mudos, de Pierre Desloges.

¿Y en España, qué ha pasado?

Aquí siguen esta misma línea de enseñanza a partir de los propios signos de los alumnos sordos. En 1795 se fundó el primer colegio para sordos en España y se publicó Escuela Española de Sordomudos o Arte para enseñarles a escribir y hablar el idioma español, de Lorenzo Hervás y Panduro, que aconseja enseñar a los sordos desde el medio más natural para ellos. Sin embargo, tenemos que destacar que el primer registro de signos españoles fue el Diccionario de mímica y dactilología de Francisco Fernández Villabrille (1851), donde se describen hasta 1547 signos. Este documento es muy muy importante, porque es el primer diccionario de Lengua de Signos en España.

No obstante, en 1880 se convocó un Congreso Internacional de Maestros de Sordomudos en Milán que fue un gran retroceso para las lenguas de signos. «¡Viva la palabra!» era el lema de aquel congreso, que provocó un cese de de la transmisión de las lenguas de signos y su desaparición de las escuelas en favor de una metodología oralista que vetaba a los sordos de su lengua natural. Pero, en su vida cotidiana, las personas sordas siguieron utilizando la lengua de signos, su lengua materna.

En los años 20, Lev Vigotski y William Stokoe fueron los que se dieron cuenta de que la lengua de signos cumplía con todos los requisitos necesarios para ser considerada una verdadera lengua. Poco a poco, las personas sordas volvieron a reactivar la lucha por el derecho a utilizar su lengua y como veis, hasta nuestros días, la lucha por su reconocimiento ha sido constante. Así, mediante la investigación y la puesta en duda de los métodos oralistas que se utilizaban en la educación de estas personas se han conseguido grandes logros: avances, pequeñas batallas que apreciamos hoy en día mediante los diferentes congresos celebrados en relación con la lengua de signos, los diccionarios editados y publicados, las legislaciones tanto en el ámbito estatal como autonómico, las asociaciones, federaciones y centros de interpretación…

A pesar de que la lengua de signos es una lengua muy novedosa, es difícil resumir en unos pocos párrafos su origen y lo que realmente ha significado para la Comunidad Sorda. Espero que os haya parecido interesante, y recordad: ¡la lengua de signos es una lengua viva y dinámica, en continua evolución!

Leap Motion (III): analizamos la API

Con esta entrada cerramos el análisis de Leap Motion que hemos estado haciendo en este blog. Primero te explicamos las características técnicas del dispositivo y, después, su principio de funcionamiento. Hoy vamos a hablar de la parte que más información nos dan en la página oficial, la SDK (versión 2.2.5.26752). Para ello vamos a ver sus partes fundamentales e intentaremos analizarlas ayudándonos de figuras.

Nosotros vamos a analizar la API desde el punto de vista del lenguaje de programación Java, pero debes saber que Leap Motion se puede programar en los siguientes lenguajes de programación y plataformas de desarrollo:

IMG1

Desde la API se puede obtener todo tipo de información tridimensional referente a antebrazos, manos, herramientas, dedos e incluso a los “huesos” de los dedos que se tratan como objetos. Además, desde la versión 2.1. se puede acceder a la información de las imágenes en formato RAW que recoge el dispositivo.

Visión general

El dispositivo utiliza el sistema de coordenadas cartesianas, en donde, desde la posición del usuario, el eje Y tiene valores positivos hacia arriba, el X hacia la derecha y el Z hacia el usuario.

IMG2

La API mide magnitudes físicas con las siguientes unidades:

IMG3

A continuación, vamos a analizar los componentes principales de esta versión. Para ello iremos viendo los objetos principales que el dispositivo puede rastrear, junto con el modelo anatómico que se usa para identificar cada uno, y también analizaremos las clases principales que se describen en la API.

Componentes principales

El principal objeto es Controller(), que se encarga de hacer de interfaz entre la aplicación que desarrollemos y el dispositivo. A continuación podemos ver los métodos que contiene:

IMG4

El que más nos interesa de esta clase es el método frame(), a través del cual podemos acceder al objeto Frame que deseemos; por defecto, al último que ha llegado desde el dispositivo. Además, como se puede observar en uno de los métodos constructores, se puede asociar un objeto de tipo Listener al objeto Controller para poder estar pendientes de los eventos que se produzcan en dicho Controller.

En la siguiente imagen vemos cuáles son los eventos que se producen en el Controller y pueden ser atendidos por el objeto Listener:

IMG5

Como podemos ver, hay diferentes eventos asociados al estado del objeto Controller que al final se traducen en eventos asociados al dispositivo hardware.

Otro método interesante —al igual que en el caso de Controller— es el onFrame(), evento que se produce cada vez que el dispositivo captura una imagen. Este es el evento principal, ya que dentro de este se pueden implementar todas las acciones que queremos hacer sobre los objetos que más adelante veremos (manos, dedos, gestos, etc.).

Así pues, hay dos modos de acceder a un objeto Frame:

  1. Desde el objeto Controller, a través del metodo frame()
  2. Desde el objeto Listener, a través de los eventos que se van disparando

Usar un modo u otro dependerá de si queremos analizar o no todos los frames que lleguen desde Controller. Si queremos analizarlos todos, accederemos a la información del objeto Frame a través de Listener; pero si, por el contrario, queremos analizar un objeto Frame cada cierto tiempo, se accederíamos desde el objeto Controller.

A continuación, podemos ver un diagrama de la relación entre el objeto Frame y los que se puede acceder a través de él:

IMG6

Como vemos, el objeto Frame es la raíz de todos los datos de los objetos que analiza Leap Motion. Frame nos da la posibilidad de acceder a todas las clases List, a partir de las cuales se puede acceder a una lista de objetos del mismo tipo y que aparecen en cada Frame.

La parte que nos interesa en ShowLeap es la que depende de HandList. Esta clase es una lista de objetos de tipo Hand que, a su vez, contiene objetos de tipo Arm, Finger, Pointable y Tool para cada objeto Hand.

Dentro del objeto Hand, podemos acceder a una lista de objetos Finger para cada Hand, en la que podemos acceder a información de cada objeto Finger que aparece en el frame y que forma parte del objeto Hand. A su vez, cada objeto de tipo Finger contiene objetos de tipo Bone. Además, como podemos observar, los objetos Finger y Bone son de tipo Pointable.

A continuación podemos ver un esquema de las partes que componen el objeto Hand con su representación anatómica:

IMG7

A continuación podemos ver la información principal que se puede extraer de cada objeto que depende de Hand:

Información principal incluida en el objeto Hand

  • posición y velocidad de la palma
  • dirección y vectores normales
  • base ortonormal

Información incluida en el objeto Finger

  • posición y velocidad de la punta
  • vector de dirección
  • base ortonormal
  • anchura y longitud

Información incluida en el objeto Bone

  • posición de la articulación
  • base ortonormal
  • anchura y longitud

Información incluida en el objeto Arm

  • posiciones de muñeca y codo
  • vector de dirección
  • base ortonormal
  • anchura y longitud

Información incluida en el objeto Pointable Tool

  • posición y velocidad de la punta
  • vector de dirección
  • base ortonormal
  • anchura y longitud

La siguiente clase a analizar es HandList, que es la encargada de almacenar los objetos Hand:

IMG8

Como se puede observar, a través de esta clase se puede extraer un objeto de tipo Hand mediante el método get(). Además, se puede saber cual es el objeto Hand que está más cerca del dispositivo, más a la izquierda o más a la derecha.

Como ya se ha dicho, HandList provee una lista de objetos Hand que aparecen en el Frame que se está analizando. Vamos a ver el objeto Hand:

IMG9

Como podemos ver, a través de esta clase se puede extraer muchísima información referente al objeto Hand. También se puede acceder a los objetos Finger y Arm que dependen de cada objeto Hand en concreto. Es decir, podemos extraer objetos de tipo dedo y antebrazo de cada mano que aparece en la imagen.

Este objeto puede extraer información basándose en el modelo anatómico de la mano, que fue mejorado en la versión 2.0 y ahora se basa en el esqueleto:

IMG10

Como podemos ver, ahora el modelo de la mano se basa en una estructura de puntos y líneas que describen mejor a un objeto de tipo mano. Con este nuevo modelo aparece el objeto Bones, que ha ayudado a que el dispositivo tenga mejor precisión a la hora de determinar la posición y el gesto de la mano, ya que gracias a la definición de estos puntos si el dispositivo no ve alguno de ellos puede determinar por ejemplo donde está el dedo que no ve o en qué posición está la mano.

En la API también se puede acceder a la información de cada dedo. Para ello se hace uso del objeto Finger, objeto que hay que extraer de la clase FingerList:

IMG11

Como vemos, esta clase es muy parecida a HandList, ya que es una clase que contiene objetos de tipo Finger. Además, también se puede extraer información del objeto Finger más cercano al dispositivo, ya sea a la derecha o a la izquierda. Por lo tanto, dentro de la clase FingerList aparecen los objetos Finger:

IMG12

Este objeto, en el modelo, equivaldría a la siguiente figura:

IMG9 IMG13

Como se puede ver, también se pueden extraer de cada objeto Finger diferentes objetos Bone. Estos objetos representan los puntos que definen al dedo en el modelo y que, en la anatomía definida en la API, estarían representados de la siguiente manera:

IMG14

Como vemos, cada objeto Bone puede ser de un tipo que será el que determine su identificador.

A continuación podemos ver mejor como es interpretado esto por la API:

IMG15

A continuación, podemos ver el objeto Bone:

IMG16

Como se puede observar en el diagrama de la clase, se puede extraer bastante información de cada objeto de tipo Bone. Gracias a este nuevo modelo matemático, se puede determinar mejor la posición de cada objeto y las direcciones, y esto dio lugar a la aparición de un nuevo objeto, el objeto Arm:

IMG17

Además, la API también nos provee de una serie de objetos que ayudan a poder extraer los datos que necesitemos, como por ejemplo el objeto Vector.

Conclusión

Como vemos, el dispositivo Leap Motion cuenta con una API muy extensa y optimizada para la extracción de datos característicos de las partes que forman una mano. Por lo tanto, es un dispositivo óptimo para nuestro proyecto, en el que vamos a analizar el comportamiento de las manos al realizar diferentes signos.

Leap Motion (II): principio de funcionamiento

¿Recordáis que en la entrada anterior vimos las partes de las que consta el sensor Leap Motion? Pues hoy nos toca analizar su funcionamiento. ¡Allá vamos!

Una de las razones por las que hemos elegido Leap Motion como sensor para nuestro traductor de lengua de signos es porque, para identificar correctamente los gestos, necesitamos obtener la máxima información posible de la configuración y del movimiento realizado por las manos. Tener información tridimensional es imprescindible para nuestro proyecto.

Existen diferentes técnicas para obtener parámetros de profundidad mediante un sistema de visión (por ejemplo, Kinect obtiene imágenes a color e imágenes de profundidad proyectando un mallado de puntos de los que analiza la distancia a partir de la distorsión del mallado). Con esta información se pueden obtener variables suficientes para poder determinar un gesto realizado. Nosotros vamos a centrarnos en el funcionamiento de Leap Motion; como siempre, ¡paso a paso!

Cómo funciona el controlador Leap Motion

El dispositivo ilumina la zona de cobertura mediante una luz infrarroja emitida a través de sus tres LEDs, con una longitud de onda de 850 nm. Esta zona de cobertura está limitada por el ángulo de visión de los sensores (esto también lo vimos en la entrada anterior) y por la corriente máxima que puede entregar la conexión USB.

IMG 1-Blog de ShowLeap-Leap Motion-Principio de funcionamientoCuando un objeto —en nuestro caso, las manos— es iluminado, se produce una reflexión de luz que llega al dispositivo e incide sobre las lentes de las dos cámaras. Estas lentes, de tipo biconvexas, concentran los rayos en el sensor de cada cámara; y los datos recogidos por los sensores se almacenan en una matriz (imagen digitalizada) en la memoria del controlador USB, en donde se realizan los ajustes de resolución adecuados mediante el microcontrolador del dispositivo.

Una vez ajustada la resolución, los datos de los sensores se envían directamente al driver instalado en el ordenador. Estos datos representan un valor de intensidad luminosa por cada píxel de la imagen capturada y se guardan en un buffer. El valor de intensidad luminosa se cuantifica a 8 bits para generar una imagen RAW en escala de grises —por tanto, hay un total de 256 posibles valores de luminosidad. Y nos falta otro dato: cada imagen tiene un tamaño de 640 x 120 px, con lo que en total hay 76.800 píxeles por imagen. ¿Y aún así es rápido el dispositivo? Pues si, porque las imágenes no son tratadas en el propio dispositivo; ¡este solo recoge y envía datos! 😉

Una vez que las imágenes de las dos cámaras llegan al driver son analizadas para identificar las manos y los dedos a partir de un modelo matemático de caracterización anatómico. Además, se obtiene la profundidad mediante un algoritmo que os explicamos  a continuación. Primero, mirad esto:

IMG 2-Blog de ShowLeap-Leap Motion-Principio de funcionamiento

Estas son las dos imágenes que llegan al driver del Leap Motion (se puede acceder a ellas a partir de la versión 2.1 de la API).

Pero antes de aplicar el algoritmo de identificación y el de profundidad hay que tener en cuenta que las lentes del dispositivo producen una distorsión en la imagen óptica , deformando el objeto observado. Vayamos por partes: ¿sabes que existen diferentes tipos de distorsión, dependiendo del tipo de lente que se use?

IMG 3-Blog de ShowLeap-Leap Motion-Principio de funcionamiento

Pues en Leap Motion se produce lo que conocemos como distorsión compleja: una mezcla entre la distorsión barril y la distorsión cojín.

IMG 4-Blog de ShowLeap-Leap Motion-Principio de funcionamiento

Para mejorar esta distorsión, Leap Motion tiene una opción de calibrado mediante la cual se obtiene un mapa de mallado de puntos de calibrado que se superpone a la imagen captada por cada sensor.

IMG 5-Blog de ShowLeap-Leap Motion-Principio de funcionamiento

Por lo tanto, cada buffer de datos de imagen que se envía al driver va acompañado de otro buffer que contiene los datos de distorsión. Estos datos son una rejilla de 64 x 64 puntos con dos valores de 32 bits cada uno. Cada uno de estos puntos representa un rayo proyectado en la cámara. El valor de un punto del mallado define la luminosidad de un píxel en la imagen y se pueden obtener los datos de luminosidad de todos los píxeles mediante interpolación.

Así pues, se puede obtener el valor de brillo para cualquier rayo proyectado. Los valores de la cuadrícula que caen fuera del rango [0…1] no corresponden a un valor de datos de la imagen y, por tanto, debemos ignorar estos puntos. Vamos a tratar de que se entienda mejor con un ejemplo:

IMG 6-Blog de ShowLeap-Leap Motion-Principio de funcionamiento

La imagen nos muestra una reconstrucción de los datos de una imagen con la distorsión corregida. El valor de brillo de cada píxel de la imagen se originó a partir de un rayo de luz que entró en la cámara desde una dirección específica. La imagen se reconstruye mediante el cálculo de las pistas horizontales y verticales representados por cada píxel y se puede encontrar el valor de brillo verdadero de los datos de la imagen utilizando el mapa de calibración. Las partes rojas de la imagen representan las áreas dentro de la prestación para la que ningún valor de brillo está disponible (el campo de visión real es de menos de 150 grados).

Una vez que han llegado las imágenes, las hemos corregido debidamente y el driver ha identificado las manos y los dedos, podemos determinar la posición de estas en el sistema de coordenadas cartesianas de Leap Motion a través de técnicas de visión estereoscópica. Porque, como ya hemos visto, Leap Motion es un sistema de captación de imágenes basado en la visión binocular y por ello podemos obtener distancias.

Básicamente, un sistema estereoscópico funciona del siguiente modo: gracias a la separación de las dos cámaras en el eje X se obtienen dos imágenes con pequeñas diferencias (disparidad).

IMG 7-Blog de ShowLeap-Leap Motion-Principio de funcionamiento

Como se puede observar en la imagen anterior, las dos cámaras —representadas por Oi y Od— están en el mismo plano Z, sobre la línea base. Si trazamos una línea epipolar entre las dos imágenes Ii e Id, dado que Oi y Od están en el mismo plano Z y las dos cámaras tienen la misma distancia focal, podemos ver la proyección del punto P en las dos imágenes. Por tanto, se puede obtener un valor de disparidad para cada par de puntos emparejados Pi(xi,yi) y Pd(xd,yd) dado por d = XI-XD.

IMG 8-Blog de ShowLeap-Leap Motion-Principio de funcionamiento

Considerando igual la distancia focal f en las dos cámaras y conociendo la distancia entre cámaras b:

IMG 9-Blog de ShowLeap-Leap Motion-Principio de funcionamiento

Como vemos, a partir del sistema anterior podemos obtener las coordenadas del punto P.

Y ahora sin tantos tecnicismos… ¿Cómo funciona Leap Motion? 🙂

Para terminar este post te nombramos los pasos básicos que realiza Leap Motion para entregar variables descriptivas de una configuración de mano y de un gesto:

  1. Obtiene las imágenes desde los sensores de las cámaras del dispositivo.
  2. Aplica una corrección de la distorsión que producen los sensores.
  3. Aplica un modelo para determinar la configuración de cada mano y ejecuta un algoritmo de visión estereoscópica entre cada par de imágenes para obtener la posición en el plano tridimensional.

 

Créditos del post
Imágenes:
- Página oficial de Leap Motion
- TFM «Técnicas de visión estereoscópica para determinar la estructura tridimensional de la escena». Autor: Martín Montalvo Martínez / Director: Gonzalo Pajares Martinsanz

 

Leap Motion (I): características técnicas

En esta entrada os vamos a hablar de las características técnicas del dispositivo que utilizamos para nuestro traductor de lengua de signos: Leap Motion. En esta primera parte vamos a analizar los componentes que forman el hardware y, próximamente, veremos también el principio de funcionamiento y la API. ¡Atentos, que empezamos!

Leap Motion (I) - Características técnicas

Dimensiones

Este dispositivo tiene unas dimensiones muy reducidas en comparación con otros interfaces gestuales que hay actualmente en el mercado: tan solo mide 75 mm de largo, 25 mm de ancho y 11 mm de alto.

Leap Motion - Características técnicas

Partes del dispositivo

Leap Motion - Características técnicas

Como se puede ver en la imagen anterior, Leap Motion cuenta con dos cámaras, tres LEDs y un microcontrolador. A continuación vamos a ver cada parte con un poco más de detalle:

Leap Motion - Características técnicas

Cámaras

Las cámaras son una de las partes más importantes del dispositivo, dado que son las encargadas de capturar las imágenes y su buen funcionamiento condicionará el correcto funcionamiento del resto de sistema.

Cada una de estas cámaras cuenta con un sensor monocromático, sensible a la luz infrarroja, con una longitud de onda de 850 nm. Estos sensores pueden trabajar a una velocidad de hasta 200 fps, dependiendo del rendimiento del ordenador/tablet al que conectemos el dispositivo. Además, cada sensor es de tipo CMOS. ¿Por qué este tipo de sensor?

  • La digitalización de los píxeles en un sensor CMOS se produce dentro de cada celda, por lo que no es necesario un chip externo como ocurriría en el caso de utilizar sensores CCD. Esto se traduce en mayor velocidad para capturar imágenes y en menor espacio para albergar los sensores.
  • Estos sensores son más económicos que los sensores CCD.
  • En este tipo de sensor no se produce el fenómeno blooming, al contrario que en los sensores CCD. Este fenómeno se produce cuando una celda se satura de luz y hace que las celdas de alrededor también se saturen.
  • La lectura simultánea de celdas en los CMOS es mayor que en los CCD.
  • El consumo eléctrico de los CMOS es menor que el de los CCD.
Iluminación infrarroja

Los LEDs se encargan de iluminar la zona de cobertura por inundación. Trabajan en el espectro de luz infrarroja a una longitud de onda de 850 nm que, como es lógico, es la misma a la que son sensibles los sensores ópticos. Varían su consumo eléctrico —y por tanto la iluminación— dependiendo de la luz que haya en la zona de cobertura para asegurar una misma resolución de imagen.Leap Motion - Características técnicas

Como se puede observar en la imagen anterior, los LEDs están separados por pequeñas barreras de plástico. De esta manera se asegura que la iluminación sea uniforme en toda la zona de cobertura. Además, se protege a los sensores ópticos de una posible saturación de luz, dado que de esta manera la luz infrarroja no les ilumina directamente.

El microcontrolador

Captura de pantalla 2015-04-20 a las 12.42.46Se trata de un circuito integrado  que se suele utilizar para hacer la función de BIOS (MXIC MX25L3206E–32M-bit CMOS SERIAL FLASH). En este caso contiene el programa que controla todo el dispositivo —para, entre otras cosas, regular la iluminación— y se encarga de recoger la información de los sensores para luego enviarla al driver o controlador instalado en el ordenador/tablet.

Leap Motion - Características técnicas

Controlador USB

Leap Motion - Características técnicas

Leap Motion cuenta con un controlador USB para que el ordenador pueda reconocer el dispositivo. Este controlador es de alta velocidad y puede soportar USB 3.0.

Envío y recepción de datos

Leap Motion - Características técnicas

Los datos se envían y se reciben al controlador del ordenador a través de dos puertos serie: UART_RX y UART_TX.

Zona de cobertura

Leap Motion - Características técnicas

En la figura anterior se puede observar la zona de cobertura del dispositivo. Como se puede ver, esta zona es una semiesfera de 61 cm de radio.

Esta zona depende del ángulo de visión de las lentes de las cámaras y de la intensidad máxima que puede entregar la conexión USB a los LEDs. A su vez, el ángulo de visión depende de la distancia focal y del tamaño del sensor de la siguiente forma:

Captura de pantalla 2015-04-20 a las 12.43.40

(donde d es la diagonal del sensor y f la distancia focal)

Tanto el ángulo de visión horizontal de Leap Motion como el vertical son de 150,92º. Estos ángulos delimitan la zona de interacción.

Leap Motion - Características técnicas

En la API del dispositivo (que la veremos en la próxima entrada) se define una zona de trabajo llamada “Interaction Box”  por un volumen de 110.55 mm de altura x 110.55 mm de anchura x 69.43 mm de profundidad, que varía sus dimensiones dependiendo de donde se encuentre el objeto a rastrear. Esta es la zona en la que se marca el centro del sistema de coordenadas cartesiano de Leap Motion. Desde el driver del dispositivo se puede configurar la altura a la que se encontrará el centro de esta zona de interacción. Esta altura puede estar entre 7 y 25 cm desde el dispositivo.