Thursday, October 27, 2016

Root: A robot to teach coding from 4 to 99 years old

(Spanish version here.It's been nearly 2 years since I've posted anything on this blog, but today I want to show off what I have been working on during that time. Here it is...

At the beginning of 2015 I joined a research group at the Wyss Institute, at Harvard University, where we are working on new ways of doing educational robotics (which has been my main pursuit since 1993). The result of this work is Root, for which we have launched a Kickstarter campaign:

There are several features that make Root and it's companion software (called Root Square) unique. I want to mention some of them here.

His world is the whiteboard
In the classrooms of many countries, the whiteboards are metallic.  This makes it possible to attach magnetic accessories to them (like the ones we attach to our refrigerators). Root is a magnetic robot; although it can work perfectly over a table, the floor, or over a piece of paper or poster board, it can also work vertically on a magnetic whiteboard. This is not a minor detail: the whiteboard is a great tool/arena for building the world with which the robot interacts. This can even be done while the robot is running, in an interactive way, opening up a lot of unique activities. Additionally, whiteboards offer another big advantage: if you have ever seen a robot competition, you probably know that creating the physical environment for the robot to compete is often complex and expensive. But whiteboards allow us to build complex 2D worlds by just drawing, which is in itself an interesting activity.

A lot of sensors, and something else
Not any magnetic robot can live in a whiteboard. Root features some important elements that makes its life there easier and, let's say, much more productive. 

First, Root has an grip in its geometric centre to hold a standard marker. An internal motor lets the robot to lift and drop the maker, and to do the same with the included eraser (which is part of the robot too). Until now, it might not look very different from other drawing robots...

But, Root can draw with high precision, due to a big set of internal sensors (high resolution encoders, a 3D accelerometer and a 3D gyroscope) that work together with its precision motors. This feature is more complicated that it first appears because Root must compensate for gravity (which should not be underestimated).

Finally, and this is probably his most important feature: Root has 32 color sensors on its bottom. This is kind of equivalent to a 1D camera, or a small color scanner. This group of sensors enable the robot to interact with people's and other robot's drawings. For now, Root can differentiate up to 5 colors (black, white, red, blue and green). The number of activities that can be done using just this sensor is quite large – particularly on whiteboards. The most important aspect of this sensor is that it's very easy to use with young kids, and yet powerful enough for complex problems you might encounter in a college-level class. It's versatile, robust, and easy to program. But the activities you do with it can be as challenging as the user wants...

One should note that Root is not only meant for basic activities, it's one of the robots equipped with most sensors in its market segment. In addition to the previously mentioned 32 color sensors, hi-res encoders, 3D accelerometer and 3D gyro...Root features 2 ambient light sensors, 4 touch areas on its top, 2 bumpers, an internal battery sensor, and 4 magnetic surface sensors on its bottom (which allow it to improve the way it drives on metallic surfaces). 

Regarding expansion, third party boards and other accessories (like Raspberry PiArduinoBBC Micro:Bit, cameras, sensors, etc.) can be connected through an USB-C connector on the robot's back. Root has also 16 multicolor (RGB) LEDs, and a piezo speaker with which it can play musical notes. For connectivity, Root can talk to any Bluetooth Low Energy device, like most modern tablets, mobile phones, laptops and desktop computers.

New multi-level software for all ages
A big portion of the research effort was dedicated to the software. Currently, in the educational robot market, there is no single product that can be used to teach coding from very early ages, like 4 year-old, all the way to college level. Think about a 4 year-old kid: in general, she/he doesn't know to read/write, and is not able to count to numbers bigger than 20. A graphical programing environment that really addresses this group is also very useful for older people who were never exposed to coding before. In making an interface that young kids can understand, you must introduce some limitations. While we wanted an easy entry, we didn't want to limit what people could create, so we chose to make Root Square, Root's companion software, multi-level:

Square Level 1
Root Square's Level 1 interface has been designed to be accessible for kids as young as 4 or older kids who have never experienced coding before. I have personally seen adults happy they created their very first ever program with Square Level 1. So far, Level 1 as some unique features that make it uniquely easy to program with:
  • It's probably the most interactive programing environment for robots out there: Not only does it not need compilation, but also the user's program can be modified while it's running. This puts Level 1 in a very different category when compared with traditional interpreters. Adding, deleting or modifying instructions (blocks) even inside a running loop is absolutely possible; the user's program will just keep running with the new modifications. This capability makes it ideal for working with young kids, as they are really playing with the code while it runs. This also facilitates introducing programming in the classroom, where time is always at a premium. No more slow compile, upload and test cycles.
  • It's been optimized for touch screens. Many currently available robots can be program now with graphical programing languages. Most of them follow the same paradigm which, let's say it, it's based in developments mainly done between 1995 and 2005 (so let's put it clear: this was 21 to 11 years from now). Square was designed breaking some of the "accepted rules", which were no more than just legacy stuff designed for desktop computers.
  • There has been a lot of effort invested in optimizing the relationship between the number of elements (blocks) that build a program, and the powerfulness of that program. This means that in Root Square, the user programs are short when compared with other graphical languages currently in use. But being short does not mean at all that the algorithm is hidden or not designed by the user. The student must still create each rule or response for the robot. Level 1 is completely events-based and thus with very few blocks it's possible to solve complex situations that in other environments require far more syntactic complexity. Often, the programs can run exactly the same as in other environments, but the Root Square program is shorter and easier to follow. I would like to explain more about this, but let's leave that for a future post.
Level 2 and Level 3
For more advanced users or the beginners who reach Level 1's limits, Root Square provides another graphical programing language: Level 2. Both levels are accessed from the same app in a very simple way, and previous Level 1 code can be automatically translated to Level 2 to ease the transition. Although Level 2 is more similar to other existing environments, it still brings some newnesses that make it more agile, more powerful and more friendly. Finally, the programs created with Level 1 and Level 2 can be converted into PythonJavaScript, or Swift code (Level 3). Root offers a rich and open API and a development kit (SDK) that opens the door to all kinds of advanced applications and interactions with other devices:
I hope to publish more about Root's details during the upcoming weeks. For now, the most important thing is to make it happen. Everyone can help through the Kickstarter campaign. Thanks!

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.