NXT Ramblings




My desire to make a tutorial a week can to a halt due to summer vacation and the preparations for getting my daughter off to college. I will try to start up soon.

I did take my NXT on vacation and played with it some more. I am learning that I really dislike the NXTG software. It seems to have many of the disadvantages of Robolab and RIS and few of the benefits. Take for instance the ability to add comments to your code. Yes, you have the ability to place the comments where you want them (like in Robolab) but they are not anchored to an icon. This means when you insert an icon all the comments that follow are now out of position. Not even a veteran programmer that knows the importance of comments is not going to bother using them except perhaps on a "fully completed never to be changed" programs. Anybody ever seem one of them?

The other nasty I found was the inability to delete all broken wires in a program. In Robolab you pressed CTL-B and all the nasty broken wires went away. In NXTG you must find them and delete them yourself or you can't download the program. I had a program that took me 20 minutes to fix. The broken wire was hidden behind other icons. I had to delete large chunks of program before the nasty wire became visible.

The other thing I dislike about NXTG is having to move around in a large program. Even on a very fast machine, the zoom window is sluggish. With the large NXT icons its difficult to see enough of a complex program to fully understand it. I can only imagine how frustrating this will be for students.

NXTG also seems to be very cumbersome when dealing with math operations. I wanted to limit a variable to a given range. This took a large number of icons to accomplish.

I have a copy of Robolab 2.9 on order. I am going to hope that this will be the way to go with NXT. But the rumor is that the motor feedback control loop to make a robot drive straight is not included. In my current state of mind, that is the ONLY advantage NXT has over RCX. Not having it available in Robolab would be very sad.

I am not yet at the point of discouraging the use of NXT for FLL, but I am close. I am reserving judgment till I see what issues are resolved in the next version of the firmware and or NXTG software. If LEGO can solve the blotted code size and the clicking brick problems then the other issues can be worked on over time. If they can't, this is going to be a very long painful season.


I am trying to make a new tutorial at a rate of one a week. Unfortunately the next tutorial will be delayed a few days as I put in place the infrastructure to make them quickly. This weekend I took the time to build a teleprompter. This will allow us to create scripts and record them without having to read from notes, trying to memorize scripts, or recording endless takes till one works. For less than $40 in materials and $44 in software we have an amazing toy. Can't wait to have you folks see the results!


I got an email from LEGO Education telling me that our intro video tutorial had a small error in it. Both the ultrasonic and the sound sensor will be included. We will post a corrected version in the next day or two. What that does mean is that LEGO is watching the NXT community closely.

Last night I played a bit with the ultrasonic sensor. In just a few minutes I was able to create a very simple and crude wall following program. This sensor has interesting possibilities for use in FLL. But I am also concerned about cross talking of two robots on opposite sides on a competition table. Since they all work at the same frequency, one robot's pulse could be seen as the others echo return with possible catastrophic results. Unfortunately this is not something I can test as I have only one NXT kit.

I also got a chance to start playing with some of the features of the motor control icon. I still do not have a good grip on how all the various features interplay. But this is good. It will keep me busy over the next few weeks.

What saddens me is the lack of information from the lucky 100 people that beta tested the NXT. Other than a few notable exceptions (the ORTOP website) and a couple of minor blogs, there is little information.


The other thing I find is that programs seem to run real slow. Looks like about 11 milliseconds an icon. That means the NXT can process only 90 instructions a second. My calculator is faster than that! This should not be considered the final word. I have lots more testing in this area to go.


Now I started to look at program size.
Program                    Size
0 Icons                    0.1K
1 motor icon               5.1K
2 motor icons              5.8K
3 motor icons              6.2K
4 motor icons              6.6K
1 TimeWait icon            0.2K
1 Loop Icon                0.1K

I did not finish an exhaustive survey. Takes way to long and there are many more interesting things to try!

But what you can notice is that nothing is linear. That first motor icon costs you 5K. The second 0.7K, the third 0.4, and the fourth 0.4K. Compare that against a wait icon at just 0.2K or a loop at 0.1K

Now I have been told that "MyBlocks" are implemented as subroutines and not inline macros. This might be our salvation.

Now one thing I found is to avoid playing sound files. These gobble up memory real fast. I can live with that.


To research the memory problem, I bit the bullet and pressed the hidden reset button for 4 seconds to reset my NXT to factory conditions.

