Monday, October 24, 2016

Root: un robot para enseñar programación de 4 a 99 años

Hace casi 2 años que no publico en este blog, pero hoy puedo mostrar el resultado de lo que vinimos haciendo durante ese tiempo. Así que aquí va...

Desde principios de 2015 pasé a formar parte de un grupo de investigación en el Wyss Institute, perteneciente a la Universidad de Harvard,  donde estamos trabajando en nuevas formas de hacer robótica educativa (que ha sido mi principal área de interés desde 1993). El primer resultado es Root, que fue lanzado hoy a través de una campaña de Kickstarter:



Hay varias características que hacen únicos a Root como robot, y a su software (llamado Root Square, aunque de ahí en más lo voy a llamar simplemente Square). Quiero mencionar algunas a continuación.

Su mundo es el pizarrón
En las aulas de numerosos países los pizarrones son metálicos, de modo que se les pueden adosar accesorios magnéticos, como los que pegamos en la puerta de la heladera. Root es un robot magnético: si bien puede funcionar perfectamente en una mesa, en el suelo, o sobre un pedazo grande de papel o cartulina, también puede trabajar verticalmente en un pizarrón moderno. Esto no es un detalle menor, ya que el pizarrón es una gran herramienta para construir el mundo con el cual Root interactúa. Esto se puede hacer incluso con el robot funcionando, de forma interactiva, lo que abre muchísimas posibilidades. Adicionalmente, los pizarrones tienen otra ventaja importante: quien alguna vez ha participado en competencias escolares de robots, probablemente esté familiarizado con lo difícil que resulta construir el entorno en el que los robots deberán competir. Muchas veces esto también implica gastos adicionales importantes. Los pizarrones, en cambio, nos permiten armar mundos complejos bidimensionales sin más que dibujar, lo cual además es una actividad interesante.


Muchos sensores, y algo más
No cualquier robot magnético podría vivir en el pizarrón. Root tiene varios elementos que hacen que su vida en el pizarrón sea, vamos a decir, más productiva. 

Primero que nada, Root tiene un encastre en su centro geométrico para colocar un marcador (de los comunes, nada especial). Un motor interno le permite bajarlo y subirlo, así como también bajar y subir un borrador que ya viene incorporado. Hasta acá, esto no es tan diferente de otros robots tipo "tortuga".

Segundo, Root puede dibujar con mucha precisión, debido a un grupo de sensores (encoders de alta resolución, un acelerómetro 3D y un giróscopo 3D), que trabajan en conjunto con sus motores de precisión. Esto ya es más complicado, sobre todo teniendo en cuenta que Root sabe como compensar la gravedad (a la que no hay que subestimar nunca).








Tercero, y esto es quizá lo más importante: Root tiene 32 sensores de color en su parte inferior. Esto es equivalente a una cámara unidimensional, o dicho de otro modo, a un pequeño scanner color. Este grupo de sensores le permiten interactuar con lo que las personas y otros robots dibujan. Por el momento, Root puede distinguir hasta 5 colores (negro, blanco, rojo, azul y verde). La cantidad de actividades que se pueden hacer utilizando este sensor es realmente alta. Pero lo más importante, es que al sensor de color se lo puede utilizar de forma muy sencilla, comenzando con niños muy pequeños, o de forma mucho mas compleja, incluso a nivel universitario. Es versátil, robusto, y fácil de programar; o tan difícil como se quiera...


Pero como la idea de Root no es sólo hacer actividades básicas, vale notar que es uno de los robots equipados con más sensores en su segmento de mercado. Además de los 32 sensores de color, y los mencionados encoders de alta resolución, el acelerómetro 3D y el giróscopo 3D, Root cuenta con 2 sensores de luz ambiente, 4 zonas táctiles en su parte superior, 2 bumpers, un sensor interno de batería, y 4 sensores de campo magnético en su parte inferior (que le permiten mejorar la forma en que interactúa con superficies metálicas). 

Finalmente, un conector USB-C permite montarle placas y otros accesorios (Raspberry Pi, Arduino, BBC Micro:Bit, cámaras, sensores ultrasónicos, etc.). Root tiene además 16 LEDs multicolor (RGB), y un parlante con el que emite notas musicales. Y ya que hablamos de conectividad, Root cuenta con Bluetooth Low Energy, lo que hace que pueda conectarse a todo tipo de dispositivo móvil o a computadoras modernas de escritorio de forma muy pero muy fácil.


