BrickEngineer: LEGO Design

LEGO Engineering for LEGO NXT and Robot Enthusiasts

Danny – NXT Matlab Bluetooth Router


Daniele Benedettelli introduces a MATLAB-based NXC Bluetooth Router. This router relies on connecting a master NXT Brick to a computer via USB. This master NXT Brick then can communicate messages to up to three additional slave NXT Bricks up to a distance of 10 meters from the master. This software would allow one to create small swarms of up to three LEGO robots, which is a nice starting point for investigating distributed robotic systems.

MATLAB NXT Bluetooth Router

MATLAB NXT Bluetooth Router

The system relies on the RWTH – MINDSTORMS NXT Toolbox, the NXT Fantom Library, and John Hansen’s enhanced firmware.  The brick software is written in Not eXactly C (NXC), which requires Brick CC 3.3.

Daniele Benedettelli also has a book published titled Creating Cool MINDSTORMS NXT Robots (Technology in Action)

Infrared-Ultrasonic Beacons for Localization

An article at NXTasy.org highlights a three-wheeled robot that moves in one dimension and detects signals from an external beacon that emits ultrasonic bursts.  The robot relies on a microcontroller that runs a Kalman filter to perform and maintain spatial localization.  The NXT software is implemented using the LabVIEW NXT toolkit

NXT Reciever with Kalman Filter

NXT Reciever with Kalman Filter

Details on the project can be found at http://www.convict.lu/htm/rob/ir_us.htm#Kalman

MATLAB Packages for the NXT

There are now several MATLAB packages for robotics, and specifically for the NXT.  One paradigm is to run the code on a PC and have it communicate direct commands to the NXT Brick via Bluetooth or USB.  I have found this paradigm to be a bit dangerous since in the event of a MATLAB crash or a miscommunication, the NXT Brick will continue with its last command until ordered to stop.  This has the potential to destroy your robot.  The paradigm that I prefer to use is to write several programs that run on the brick.  These programs take commands from files on the brick that can be uploaded rapidly from the PC.  The MATLAB code then is in charge of sending the command files and starting and stopping programs.  In the event of a MATLAB crash or communication failure, the software running on the NXT Brick can be designed to terminate gracefully.

Here are the MATLAB packages that I know of.  The first two are specifically geared toward the NXT; whereas the last is a general robotics package.

10+1 LEGO Design and Engineering Tips

1. Use only parts that are necessary…no less and no more.
In the course of trying to fortify a LEGO construction, it is extremely easy to get carried away and add too many parts. If you are like me, you have a limited supply of parts.  Using too many parts rapidly depletes your supply and can add significant weight to your creation.  If you are building a robot, this extra weight can really slow it down.

2. Build strong connections
We all know that when stacking bricks to make a wall, you need to stagger the bricks so that the next layer of bricks holds the bricks in the lower layer together by covering up the cracks.  This is one way to build strong connections.  You can do even better by bracing the wall with a beam by pinning it to technic bricks embedded in the wall.  By adding a few carefully chosen pieces, it is possible to significantly strengthen a structure.  Just be careful not to go crazy and violate Tip #1.

3. Be aware of design constraints
Every time you add a LEGO part to your creation, you limit the possibilities of what you can make.  When you have nothing you can make anything.  When you grab a brick, you can now only make things that have that brick in it.  Each part constrains the creation. Be aware of parts or constructs or mechanisms that place too strong of a constraint on your design.  You dont have to get rid of them, but just be aware of the role they play in constraining what you do next.

