LEGO Mindstorms

I was asked this year to be a coach for my sons robotics team through First Lego League (FLL).  It was my honor and privilege to coach these fourth and fifth grade boys.  It is when I see activities like this I feel good about the future of our country as I fully expect each one of these kids to be the future scientists and engineers of our country.

For our school it was our first year in FLL.  We had 4 teams, each with 6 kids.  The season lasts from start of school to until the end of February and for our team we met once a week and for the last month we met twice a week.  All meetings were 90 minutes long.  That is an incredible commitment for coaches, kids and parents.  It spans football, volleyball, soccer, wrestling and basketball seasons (and I’m sure several others).

This years theme was Body Forward and the competition consists of two major components.  The first is the research project where you identify a problem and come up with a solution.  Our team had fun and chose the brain as their topic and our presentation was ‘Zombie Brain Inspectors’ because, as we all know, zombies like BRAINS!

The second part of the competition is where the real fun is.  There is a 4 by 8 foot playing field with a number of field pieces (made out of LEGO’s of course) with tasks (each with their own set of rules for completion) that you have to do in two and half minutes.  You build your robot using the Lego Mindstorms kit and software.  Our robot did well, partly I think, because we went through three major robot designs, and finally settled on a tank design that offered stability, flexibility, and repeatability (things you really want in your robot!).

The LEGO Mindstorms NXT programming software stinks, which is unfortunate, because it has marred an otherwise awesome experience.  It’s written in LabVIEW and while I’ve heard people rave about how good LabVIEW is – our experience was anything but that.

First, getting it to run on Mac OS X 10.5 and 10.6 was difficult (PPC or Intel didn’t seem to matter).  In fact, after trying for a month I gave up on it and went back to an old Dell laptop running Windows XP.  The installers on the CD’s don’t work in those Mac operating systems.  Period.  There’s a hack where you have to copy all of the files to your hard drive, modify one of the installation files and then install from hard disk.  Really!?  Leopard was introduced by Apple in October of 2007.  Simply unacceptable.

Once we did get it installed on my two year old Mac laptop the darn thing never worked right.  The mouse was always jittery and made it next to impossible to select the blocks.  It didn’t seem to matter if they used the built-in trackpad or an external mouse.  My team got so frustrated they all voted to switch to the Dell laptop.

Even once we got onto the Dell, our problems didn’t really go away.  We had permission issues with the help files that required fixing.  We had file corruption issues:  once during one of the practice rumbles!  Because of this we (okay, this one was mine but the boys loved it), “Save As will save your…bacon” and it did after we learned the ‘save as’ lesson the hard way.  Unfortunately, we discovered that saving to a thumb drive didn’t always work.  A file length of zero is a bad thing!  We also discovered that doing a Save As will sometimes rearrange your blocks for you and another coach reported having severe issues copying programming files from one computer to another.  Ya.  Not good.

Once you get into the development environment a couple of things strike you as being odd.  First, everything is a shade of white and grey making it hard on the eyes.  A lot of the really important text, while black, is tiny when it should probably be the most important thing on the screen at the time.  The  User Interface in the environment isn’t Windows, it’s not Mac OS X, heck it’s not even Java it’s some weird thing that I’ve never seen before.  One has to presume that this is the environment that LabVIEW creates.

The whole left to right programming paradigm is odd.  I think you could argue that a top to bottom approach would make more sense and would certainly make it easier to print out.  I don’t have a strong opinion about this as there might be some very good reasons to do it the way they did.  Frankly, making it look like LEGO’s is eye candy and could be left out in my opinion as it adds absolutely no value.

The NXT brick only has 4 input ports and 3 output ports.  Why do I have to specify which port on every block?  Why can’t I just say, somewhere, that Port B is the LEFT motor, Port C is the RIGHT motor, and Port A is the ARM?  Or that Port 1 is the LIGHT sensor, Port 2 TOUCH sensor, etc?  I can’t tell you how many times the kids kept changing the wrong motor or used the wrong sensor because they chose the wrong port.  Why can’t I customize the names of the ports?  That simple change alone would have made life simpler.

The Mindstorms software has the ability to add comments to your code.  It’s less than optimal because you can’t tie it to a block or group of blocks.  So if you make a comment and then insert or remove a block it doesn’t move and I’ll be darned if I can figure out how to move a comment once you’ve created it.  End result is we’ve taught the kids not to bother with comments and I find that to be troubling.

I live and breathe cross-platform software development on a daily basis so I am being very critical.  I can’t tell you how many times I’ve thought about how cool it would be to use Real Studio to develop a better, more modern Mindstorms application.  It would be  a MUCH better experience for kids learning how to program using the LEGO Mindstorms kit.  It would be a native Mac OS X and Windows application with the appropriate installation methods.

Alas, it is but a pipe dream.  FLL requires that the kids use the LEGO Mindstorms software.  I can’t tell you how much money I’ve spent on Lego’s for kids over the years.  You’d think LEGO could come up with some better software for all the money I’ve given them.  The software came out in 2008 and hopefully a new version is in the works.

Now that the season is over I will remember the good things about the season.  I will also try to forget the crappy experience we had with their software.