Bachelorarbeit: Lego Mindstorms simulieren

Lange her, dass ich hier was geschrieben habe, nicht wahr? Na ja, jetzt wird es besser, da ich ein neues Thema gefunden habe: Meine Bachelorarbeit, mit der ich vor kurzem begonnen habe. Hier mal eine kleine Einführung.

![Das Thema: Lego Mindstorms Roboter.](/bachelorthesis/originalrobot.jpg)

Lego sollte ja noch allgemein bekannt sein. Seit einigen Jahren gibt bietet Lego ein System an mit dem man Roboter bauen kann, bekannt als Mindstorms. Die neueste ersinn ist Lego Mindstorms NXT 2.0. Es ist toll und hat auch einen Platz im Informatik-Unterricht gefunden. Insbesondere wird es vom [go4IT!][go4it]-Projekt der [Computer Supported Learning Research Group][cslrg] der RWTH Aachen verwendet, um Schulkindern in der 6. und 7. Klasse die Grundzüge des Programmierens in Workshops zu vermitteln.

Das funktioniert wohl auch prima, bis der Workshop vorbei ist. Dann stellt sich das Problem, dass die Mindstorms-Kästen wieder weggenommenwerden, und ein neuer eine unverbindliche Preisempfehlung von 300€ hat. Man kriegt ihn natürlich auch billiger (Ich habe meinem bei Amazon bestellt, mehr weil ich ihn haben wollte als weil ich ihn für diese Arbeit brauchte), aber unter 250€ für einen neuen halte ich für unwahrscheinlich. Das heißt dass die meisten dieser Kinder nicht zu Hause oder in der Schule weiterprogrammieren können. Dort setzt meine Arbeit an.

Ja, die Qualität ist Mist. Meine Kompaktkamera ist wohl gerade in Goslar und meine Spiegelreflexkamera war nicht teuer genug, um Video aufnehmen zu können, weswegen, der “Vorbild”-Teil von meinem iPhone kommt.

Ich entwickle einen Simulator für Lego Mindstorms NXT 2.0 Roboter[^1]. Die Idee ist, dass man sein Programm schreibt und kompiliert wie für den richtigen Roboter. Statt es aber auf das Stück Plastik zu laden, wird es dann vom Simulator auf dem eigenen Windows-Rechner oder Mac ausgeführt. Es wird noch besser: Die fertige Version wird auch Netzwerkunterstützung bieten, so dass meine seine Roboter von verschiedenen Rechnern mit- oder gegeneinander arbeiten lassen kann, wie bei einem Mehrspielerspiel. Das wird wohl der schwierigste Teil, aber sicher nicht unmöglich.

[^1]: Nur ein Roboter. Es geht hier nicht darum virtuelle Lego-Modelle zu bauen.

Und bis jetzt funktioniert es gut. Vieles ist noch nicht drin, und es wird auch nie alles unterstützen was das richtige Mindstorms kann (es soll ja nur ein Hilfsmittel für Kinder sein), aber man kann die Landschaft leicht ändern, es gibt funktionierende Kollisionserkennung, einen 3D-Roboter und vor allem können einfache Programme direkt ausgeführt werden.

Ich mag dieses Projekt sehr, denn ich kann so ziemlich alles weiterverwenden, was ich je übers Programmieren gelernt habe. Immerhin ist es in vielen Aspekten ein Computerspiel mit schlechter Grafik, meine persönliche Spezialität. [Komische Binärdateiformate][trposer], [Plattformübergreifende Programmierung mit C++][hubi], [3D-Grafik mit OpenGL][snow], [Netzwerkspiele][hubimulti], alles drin. Natürlich darf ich keinen alten Code weiterverwenden, aber alte Kenntnisse sind kein Problem, weshalb ich mich sehr freue dies machen zu können. Oh, und ich bin auch ein großer Lego-Fan. Ich werde hier in Zukunft mehr über den Verlauf posten.

Nächsten Dienstag um 10:00 gebe ich einen Startup-Vortrag im Seminarraum des Lehrstuhls, wo ich weitestgehend dies hier erzählen werde, aber mit mehr technischen Details. Ich weiß allerdings nicht, ob Externe da auch erlaubt sind. Ich habe auch ein [offizielles Proposal][proposal], welches ebenfalls mehr Detail enthält. Der Vollständigkeit halber sei auch noch die [Webseite für die Arbeit][thesis] erwähnt, die aber praktisch keine Informationen enthält, die nicht schon hier oder im Proposal sind.

Geschrieben am 19. April 2010 um 13:48

5 Kommentare

  1. Geschrieben 4 Juli 2010

    wugstopher

    (I linked here from dA)

    I have just finished a 3 yr diploma in Automation & Robotics - emphasis was on fluid power and PLCs, but I studied microcontrollers as well. My final project was a two legged robot that avoids obstacles; the software was written in ladder logic (primitive!) - my partner and I spent most of our time machining parts (right down to brackets and pins) and soldering up the controller, so I did not have time to program the inteligence I had originally intended.

    Mindstorms is expensive, however, many microcontrollers are not. The PICaxe is programmable in BASIC and easily embedded in a small robot. I used a CUBLOC (Atmel-based), I may also try an Arduino (also Atmel-based).

    There is interesting research going on with swarm robotics - lots of little robots sharing information to achieve a common goal. I see some overlap with the virtual robot environment you are creating.

    I wish you the best in your work!

  2. Geschrieben 4 Juli 2010

    Torsten Kammer (admin)

    What you mention there sounds very interesting!

    Mindstorms is of course very good for teaching, since Lego solves that problem of machining the parts you have. For price, though, yes, there are far better solutions - and more versatile as well, since anything that can’t be done with Lego is going to be a pain to do with Mindstorms.

    Swarm robotics for this simulator? I guess that could be done. I’m not sure how useful it will be (a dedicated simulator for simpler swarm robots might be more useful), but at least for an introduction in the area it might work.

  3. Geschrieben 4 Juli 2010

    wugstopher

    I think your project is a great idea: far better for children to be introduced to programming with a virtual robot (fun!) than to sit down and write code to print "hello world" on the screen ad nausuem (boring!)

    A long time ago (ahem), many children were introduced to computers by programming in LOGO.

    Anyhow, what was the connection I saw between your simulator and swarm robots, you ask? In a simulator, a large swarm is no more expensive than a small swarm, therefore behaviour algorithms can be tested before being committed to hardware. For some applications, a detailed environment might reveal behaviour not seen in a simpler one.

    Example: LANdroids
    These are wireless LAN relay devices being developed by DARPA. Will they be as effective in a sewer system as they are above ground? Answer: run a simulation

    Have fun!

  4. Geschrieben 5 Oktober 2010

    Ursula Weinmann

    Did you finish the software by now? I would be pleased to test or buy it.

    Regards,
    Ursula

  5. Geschrieben 1 September 2011

    Gernot

    Möglicherweise doofe Frage:

    Wie kommt denn ein Programm aus der NXT 2.0 IDE auf den Simulator? Der weigert sich bei mir, rbt bzw. rbtx Files zu lesen...

    danke,
    Gernot

New comments can no longer be posted because it got to annoying to fight all the spam.