Adventures with Lego Mindstorms: NXT

Sunday, January 28, 2007

Let the Building Begin!

The Set

Well I just love this set! Techniques has obviously come a long way since I last opened a box! Even this is an understatement as many of these pieces I don't even recognize from previous sets. The lack of the standard "bump" pieces (except for two connectors that aren't used) was somewhat confusing to begin with; however, after a very short time I was clicking and snapping pieces together like a pro!

Building the included model

I like to do the included models first when I do a LEGO set so my first step was to build the three wheeled robot as detailed in the booklet handouts that come with the kit. I find building the models helps inspire more creations and gives ideas on how to achieve a certain goal or function using the pieces provided. When completed it looks like something that easily could have been designed by NASA. The grey and white colour scheme for the pieces gives the entire creation a clean professional look. The contents of the set itself are very impressive. When done there is a considerable amount of LEGO left which just begs to be assembled into new and interesting additions to your robot. Piece selection is also very well done with extras of almost every kind of piece needed for construction including the new 90 degree connectors for connecting two long beams. Most surprising was the addition of two, brightly coloured red and blue plastic balls so that your robot will have something to grab onto right out of the box.

Functionality

One of the main reasons that I bought this kit was to try and work on robotic interactions with the outside world, mapping it's environment and interacting with objects. To do this, I needed a good test platform with sensors all around and it seemed that the Tribot was the best choice with this in mind. However, there are some immediate disadvantages with the configuration as it stands. The sensor package that is situated up front consists of a downward facing light sensor and a forward facing push sensor with a touch bar hanging down in front with the ultrasonic sensor perched on top like a set of eyes. The entire thing is encircled by a pair of manipulator arms that are driven by the central motor of the Tribot. The function of this array is immediately apparent. The obvious use is to have the robot drive up to an object (the aforementioned coloured balls for instance) wait for the touch sensor to be depressed and then to close the manipulator arms to carry the object.

While this is an excellent set-up to teach basic programming and provide a platform for educational use, it falls short in of my needs in the following ways. First of all the three wheeled set-up itself has a very narrow wheel base. This is, for the most part, made up by the weight of the motors being very low, but with the NXT brick on top the centre of gravity is high enough that building the robot up any more would present some serious stability issues. Even in standard configuration a quick turn can cause some wobble although I have yet to have the robot fall completely over.

Customization!

To overcome this limitation it was necessary to widen the wheel base. I was also concerned about the ability of my bot to move around the sometimes chaotic mess that is my living room floor. It would have to navigate across the carpet, crawl over obstacles, and easily handle the transition from lino to carpet from the kitchen to the living room. The Mindstorm set comes with two pairs of fantastic rubber wheels, only one set of which is used on the Tribot. One of the first things that struck me while building the chassis of the Tribot is how closely it resembles the real life configuration of a skid steer. Having a second set of wheels available I set out to provide my little robot with four wheel drive skid steer propulsion. After much experimentation I came up with the configuration that you see in the picture. Unfortunately the Mindstorms set doesn't come with enough gears to allow me to extend the wheel base back far enough to provide stability fore and aft (especially important for skid steers as they tend to flip backwards and forwards under acceleration) so the third wheel now becomes the fifth to prevent backwards flips. The bot also has to sit up a little higher on the wheel to allow clearance for the aft sensor assembly. The front set of wheels is far enough forward to provide stability when accelerating backwards so no extra work was required up front. The drive unit is attached to the Tribot chassis at the rear of the bot and by using a 90 degree connector acting as the front strut. while it is possible to connect the unit by just using the attachment at the rear and at the front axle connection, this applies unnecessary stress on the axle.

The four wheel drive skid steer set-up has worked wonderfully. It eats up obstacles, has no problems at all with the carpet and is as maneuverable as the Tribot with a much wider, and more stable wheel base. There is no way this bot will tip over sideways! Ultimately I would like to add a third set of wheels behind the rear set. This would allow me to ditch the fifth wheel (Which has a tendency to get hung up on small objects anyway) not to mention would allow the robot to go any place my imagination desires!

Now that the drive systems have been created and installed, it was time to take a look at the sensor package and manipulation arms. A limitation of the standard Tribot which I was trying to overcome was the lack of input sensors at the rear of the unit. While moving forward the ultrasonic sensor can provide input forward, but when moving in reverse the bot would be traveling blind and the touch sensor would only be of use when using the manipulator arms. So the first addition to my bot is going to be a rear bumper bar using the touch sensor. I can use the ultrasonic sensor to provide input forward and by lowering it (so that it's sight line is blocked by objects in front of it such as the red ball), we can use the sensor to activate the arms when an object reaches the correct distance from our bot and by rotating the bot we can measure the width of objects as well as sense their presence. At least that is what I am hoping to do!

A Bot is born

So I am a proud father; however, there are still issues that I want to look at with this configuration. I am not overly fond of the manipulator arms and have been debating if I should keep them. For now I am deciding to let them remain, at least until I figure out a use for the third motor. I modified the sensor bar extensively from the original Tribot model. I wanted to insure it indicated the maximum width of the bot and provided a sturdy enough bar so that it wouldn't bend without pushing the button in.

There are still some things that will need to be looked at and modified. The rear bumper bar hangs out quite far and makes the unit unacceptably long and unwieldy. The problem is compounded by the long manipulator arms which can hit the front wheels when fully extended. The little "fingers" on the lower part of the claw sometimes seems to scrape along the ground as well. The touch sensor itself seems a little close to the gear being used as a push. The bar appears to rest on the sensor pad and I have a feeling this will cause problems down the road. Lastly the drive units themselves have a tendency for the outermost bar to come loose. All this can be all changed and I will be detailing the process in another post. You have to love LEGO!

Well there it is! Mikey Version 1.0. It isn't perfect by any means, but its a good start and there will be more to follow. I really need to get more LEGO as I am starting to run out of crucial pieces so I will have to be extra creative with my modifications. There is an Education Resource Set that goes with the Mindstorms NXT which I am planning on getting when it is next available on the website.

Next: Programming Options and My First Program

No comments: