Busca en makito

lunes, 10 de octubre de 2011

Introduccion a la programación del Kinect (SDK windows)



Después de un tiempo de ausencia, he traído un poco de información mas precisa para el desarrollo de aplicaciones con el kinect sobre windows 7. para tener primero ciertas consideraciones antes de empezar el desarrollo:

Hasta el día de hoy, existen varias opciones para instalar drivers no oficiales para el Kinect que permiten su manipulación y elaboración de aplicaciones basadas en el funcionamiento y características del dispositivo. 

Nota: Este es un pequeño resumen del "Programming Guide" de Microsoft para el kinect SDK. está con las bases fundamentales para el desarrollo.


Kinect™ for Windows® SDK  beta - Microsoft Research
La versión beta del Kinect para Windows SDK es un kit de herramientas de programación para desarrolladores de aplicaciones. Permite el fácil acceso a las capacidades ofrecidas por el dispositivo de Microsoft Kinect conectado a equipos que ejecutan el sistema operativo Windows 7.


La versión beta del Kinect para Windows SDK incluye los controladores, APIs enriquecidas para flujos de sensor raw y seguimiento del movimiento humano, documentos de instalación y materiales. Proporciona capacidades de Kinect a los desarrolladores que crean aplicaciones con C++, C# o Visual Basic utilizando Microsoft Visual Studio 2010.

El SDK incluye las siguientes características:


·         Flujos de sensor RAW

Acceso a flujos de datos raw[1] del sensor de profundidad, sensor de cámara de color y micrófonos de cuatro elementos permiten a los desarrolladores aprovechar las corrientes de bajo nivel que se generan por el sensor de Kinect.



·         Seguimiento esquelético

La capacidad de realizar un seguimiento de la imagen esqueleto de una o dos personas que se desplazan dentro del campo de visión de Kinect facilita crear aplicaciones controladas por el gesto



·         Capacidades avanzadas de audio

Capacidades de procesamiento de audio incluyen la cancelación de represión y eco de ruido acústico sofisticado, haz de formación para identificar la fuente de sonido actual y la integración con el reconocimiento de voz de Windows API.



·         Documentación y código de ejemplo

El SDK incluye más de 100 páginas de documentación técnica. Además de archivos de ayuda integrada, la documentación incluye tutoriales detallados para la mayoría de las muestras con el SDK


Dentro de las desventajas que se hallan en el SDK propio de Windows podemos mencionar:

·         No reconocimiento de Gestos

Un gesto es el significado expresivo, apelativo o comunicativo de los movimientos corporales y de los gestos aprendidos, luego si se requiere identificar un saludo o un movimiento específico de la mano, se debe programar desde el simple reconocimiento de articulaciones (Joints).



·         Debido a su Lanzamiento reciente (24 Junio) nadie lo había trabajado ni experimentado para obtener así un conocimiento previo y recorrido en los desarrollos.



·         Sin licenciamiento para Comercializar desarrollos.
Por ser una versión beta, Microsoft aún no ha completado el proceso de desarrollo llegando a liberar mayores características y al final un lanzamiento de licencia paga, por esta razón los desarrollos que se lleven a cabo no podrán ser comercializados hasta que Microsoft le otorgue un precio a la licencia.


[1] Formato de archivo digital de imágenes RAW sin pérdida de datos

Requerimientos del Sistema

Las aplicaciones que se desarrollen con el Kinect para Windows SDK Beta deben construirse sobre un entorno nativo de Windows, es decir,  no pueden ni ejecutarse ni desarrollarse aplicaciones en una máquina virtual porque los drivers de Microsoft Kinect deben instalarse al igual que el SDK (kit de desarrollo de software) en la computadora para ejecutar cualquier aplicación. 

Sistema Operativo Soportado y Arquitectra
·         Windows 7 (x86 or x64)
Requerimientos de Hardware
·         Computador con procesador dual-core, 2.66-GHz o un superior
·         Tarjeta gráfica compatible con Windows 7 y  Microsoft® DirectX® 9.0c
·         2 GB de RAM
·         sensor Kinect para Xbox 360®
 
Requerimiento de Software
·         Microsoft Visual Studio® 2010 Express u otra edición de Visual Studio 2010
·         Microsoft .NET Framework 4.0 (Ya instalado si se tiene Visual Studio 2010)
·         For C++ SkeletalViewer samples:
·         DirectX Software Development Kit, June 2010 or later version
·         For Speech sample (x86 only):
·         Microsoft Speech Platform - Server Runtime, version 10.2 (x86 edition)
·         Microsoft Speech Platform - Software Development Kit, version 10.2 (x86 edition)
·         Kinect for Windows Runtime Language Pack, version 0.9  
(acoustic model from Microsoft Speech Platform for the Kinect for Windows SDK Beta)
 

 
Nota Este SDK no debe ser utilizado para desarrollar prototipos de aplicaciones con la intención de portar esas aplicaciones para la consola Xbox 360. Existen numerosas cualidades técnicas de arquitectura, y las diferencias de comportamiento entre Xbox 360 y Windows. Estas diferencias afectan cómo la tecnología Kinect está implementada para Windows 7. Como resultado, las decisiones de diseño y las características de rendimiento son a menudo muy diferentes entre las dos plataformas. Microsoft recomienda el uso de kits de desarrollo de Xbox 360 (XDK hardware y software) para crear aplicaciones de Xbox 360.




