Primer video del prototipo multitouch
Llevaba un tiempo sin dar señales de vida, pero aquí dejo el primer video del prototipo funcionando: Eso si, sin proyector todavía
Llevaba un tiempo sin dar señales de vida, pero aquí dejo el primer video del prototipo funcionando: Eso si, sin proyector todavía

Aquí la primera foto del efecto FTIR. Todavía no le he puesto el filtro de luz visible a la cámara, pero como podeis apreciar funciona perfectamente.

Aquí os presento las primeras fotos de la mesa, casi casi terminada. El circuito led está conectado a la red mediante un transformador de 12 voltios y funciona de maravilla.
He estado haciendo algunas pruebas rápidas para comprobar si genera blobs y, efectivamente, cuando coloco los dedos sobre el panel desnudo si se generan, sin tener que presionar. Son bastante tenues, pero las pruebas las he hecho utilizando la cámara del móvil, que aunque deja pasar algo de IR creo que tiene filtro, por eso se ven tan tenues. Todavía no he tenido oportunidad de probar con la PS Eye sin filtro IR, pero a juzgar por las imagenes que he tomado con ella el otro día creo que captará los blobs bastante bien.
Ahora solo me falta conseguir un proyector para poder hacer los primeros test reales, aunque si no puedo conseguirlo pronto probare utilizando un monitor estandard y un espejo.

Aprovechando mi reciente adquisición de una Playstation 3 (de la cual probablemente escribiré en un futuro próximo dado que tengo unas grandes expectativas en cuanto a su Power Cell), he comprado tambien su cámara, la PS Eye, ya que sus especificaciones son perfectas para el multitouch, y lo más importante, su precio es realmente asequible (teniendo en cuenta que una cámara de caracteristicas similares que tenga buen rendimiento para MT está en torno a los 300€ y no es fácil de conseguir).
Sony PS Eye:
60 fps es justo lo que necesitamos para un tracking de blobs suave, pero podemos llegar a esos 120 si realmente queremos suavidad (eso si, menor resolución y una máquina potente).
El problema de esta cámara es hacerla funcionar en un PC. Ya estaba empezando a ponerme manos a la obra en escribir un driver para windows, cuando me encuentro que el gran AlexP en NUI Group acaba de publicar el primer driver funcional para la PS Eye (y por consiguiente me he ahorrado el trabajo). Todavía le falta pulirlo un poco y escribir un wrapper para utilizarla con touchlib, pero creo que pronto tendremos algo estable.
Por lo de pronto, ya he retirado el filtro IR de la cámara y utilizaré unos negativos fotográficos velados, o el disco interno de un floppy como filtro de luz visible. De este modo la cámara solo captará la luz infrarroja (no la imagen), es decir, solo los blobs de luz infrarroja que reflejamos con los dedos sobre el acrílico, que luego serán analizados con touchlib (aunque probablemente escriba mis propias librerias basadas en OpenCV para adaptarlo a mis necesidades).
En cuanto a mi prototipo, ya tengo todo cableado, y en breve publicaré algunas fotos de su funcionamiento.

Hoy he estado preparando el marco de LEDs que iluminará el panel acrílico. Como ya había comentado antes, para el prototipo estoy utilizando dos perfiles de aluminio en forma de “L” de 90cm (el panel mide 76cm, pero los cogí de 90 para actuar como soporte sobre los caballetes) sobre los que colocaré 25 LEDs infrarrojos.
Todavía no he hecho ningún test, pero ya me ha asaltado la primera duda. Los perfiles que he comprado son en aluminio natural, y probablemente debería haberlos cogido en aluminio pulido para que reflejen mejor los posibles escapes de luz hacia el panel. En todo caso, esto es solo un prototipo de prueba, en la versión final utilizaré ya unos de aluminio pulido y en forma de “U” para cubrir los LED tanto por arriba como por abajo.
La separación entre cada LED es aproximadamente de 3cm y los montaré de forma que los de un borde cubran los puntos no iluminados del otro borde del panel. Para decirlo de un modo más entendible, donde hay un hueco entre dos LED, el extremo contrario tiene uno:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
He impreso unas plantillas para pegarlas sobre los aluminios y de ese modo tener perfectamente marcados los puntos donde debo taladrar.
El grosor de los LED es de 5mm, con lo cual utilizaré, obviamente, una broca para metal de 5mm. La idea es colocar los LED desde la parte posterior del aluminio quedando perfectamente ajustados al mismo, exactamente como en la siguiente foto, en la que he utilizado una regla que casualmente trae un agujero de 5mm.
Una vez taladre los agujeros en los perfiles, el montaje será el siguiente (todavía no he taladrado, por lo tanto está sin LED, pero muestra más o menos el asepcto que tendrá el prototipo):
Mañana me pondré manos a la obra, y espero conseguir tambien los cables para el montaje, que por cierto lo haré empleando unos cablecitos con una ficha similar a los jumper de un disco duro, que sirven para no tener que soldar los LEDs ni las resistencias, así será fácil reemplazar o recolocar los componentes si es necesario durante el montaje. De todos modos para un montaje final no son muy recomendables y es preferible soldar.

