domingo, 2 de septiembre de 2012

Interfaces interactivas con Kinect

Uno de los campos que estamos experimentando actualmente es la creación de interfaces interactivas con uno o más dispositivos kinect. Esto no es nada nuevo, pero recientemente nos ha llamado la atención el proyecto V Motion Project que ha dado un paso más en la forma de interactuar para, en este caso, la creación de música en tiempo real con unas visuales impresionantes:


Los efectos visuales están realizados a medida en C++ con OpenFrameworks y la música se crea ten tiempo real en Ableton Live. Todo responde a los movimientos del original bailarín que son capturados con 2 kinects y el software Binkinect (en realidad una variante de éste).

Imaginad, poder configurar tu entorno y tu propio cuerpo como una interfaz de interacción. Es decir: las manos, su ángulo, la distancia entre ellas, cuando tocas una silla o cualquier objeto, las coordenadas 3D a tu alrededor, todo puede desencadenar una acción. Ésto es lo que hace bikinect:


Increible, ¿no? Pues el poder de kinect en la creación de interfaces permite, por ejemplo, hacer multitáctil cualquier superficie, como una pared. Éste es el propósito del proyecto Ludique's Kinect Bundle, de Ludique Labs en Chile. Su software aprovecha la detección de esqueletos de kinect para calcular coordenadas enviárselas a la aplicación (visto en los foros de nuigroup.com)



Sin duda, seguiremos experimentando e incorporando estas tecnologías a nuestros proyectos. Os mantendremos informados!

lunes, 13 de febrero de 2012

Detrás de la técnica Planar Scatter Detection

Hace pocos días se dio a conocer el primer producto comercial de FlatFrog, una empresa sueca que lleva bastantes años invirtiendo en I+D para fabricar una mesa táctil delgada basada en técnicas ópticas, sin superficies capacitivas o resistivas.



En este caso, se basa en una configuración tipo FTIR (Frustrated Total Internal Reflection), en el que la luz infrarroja viaja por dentro del cristal, hasta que un dedo o cualquier otro objeto se posa y refleja la luz hacia el interior.
FTIR


Lo normal y más fácil es situar una cámara detrás del cristal, como en el diagrama anterior, obteniendo una imagen visual de los puntos que se  han tocado.
Pero FlatFrog ha empleado otra técnica para detectar los puntos, llamada Planar Scatter Detection, en el que se sitúan varias cámaras o sensores infrarrojos en el borde del cristal, detectando variaciones de la luz infrarroja reflejada, y obteniendo, por tanto, un mínimo grosor de mesa.
Este vídeo explica perfectamente la técnica:


Al igual que en este vídeo, la patente de Flatfrog deja claro que utilizan cámaras en las esquinas.


La alternativa para crear pantallas delgadas con tecnología óptica es utilizar fotosensores, como en la mesa Microsoft Surface 2, en la que se utiliza la tecnología PixelSense.

De todos modos, la idea de usar fototransistores no es nueva. Prueba de ello es este clon táctil del monome en una configuración LLP (la técnica usada en nuestra mesa).


Sobre el monome, ya os contaremos en alguna otra ocasión.

viernes, 10 de febrero de 2012

Carrusel de fotos con MT4J

Como prueba de concepto con el framework MT4J para desarrollo de aplicaciones, hemos decidido realizar un carrusel típico de visualización de fotos, implementando diversos patrones táctiles, como el zoom, la rotación, arrastrar y soltar, menús circulares, etc.
El resultado es muy satisfactorio. Con pocas líneas de código pueden obtenerse grandes resultados.
Aquí una muestra de desarrollo, respondiendo a eventos desde la aplicación TUIODroid:


jueves, 15 de diciembre de 2011

MT: Frameworks de desarrollo