martes, 26 de julio de 2011

Mi primer contacto con el SDK de Windows (KINECT)

En esta oportunidad tuve el placer de leer la documentación del SDK y ver unos cuantos videos para entrar en el mundo del Kinect a nivel de desarrollo, elaboré dos ejemplos básicos que pueden mostrar el inicio del desarrollo de aplicaciones realmente interesantes y totalmente nuevas y diferentes al estilo "Minority Report" o llamada en español "Sentencia previa", donde nos muestran un futuro totalmente desarrollado con HCI donde el protagonista interactúa con una pantalla interactiva sin necesidad de tener contacto físico con ella. (la recomiendo)

Por el momento estoy tratando de entender la matemática y el concepto del manejo de la opción depth o reconocimiento de la profundidad de los objetos detectados con la camara infrarroja del kinect, en esta oportunidad les dejo dos pequeños ejemplos donde en el primero muestro la opción del titl o ángulo de inclinación del motor junto con la aplicacion "hello world" para kinect donde en un extremo superior muestro la captura de video de la cámara RGB y en el otro la camara infrarroja que determina la profundidad de los objetos que para este ejemplo en específico podemos ver como se diferencian cada uno de ellos con diferentes intensidades de grises deacuerdo a la distancia que se encuentren del kinect.

En la segunda aplicación, mediante el manejo de la profundidad (u opcion Depth) en el Kinect, determino si está presente una persona; si la reconoce, éste me la muestra de color amarillo para distinguirlo de los demas objetos y entorno aunque se encuentre cerca o lejos, adicionalmente muestro la distancia que separa el kinect de la persona en metros, esta última parte está aún en proceso de desarrollo por la tanto existe un retardo molesto que no es eficiente y espero aliviar y corregirlo.

viernes, 22 de julio de 2011

Desarrollos con el SDK de Windows y Wiimote

He estado un poco ocupado con tareas de desarrollo e investigación que me permitan avanzar en el campo de Human Computer Interface, esta vez leyendo entendiendo y desarrollando programas sencillas con la librería WiimoteLib.DLL del señor Chung Lee (http://johnnylee.net/projects/wii/)que permite innumerables aplicaciones siendo el límite de estas la capacidad de ingenio del desarrollador. como un abrebocas les dejo este video ilustrativo donde Jonnhy nos muestra el alcance de este proyecto. cabe anotar que todo el código es libre y se puede descargar de la pag anteriormente mencionada.



Como segunda medida les tengo tambien una magnífica herramienta para desarrolladores que permite la interacción con el Kinect de Microsoft (http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/default.aspx), este sdk o kit de desarrollo permite básicamente la interaccion con 3 campos del kinect: Reconocimiento de la profundidad (detecta que tan lejos o cerca se encuentran los objetos del kinect)(depth), manejo de la camara RGB, y detección de Skeleton ( un esqueleto básico del cuerpo humano, reconocimiento de articulaciones).



El desarrollo, implementacion, y demos se mostrarán en el siguiente post donde explicaré a groso modo algunas caracterticas y aplicaciones desarrolladas.
hasta pronto.

viernes, 17 de junio de 2011

Human–computer interaction HCI (Interacción persona-maquina)

Podríamos decir que es la disciplina que estudia el intercambio de información entre las personas y los computadores. Ésta se encarga del diseño, evaluación e implementación de los dispositivos electrónicos interactivos. El objetivo es que el intercambio sea más eficiente: minimizar errores, incrementar la satisfacción, disminuir la frustración y, en definitiva, hacer más productivas las tareas que rodean a las personas y los computadores.
Aunque la investigación en este campo es muy complicada, la recompensa una vez conseguido el objetivo de búsqueda es muy gratificante. Es muy importante diseñar sistemas que sean efectivos, eficientes, sencillos y amenos a la hora de utilizarlos, dado que la sociedad disfrutará de estos avances.


Dado que la interacción persona-computador estudia la comunicación entre el ser humano y las máquinas, esto provoca que se tengan que tener unos conocimientos por parte de ambos, humano y máquina. Por parte de las máquinas hace falta que cuenten con un adecuado sistema operativo, técnicas gráficas, lenguajes de programación y entornos de desarrollo. Por la otra parte, es importante tener unos conocimientos previos, como teoría de la comunicación, disciplinas de diseño de gráficos e industriales, lingüísticos, ciencias sociales, psicología cognitiva y función del ser humano.

Con el fin de tener un concepto más aproximado sobre el campo de la interacción humano-computador contemplamos en que está especializado:
  • Unión de las tareas de los humanos con las máquinas.
  • Capacidades humanas para utilizar las máquinas (incluyendo la capacidad de entender las interfaces)
  • Algoritmos y programas de la interfaz en sí.
  • Conceptos de ingeniería que se plantean a la hora de diseñar y construir interfaces.
  • El proceso de especificación, diseño, e implementación de la interfaz.
  • Sacrificios del diseño.



more...