4. Dont become TOO attached to your creation.
Sometimes we find that we really really like a certain aspect of the construction or a set of parts, but nothing else works. The tendency is to get rid of everything else and then build up around those parts we really like. However, these parts are placing strong constraints on the design… often too strong, which is why nothing else works. The solution is to get rid of the problem. In this case, you have to get rid of the set of parts you like because it is over-constraining the rest of the design. You dont have to destroy it (see Tip #9)… just set it aside, but be sure to remove it from your creation.

5. Be open to new ideas.
There is always more than one way to solve a problem. Be open to new, and seemingly crazy ideas. Sometimes these lead to ingenious solutions. If you suspect that you are having problems similar to those described in Tip #4, take some time out to brainstorm and see if you can come up with a new idea!

6. Build in stages.
Designing a complex structure or mechanism in one step is almost impossible. Break the construction up into stages, and consider each stage separately. Sometimes a given stage will still be too complex. If so, break that construction up into stages as well. Just be aware of the dangers in Tip #4 above. Your solution for one stage might be awesome, but if it doesn’t work well with your solution as a whole… it has to go. Again, if you have enough parts, keep your creations. Otherwise, at the very least preserve their memory by building them in a LEGO Computer Aided Design (CAD) system.

7. Watch for opportunities.
Sometimes we get lucky and we find that a part or a set of parts can serve two or more functions. This is an excellent situation as it saves you both parts, size and weight. Watching out for these opportunities, and taking advantage of them when you can, can really help make an elegant and efficient design. Just be careful not to become too attached to the idea, as you could end up in trouble as described in Tip #4.

8. Study your design.
When you are all finished, take some time to study and test your design. Consider both form and function. When considering form, you are concerned mainly with aesthetics (beauty). What do you like about the design? What dont you like? Is it too big? Is it bulky? Can it be made smaller, sleeker, more elegant? When considering function, you are concerned mainly with its operation and effficiency. Does it do what it is supposed to? Do the parts go together well? Does it vibrate? Do the gears mesh properly? Does it get stuck? Is there too much friction in the system? Could it be smoother? Is it safeguarded against parts breaking in high torque situations? Then consider the big picture. What did you do right? What did you do wrong? If you could do it over again, what would you change?

9. Keep your designs
I have mentioned this tip several times above. If you have enough parts, and enough room, keep your creations. Otherwise, at the very least preserve their memory by building them in a LEGO Computer Aided Design (CAD) system and generate building instructions. That way you can keep a good idea. Who knows if it will come in handy later?

10. Do it over again!
When building mechanisms that require careful consideration of either form or function, you should plan to make several prototypes (a prototype is a first design). Don’t destroy what you just constructed. You may need to refer to it by copying a part of the design that worked well. You may also need to see if you have improved the form or function by comparing it to your first attempt. I personally plan to make at least three prototypes until settling down with a final design.

11. Color coordinate your creation
I dont apply this rule to my first prototypes, but as I settle in on a final design, I work to choose the brick colors carefully. Of course, we do not always have enough parts to do this, but it is worth the extra effort. Colors scattered all over a design leads the eye to seeing it as haphazard rather than elegant. A careful choice of colors can really enhance the form of your creation. You can also use colors to enhance the function by color-coding functional segments of your design. This is maybe better for illustrative purposes (as in a LEGO CAD design), but usually I choose the latter and aim for an elegant coloration.

Kevin Knuth
Albany NY

Matlab Package for LEGO Mindstorms

I recently received a comment on my post on controlling NXT robots with Matlab that pointed me to the RWTH – Mindstorms NXT Toolbox for MATLAB®, which is a public domain Matlab package that enables one to interface with and control LEGO mindstorms.

The RWTH – Mindstorms NXT Toolbox for MATLAB® was developed as a student project in the Institute of Imaging and Computer Vision at RWTH Aachen University in Aachen Germany. It provides a Matlab interface with the NXT brick that includes Bluetooth communication, sensor interface and motor interface. It requires a working Matlab license, of course.

The package is very easy to set up. It took me less than ten minutes to successfully test the example programs over Bluetooth.

There are some very nice motor features, such as motor synchronization and speed ramp-up and ramp-down.

I have yet to explore how easy it is to modify or extend the code, but it ought to be a straightforward matter.

The package can be downloaded from
http://www.mindstorms.rwth-aachen.de

Kevin Knuth
Albany NY

Storing your LEGO Collection

It can be very difficult to figure out exactly how to store one’s LEGO parts. This depends greatly on the extent of your collection, and how mobile it needs to be. Below I offer a wide array of suggestions ranging from the size of one NXT set through tens of NXT sets with thousands of dollars of extra parts. Here I will review the solutions that I have found useful, and at the end I will provide a detailed description of my particular storage strategy.


Utility Boxes with Compartments
Clear plastic utility boxes with adjustable compartments are excellent for storing LEGO parts, keeping them separated, and making sure that they are accessible. I have found the products manufactured by Plano Molding Company to be especially useful. The Plano Prolatch with Adjustable Dividers
is secure and allows one to carry the box around without fear of accidental opening. These utility boxes are also included in the larger Plano Tackle Boxes, which provides an excellent means of both storage and transport.The new Custom Divider Systems (CDS) give you a great many ways to divide each box into bins with the greatest versatility. The other divider systems work well, but this is a nice option.

Small Box
Plano No. 2-3500-20
9-1/8″ Wide. x 1-1/4″ High x 5″ Deep
Up to 9 adjustable compartments
Order from Amazon.com
These fit into the Plano 1354 Tackle Box
below
Medium Box
Plano No. 2-3650-20

11″ Wide x 1-3/4″ High x 7-1/4″ Deep
Up to 18 adjustable compartments
These fit into the Plano 1364 Tackle Box below
Large Box
Plano No. 2-3750-20

14″ Wide x 2″ High x 9-1/4″ Deep
Up to 20 adjustable compartments
These fit into the Plano 1374 Tackle Box below

Tackle Boxes
Plano tackle boxes are designed to hold multiple (typically four) utility boxes above. This provides for a readily mobile storage solution. Your LEGO collection can be carried from your home, to the lab, a friend’s house, or into the field at a moment’s notice. Here is a photo of my Plano 1364 Tackle Box that I use for most of my construction needs.

Plano 1354 Tackle Box (3500 size)
I have found that the 1354 Tackle Box is a bit on the small side for even the smallest collections. You will be surprised at how many distinct kinds of Lego parts there are, when you find that they will never fit into the 9×4 compartments. However, this tackle box can hold 4 utility boxes, and you often can put an additional box in the top compartment.
Order at Amazon.com
Plano 1364 Tackle Box (3650 size)
This is a really nice size for a tackle box. I can easily store at least two NXT sets in this tackle box as well as many extra parts. Four Plano ProLatch 3650 stowaway boxes
fit in the tray resulting in 4×18 = 72 compartments. I also manage to keep an additional 3650 box in the top of the tackle box. I can often work with just this subset of my collection. In addition, it makes travel easy.
Plano 1364 Tackle Box at Amazon.com
Plano 1374 Tackle Box (3750 size)
This tackle box can hold a large number of parts. The top bulk storage compartment is sufficiently large and deep to actually hold smaller robots! The 3750 size utility boxes are very spacious, and this tackle box comes with one of the newer Custom Divider System (CDS) utility boxes, and one flip-sider, which is good for fishing tackle, but not so useful for LEGO parts. For this reason, you may need to buy an extra 3750 box to replace the flip-sider. And you may want an extra 3750 to fit in the top compartment.
Plano 1374 Tackle Box at Amazon.com

Compartmentalized Storage
For a more extensive LEGO collection, one may require more storage space for small parts, such as pins, axles, etc. Akro-Mills makes some very nice organizers with a large number of small drawers.

Akro-Mills 10724 24 Drawer Storage

This organizer can hold a healthy supply of small LEGO parts. The organizer comes with partitions that can be inserted into the drawers allowing one to keep more parts.Overall Size: W=20″ H=15.81″ D=6.38″ (inches)
Drawer Size: 4.25″ W x 5.25″ D x 2.0″ HI have three of these. One holds all of my pins and connectors. The second holds all of my axles and axle connectors, and the third holds all of my gears.
Akro-Mills 10124-2 44 Drawer Storage
This organizer can hold a healthy supply of small LEGO parts. The organizer comes with partitions that can be inserted into the drawers allowing one to keep more parts.Overall Size: W=20″ H=15.81″ D=6.38″ (inches)
Large Drawers: 4.38″ W x 5.25″ D x 2.0″ H
Small Drawers: 2.13″ W x 5.25″ D x 1.50″ H
Akro-Mils 10764 64-Drawer Storage

This organizer can hold many small LEGO parts. The organizer comes with partitions that can be inserted into the drawers allowing one to keep even more parts.Overall Size: W=20″ H=15.81″ D=6.38″ (inches)
Small Drawers: 2.13″ W x 5.25″ D x 1.50″ H

Large Storage Bins with Drawers
The larger collections require more extensive storage. Storage bins with drawers are excellent for storing large numbers of bricks of many colors and types. Stackable bins with drawers facilitate organization and access, although they require a good bit of space… or rather, your collection does!

Three Drawer Organizer
I have found the Sterilite ClearView™ Wide Three Drawer Organizer 2093 to work very well. Its dimensions are suffciently large to hold a large number of brick. Or one could make partitions (they do not come with the drawer) to store a wide array of parts in a single drawer. At this point, I use 20 of these to store my bricks, plates, liftarms, wheels, and specialized NXT parts. The clear drawers make it easy to see what is inside, and one can easily afix large easy-to-read labels.The dimensions of the three drawer organizer is:
14 5/8″ L x 14 1/2″ W x 10 5/8″ H.

Large Mobile Storage
My lab requires that a large proportion of my parts be easily transported. The best solution that I have found for this is the mobile toolbox together with a healthy set of Plano Utility Boxes (above). I was surprised to find that there is not the diversity in toolbox designs that I expected. I finally settled on the
Stanley Consumer Storage 033023R Pro Mobile Tool Chest.

This tool chest when packed full holds:
4 large Plano 3750 compartment boxes
3 medium Plano 3650 compartment boxes
6 small Plano 3500 compartment boxesThis is in addition to the large top tray that can hold Mindstorm NXT bricks, a great deal of cabling, and other tools that you might need.The tool chest has a handle and wheels, which makes for easy transportation.
Order from Amazon.com here.

See the more recent posts: COLORFUL LEGO STORAGE IDEAS and New LEGO STORAGE OPPORTUNITIES for more ideas.

Content Protected Using Blog Protector By: PcDrome.