Si ya habéis visto el vídeo con las primeras pruebas de la mesa táctil tendréis una idea de las cosas que se pueden hacer. Casi todas las aplicaciones que se ven en el vídeo están hechas por la comunidad y están disponibles para todo el que quiera usarlas. Nos ha dado tiempo a evaluar algunas, y estas son las conclusiones:
  • el mejor para hacer cosas espectaculares, sin duda, processing, que es Java se integra bien en eclipse (pasando del processing IDE, que es patético para hacer cosas serias). Además hay millones de sketchs que podemos usar como base. Es impresionante lo que hay en ese mundillo. Tiene una librería que implementa el protocolo TUIO para integrar con CCV (la herramienta de procesamiento de imagen para capturar los gestos), pero aquí viene lo malo: no tiene librería de componentes para multitouch, por lo que deben ser aplicaciones más o menos sencillas, sin árbol de widgets. Por ejemplo: mapas, aplicaciones de dibujo, de manipulación de imágenes, efectos, etc, nada de interfaces de usuario complejas.
  • Para hacer aplicaciones con interfaces de usuario complejas (botones, cajas de texto, teclado virtual, menús, etc), una buena opcióin es Kivy (python). Antes PyMT. Tienen muy buena documentación y el framework está muy depurado y optimizado. Aunque es python, todo el código crítico está hecho en C, por lo que va aceptable, aunque nunca igual que Processing o MT4j. Lo mejor: que utiliza un formato propio para hacer el diseño de las pantallas (.kv), y que produce aplicaciones para Android!!.
  • Si queremos aprovechar algún sketch de processing y tenemos necesidades multitouch complejas, iría a MT4J, compatible con processing al 100%. Lo malo: no está bien documentado, aunque funciona de maravilla y es Java.
  • Para entornos Windows 7, puede usarse el SDK de Microsoft Surface. Desde la última versión, CCV es capaz de generar eventos WM_TOUCH en esta plataforma. Es una opción aún por explorar, pero quizás es la que más promete, al estar respaldada por Microsoft y su fantástica plataforma. Lo iremos viendo.

De momento, tras probar Kivy, hemos optado por MT4J. Los motivos: es java, lenguaje y entorno (eclipse) que conocemos mejor. Está basado en processing, con una enorme comunidad de verdaderos artistas digitales. Y sobre todo, es muy rápido.

miércoles, 14 de diciembre de 2011

Primeras pruebas multitouch

Después de un primer infructuoso estreno en el que usamos una película de fotos como filtro paso banda para el infrarrojo, nos decidimos a comprar un filtro en condiciones de 780nm. ¡Qué sabia decisión! Su efectividad fue inmediata. Ahora la cámara capta a la perfección los blobs infrarrojos, y por suerte, el proyector no genera nada de ruido en esa banda.
Aquí tenéis un vídeo con las primeras pruebas de la pantalla táctil, ejecutando las demos de los frameworks MT4j y PyMT. Impresionante!!!!


viernes, 8 de julio de 2011

Proyecto: mesa táctil. El comienzo

Por fin,
Tras ver múltiples proyectos por internet, decidimos lanzarnos para hacer nuestra propia mesa táctil.
Gracias a la gran comunidad open source de nuigroup.com, rápidamente pudimos ponernos manos a la obra.
Ya antes habíamos hecho pruebas con el software del tan afamado reactable.com, reacTIVision, la versión open source del software de reconocimiento de fiducials y blobs (marcadores y dedos).

Existen diferentes técnicas y alternativas para realizar proyectos de este tipo. La comunidad de nuigroup ha hecho un gran trabajo de investigación y documentación.

Tras evaluar las diferentes alternativas en cuanto a software y hardware, decidimos realizar un montaje basado en la técnica LLP (Laser Light Pane), básicamente por ser económica para superficies grandes. Como pantalla usamos un retroproyector, aunque cada vez más se ven instalaciones con LCDs.

Se basa en la proyección de dos o más láseres IR, paralela a la superficie de la pantalla. Al aplicar presión sobre la superficie, el haz láser se refleja hacia el interior de la pantalla, detectándolo con una cámara IR.

Lista de materiales
La lista mímima necesaria para hacer la mesa:

  • superficie acrílica o cristal
  • 2 o más láseres IR
  • pantalla de retroproyección
  • cámara filtro paso banda IR
  • proyector

En nuestro caso, hemos conseguido una buena cámara firewire de la marca Unibrain, y una pantalla Rosco Gray. Los láseres y filtros en ebay. En los foros de nuigroup hay abundante información al respecto.

En los próximos días iremos dando detalles del montaje, según vayamos avanzando el proyecto. Pero no será el último!!