A day later, I came across this website that STRONGLY suggests that you do not update your firmware. Numerous people have rendered their bricks brain dead after the NXT refuses to be upgraded.

But as luck would have it, it worked for me. The NXT losses its memory and only makes a slight ticking noise. (Don't try this in front of TSA!) You connect the USB, select Tools then Upgrade Firmware and in about 60 seconds your done. This is a GOOD thing. No more 10 minute downloads with 5 minutes to go before your match.

On a reset, there is 68.7K of memory free for user programs.

I then deleted all the Try-xxx system files. This recovered 21.8K.

I then delete the demo program. Got back another 9.4K. Total available=99.9K

The NXT still seems to function. Of course don't try to run any of the TryMe programs or the demo!


Memory issues are still plaguing me.

I have been making simple programs and have hit the "Not enough memory" way too often. The NXT seems to have only 78K of user memory. A really simple program (Motors in reverse for 1.5 seconds, Motors on for x distance then stop) takes 6K. That is just two icons! If this scales linearly, that means we have about a grand total of 40 icons total! Did we just trade fantastic accuracy for the memory of a gnat?


And now a plug for Philippe Hurbain's website. Here is a person after my own heart. Lots of great Mindstorms information including some on NXT.


A unashamed plug for my local BatteriesPlus franchise (522 Amherst St. Nashua, NH). I went out to buy a short case of Duracell ProCell batteries (144 cells) and mentioned I was working on FLL. The manager gave me a great discount at 34 cents a cell. Best I can find on the web is 38 cents plus shipping. The offer is open (at least at this store) to any team that mentions its for FLL.


With just three missions programmed and in the NXT, we hit the "Insufficient memory" error! This was a complete shock. We only had three of the simplest point and shoot type missions programmed. Nothing fancy. No line following algorithms, no self calibration routines, no neural network fuzzy logic controllers! It turns out what we did have was sound. The NXT allows you to play WAV files. Its great fun to make your robot talk, but they take up vast quantities of program memory. We removed them and recovered a big chunk of memory.

Still, I am concerned about memory space. The NXT only seems to have about 140K of available memory. In this day of low cost memory, I am surprised (perhaps even horrified) that LEGO did not include at least 500K of memory. This may be the only blunder in what is otherwise turning out to be a great product.


Over the weekend, I started to get concerned about the repetitive insertion and removal of the USB cable. So my son and I ran out to CompUSA and purchased a USB Bluetooth 2.0 Class 2 Adapter for our laptop. The IOGEAR unit did not install as easily as the package let us to believe, but within an 1+1/2 hours we had it up and working. The instructions in the LEGO user guide were a definite help.


We can program the robot from 30 feet away without much penalty in download time. No more fumbling with the USB cable. Quick turn around on changes ("Hey Dad, add another 20 counts to the motor move as we approach the pipeline"... "Ok, here it comes!")

The downside is that it would appear to gobble up batteries at an even faster rate. We nuked a set of industrial alkaline batteries each day we used the NXT.

The other issue is that it is my understanding that Bluetooth will be disallowed at competitions. So make sure you leave the USB connector free as you build.


My son and I have been working with the consumer NXT kit for the last several days. We have set ourselves a goal to solve the Ocean Odyssey challenge with nothing but the parts in one consumer NXT kit. Further more, we are starting from the sample robot (Tribot) provided in the small instruction book.

In just a few hours we were able to build the sample robot, install the software, and run a test program. The following day we wrote mission programs to solve the debris, the shark, and a combined dolphin/pipeline mission. All these missions work 10 out of 10 times. The NXT does indeed improve the odometry accuracy significantly.

To quantify the improved accuracy, we ran a few experiments. The Tribot as built from the instructions drives quite straight. Over a 48" run it will vary no more than 1/16" in distance, and only +- 1.5 inch side to side (3 inches total). One source of variability is in the swivel caster. We replaced the caster with just a skid and reduced the lateral error to +- 1/2 inch. Strangely the longitudinal error increased to 1/8".

Compare this to the RCX robot that took my state champion team 4 years to develop. It has a limited slip differential. Over the same 48 inches run, its longitudinal error was an ugly one inch. Its lateral error was a nauseating +9.25 to +7.25" (two inch variation 8" to the right of the center line). I will not even report the numbers when we removed the limited slip clutch!

Way to go LEGO!


Background courtesy of Fibblesnork
Copyright 2003-2006 Skye Sweeney; Last Updated on 7/18/2006