Lo primero es situarnos en el contexto, para ello será necesaria una breve introducción a interficies para posteriormente entender mejor el papel que juegan los phidgets en la creación de las mismas
Nos encontramos en una fase de evolución en la manera de comunicarnos con los ordenadores, la HCI (human computer interaction) se está desarrollando a favor de nuevos paradigmas
Así como para las GUI’s estamos ya acostumbrados al paradigma de interacción WIMP (window, icon, menu, pointer device) introducido por Xerox Parc en 1973, y popularizado posteriormente por Mac y Windows
Para las TUI sin embargo todavía existen diversos pareceres y líneas de investigación, sin darnos una definición absoluta y concreta de cómo tienen que ser esas interfaces. Simplemente que de algún modo se enlazan elementos físicos, reales, que se pueden tocar (por lo tanto tangibles) con su funcionalidad o elementos virtuales. Ishii hace referencia a los Tangible Bits.
Pero nosotros nos vamos a centrar en un aspecto más concreto de esa evolución en el paso de GUI a TUI, y es más bien en como éstas se crean, y como ese modelo de construcción de GUI puede ser aplicado también para interfaces físicas, o como también nosotros denominaremos “extended GUI”
Para ello lo primero es entender que es un widget.
Pero antes de definir que es un widget, un pequeño break, daros unos segundos para que penseis que és un widget. Alguien sabe lo que es un Widget? Sí? Seguro? Porque hay una pequeña diferencia en lo que actualmente se ha popularizado como widget y no es del todo correcto
Supongo que esto es lo que os ha venido a la cabeza…
Estos llamados Widgets en realidad son “desktop widgets”
Según podemos consultar en la wikipedia un widget (o control) son los bloques sobre los cuales podemos crear interfaces GUI para interactuar con toda una serie de datos.
Es decir, los button, radio button, sliders, checkboxs, listas, scrollbars, menubar, menuitem, iconos, etc … Por lo tanto si podemos definir toda una serie de elementos atomicos para crear GUI’s podemos entonces trasladar esa idea a la hora de crear interfaces físicas y crear a su vez elementos que nos ayuden en el diseño de interfaces fisicas
Y aquí es donde entramos en qué son los Phidgets…
Un phidget es una representacion física y/o la implementación de un widget GUI, es decir bloques componentes electronicos
Los objetivos de los phidgets son los mismos que los de los widgets a la hora de crear interfaces, faciles de usar, sin mostrar su implementación y que tengan un API bien definida para poder trabajar con ellos
Sin embargo hay unas notables diferencias, entre ellas un Connection manager que se encargará de detectar los phidgets “enganchados” o presentes, un ID unico para cada objeto y un simulador para poder chequear el codigo y debugarlo sin necesidad de usarlo, es decir poder hacer uso del mismo de manera virtual
Definidos estos conceptos y las bases de lo que son los phidgets (definicion acuñada por primera vez en 2001) existen toda una variedad de toolkits que implementan estas caracteristicas. Quizas el más famoso sea el originalmente diseñado por la propia universidad de Calgary, Phidgets Inc
Phidgets inc -> http://www.phidgets.com
Pero existen otros como Arduino (con todas sus variantes), wiring, makingthings, tinker.it. Todos en común tiene un Connection Manager al que enganchar los sensores y el Connection Manager se conecta al PC generalmente mediante USB (Hay variantes por ejemplo de Arduino que tienen bluetooth). Lo que inicialmente era una extensión de widgets a nivel físico ha evolucionado en toda una serie de componentes electrónicos de input (sensores) y output(leds, displays LCD, servo motores…) que en ocasiones no tienen una conexión directa a un widget (ej: RFID)
Pasemos ahora a mostrar un par de ejemplos realizables con phidgets
Si los tangibles son elementos físicos para manipular información digital podemos intentar agrupar operaciones que son comunes en diferentes aplicaciones utilizando los mismos tangibles. Esa es la idea detrás de “Tangible Menus & Interaction Trays” , crear un sistema de menús tangible y reusable para diferentes aplicaciones y estar creado a partir de bloques de phidgets.
El funcionamiento es sencillo y consta de 2 partes. Los tangible menús son una serie de cartas identificables de alguna manera, ya sea por RFID o utilizando sistemas opticos de “barcode”. Por otra parte están los “tangible Trays” que son una paleta de controles capaces de leer identificar el menú que se les asocia. Además cada tray puede disponer de diferentes controles asociados a widgets de una GUI. En el proyecto se diferencian 3 tipos de tray: 1) menu (solo tiene botones/pulsantes), 2) parameter ( 3 knobs), 3) applications (mezcla ambos)
No por ello todas las interfaces que podamos imaginar deben estar espacialmente en el mismo lugar, podemos imaginar “distributed physical interfaces” donde los inputs de datos están distribuidos a lo largo de diferentes geoposiciones. Para ello no solo es necesaria un API fácil para trabajar con los Phidgets, sino que además será necesario resolver los problemas inherentes a un sistema distribuido, como descubrir los phidgets disponibles en red, controlar errores de conexión, latencia, etc
La arquitectura de Shared Phidgets rapidamente es la siguiente: (a) Usuarios que interactuan con los phidgets (b) estos conectados a su conection manager connectan directamente a un servidro central (d) o bien utilizan un servicio web proporcionado por Phidgets Inc (e). El Shared Dictionary contiene una estructura tipo arbol de cada uno de los phidgets distribuidos, para acceder a ella existen diversos metodos y objetos proporcionados en la Librería .Net de Shared Phidgets (g) Veamos un ejemplo de aplicación distribuida con Phidgets
Dos ejemplos concretos usando la arquitectura shared phidgets son Lumitouch, que consiste en dos marcos de foto con sensores touch y leds ubicados en dos lugares diferentes. Al tocas un marco se ilumina el otro. En Sensor maps es una aplicación que muestra sobre un mapa los diferentes tipos de sensores que hay en la red y su estado actual. Como acabamos de ver los phidgets pueden estar distribuidos espacialmente, pero no se prestan a ser reordenados ni reconfigurados por el usuario final ya que dependen siempre de su connection Manager, ya sea Arduino, el controller de Makingthings, etc
Sin embargo existe un proyecto llamado VoodooIO dónde el Connection Manager se reinventa y se extiende a toda una superficie
VoodooIO introduce el concepto de “Malleable control structure”, es decir una superficie de control personalizable de cualquier tamaño, forma y orientación, que además no es rígido; y otro concepto que veremos más adelante que es el de “softwiring”
La superficie de control maleable esta compuesta en un laminado de 2 capas de material conductivo en red separados por silicona y el todo sellado con silicona adhesiva sensible a la presión. Además este tipo de superficie puede conectarse entre ella misma manteniendo las propiedades de conductividad. Los phidgets en este caso disponen de unos pins que se clavan en la superficie, por eso decimos que es soporte fisico, reciben alimentación del soporte y además la superficie actúa como medio transmisor de la información del phidget.
Ampliando en detalle la arquitectura VoodooIO, observamos como los controladores estan compuestos de un transductor electromagnético, que puede accionar un I/O analógico o digital, también dispone de una memoria con información como su ID (al igual que phidgets) y tipo y donde también se almacena el estado del transductor. Y por ultimo una interfaz de conexión a la red. Este tipo de controles están basados en un proyecto anterior llamado Pin&Play. Como funciona el todo? El Voodoo Adapter escanea la red para buscar controles añadidos o quitados. Una vez detectado que se ha añadido un nuevo control lee su memoria para determinar de que tipo se trata y poder asi asociarlo a un widget GUI. Cuando un control modifica su valor (ej. Boton es presionado) entra en un estado “alarma” y el Voodoo Adapter se encarga solamente de leer los valores de aquellos elementos que se encuentren en estado “alarma” en lugar de continuamente leer todos y cada uno de los controles. Ademas se ponen a disposición del desarrolador librerias en diferentes lenguajes como C#.Net, Java, Processing o incluso Flash. Es un sistema escalable (utiliza tecnologia 1-Wire para transmitir los datos) Voodoo Adapter ofrece una interfaz de comunicación inicialmente via TCP/IP que es facilmente extendible a otros layers (ej. MIDI)
Como hemos visto VoodooIO no es una interfaz en si, si no más bien el medio para crear o dar soporte a la creación de interfaces como en el caso de los phidgets. Además es importante destacar la idea de softwiring, donde se trata de reflejar la idea de bajo acople entre el usuario, el control y la funcionalidad de la aplicacion.
Otro ejemplo de aplicación realizada con VoodooIO e una extensión para el clipboard. El copy/paste tradicional es el que observamos a la izquierda del todo, con la limitación de un único objeto virtual en el clipboard, existen algunas extensiones software para ampliar su capacidad y funcionalidades y finalmente podemos imaginar una interfaz tangible en la que se asocian elementos virtuales del clipboard con elementos físicos (botones)
Como funciona? Básicamente para copiar se selecciona previamente lo que se quiere copiar/asociar y posteriormente se engancha el pulsante/botón con el que se quiere hacer la asociación de contenido. Una vez asociado se mostrara por pantalla un feedback visual con un thumbnail del contenido en pantalla en la posición relativa del pulsante. Además como ya se ha comentado que el sustrato es sensible a la presión, cada vez que se presione también se mostrara ese feedback como recordatorio. Para pegar simplemente bastará pulsar el botón y se obtendrá una copia. Para vaciar el contenido del botón basta con desengancharlo durante un cierto tiempo (timeout). Remarcar la posibilidad de transportar contenido de un ordenador a otro.
Problemas: Cuanto tiempo es necesario para eleminar un contenido? 10 segundos? 20 segundos? 1 hora? No sustituye otros inputs El botón/pulsante no explica por si solo el contenido con el que esta asociado
VoodooSketch amplia las funcionalidades de VoodooIO utilizando un boligrafo Anoto. El boli Anoto pracfticamente es capaz de distinguir su posicion (x,y) en una hoja de papel, diferenciar entre diversas hojas y enviar al PC lo que se esta escribiendo mediante bluetooth. La idea detrás de VoodooSketch es simplemente dejar que el usuario “esboze” sus propias paletas de control. El objetivo por tanto es agilizar (“localizar”) elementos y facilitar su aceso. Permitir la colaboración, poder reordenar los elementos a gusto del usuario.
Partiendo como prerrequisitos que una cierta aplicación ciertas funcionalidades están definidas con una palabra o tag, se trata de asociar a un elemento de control de VoodooIO esa funcionalidad “on the fly”. Para ello elegimos los elemntos que necesitamos/queremos extender de la GUI y los pinchamos en el sustrato. La asociación no es inmediata sino que para ello es necesario con el boli Anoto escribir (poner label) la “palabra clave” (keyword) al control y entonces automáticamente ese control quedara asociado a la funcionalidad dada por el keyword. Por ejemplo si imaginamos Photoshop y que un keyword es “opacity” podemos asociar un “slider” escribiendo la palabra opacity al lado del control previamente enganchado. Como veis permite esbozar muy rápidamente una interfaz, personalizar paletas de acceso ágil extendiendo la GUI al vuelo.
Otro ejemplo de extensión de VoodooIO es VoodooFlash, que trata de hacer el paso inverso a Phidgets. Si La idea inicial de Phidgets es crear un widget fisico para cada widget de la GUI en VoodooFlash se pretende justo lo contrario, para cada control de VoodooIO crear su equivalente componente virtual en el entorno de desarrollo Flash. El entorno de desarrollo Flash se ha convertido ultimamente en una herramienta muy utilizada por diseñadores de interfaces graficas dado su facil manejo y la rapidez con la que se pueden prototipar nuevas ideas
Arriba izquierda vemos los componentes en Flash que tendrán su correspondencia en controles VoodooIO, mientras abajo podemos observar una interfaz creada en Flash en la que los controles se mapean con controles voodooIO
Finalmente para finalizar esta presentación algunos de las ventajas de los phidgets y su impacto en la realización de interfaces, sobre todo tangibles. Son económicos(algo que parece una obviedad pero importante en la investigación de nuevos modelos de interacción físicos), se pueden fácilmente rehusar al encapsular una funcionalidad muy limitada (recordar como widgets para GUI), son flexibles al ser pequeños bloques es fácil construir estructuras más complejas y quizás una de las más importantes es que permiten prototipar muy rápidamente interfaces y nuevos modos de interacción, sin necesidad de grandes conocimientos en electrónica y en algunos casos si quiera en programación