I recently had a chance to play with the LEGO Mindstorms NXT kit. I mentioned the Mindstorms in a previous post about robot kits, but this is the first time I've had free reign with one -- and the first time I've used one of the NXTs. Keep reading for the review.
With the help of two intrepid friends, we gave the Mindstorms kit a try.
First, the unboxing. The kit comes with a stock of different LEGOs, the NXT brick that contains the onboard computer and I/O ports, and a bunch of peripheral sensors. The sensors include an ultrasonic sensor for ranging, a bump sensor, a light sensor, and a sound sensor. Separately you can buy an accelerometer, compass, and color sensor. These all hook directly into the NXT brick. There are also three motors included in the kit, with gears, shafts, and wheels.
Installing the software is easy -- it's both OSX and Windows compatible (I have it running on my Macbook). It takes a while for the install to finish, but no big deal.
Now what to build? The kit comes with a booklet of designs and instructions for building them, as well as a few designs built in to the software. We chose to build the humanoid robot that's featured on the box.
I have to admit here that I was never a LEGO kid growing up. This is actually the first set of LEGOs I have ever had. I find it intimidating. I don't think in terms of mechanisms anyway, so trying to translate LEGO pieces into linkages and such makes no sense. However, my two friends -- one a fellow engineer, one a marketing professional -- are much better versed in LEGOs than I, and they found them much more approachable. Your mileage may vary.
At any rate, we started off with our humanoid, following the instructions on my computer. From my LEGO-uneducated perspective, it was difficult for me to see the larger context of what we were building (for example, while we were building what ended up being one of the feet, I didn't have any sense of what parts were supposed to be what until the end when we started putting segments together -- and had to go back and correct a few mistakes). It's also occasionally hard to tell exactly where a piece goes when all you see is the isometric view of the part; this also led to some backtracking and correcting.
A screenshot of the assembly instructions on my computer.
Once it was built, it was time to program it. The programming is very easy; you have a starting point from which you can build branches of code in block form. Building a "while" loop is easy, and the "switch" block is your basic if/then/else function. "Move" blocks choose which motors to move, which direction, power, and durations. All the most basic blocks are enough for most functionality, but behind a menu there are also more advanced blocks like Boolean logic. You can also make your own custom blocks or download them from the online community.
Showing our code in progress, with one of the "Move" blocks open and the parameters visible in the lower left
Uploading code is easy over USB or Bluetooth (if your computer has that capability). The NXT brick itself runs on 6 AA batteries, which so far I haven't drained. As to actual use... well, I don't personally need my own robot sentinel to guard my apartment, and with my short attention span I can only watch a LEGO bot walk around for so long. But with a goal in mind -- a competition, for example, or a school project -- I can definitely see the attraction.
So what do I think? I think I wish I were more comfortable with LEGOs, frankly. But I do have to give the NXT team credit for having put together a kit that presents the mechanical and software problems of robotics so well. With the kit instructions and built-in software the Mindstorms NXT can be easy to get up and running (it took the three of us about three hours total, including some time spent just messing around with the bricks and the software), and it can present a great engineering challenge to people more familiar with the design and programming concepts.
Our humanoid, all finished!
The Mindstorms NXT runs $249.99 and is designed for elementary school and up. I'd personally recommend some adult help for elementary school kids, though, as I could see a high likelihood of kids that young getting easily frustrated with some of the more complicated designs and getting started with the programming.
Many thanks to National Instruments for providing the Mindstorms unit, and thanks to Deanna and David, my partners in crime