Muchas veces no sabemos la tecnolog\xeda que tenemos entre manos. A diario tratamos con dispositivos como m\xf3viles, tablets, televisiones y dem\xe1s aparatos el\xe9ctricos cotidianos en nuestro d\xeda a d\xeda. Uno de esos dispositivos es del que te voy a hablar hoy, el sensor Kinect.
Estos dispositivos tienen, en muchas ocasiones, software y hardware que los dotan de cierta inteligencia artificial.
Si escuchas m\xe1s podcast sobre tecnolog\xeda, oir\xe1s c\xf3mo se habla de este u otro aparato, el m\xf3vil que acaba de salir de \xfaltima generaci\xf3n. Estamos acostumbrados a que todos los a\xf1os se produzcan mejoras tanto a nivel de software como a nivel de hardware.
Es interesante pararse un momento a pensar, \xbfqu\xe9 es lo que hay detr\xe1s de una tecnolog\xeda o dispositivo? Hoy te voy a hablar del sensor Kinect de Microsoft. Voy a destripar este dispositivo para ver la complejidad y el trabajo que puede haber detr\xe1s de este aparato el\xe9ctrico.
Te invito a que t\xfa tambi\xe9n lo hagas. Investiga qu\xe9 hay detr\xe1s de las tecnolog\xedas que usas todos los d\xedas. No seas solo un mero espectador, intenta comprender el mundo que nos rodea. Puedes empezar por los cursos del Campus de Programarfacil.
Software vs hardware
El software es infinito. Sin embargo, ya podemos tener el mejor algoritmo del mundo que si no tenemos un hardware que se adapte a los requerimientos del software, no nos servir\xe1 de nada.
Las c\xe1maras digitales llevan con nosotros mucho tiempo. Desde los primeros prototipos dise\xf1ados a principios de los a\xf1os 70, hasta el primer modelo comercializado, la Daycam Model 1, a principios de los a\xf1os 90.
En la actualidad encontramos diferentes tipos de c\xe1maras digitales, con m\xe1s o menos prestaciones. Pero lo que realmente ha cambiado la forma de entender la fotograf\xeda digital, ha sido la evoluci\xf3n del software que se esconde detr\xe1s de las c\xe1maras digitales.
Raro es el dispositivo m\xf3vil que no puede reconocer las caras en su pantalla a la hora de hacer una foto. Encontramos im\xe1genes panor\xe1micas, en 3D, fotograf\xedas de alto rango din\xe1mico HDR (del ingl\xe9s High Dynamic Range) y multitud de funcionalidades m\xe1s.
Existe una estrecha vinculaci\xf3n entre el software y el hardware. Lo realmente interesante es mantener esta balanza equilibrada. Por mi experiencia, puedo asegurar que se pueden reducir los costes de un proyecto, poniendo la atenci\xf3n en el software y minimizando los recursos del hardware.
Como conclusi\xf3n podemos decir que, no hay hardware que haga bueno un software pero si hay software que hace bueno a un hardware. El caso del que voy a hablar hoy, es un fiel exponente de esta situaci\xf3n.
\xbfQu\xe9 es el sensor Kinect?
El sensor Kinect fue dise\xf1ado para cambiar la manera de jugar con las videoconsolas en los hogares. Fue el primer dispositivo que permit\xeda manejar una consola, sin el contacto directo con un mando. Solo a trav\xe9s de sus sistemas visuales somos capaces de controlar las funcionalidades del dispositivo.
Vi\xf3 la luz en el a\xf1os 2009, en la Electronic Entertrainment Expo 2009. Su nombre original fue \u201cProject Natal\u201d. Se puede definir como un controlador de juego y entretenimiento libre y su creador fue Alex Kipman. Microsoft decidi\xf3 desarrollarlo para la videoconsola Xbox 360.
En el a\xf1o 2011 sali\xf3 la segunda versi\xf3n para PC con Windows 7 y Windows 8. La caracter\xedstica que lo hace diferente, es la capacidad de reconocer gestos, comandos de voz y objetos en im\xe1genes.
Se trata de una tecnolog\xeda innovadora, detr\xe1s de la cual hay una combinaci\xf3n de c\xe1maras, micr\xf3fonos y software. Todo esto est\xe1 contenido dentro de Kinect.
Partes b\xe1sicas del sensor Kinect
C\xe1mara de v\xeddeo de color RGB. Funciona a modo de webcam, capturando las im\xe1genes en v\xeddeo. El sensor Kinect utiliza esta informaci\xf3n para obtener detalles sobre objetos y personas en la habitaci\xf3n.
Emisor IR. El emisor de infrarrojos es capaz de proyectar una luz infrarroja en una habitaci\xf3n. Seg\xfan la luz infrarroja incide sobre una superficie, el patr\xf3n se distorsiona. Esta distorsi\xf3n es le\xedda gracias a su otro componente, una c\xe1mara de profundidad.
C\xe1mara de profundidad. Analiza los patrones infrarrojos emitidos por el emisor y es capaz de construir un mapa 3D de la habitaci\xf3n y de todos los objetos y personas que se encuentran dentro de ella.
Conjunto de micr\xf3fonos. El sensor Kinect tiene incorporado cuatro micr\xf3fonos de precisi\xf3n capaces de determinar de d\xf3nde vienen los sonidos y las voces. Tambi\xe9n es capaz de filtrar el ruido de fondo.
Motor de inclinaci\xf3n. Este motor tiene la capacidad de ajustar sobre la base, el sensor Kinect. Es capaz de detectar el tama\xf1o de la persona que est\xe1 delante, para ajustarse arriba y abajo seg\xfan convenga.
Todo viene perfectamente ensamblado en una barra horizontal de unos 28 cm, sobre una base cuadrada redondeada donde se apoya.
kinect-versiones
Pero lo que realmente dota a este dispositivo de inteligencia, es el software. Kinect es capaz de capturar una cantidad incre\xedble de datos. Siempre fijando su objetivo en las cosas que se mueven en su entorno. Gracias al procesamiento de estos datos a trav\xe9s de una algoritmo de inteligencia artificial y a m\xe9todos de aprendizaje de m\xe1quinas, Kinect puede llegar a mapear los datos visuales que obtiene a trav\xe9s de sus sensores.
El objetivo es ser capaz de detectar a los seres humanos y entender en qu\xe9 posici\xf3n se encuentra cada persona detectada.
Software
Una vez que los sensores captan la informaci\xf3n, son inmediatamente procesados por un software de inteligencia artificial. Es capaz de clasificar los diferentes objetos que hay dentro de una escena. Reconoce a los seres humanos por su cabeza y extremidades.
Kinect entiende c\xf3mo se mueve un ser humano y asume, por ejemplo, que somos incapaces de girar la cabeza 360\xba y dem\xe1s acciones imposibles que podemos realizar. Esto es muy sencillo para nosotros, pero para una m\xe1quina conlleva un periodo de aprendizaje largo.
A este tipo de aprendizajes se le conoce como aprendizaje de m\xe1quina o machine learning en ingl\xe9s. Consiste en analizar una cantidad ingente de datos de la vida real, para encontrar patrones. As\xed es como aprendemos los seres humanos, a base de observar y aprender.
Kinect captura el movimiento de las personas a trav\xe9s de m\xe1s de 48 puntos de articulaci\xf3n. Esto se lleva a cabo a trav\xe9s de un algoritmo bastante complejo, que tiene en cuenta m\xfaltiples factores.
No voy a entrar en detalle de c\xf3mo funciona esta parte del software. Primero, porque no es objeto de este art\xedculo y segundo porque es demasiado complejo. Solo voy a citar los pasos que sigue hasta conseguir entender la posici\xf3n del cuerpo humano.
Construir una imagen de profundidad a trav\xe9s del emisor de IR y la c\xe1mara de profundidad. Esto se hace por triangulaci\xf3n, igual que cuando se calcula la distancia a la que est\xe1n las estrellas fuera del sistema solar.
Detectar las partes del cuerpo de una persona. Este se hace utilizando un \xe1rbol de decisi\xf3n. Los patrones para tomar esas decisiones se obtuvieron en la fase de aprendizaje con m\xe1s de un mill\xf3n de ejemplos.
Esto es una manera muy abreviada de c\xf3mo funciona el algoritmo. Detr\xe1s de todo esto existe una base matem\xe1tica muy extensa. Se utiliza probabilidad y estad\xedstica, c\xe1lculos de multivariable, \xe1lgebra lineal, an\xe1lisis complejo, algoritmos de grafos, geometr\xeda, ecuaciones diferenciales, topolog\xeda, etc...
Crea tu propio proyecto con Kinect
Lo primero es comprar un Kinect. Lo encontramos desde 38\u20ac usado en Amazon. Te dejo a continuaci\xf3n una serie de enlaces donde comprar con diferentes precios.
Kinect V1 (desde 39 \u20ac)
Kinect V2 (desde 80 \u20ac)
Existen varias alternativas a la hora de utilizar Kinect en nuestros proyectos. La mejor y m\xe1s \xf3ptima ser\xeda trabajar con la SDK que ofrece Microsoft para los desarrolladores.
Existen dos SDK dependiendo de la versi\xf3n de Kinect que tengas. La versi\xf3n 1.8 para Kinect v1 y la versi\xf3n 2.0 para Kinect v2.
Puedes desarrollar aplicaciones con Kinect dentro del Visual Studio con los lenguajes nativos de Microsoft C# y Visual Basic.
Existen otras alternativas m\xe1s \u201csencillas\u201d. Una de ellas es trabajar con Processing. Para ello necesitamos configurar nuestro equipo. Debemos poner especial cuidado en la SDK y en lo drivers. Otra opci\xf3n ser\xeda programar con Python.
Muchas gracias a todos por los comentarios y valoraciones que nos hac\xe9is en iVoox, iTunes y en Spreaker, nos dan mucho \xe1nimo para seguir con este proyecto.