Tuesday, February 14, 2006

Lego Biology: the Wiki-Constructopedia

I propose to build a wiki-constructopedia in the fun zone of this site. The wiki-constructopedia is a place where people can collaborate on building Lego Mindstorms NXT robots. The wiki-constructopedia is focused on the body of the robot. Software support will be added later.

Why Wiki?

You may have built a really great robot that you’d like to share with others. A constructopedia allows you to store step-by-step instructions for yourself and others to build the robot again later.

Later, when you see a robot design created by yourself or by someone else, you may find that there are things that can be improved. Maybe changing the placement of some parts makes the robot more robust, or more versatile. Or maybe you’d just like to add additional features to the robot. Today, doing this requires starting over with the building instructions. Wouldn’t it be great if you could have a discussion on a design, much like is currently done on Wikipedia. To be able to insert new steps, remove steps, or edit existing steps.

Lego Biology

At Wikipedia, truth is the ultimate measure. All pages are evolving toward the most accurate current understanding of the topic discussed. For a constructopedia, there is no such “ideal” that the robot is evolving towards. Much like software in the open source community, the features of the robot are always evolving. But unlike software, installing more features requires more (or special) Lego bricks. More complicated robots are not always the best robots.

At other times, you would like to take an existing Lego chassis, and evolve it into a completely different robot. Obviously, you are not just adjusting the existing robot, so you don't want to replace the existing instructions. So should you start from scratch for your robot?

I believe you should be able to create a new robot line by branching off an existing robot at a particular point. This leads to a family tree of robots. Anybody browsing the wiki-constructopedia, should be able to see the completed image of base robots, and their decedents. You could follow the evolution of the robots (in biology, this is called a taxonomy). You choose the robot with the look, functions and complexity that you like, and by clicking on the image, you go to the building instructions for that particular robot.

Each robot design should also be classified in one of the four Lego Mindstorms NXT categories: vehicles, machines, animals or humans.

Over time, some robot designs will used less frequent, or even go extinct. This will happen when the parts are no longer part of standard boxes, or ultimately no longer made by Lego. But by the time this happens, it is likely that those robot designs will have evolved into new robot designs that can be built with new parts that Lego has made.

Easy to Use

The aim is enabling 12-year olds from around the world to contribute to the wiki-constructopedia. So it should be really easy to use. This has a few implications.

First of all, there are language problems. It cannot be expected that 12-year olds around the world are capable of reading and writing English. On the other hand, it appears to be very complicated to translate everything to many languages. Therefore, to submit a robot, no text writing should be required. So the robot is just a series of images on how to build the robot. In the comment/discussion pages, for now, English will remain the main language.

Second, 12-year olds will not create the nice images that we all know and love from the Lego manuals. I know there are some great software tools out there to create such images, but using them is still too complex for 12-year olds. Rather, I’m going to assume that the 12-year old can use a camera. Maybe (s)he has a webcam, or a mobile phone camera, or mom/dad helps him/her out with the family camera. When the robot is finished, (s)he takes a picture. Then, (s)he breaks away one piece, and takes another picture. When the robot is completely disassembled, a series of images has been made (in reverse) that shows how to build the robot. Uploading these images is an easy way to describe a new robot.

I’m thinking of having people use photo hosting services such as Flickr. So, I would only store the URL to the image, not the image itself. This should seriously reduce the complexity of building the wiki-constructopedia. Flickr is also easy to use, and allows you to select the photo of the right size and copy the link to it.

It would also be nice if the robot builder could note per image which parts were used, by selecting them from a visual list. Even if the photo of the step isn't perfect, you know at least which parts you are supposed to use. At the start of the instruction, the wiki-constructopedia could show you a list of all the parts you’ll need. I would also add hyperlinks from the part to the step where the part is used. If you don’t have a part, you can see that step and evaluate if you can find a way around that step. Keeping track of which robots use which parts may also lead to interesting statistics. By looking at which parts are used most often, people may find it easier deciding which Lego boxes to buy to expand their Lego Mindstorms NXT set.

Anti-Spam, Anti-Vandalism

To avoid spam, I intend to require people to log in to change a page. The wiki-constructopedia will also keep automatic track of the history of an entry. The community will be able to restore an old version if it was falsely overwritten.


There is a many-to-many relation between robots and software:
  • the same robot may run multiple programs, each with different functionality, or different programs with increasingly complex software (novice versus expert), and
  • some software may work on more than one robot.
It is probably best to keep physical robots and their software separate, and to have links between them in both directions. So, for the wiki-constructopedia, software is represented as a set of links to the brainopedia. I haven’t dreamed up the requirements for the brainopedia yet. I image it will be hard to do so without working with the development environment. Right now, it is not entirely clear what the best format is to share software between fellow robot builders.


Off course, if Lego is planning something along the same lines, then there is no point in me building it. I will also be happy to help Lego with ideas on building the wiki-constructopedia concept on their own. But for now, please don’t hesitate to leave me comments on the wiki-constructopedia. Getting the requirements right before I get going helps a lot in the long run.


At February 14, 2006 3:14 PM , Blogger Jim Kelly said...


It's a GREAT idea. You've obviously put a lot of thought into this! My comments are as follows:

1. I would suggest, in addition to categories, that creations that use ONLY the BASIC KIT or the EDUCATION KIT be labeled as such. This would allow others to duplicate a robot without worrying that they are missing some key components. Maybe developing a naming-convention (I know, getting complicated here...) for each submission that identifies it with a unique name and some flags (example: AlphaREX-B,E - indicates the AlphaREX bot can be built with the Basic or Education kit.)

