Ablauf des Praktikums

Ende Februar '06 - Bewerbung

05.04.06 Zusage per Email

Nachdem wir uns am Ende des Wintersemesters für das sich interessant anhörende Praktikum "Lego Mindstorm" per Email bewarben, hieß es erst einmal warten und hoffen, dass wir es schaffen würden, bei der kleinen Gruppe von nur 18 Studies dabei zu sein. Glücklicherweise wurden unsere Namen "aus dem Lostopf" gezogen und wir fanden uns kurz darauf zum ersten Treffen ein.

11.04.06 Erstes Treffen

Nachdem André und Richard (die Leiter des Praktikums) uns über den kommenden Ablauf informierten, konnten wir das erste Mindstormset mitnehmen, um mit ersten Spielereien los zu legen.

Da der Roboter mit der MiniJavaVM "Lejos" laufen sollte, musste diese Software erst eingerichtet werden. Gar nicht so leicht, denn schließlich war das Programm auch schon knapp 3 Jahre alt und schien sich zuerst nicht mit der Java SDK 1.5 vertragen. Nach ein paar Recherchen im Netz war dieses Problem gelöst und der erste Motor wurde zum Laufen gebracht.

18.04.06 Der erste Robot wird gebaut

Nun wurde uns die erste richtige Aufgabe gestellt, für die wir eine Woche Zeit hatten. Der selbstgebaute "Robot" sollte einer schwarzen Linie auf einer Holzplatte folgen.

Die kleine Schwierigkeit lag hierbei darin, dass wir nur einen Lichtsensor zur Verfügung hatten. Unserer erster Robot entwickelte sich schnell und wir hatten wir eine Menge Spaß mit den Zahnrädern. Das heißt, der Robot hatte zwar viel Kraft, glich aber in der Geschwindigkeit eher eine Schildkröte. Weil die herkömmliche Programmierung an irgendeiner Stelle nicht richtig funktionierte, entschlossen wir uns kurzerhand, uns bei unserer weiteren Arbeit auf das "Behaviour"-System von Lejos zu stützen. Der Quellcode wurde umgeschrieben und der erste Präsentationstermin konnte kommen.

27.04.06 Folge der Linie oder auch nicht

Donnerstag früh war es dann soweit... Alle Robots sollten nacheinander beweisen, dass sie auf der schwarzen Linie fahren können. Nachdem es bei einigen Gruppen schon leichte Pannen gab, ließen wir unser Gefährt auf die Linie los und natürlich klappte irgendwie gar nichts. Vor ca. 15 Stunden gings natürlich noch ohne Probleme... Letztendlich war wohl die fehlende Farbkalibrierung, bzw. die künstlichen Lichtverhältnisse an diesem Morgen Schuld. Schließlich gelang es doch noch André und Richard, nach überarbeitentem Quellcode, zu überzeugen. Mittlerweile war der Parkour vollständig aufgebaut und unsere zweite Aufgabe stand in den Startlöchern. "Der erste Roboter soll einer Linie folgen, während der Zweite (ohne Sensoren) den Weg des Anderen mit einem Stift nachmalt." Für die Lösung bekamen wir einen zweiten Mindstormkasten und zwei Wochen Zeit.

Um auf kommende Aufgaben im Parkour vorbereitet zu sein, bauten wir unseren Roboter komplett neu und statteten ihn nun mit zwei Lichtsensoren aus. Der zweite Robo (der Receiver) besaß das gleiche Getriebe. Da wir einige umgewöhnliche Probleme mit den Behaviourklassen hatten und uns außerdem von ihnen abgeraten wurde, haben wir den Quellcode nochmal codiert und zusammengefasst.
Wir waren sehr froh, dass unser Robot schon die Schräge hoch kam, da dies sicherlich in eine der nächsten Aufgaben verlangt werden würde. Dennoch ergaben sich nun die ersten argen Probleme. Keiner der beiden Robots wollte auch nur im Ansatz geradeaus fahren. Wir steuerten mit einem Motor für die linke und einem für die rechte Seite, aber die analogen Motoren waren einfach zu unterschiedlich. Selbst eine Kalibrierung mit Hilfe der Motorpower half nichts. So haben wir stundenlang ausprobiert, welche Softwareeinstellung die beiden Robots halbwegs identisch laufen ließ. Wir konnten am Tag vor der Präsentation nur hoffen, dass sich der Batteriezustand nicht allzustark ändern würde.

