There are a lot of different ways to build with Cubelets. Little kids, around 4 or 5, mostly like stacking them into tall towers and large constructions with flashing lights. Older kids usually build with more focus, snapping together mobile robots that avoid walls or beep when they’re being chased. Some people like remote-controlling their Cubelets robots with phones and tablets, and some people like integrating LEGO into their constructions. Super enthusiasts with a lot of patience have been able to reprogram Cubelets in C, unlocking unlimited functionality at the price of a steep learning curve.
Now, using brand-new Cubelets Blockly, anyone can learn to program Cubelets and take robot blocks to a completely different level. Blockly is a puzzle-piece programming language. You drag programming pieces around on the screen in an easy interface, but still with all of the power and expandability that text-based typing languages provide. Rad. Purists and alpha geeks may still wish to write C programs using Cubelets Flash, but most of us at modbot are tending to use Blockly since it’s so fast for prototyping and quickly exploring ideas.
I just opened up Blockly on my Mac and wrote a simple program: the Paper Towel Dispenser. An old standby. You know, wave your hand in front of the sensor and the motor turns on for a few seconds? It’s a super-simple version, but it worked on the first try! The program looks like this:
The program is written for a Distance Cubelet, so it monitors its distance sensor and then, when it detects a hand passing over it, sets its block_value to 200 for a couple of seconds. I decided to write my program for the Distance Cubelet so that I could line up as many Drive Cubelets as I want to be a little conveyor belt and not have to program any of them. I’m also dispensing a little aluminum ruler instead of paper towels, but that’s just a technicality.
It’d be easy to rewrite this program for a Drive Cubelet, and then I could stick on any type of Sensor Cubelet (not just Distance) and try to trigger the Drive.
Programming a whole pile of little robots instead of just one is an excellent way to see how there are often multiple ways to solve problems, and how small changes can have huge ripple effects in a complex system.
As I sit here enamored with my unimpressive ruler mover, Sam, our new Robotics Intern, is building a six-legged, catapult-equipped Cubelet/LEGO robot. And he just finished documenting a Cubelets paper football goalpost robot with three levels of gameplay which is pretty amazing.
Programming and interacting with a whole bunch of tiny robots is different from working with just one. Even though Cubelets Blockly is designed for kids, it contains some pretty advanced functionality. With a multi-robot system like Cubelets, blocks need to send messages around to other blocks and things are happening in parallel. We wrote a set of tutorials that highlights the key differences and walks you through building a few robots.
You’ll need a Bluetooth Cubelet and a few other Cubelets to play. Today, Blockly runs on Macs and PCs, and we’re going to be launching iOS, Android and Chromebook versions later this year.
Happy hacking; let us know if you build something cool!
We just had a two-day Modular Robotics retreat in the mountains. We skied on Wednesday at Winter Park, stayed in a big house in Fraser, cooked together, and spent Thursday working on strategy and planning.
This year was different from last year; we brought all of the carpet people (carpet people are all non-elves) at modbot instead of a carpet subset. It was great: every time we take a day away we seem to make amazing progress. I started off Thursday with a little story about why I Modular Robotics and what gets me up in the morning and I thought I’d share it here too:
I’ve spent some time recently with my friends’ kid who is three years old. Her incessant “why” questions can often prove thought provoking. No matter how deep she digs, you can never tell a kid that something is just because it is. Although questions of fate and trajectory are interesting for adults to discuss, telling a kid that something happened because “it was meant to be” is just a cop out. Her lines of questioning got me thinking deeply about why Modular Robotics?
Of course, that question has many answers. Because of luck, coincidence, being in a certain place at the right time, and because of a million books read, chance encounters, and free associations. But why am I doing Modular Robotics? is easier to answer.
I started and am running Modular Robotics because I want to give people tools that will help them think better about complex systems, emergence, and the ways in which the world really works. Why? Because better thinking about complexity will help us solve the world’s big problems.
I get frustrated sometimes not just by big problems in the world, but in our reaction to them. It feels to me like most of the time, our reaction (and probably, the way that we think) is often gross oversimplification. It’s an election year, for example, and if we think hard, we know that platforms and governance comprise an extremely nuanced and complex system, with thousands of interacting parts and conflicting aims. A glance at the news, however, paints issues in terms of black and white, red and blue, praise or outrage. Things are more complicated than that, and a failure or refusal to dig a little deeper and try to understand things a little better leaves us making bad decisions.
Consider social problems, mass shootings for example. It’s universally recognized that we should all work together to reduce this sort of thing, but it’s hard to find a smart conversation about it and not a thousand shouting matches that sound like “I love guns” versus “I hate guns”. The world is not that simple, and I think we can learn to think more deeply about problems in the world and make forward progress as a species.
To really understand complex systems, patterns, and emergent behavior, we could all study complexity theory, cellular automata, and chaos, but those are abstract, rarefied fields accessible usually only to academics. I think we’ll have better results getting kids to think differently about complexity, because their minds aren’t already made up and set in their ways.
Complexity science is all about taking things apart: looking at real world systems and distilling them down into theory. But kids, and adults, often learn best by building things. When we build things, or design things, we can see many different combinations of simple pieces we understand.
People have been trying to give kids little models of complex systems for a while, but most of those have been apps (the Sims, even) or other systems that encourage you to select some pixels and watch scenarios play out on a display. I think that sometimes pixels on a screen aren’t the best models for real-world systems, but that sometimes, robot blocks might be.
I’m not saying that playing with Cubelets teaches kids complexity science. But it helps them develop intuitions about complexity, emergence, patterns, networks, computation, and lots of STEM subjects, so that when they encounter those things later, they make sense. Playing with LEGO as a kid, by way of analogy, didn’t teach me the physics of friction, balance, shape, mass, and force, but when I got to Physics in twelfth grade, the laws made sense, and the equations were just another way to describe phenomena that I was already familiar with. Some people, who hadn’t gained these intuitions through experience, were lost in a sea of Greek letters.
I think that sets of robot blocks, designed, distributed, and well supported, can help make our kids smarter about the world than we are. I want to have a really broad impact with Cubelets and change as many kids’ minds as we can. That’s what gets me up in the morning.