En 2010, estaba sentado en mi habitación mirando televisión cuando vi un comercial de Xbox. Se lanzó Kinect, una línea de dispositivos sensores de movimiento de Microsoft y, con él, una nueva forma de jugar. Me fascinaron las características de esta nueva tecnología y se me ocurrió una idea : ¿Y si aprovechamos las funciones de Kinect fuera de la consola?
Había tantas opciones y mucho que crear. Kinect se ha conectado a robots para realizar cirugías médicas o entregar paquetes en el campo de batalla. Kinect podría integrarse en tu hogar para convertirse en lo que ahora llamamos “inteligente”. También podría integrarse con hardware para utilizar comandos de voz, de modo que personas con discapacidad puedan trabajar con ordenadores y conseguir un trabajo que requiera el uso de manipulación específica de máquinas, o incluso prescindir del uso de un teclado. Me vinieron a la mente tantas fotos como si estuviera viendo una película futurista. Estas realidades se harían realidad más adelante, y probablemente las personas que lean este artículo ya tengan una Alexa en casa o incluso utilicen la Realidad Aumentada en sus móviles. Es posible que también hayas utilizado el reconocimiento de imágenes para simplificar tus tareas diarias. Bueno, estos conceptos e ideas los logré materializar con Kinect.
El proceso
Tengo un proceso de pensamiento de diseño metódico que es personal y funciona para mí, que he dividido en cuatro pasos. Me gusta trabajar así porque me permite imaginar y considerar todos los escenarios antes de comenzar, así puedo establecer objetivos sin restricciones. Ahora mismo mi imaginación es el límite.
Luego me tomo el tiempo para leer e investigar tanto como sea posible para que las implicaciones de mis ideas queden claras en términos de costo, alcance, tiempo y esfuerzo. Al final, tal como lo hacemos cuando usamos Scrum Framework para determinar un MVP, puedo definir mi Producto Mínimo Viable con este proceso. Después de eso, puedo empezar a fabricar el MVP; No trabajaré con ideas vagas hasta entonces.
Una vez que el MVP esté terminado, puedo agregarle más funciones. Siempre tengo presente la necesidad de establecer objetivos claros y alcanzables a corto plazo.
1. Pasantía de ensueño
Cuando algo me llama la atención, no sale de mi mente. Decidí hacer realidad mis ideas. Pero ¿qué necesitaba para materializar una idea con un desafío tan grande? En 2010, la tecnología era muy nueva; por lo tanto, la empresa no podría entregar un SDK (kit de desarrollo de software) a los desarrolladores en el corto plazo. En ese momento, cómo funciona una nueva tecnología es desconocido excepto para los ingenieros que la crearon; No se encuentran disponibles manuales ni otras fuentes de información.
Esto me llevó a crear cosas desde cero y confiar en mi proceso personal que sigo habitualmente antes de empezar algo como esto. Normalmente me lleva unos días o una semana organizar mis pensamientos, pero no tomo notas. Simplemente deambulo de una idea a otra, tratando de imaginar tantos escenarios como sea posible para determinar qué necesito y qué podría salir mal.
2. Etapa de investigación
Microsoft no lanzó ningún SDK para manejar Kinect en ese momento, así que me sumergí profundamente en la web para encontrar algunas personas que ya habían desensamblado el hardware para obtener las DLL (bibliotecas de enlaces dinámicos) que hacen que suceda la magia. Finalmente los encontré en un foro ruso. Los siguientes pasos fueron relativamente fáciles a partir de ese momento. Una vez que tenga las bibliotecas con las que trabajar, sólo es cuestión de leer su contenido. Mientras estaba en eso, compré tres sensores Kinect para desmontarlos y comprender sus capacidades de hardware.
3. Etapa de creación
En este punto, tenía todo lo que necesitaba para empezar. Esta es mi parte favorita porque simplemente te sumerges profundamente en ella. Comenzarás una relación a largo plazo con él. Este es el momento en el que te conviertes en un creador. Estaba codificando cuando me di cuenta de que las DLL simplemente interactuaban con el hardware, pero al código le faltaba algo más que hacía que Kinect escuchara y entendiera al usuario. En ese momento, descubrí que probablemente podría usar el diccionario que viene con Windows para traducir palabras habladas a texto, y así mi proyecto comenzó a entenderme mientras hablo.
Este paso fue necesario porque la DLL de Kinect solo contenía las funciones para percibir audio. Fue imposible determinar si el hablante hablaba en inglés u otro idioma, ni identificar las palabras pronunciadas. Al agregar un diccionario de Windows, tal como lo hacemos con nuestra computadora, puedes indicarle al sistema que defina el idioma con el que trabajar. Lo más importante es que también proporciona un conjunto de palabras para comparar con el audio recibido. Así, mi proyecto empezó a “comprenderme” mientras hablo.
Integré varios software y hardware de terceros utilizando sensores Kinect y sus bibliotecas. Por ejemplo, hice posible navegar por cualquier programa que no sea de Windows o escribir dentro de cuadros de texto para completar un formulario sin usar el mouse o el teclado. En el caso de Microsoft Word, podía navegar y controlar el puntero del cursor agitando las manos sin tocar el mouse y escribiendo en la hoja dictando oralmente sin usar ningún teclado. Podría hacer un auto eléctrico Lego y moverlo sin interacción física, simplemente moviendo mis manos frente a los sensores de la cámara para indicarle en qué dirección debe ir. Entonces el sueño finalmente terminó.
4. Etapa de perfección
Finalmente, es hora de mejorar mi proyecto agregando algunas características. Al analizar el hardware de Kinect, descubrí que había una rama de la ingeniería que desconocía. Funcionó con imágenes y se llamó análisis de imágenes digitales.
Descubrí que podíamos utilizar dos tipos de cámaras Kinect para detectar la profundidad del cuerpo e incluso de la mano. Te permite detectar la proximidad del sensor para que puedas jugar con más variables que los ejes x, y y z, y también detectará gestos faciales y posiciones de las manos para interactuar e integrarlos en múltiples sistemas de diferentes maneras. .
Poco después, pude realizar un análisis de sentimientos básico sin entrenamiento de IA, centrándome en los gestos faciales. Por supuesto, parece bastante sencillo si comparamos mi análisis de los sentimientos de entonces con el contexto actual. Hoy contamos con una especialización en Inteligencia Artificial dedicada exclusivamente a mejorar y actualizar algoritmos de análisis de sentimiento. En cuanto a otras funciones, pude controlar exitosamente el mouse, abrir y cerrar aplicaciones, dictado y escritura automática con Microsoft Word.
Conclusión
Hoy contamos con sensores más pequeños con los que trabajar y que nos permiten realizar las mismas integraciones que yo hice hace casi una década. Algo que me sorprende cada vez que recuerdo este momento de mi vida es que, a pesar de haber pasado tantos años, la tecnología sigue funcionando de la misma manera. Los sensores se han vuelto más pequeños y las actualizaciones de hardware han mejorado la calidad de la detección de estímulos ambientales, pero la lógica y los algoritmos de backend siguen siendo los mismos.
Y para las personas dispuestas a hacer algo que ahora mismo parece inalcanzable, recomiendo seguir mi camino. Deja volar tu imaginación y encontrarás al menos una idea viable. Comience su viaje y una vez que obtenga su MVP, eche otro vistazo a las ideas aparentemente inviables. Probablemente puedas materializarlos ahora.
Más publicaciones de blog de nuestros BDevers.