11.05.06 - Male meinen Weg nach

Wieder war der Tag der Präsentation gekommen und alle Gruppen hatten stark mit dem Problem der unregelmäßigen Motoren zu kämpfen gehabt. Einigen war es durch ausgeklügelte Mechanismen und Kalibrierung (z.B durch Wegmessung) gelungen, Das Problem zu minimieren, aber auch wir hatten Glück. Es klappte fast so gut, wie am Tag davor und die Linie wurde sauber nachgezeichnet.
Es kam, was kommen musste, die nächste Aufgabe. "Ein Robot sollte durch den ganzen Parkour fahren, von oben nach unten und andersherum." Das hatten wir uns ja schon gedacht. Während andere Gruppen jetzt schon wieder Neukonstruhieren musste, weil ihr Roboter zu groß war, konnten wir uns auf die Lücken im Parkour konzentrieren.

Natürlich gab es wieder unvorhersehbare Probleme. Wir hatten schon viele Varianten für den vorderen Teil ausprobiert, aber entweder der Robot war extrem unflexibel in der Lenkung, er blieb hängen oder er ruschte die Schräge herunter. Schließlich benutzen wir die Schläuche als Stütze und bis auf ein leichtes Hängenbleiben an der Linie, klappte das auch ganz gut. Weiterhin änderten wir öfter die Position der beiden Sensoren, die wir mal näher zur Achse, mal weiter weg postierten. Wir korrigierten hier und da und waren so gut wie fertig, als wir erfuhren, dass die Präsentation in der Woche wegen "Christi Himmelfahrt" ausfallen würde. Bei einem mehr oder weniger inoffiziellen Treffen teilte uns André mit, dass es besser wäre nur mit einem Sensor zu arbeiten, da in der Endaufgabe beide Roboter durch den Parkour fahren sollten. Super, also, Kommando zurück und neu überlegen. Unsere Variante mit zwei Sensoren funktionierte zwar, aber da die Endaufgabe sicherlich schwer genug sein würde und außerdem Pfingstpause war, überarbeiten wir alles nochmal. Die Sensorposition wurde dabei öfter verändert. Mal direkt an der Achse, mal weit davor. Als das erledigt war, standen wir wieder vor dem Problem: "Geradeaus fahren mit zwei ungleichen Motoren." Wir verbrachten einen ganzen Nachmittag damit ein Kalibrierung aufzustellen, die die Rettung bringen sollte. Es wurde und wurde nicht besser. Genervt vom vielen Probieren, brachen wir ab, nachdem es einmal halbwegs funktionierte. Nun hieß es bangen, ob es auch noch bei der Präsentation klappen würde.

08.06.06 - Präsentation Parkour fahren und Endaufgabe

Das Glück war auch diesmal mit uns und trotz nur einem Sensor klappte es ziemlich gut. André und Richard präsentierten uns dann die Endaufgabe.
"Die Aufgabe ist ein Transportproblem, bei dem Kisten (Fotodosen) von der unteren Parkourseite nach oben transportiert werden sollen. Der erste Roboter holt die erste Kiste hinter dem ersten grünen Streifen auf der schwarzen Linie. Dann bringt er sie zu einem Treffpunkt, der durch zwei grüne Linien hintereinander markiert ist, wo sie vom anderen Roboter abgeholt werden. Dieser transportiert die Fotodose in den oberen Parkour. Währenddessen holt der erste Robot eine neue Kiste usw." So sollen drei Fotodosen nach oben gebracht werden.

