Recientemente tuvimos la oportunidad de usar un iPhone Pro y una de las cosas más interesantes de esta obra de ingeniería es el conjunto de sensores increíblemente sofisticados que trae incorporados.
Hemos estado explorando una de las aplicaciones en las que venimos trabajando: un sistema de seguimiento de manos diseñado para interactuar con un sitio web construido específicamente para este propósito.
En realidad, llevamos bastante tiempo explorando esta idea, pero, simplemente por diversión, decidimos llevar el experimento un paso más allá.
El seguimiento de manos no es algo nuevo. Ya existen muchos modelos muy buenos capaces de tomar la señal de video de una cámara web y hacer un seguimiento bastante preciso de las manos. Partimos de las capacidades de seguimiento de manos que ofrece el framework Vision de iOS.
Pero queríamos mejorar esas coordenadas para nuestro caso de uso particular.


En primer lugar, las coordenadas que entrega Vision son únicamente 2D. Queríamos tener una mejor comprensión de la posición y la articulación de la mano en un espacio tridimensional. En segundo lugar, necesitábamos que el sistema pudiera funcionar en completa oscuridad. Una señal de video RGB simplemente no era suficiente.
Así que combinamos los datos de seguimiento de manos de Vision con la información de profundidad del sensor TrueDepth del iPhone.
El proceso es relativamente sencillo. En lugar de confiar ciegamente en las coordenadas proporcionadas por Vision, analizamos el mapa de profundidad alrededor de cada punto detectado para encontrar los píxeles que realmente corresponden al dedo. Después aplicamos un filtro adaptativo que permite suavizar los pequeños movimientos cuando la mano está quieta, pero que sigue respondiendo rápidamente cuando la mano se mueve. Esto nos permite obtener un seguimiento mucho más estable sin introducir un retraso perceptible.
Para la conexión de red, la aplicación puede comunicarse mediante WebSockets, aunque empezamos conectándola por USB siempre que era posible para mantener la latencia lo más baja posible.
Todo esto es, principalmente, un experimento: una excusa para jugar con los sensores, explorar una forma diferente de interactuar con la web y ver qué podemos hacer con ellos.
Ahora mismo estamos explorando cómo este tipo de tecnología podría utilizarse para controlar interfaces y visualizaciones que ya hemos construido, y cómo estas nuevas posibilidades de interacción pueden cambiar la manera en que pensamos y diseñamos esas experiencias.
Puede que esto nunca se convierta en un producto terminado, y en realidad ese tampoco es el objetivo. A veces, las cosas más interesantes surgen simplemente de experimentar con una nueva tecnología, entender de qué es capaz y llevarla un poco más allá del uso para el que fue pensada.
Para nosotros, jugar con estas tecnologías también es una forma de abrir la puerta a nuevas ideas. Uno empieza con un experimento sencillo, descubre una posibilidad que no había considerado y, de repente, empieza a pensar en una manera completamente diferente de construir algo.
Así que esto es simplemente nosotros experimentando, aprendiendo y divirtiéndonos con todo lo que es posible hacer.