2. Parts list - I'm hoping that the MUP and/or LEGO comes up with an easy-to-use parts list. The RCX kits came with the constructopedia that had a fold-out sheet showing the parts and the number (2x or 4x). I would go one step further and make certain that each part is identified by name and given either a number of code. There are so many similar looking pieces in NXT, but they all need a unique name.

Great idea... hope you continue to add to it.


At February 14, 2006 4:51 PM , Anonymous Filip said...

Great first suggestion. If the software knows which parts each step requires, and knows the parts included with the basic and education kit, it should be fairly easy to have these labels added automatically! You are right, it would be a good thing to list that information together with the assigned name (I'm thinking more along the lines of an icon?), and enable filtering robots based on the labels. In fact, I think I'll also try to show:
* which parts the robot uses that are not in the basic or educational set, and
* which Lego boxes do contain those parts.

On the second suggestion, I'm hoping we can use the Lego names and part numbers for that, and reuse the work done by BrickLink (like they did on the RIS 2.0 parts). Is that more or less what you meant?

Thanks for the enthousiasm, Jim! It keeps me going.

At February 14, 2006 5:56 PM , Blogger Jim Kelly said...

Some additional comments:

1. LEGO may already have something like this in the works - unfortunately we probably won't know about it unless we are accepted on the MUP (or until Aug 2006). But I think your idea of using the existing Wiki framework is most likely the best way to do it.

2. My first suggestion in the earlier comment was based on an idea: with something like the Wiki, I'd like to be able to filter (through a drop-down list or checkboxes) all the creations. Something like "Only uses Retail kit" or "Retail kit + touch sensor + compass sensor" (to mean 2 touch sensors (1 in kit, 1 extra and 1 compass) - does this make sense? This way if I want to view, say, the simplest of designs I could do something like "Retail kit - servo motor - light sensor" which would show me all designs that use the basic kit minus 1 motor and minus the light sensor.

3. To answer your last question to me - Yes, I think using the offical Lego part numbers and names will work best - but we'll need that information assembled in one easy-to-read-or-print document for reference. The one included in the RCS constructopedia didn't have names or part #'s on it... just # of parts and a visual picture of the shape of the part. The Technics parts are very small and similar in appearance and there will need to be someway to identify each part.

At June 21, 2006 7:59 AM , Anonymous Drew Stevenson said...

I'd like to see a section for pure ideas. For example if I wanted to solve a problem or had a great idea, I could look in the ideopedia. For example I have an idea (before I even have the NXT) to use a servo as a "sweeping" sensor so that when resistance (reduced speed) is noticed it triggers a response (based also on the part of the arc the boom is on - low power is needed or you might move the bot around the obsitcal (or use high power if thats what you want). You could also home in and center the bot on the obstruction by turning until the boom and its resistance source are inline with the bots center). (OK so I just wanted to post this idea with a date stamp)
Well this idea would go under:
Sensors - Uses for Existing - Sweep Sensor.
Others might go under Sensor - Home brew or commercial.
Then if you where trying to find a good way to fire a projectile you'd look under:
Projectile - elastic Powered - Slapping Ballista - "This launcher uses a holed beam with headed (nose cones or ball ends) axels (short) stuck in along its length and a studless beam with the flat part facing the axels. An elastic is used to pivot the far end of the slapping studless towards the holding beam. neumatics could be used to pull a pin to release the swing arm which then bats the axels out their holes and towards the target which gets barraged by many many "arrows".

Now those examples are things I've actually wanted to share with the world as I think they are unique. But I have many more that I think a section for raw text ideas or scetches would be useful. Their are many ways to build these ideas but the idea it self is whats most useful. Also I might not be able to realize my dream - I might need some one else to run with my idea (until my nxt arrives atleast).

THe other comments sound Awesome - I cant wait.

At June 23, 2006 10:04 AM , Anonymous Filip said...

Hi Drew!

Interesting ideas. Probably, these ideas are best demonstrated in a real robot. So perhaps an ideopedia is compatible with a wiki-constructopedia. Based on your suggestion, I'm thinking about by adding a hierarchy of tags to a robot that is entered in the wiki-constructopedia. That way, you could navigate via “Sensor -> Sweep Sensor” tags, and arrive at a list of robots that use “sweep sensors”. If you want to demonstrate only the sweep sensors, then the sweep sensors are the robot that you submit.

By the way, a sweep sensor sounds like an antenna on the head of an insect. In the US, Roger Quinn and his group on Biologically Inspired Robotics at the Case Western Reserve University have published on how to use the sensor input of antenna’s to make maps of the world. Here is their paper which (unfortunately?) was published on April 18, 2005. In the past, I’ve reproduced work from CWRU biorobots group before and it is great fun. I’m interested in taking this paper and trying it for myself. But perhaps I can just try to reproduce Lego robot you build!

On building the Wiki-constructopedia software, I’m waiting to see what Lego comes up with. It would be such a waste of time to build a complicated online application like that, only to discover Lego has the same thing (or something that is close enough so that most people use the Lego version). Hopefully, Lego will soon be more concrete about what the “big changes to the website” are going to be.


At December 29, 2006 12:46 AM , Blogger K said...

Did anything ever come of this?

Sounds like a great idea, and well thought out so far.



Post a Comment

Subscribe to Post Comments [Atom]

Links to this post:

Create a Link

<< Home