Some months ago, LEGO sent me a couple early production samples of their newest robotics system, Boost, and let me go to town with them. I told them I wouldn't review the thing, but would instead focus on an original robot or gadget of my own design, form & function to be determined. Here's the very first video footage of what I came up with:
To learn more about Boost, check out the
official site and Brickset's
first impressions. Having used the system extensively before and after its release, I can confirm that most of the full reviews on the 'web & YouTube were using the pre-production beta software (whether they made this clear like they were supposed to or not). I can also happily report that many of the early reported issues of extremely limited device compatibility, glitches, and crashes have been addressed and the product that consumers can actually buy seems very stable.
Boost is an introductory robotics education platform aimed at kids as young as 7, a market that's generally not fully ready for something like Mindstorms. Most Boost building is brick-based, with limited Technic parts usage as required for gears & axles & such. The strictly tablet-borne programming interface (you supply the tablet) is mostly drag & drop and uses no words, just symbols and very deliberate and thorough tutorials that guide the first-time user through discovery and initial inspiration. The core electronic component that you put batteries in & build upon has little to no "intelligence" within it. Instead, your programs are actually run on your tablet, with only raw motor & sensor data being transmitted back & forth to your 'bot.
I'll show my little autonomous tank-bot in detail soon, but the basic concept is that it's sweeping the distance-sensing unit from the kit left & right to look for obstacles. When it gets too close to something, it makes a decision, and turns to avoid a collision. I used some of my own parts like narrow tank treads to keep the form factor as small as reasonably possible. The code I'm currently running is pretty simple, though the amount of experimentation, hair-tearing & re-scoping I did along the way was a bit disproportionate. Boost seems absolutely fantastic for its target audience, but if you try to extract much in the way of precision or multi-tasking from it, you will quickly encounter quite a number of... quirks.
Your programs are interpreted in real time, which introduces a non-trivial amount of latency, and the sense/interpret/command loop can be slow enough that you can watch it with your bare eyes. You can create callable functions that can accept arguments, but they can't seem to return any information, and all variables are "local" -- inaccessible outside of the function where they're created. The system is inconsistent about waiting for tasks to complete before moving to the next command. All three motors (two in the main hub brick and one separate) are "encoded" so they can report their output shaft position (sort of), but they almost always over- or under-shoot when asked to turn to a specific orientation. There's also play in the internal gearboxes and the position sensors sometimes hang a bit between degree ticks, taking up to several seconds to decide whether to round up or down. Oh, and the thing won't drive straight. It just won't. It'll go a little to the left or a little to the right, and it's especially bad at low speed. My tank-bot's program tries to make some pretty drastic brute force corrections, depending upon which way it remembers most recently turning. Even that's not enough, though.
Given the many limitations of this simplistic system designed for young kids, I'm actually quite happy with how well it works, even though I grew a lot more gray hair getting it to this point than I would have ever imagined. I'll show the details of the physical design of the tank-bot in a future post, and probably demonstrate some of the code that survived the countless re-writes.