Nuevo software multinivel para todas las edades
Enorme parte del esfuerzo de investigación hecho con Root se hizo del lado del software. Cuando uno mira en el mercado actual de robots educativos, no hay realmente un producto que pueda ayudar en la enseñanza de programación desde edades de alrededor de 4 años hasta la universidad. Pensemos que a los 4 años, un niño generalmente no sabe aún leer y escribir, y muchas veces, no puede contar hasta números mayores que 20. Un entorno gráfico de programación que realmente funcione con niños de 4 años puede incluso ser útil para personas de mayor edad que nunca en su vida hayan sido expuestas a clases de programación, pero aún así, pronto quedará limitado en adultos. Es por esto que Root Square, el entorno de software que acompaña a Root, es multinivel:


Square Nivel 1
El Nivel 1, como ya decíamos, está pensado para niños de 4 a 6 ó 7 años, o para aquellos un poco mayores que nunca programaron. He visto personalmente adultos felices tras haber hecho el primer programa de su vida con el Nivel 1 de Square. El Nivel 1 tiene algunas características realmente únicas, algunas de las cuales se aprecian más a medida que se utiliza:

  • Es quizá el entorno actual más interactivo que existe para programar robots: No sólo no necesita compilación (ni "tiempo de subida" de la computadora o el dispositivo móvil al robot), sino que es incluso posible modificar un programa mientras éste está en funcionamiento, lo que lo coloca en una categoría diferente con respecto a los intérpretes tradicionales. Quitar, agregar, o modificar instrucciones inclusive en el interior de un ciclo (loop), es absolutamente posible: el programa del usuario simplemente seguirá funcionando con las nuevas modificaciones. Este tipo de capacidad lo hace muy útil con niños pequeños, quienes prácticamente juegan con el código mientras éste corre. Pero además agiliza mucho el trabajo en aula, donde el tiempo siempre es escaso.
  • Está optimizado para pantallas táctiles. Muchos robots cuentan actualmente con sistemas de programación gráfica. La mayoría siguen el mismo paradigma, que hay que decirlo, está basado en ideas que en su mayoría tiene origen alrededor de desarrollos realizados entre 1995 y 2005 (vamos a decirlo claro: desarrollos de 21 a 11 años al día de hoy). Square fue diseñado rompiendo algunas de las "reglas aceptadas", que no eran más que herencia de software desarrollado básicamente para computadoras de escritorio.
  • Se trabajó mucho en optimizar la relación entre la cantidad de elementos (bloques) que componen un programa, y la potencia de dicho programa. Esto quiere decir, que en Square Nivel 1, los programas son cortos, cuando se los compara con otros entornos gráficos actuales. Pero no por esto esconden el algoritmo, que aún tiene que ser creado por el estudiante. Está basado completamente en eventos, y con muy pocos bloques se pueden resolver situaciones que en otros entornos hoy por hoy requieren más complejidad sintáctica (aunque al analizar el programa, los algoritmos son los mismos, sólo que menos concisos). Me gustaría explayarme más sobre este punto, pero sería largo. Espero poder mostrar más ejemplos pronto.

Nivel 2 y Nivel 3
Para aquellos usuarios más avanzados, o para quienes alcanzan el límite de la capacidad de Nivel 1, Square cuenta con otro entorno gráfico, llamado Nivel 2. Ambos se acceden desde la misma aplicación de forma muy sencilla. Si bien Nivel 2 es más similar que Nivel 1 a otros entornos existentes en muchos aspectos, también incorpora algunas novedades para hacerlo más ágil, más potente, y más amigable. Finalmente, los programas creados con código de Nivel 1 y Nivel 2, pueden ser convertidos en código Python, JavaScript, o Swift. El entorno para trabajar con dichos lenguajes se llama Nivel 3, y allí Root ofrece una completa API abierta y un kit de desarrollo (SDK), que abren las puertas a todo tipo de actividades avanzadas e interacciones con otros dispositivos:


Espero poder en las próximas semanas ir publicando algunos otros detalles de este desarrollo. Por ahora, lo más importante es que para hacerlo una realidad, contamos con la ayuda de todos en la campaña de Kickstarter.