One of the Modular Robotics projects I’m most proud of is the MOSS Huck Tank. It’s a MOSS kit designed with Huck Gee, one of my favorite artists. It’s gorgeous, and you can drive it around with your phone and shoot Nerf darts remotely!
Only 186 Huck Tanks will ever be made. Most of those went to fulfill the MOSS Kickstarter campaign, and severely tested the limits of the modbot Production and Operations team. We’re good at building MOSS, but we set up an entire pad printing production line to do the graphics. Pad printing is basically printing using a rubber stamp-ish tool. Anyway, there are ninety-four different “hits” from the pad printer in a single Huck Tank, and when we got into it, we realized that we had vastly underestimated the amount of time it would take to manufacture these beauties. Fast forward to today, and we’ve built and printed a final run of 55 MOSS Huck Tanks, using the last of the little shogun heads and shields in existence.
Art collector? Robot enthusiast? Nerf assassin? Grab one of the last Huck Tanks while you can. Here’s a teaser video from three years ago showing a couple of different prototypes (sans shogun head), and the raw power of the Nerf cannon.
I was super happy to hear this morning that my friends have officially announced their new company: Misty Robotics. Robots as friends or as part of our families? I think it’s going to be an interesting ride watching them figure this idea out.
I first met Ian Bernstein around 2009 or 10. We had just started Modular Robotics in Boulder, and Ian and his co-founder Adam dropped by our shop with half a prototype robot ball that had a bunch of wires sticking out of it. They were in Techstars at the time and wanted to talk about starting a hardware company. They’d eventually become Sphero.
Since then, Sphero has become a huge success in the toy market, and between sprints, Ian and I have been able to do some bucket list skiing together: Alaska hili-skiing one year, Chamonix backcountry, Retallack… People often seem sort of amused to meet us on these trips and find that we have toy robot companies a couple of blocks apart in Boulder, but we’ve never felt like competitors.
Now, Ian’s continuing to make his vision into reality by spinning off a new company, Misty, and closing a financing. I’m excited for them. While companies do indeed battle for space on store shelves, Ian and I are much more interested in the long view; when there will be an entire ecosystem of robot stuff all over our homes and offices. Thousands of tiny robot cubes doing some things, and “personable robots that benefit everyone’s lives” doing others.
That’s why I’m so excited to meet the robots that roll out of Misty.
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.
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’re working hard on some new tools that support advanced Cubelets play: programming tools that will let you change the behavior of one, or more, or all of the Cubelets in a robot construction. The possibilities are, in fact, mathematically endless, and we’re looking for an Undergraduate Research Assistant to build a ton of robots and help us improve and iterate on the system.
Why is the intern required to be a currently enrolled undergraduate student? Because through some of our research work, the National Science Foundation has agreed to pay for some of the intern’s compensation. Thanks NSF!
Computer science students are obviously welcome, as are students in art, architecture, history, or anything at all. No programming experience is necessary, but if the idea of programming is scary, then this internship might not be a great fit. Creativity and energy are the two most important attributes we’ll look at when screening applicants.
We’re happy to share with you TWENTY-EIGHT new standards-aligned lesson plans for teaching with Cubelets. You can take a look at them here, sorted by age. We’ve written 22 more, shown with greyed-out “coming soon” boxes, and we’ll publish the rest of these over the next month as we finish up some image editing and format the lessons for web and print. We just couldn’t wait, though, to publish the first 28.
We designed and tested these lesson plans over the last seven months by partnering with four local teachers. Each of them did amazing work putting the lesson plans together and iterating on them after trying out the lessons with their students. We’re going to be doing a lot more of this! By the way, if you happen to be at the NSTA conference today, please come by our booth and say hi to Beth Cohen, one of our Education Partners, and hear about some recent work she’s done in the classroom modeling biological systems and putting a robotic spin on history lessons…
You’ll see that most lessons are explicitly standards-aligned. Our hope is that this will help you justify your forward-looking work with robot blocks to schools and districts that are mandated to meet standards. We specifically identify the relevant Common Core, Next Generation Science, and ISTE Standards, with Teaching Strategies Gold alignment added for Pre-K and Kindergarten students.
If you get the chance to try out some of these lessons in a classroom, we’d love to hear your feedback.
This robot uses a reprogrammed Flashlight Cubelet to cause it to blink faster and faster as the sensor values it receives increase. Turn up the music; you’re ready to party with your very own strobe light robot! OK, ok. This robot might not be the life of the party on its own, but it’s an easy example to get started programming Cubelets.
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.
You’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.
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.
Last week we launched a Cubelets Operating System update. While the point three makes it sound like a minor update, it’s actually kind of a big deal. OS 4.3 improves a bunch of little things, and it definitively fixes one particularly nefarious bug.
You know how we’re always talking about complexity and emergent behavior? About how Cubelets can be a great model for complex systems we see in the world like societies, ecosystems, and economies? About how play with Cubelets will help kids develop skills to solve problems in complex environments? Well, even though we play with Cubelets a lot around here, sometimes emergent problems in complex systems can be a real bear to figure out.
Take the Nefarious Bug, for instance. Since the release of OS4, we’ve seen a few Cubelets spontaneously lock up and stop functioning. It happened every once in a while in our factory, and we heard from a few customers that the same thing had happened out in the world. When we took these “bricked” Cubelets apart, we found that each one was missing a tiny little piece of memory — a random line of programming had somehow been erased. And while I can function pretty well having no idea what I ate for breakfast yesterday, the microcontrollers inside Cubelets are a little more brittle, their memories need to basically be perfect in order for them to function at all.
I’ll spare you the rundown of our debugging process. Suffice it to say that hypotheses were made, tested, and then re-made. Ideas and hopes and dreams were repeatedly generated and then dashed. It took weeks, but we finally figured it out. It was the combined behavior of a mechanical bug, an electronic bug, and a software bug, but we fixed it just with software.
The particulars of the problem are a bit obscure. Are you familiar with the Rotate Cubelet? If you’ve ever wondered how the rotating face can conduct power and data without a bunch of wires getting twisted up inside, the answer is that it uses a slip ring. Slip rings have contacts that slide around a rotating ring, using friction to make electrical contact. Sometimes this connection isn’t perfect (at least not as perfect as a soldered wire) so there tends to be some noise on the power line near Rotate Cubelets. While this shouldn’t be a problem, a big Cubelets robot has power flowing throughout all of the Cubelets and through all of the faces, and a bunch of noise on a bunch of connectors all at once ended up causing low voltage transients that wreaked a little havoc on those tiny, tiny brains.
Previously, Cubelets were riding a fine line between the voltage level at which they’d automatically shut down and the voltage level at which they could brick themselves and apparently (in less than 0.1% of Cubelets), noisy rotatey power connections could shock the Cubelet into crossing that line. Once we finally figured this out, it was pretty straightforward to repair by changing a few settings in software and testing profusely with the noisiest Rotate Cubelets we could find.
Now OS 4.3 is out in the world. I’d recommend upgrading all of your Cubelets. Its super easy to do using the iOS or Android Cubelets app.
I’m Sawyer Bernath, Co-Head of Production at Modular Robotics. I started as an assembler four years ago, spent some time running our circuit board assembly line, and then moved into my current role. I’ve never written on this blog before, but something happened that I really wanted to share!
Earlier this month, Modular Robotics attended the first ever Colorado Manufacturing Awards, presented by CompanyWeek and Manufacturer’s Edge. We were nominated in the Aerospace & Electronics category, alongside Sierra Nevada Corporation’s Space Systems and Seagate. To be honest it was pretty intimidating, and we initially weren’t sure if it was even worth attending. We make toys. What are the chances our tiny robot factory could beat out a major satellite maker and an industry-leading storage manufacturer?
Apparently our chances were good, because we won!
After walking all the way to the podium from our spot in the back, I gave an awkward acceptance speech and rejoined our crew at the cool kids table (beer and toys). We were sitting with the guys from Ska Brewing and Colorado Malting Company, two other medium-sized companies who won their respective categories. It was pretty crazy to see CMC beat out Arrow Electronics, a Fortune 500 electronics supplier.
Overall, I was struck by the number and variety of attendees at the ceremony. Part of me was expecting a small event full of people trying to sell me stuff for our factory. But it totally was not that. The vast majority of attendees were bona fide Colorado manufacturers, making awesome products, and passionate about this growing sector of the Colorado economy. It’s a community I’m proud to be a part of.
Have you ever read Vehicles? It’s a favorite around modbot because it’s basically a set of thought experiments about how we can understand the world through simple robotic elements. As Braitenberg adds simple pieces of technology to tiny robots, the reader starts to see how lifelike complexity really can emerge from simple building blocks.
One of the little technological enhancements that results in interesting emergent behavior is stacking up simple sensors in a grid: this enables a robot to detect not only whether anything is in front of it, but to detect certain things. Apparently, we actually do a little bit of thinking with our eyes.
Take this simple Cubelets robot, for example. It’s a grid of twelve Distance sensors configured into a secret lock that can only be opened by a special key. Sure, Cubelets are robot blocks, and the resolution of the sensor grid is pretty low, but 2^12 means that there are 4096 possible combinations for a secret key. Pretty hard to hack for a toy.
Status lights are boring, though, right? Since Cubelets are modular, we’ll just snap on a few Drive blocks instead and turn the lock into a locked door. Look, candy!
I built these two robots a couple of weeks ago with a brand-new Cubelets programming system and I’ve been waiting to share them until it’s ready to launch. Today’s the day; if you’re interested, take a look at Cubelets Flash, download it, and start building some crazy custom robots.
Your Cubelets will all need to be running OS4 to connect to Cubelets Flash. Right now, if you have old Cubelets, you’ll have to use a mobile device running the Cubelets app to upgrade them first. This workflow is a little funny because we screwed up. We used to be able to program OS3 Cubelets using Cubelets Studio, and when we launched OS4 it was incompatible with Studio. It took us longer to release Flash than we thought it would, and I know that a lot of you are pretty excited to program your OS4 Cubelets. Right now it’s in beta release with only the most important functionality so that we could get it launched for you to play with as quickly as possible. Enjoy.