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!
What sort of robot would do well if it lived on a white table? How could it sense the edge and stop itself from tumbling over? If the robot had to keep moving, what sort of abilities would it need to keep from driving off? If the table were to change shape over time… or the robot were to be placed on a different table, what kind of robot rules would help it avoid a variety of edge shapes and angles of approach? How would it look? Could you reprogram the Cubelets to help ensure the survival of a table dwelling robot? These are the questions that guided the creation of the Cliff Scout.
Since the Cliff Scout will need to continuously move around the table, we can use two Drive Cubelets to create a robot that can travel and change directions. We could attempt to solve this problem by creating a robot that drives in a tight circle. Unfortunately, builders will discover that Cubelets robots will drift over time, and this may cause their robot to fall off the theoretical table.
So, we’ll need to reprogram the Drive Cubelets so they can spin in both directions and we’ll need to create some sort of triggering pattern to tell the robot when to turn. To detect the edge of a table, the Distance Sense Cubelets are placed at the front edges of the robot. This placement ensures that the robot can sense the edge as early as possible to avoid falling off. Placing the Distance Senses near the edges of the robot helps it avoid falls if it approaches an edge at an angle. The Distance Senses face down and are oriented in a way that allows them to detect the table edge quicker, giving the robot more time to react.
Robot InstructionsYou’ll need the following Cubelets to build the Cliff Scout:
- 2 x Distance Cubelet
- 1 x Battery Cubelet
- 1 x Bluetooth Cubelet
- 2 x Passive Cubelet
- 1 x Flashlight Cubelet
- 1 x Rotate Cubelet
- 2 x Drive Cubelet
The C files for each Drive Cubelet are available for download by clicking HERE and HERE. Use Cubelets Flash to reprogram each Drive Cubelet. Ensure that you flash Drive Program 1 to one Drive Cubelet and Drive Program 2 to the other. If you don’t, your robot won’t turn properly.
In order for the Drive Cubelets to respond to table edge detections, you will need to update the Block IDs so that they match your two Distance Sensors.
- Use Cubelets Flash to identify your Block IDs by connecting your Bluetooth Cubelet, Battery Cubelet, and Distance Cubelets. If you’re not familiar with Cubelets Flash, click here to view a helpful tutorial video.
- Power on your robot and pair with the Bluetooth Cubelet using your system preferences or Bluetooth settings.
- Then open Cubelets Flash, select your Bluetooth Cubelet and click “Connect.”
- After you’ve successfully paired. You should see a Cubelets “block-map,” like the one pictured below.
- Click on the Distance Sense icon to bring up your block details.
- Write down the Block IDs for each of your Distance Sensors. Then power down your robot.
- Open the “Drive Program 1” C file in a plain-text-editor or other coding environment.
- Replace the Block ID markers in lines 11 and 12. They are noted with the marker “INSERT_BLOCK_ID.”
- Save your C file and repeat this sequence for the Drive Program 2 C file. Be sure to save your file as a “.c” file. Some text editors don’t save as .c by default so you may have to change the file extension manually!
- Reconstruct your robot to match the pictured robot. Below you will find a couple pictures to help you match the robot design.
- After you’ve completed your design, power on your robot and connect to the Bluetooth Cubelet. You should see a new map with more Cubelets.
- Select one of the two Drive Cubelets (for this robot it doesn’t really matter which one you choose.
- Find your modified Drive Program 1 C file and drag it into the box to reprogram your Drive Cubelet.
- Wait for the program to finish flashing, then click on the remaining Drive Cubelet.
- Find your modified Drive Program 2 C file and drag it into the box to reprogram the second Drive Cubelet.
- After you’ve successfully reprogrammed your Drive Cubelets, you’re ready to test out your robot.
- Place your robot in the center of the table. Bright surfaces work best, so you may have to lay down some white printer paper to get the proper behavior.
- Turn on your robot to see if it worked. You may want to be ready to catch your robot if you’re worried about your construction. But keep in mind you need to keep your hands away from the Distance Sensors, or they may interpret them as part of the table and you’ll cause your robot to fall!
- Once you’ve succeeded, or if you’ve devised a better robot solution let us know about it online with the hashtag #cubelets
Happy Building and stay tuned for more intensive robot activities!
Note: When you’re done playing with the Cliff Scout, you can restore your Cubelets to their default programming with Cubelets Flash. Just reconnect your robot, then select the Cubelet you’d like to restore. Then click “Restore Default Firmware.” Select the next Cubelet you’d like to restore and repeat.