Bachelor Thesis: Simulating Lego Mindstorms
Damn, I haven’t updated this in a long time, have I? Don’t worry, though, I will now post more here, as I have found a good topic: My bachelor thesis, which I recently started working on. Let me introduce you to it.
![The topic: Lego Mindstorms Roboter.](/bachelorthesis/originalrobot.jpg)
I think Lego is fairly well known. For a few years now, they have been offering a set and system that allows you to build robots with it, known as Mindstorms. The most current version is Lego Mindstorms NXT 2.0. It is great and it has also found a place in teaching programming. In particular, at RWTH Aachen, there is the [go4IT!][go4it] project by [Computer Supported Learning Research Group][cslrg], where children in 6th and 7th class learn the basics of programming in workshops with robots build with Mindstorms.
That is great and all, until the workshop ends. Then, however, the negative side of Mindstorms rears its ugly head: The suggested retail price is about 300&euro. You can find it cheaper (I got mine from Amazon, more because I wanted it than because I needed it for this thesis), but I doubt you will find a new one for less than 250&euro. That means most of these children can no longer program at home or in school once it is over. And that is where I come in.
Sorry for the low quality, I seem to have left my compact camera in Goslar and my DSLR wasn’t expensive enough to shoot video, so the “real” part comes from my iPhone.
I am writing a simulator for Lego Mindstorms NXT 2.0 robots[^1]. The goal is that you write your program the same way as for the real thing, including the same compiler, but instead of downloading it to a piece of plastic, it gets executed in the simulator on your own Windows or Mac OS X computer. It gets better: The final version will include network support, so many people will be able to have their robots run together or against each other like a multiplayer game. In my opinion, that will be the most challenging part, but not impossible.
[^1]: Only one robot. This is not about building virtual Lego models.
And it works nicely so far. It does not support a lot yet, and won’t ever support everything the real Mindstorms can do (remember, this is meant as a teaching tool for children only), but it has a landscape that is easy to edit, working collision detection, a 3D robot and most importantly, it can execute simple programs.
Personally, I love this project, because I can re-use just about everything I ever learnt about programming. After all, it is in many ways the same as a game with bad graphics, which is my speciality. [Weird binary file formats][trposer]? Check. [Cross-platform programming in C++][hubi]? Check. [3D graphics with OpenGL][snow]? Check. [Network gaming][hubimulti]? Check. I am not allowed to re-use code, but I can re-use previous knowledge, so I am really excited to be doing this. Oh, and I am also a huge LEGO fan. Watch this space (or rather, the RSS feed) for more in the future.
I will be giving a start-up presentation next thursday, at 10:00 AM, in the chair’s seminar room, telling more or less the same as here (though probably with more technical detail), but I am not really sure whether externals are allowed as well. I’ve also written an [official proposal][proposal], which also contains more technical detail, and an official [page for the thesis][thesis], which contains no really new information at all.
Written on April 19th, 2010 at 01:48 pm