Despues de una larga espera por fin he recibido los materiales para ponerme manos a la obra y hacer las primeras pruebas con el interface FTIR.
Por un lado tengo 100 LEDs (he comprado 100, aunque para este proyecto solo utilizaré 50, pero no está de más ser precavidos). He escogido unos Oshram SFH485, ya que son de los que mejor resultado dan para una configuración FTIR: Emiten con una longitud de onda de 880nm, y un ángulo de emisión de 40º. Longitudes de onda superiores son más difíciles de filtrar para nuestro propósito, y el ángulo de emisión de 40º es ideal para el grosor del plexiglass que tengo.
Por otro lado, al fin me ha llegado el acrílico (es lo que más tiempo tuve que esperar). Tiene un grosor de 8 milímetros y unas medidas de 76×54 centímetros. Podría utilizarse uno más delgado, pero dado el tamaño de la plancha preferí no arriesgarme y asegurarme de que es rígido y no se dobla al presionarlo. De todas formas como ya digo, los leds tienen un grosor de 5 mm, asi que un panel de 5-6 mm de espesor sería suficiente.
Tambien he encargado un par de perfiles en L de aluminio de 90 centímetros, que actuarán como “raíles” sobre los que apoyar el panel y colocar los LEDs. Escogí la forma de L para el prototipo porque es más cómodo y menos trabajoso, pero obviamente una vez el prototipo esté terminado lo reemplazaré por un marco completo en forma de U para dejarlo bien rematádo y estable.
Lo primero que tuve que hacer llegado a este punto es decidir el esquema de LEDs que voy a emplear en el proyecto. Utilizaré 25 LEDs con 2 centímetros de separación entre ellos, en cada uno de los bordes (a lo largo) del panel, iluminando de esa forma el panel completo.
Los LEDs operan a 100 mA con una caída de voltage de 1,5V. Dado que utilizaré una alimentación de 12V, los colocaré en 10 series en paralelo de 5 LEDs cada una, utilizando una resistencia de 47ohm, 1W en cada serie. Quizá deba escoger resistencias con menos potencia para que los LED brillen más, pero primero probaré con estas para no arriesgarme a quemar los LED, que no son baratos precisamente.
Nota: La fórmula para calcular resistencias para LEDs (siguiendo la Ley de Ohm) es la siguiente:
R = (Voltage de fuente - Caída de voltage del diodo) / Intensidad del LED
y despues escogemos la resistencia con el valor standard más cercano que sea mayor.
Me queda por solucionar el tema de la película de silicona (la complaint surface), y todavía no tengo proyector ni difusor, pero para empezar a hacer las primeras pruebas y generar los primeros blobs tengo suficiente.
Esta semana me pondré con ello, así que pronto empezaré a poner fotos del proceso explicando los problemas con los que me encuentre en el camino.