Da der Robot mit einem Sensor schon seinem Weg findet, fingen wir an, die Greifkonstruktion zu gestalten. Wir hatten aber keinen dritten Motor zu Verfügung und so mussten wir das Ganze also anders lösen.

Zeit bis zum 05.07.06

Die Lösung war ein flexible Konstruktion der Greifarme mit Hilfe von zwei Gummies. Weiterhin verbesserten wir unsere Kalibrierung, mussten aber leider feststellen, dass der grüne Wert extrem ungünstig zwischen dem Schwarz- und dem Weißwert liegt. Auch mit einem zusätzlicher Zähler wurde scheinbar magisch, an verschiedenen Orten grün erkannt, obwohl weit und breit kein grün zu sehen war. Wir setzten also unsere Hoffnung in gute Sichtverhältnisse.
Um unseren Grip an der Schräge zu erhöhen, experimentierten wir mit Klebeband über den Reifen und den Schläuchen, was aber schließlich wieder verworfen wurde, weil der Halt nicht besser wurde. Ein anderes Problem trat nun immer häufiger auf. Der Robot blieb an der Strecke hängen und verfehlte so sein Ziel. Deshalb wurden einigen Abschnitte von uns etwas modifizert, indem wir den Klebestreifen flacher machten.
Die größte Schwierigkeit aber lag im Testen des gesamten Systems. Vom Prinzip her klappte nun alles, aber der Zufall machte und ein ums andere Mal ein Strich durch die Rechnung, so dass wir ins Geschehen eingreifen mussten.

05.07.06 - Der entscheidende Tag

An diesem Tag fand nun die entscheidende Präsentation der Endaufgabe statt. Wir hielten einen kurzen Vortrag, in dem wir die Roboter kurz vorstellten, sowie die Grundzüge der verwendeten Algorithmen präsentierten. Danach ging es an die eigentliche Präsentation. Da wir diese Homepage zum selben Termin fertig stellen mussten, können wir leider nicht berichten, wie das ganze nun ausgegangen ist, aber wir sind ganz zuversichtlich! ;-)

Ihr habt nun die Möglichkeit euch unsere Präsentationsfolien (pdf) anzusehen, in denen die Roboter gezeigt und unseren Algorithmen unerhört grob erklärt werden. Den Quellcode, mit dem wir die Endaufgabe gelöst haben, gibt es hier ebenfalls.

Unser Fazit

Angefangen hat alles mit einem Video aus einem vergangenen Jahr und mit etwas Glück durften wir am Lego-Softwarepratikum teilnehmen. Die Motivation war groß und erst mit der Zeit kamen die Probleme! Dabei lag es nicht etwa am begrenzter Speicher, der CPU oder Java, nein, es waren die Analogen Bauteile, die uns so manche Schwierigkeiten brachten. Und irgendwann macht auch die kleinste Kalibrierung keinen Spaß mehr, weil es durch Zufall nun doch wieder nicht klappt. Dennoch können wir positiv auf die Zeit zurück schauen, denn das Konstruieren, Testen und Nachdenken forderte uns, auch durch die vielseitigen Aufgaben immer wieder aufs Neue. Die Praktikumsbedingungen waren von Anfang an klar formuliert und das regelmäßige Treffen sorgte dafür, dass man den Anschluss nicht verliert. Da wir schon viel negatives über mangelhafte Betreuung beim Softwarepraktikum gehört haben, freut es uns, dieses sehr empfehlen zu können. Die Aufgaben wurden zwar von mal zu mal schwieriger, ließen sich aber mit gewissen Aufwand bewältigen. Wir hoffen ihr konntet einen Eindruck bekommen und solltet ihr an der Otto-von-Guericke Universität studieren und nach einem Praktikum suchen, ist dieses hier vielleicht das richtige für euch.