Desde que vi el video de Jeff Han y su interface multi touch hace ya un año, he quedado totalmente prendado de esa tecnología y me he dedicado a investigar sobre el tema. En realidad es una tecnología no tan nueva, y lo más interesante del tema es que es relativamente sencilla.
Hay todo un movimiento alrededor de los display multi touch, y geeks del todo el mundo se están construyendo sus propios dispositivos de este tipo, e investigando como perfeccionarlos. Los prototipos que están saliendo son de una calidad que nada tendría que envidiar a un dispositivo comercial de estas caracteristicas.
Yo, como buen geek que soy y sobretodo porque soy el primero en babear con esta maravilla tambien he estado investigando y haciendo mis preparativos para construirme mi propio prototipo. Tengo especial interés ya que como programador me abre un montón de posibilidades para experimentar con él una vez lo tenga terminado y funcionando.
Cuando definitivamente me planteé comenzar con este proyecto, lo primero que tuve que hacer fue decidir que tipo de tecnología emplearía en mi interface. Existen dos enfoques principales a la hora de desarrollar un multi touch, que si bien se basan en lo mismo, se construyen de forma totalmente diferente:
FTIR (Frustrated Total Internal Reflection):
Este primer sistema es el más conocido y utilizado hasta el momento, probablemente porque es el sistema que empleó Jeff Han y el que puso de moda esta tecnología.
Con este método utilizamos un panel de acrílico, el cual iluminamos desde sus bordes con LEDs infrarrojos. Utilizamos acrílico y no cristal, porque su transmitancia frente a la luz infrarroja es ideal, mientras que la del cristal no nos sirve para lograr este efecto.
Lo que estamos haciendo es “inundar” el panel de luz IR, la cual va rebotando en su interior (reflexión interna total). Cuando colocamos los dedos sobre el panel, estamos frustrando la reflexión interna y reflejando la luz hacia abajo, donde tenemos una cámara infrarroja, o una videocámara normal con un filtro IR que detectará esos “blobs” de luz, los cuales procesaremos con el ordenador para obtener su posición y de ese modo emplearlos como controladores.
Sobre el panel acrílico colocamos un material difusor sobre el que proyectar la imagen del ordenador desde abajo.
Al utilizar los dedos desnudos sobre el panel, el efecto de “frustración” funciona muy bien, especialmente si tenemos los dedos humedos, debido a que la piel de los dedos es semitransparente y se deforma al apretarla contra el panel, sin embargo al colocar la pantalla difusora, eliminamos el efecto y es necesario hacer bastante presión para obtener el resultado deseado. Para ello debemos utilizar una superficie intermedia entre el panel y el difusor (conocida como complaint surface). Se ha investigado bastante sobre este tema, y actualmente lo que mejor resultado da es crear una fina pelicula de silicona transparente (Sort A Clear Silicone Rubber). Esto complica algo el diseño del prototipo, y lo encarece un poco, aunque no tanto como para frenar a un geek que se precie.
DI (Diffused Illumination):
El segundo método para este tipo de displays es la iluminación difusa. En este caso no inundamos de luz IR el panel (el cual ahora puede ser de plexiglass, cristal escarchado o lo que queramos), sino que lo iluminamos desde la parte inferior empleando lámparas LED, y procurando que quede totalmente iluminado. Al colocar los dedos sobre el panel, estaremos reflejando la luz que viene desde abajo otra vez hacia allí, donde tenemos nuestra cámara.
Este tipo de paneles ademas de trackear los dedos, pueden identificar tambien imagenes fiduciales (el famoso Reactable es un claro ejemplo de este tipo de displays), aunque los “blobs” generados no son tan claros como en el caso de los FTIR.
Los paneles DI son más fáciles de construir, ya que no necesitamos soldar la circuitería de leds para enmarcar el acrílíco, ni necesitamos la “complaint surface”. Sin embargo el dispositivo debe estar encerrado dentro de una caja y la calibración de las lamparas LED es bastante más compleja par obtener un resultado óptimo. Otra desventaja, aunque es posible solucionarlo, es la luz IR ambiente que se cuela desde arriba, lo cual hace que a veces incluso detecte blobs sin llegar a tocar el panel.
Aunque tengo que reconocer que los sistemas DI me atraen bastante por su capacidad de interpretar patrones fiduciales, al final me decidí por el modelo FTIR como primer prototipo, aunque no descarto explorar el modelo DI en un futuro (especialmente si obtengo buenos resultados con el primero, ya que lo más caro es el proyector; y una vez teniendo uno nada me impide hacer otros experimentos con él).
Ahora mismo estoy empezando a encargar los materiales como el panel acrílico y los leds, seguiré informando sobre el proyecto en cuanto empiecen a llegarme.
