Freitag, 28. Februar 2014

Ein einfacher Robotor entsteht ....



aber wozu bloß ??

Man braucht bekanntlich Motiv, Gelegenheit und Mittel zur Umsetzung.

Wie bringt man Schülern (und angehenden Studenten) die Freuden der Programmierung näher ? Mit den"klassischen" Methoden, Beispielen aus Mathematik oder einfacher String-Verarbeitung klappt das heute eher nicht mehr. Ansätze, die ganz gut funktionieren, sind etwa die Verwendung von grafischen Beispielen, etwa mit Processing. Das machen wir in der WI in Heidenheim so. Eine vielversprechende Variante ist das Scripting von Spielen, etwa so. Der Ansatz, um den es hier geht, ist die Verwendung von Robots. Durch Lego Mindstorm populär gemacht ist die Verbindung von virtueller Programmierung und physikalischer Welt eine spannende Sache. Um tatsächlich in die (technische) Programmierung einzusteigen und genügend Potential für spätere Projekte zu haben, sollte die Plattform möglichst leistungsfähig und auch durchaus auch etwa anspruchsvoll sein. Schließlich geht es ja darum, die begabten Schüler zu fördern und zu motivieren.

Verwendet haben wir einen Bausatz, den es etwa bei ebay für wenig Geld gibt, etwa hier. Der liegt seit gut einem Jahr bei mir rum und wartet auf Zuwendung. Bisher erfolglos. Aber da kam in Gestalt eines Bogy-Praktikanten das ideale Versuchskaninchen zu mir ;-) Der ist für eine Woche da und so ergab sich auch unmittelbar das Projekt: Herauszufinden, ob es gelingt, ohne Vorkenntnisse in einer Woche einen irgendwie sinnvoll funktionierende Roboter aufzubauen, der das Potential hat, auch anspruchsvollere Projekte zu realisieren.

Der erste Tag: Auspacken, Teile sichten und Zusammenbauen. Die erste Hürde: Keine Anleitung, sondern selber denken. Am ersten Abend ist alles zusammen und der Roboter fährt geradeaus.

Am zweiten Tag geht's daran, mehr als nur geradeaus zu fahren. Das heisst, die beiden Seiten mit unterschiedlichen Geschwindigkeiten anzusteuern. Das geht im Prinzip zwar einfach per PWM, aber hier ist mehr Erklärung und auch Programmierung (Erstellen von Funktionen usw) und auch ausprobieren gefragt. Ergebnis: Der Robo kann schnell oder langsam, vorwärts oder rückwärts und auch (etwas eingeschränkt) Kurven fahren. Problem ist die eher schlechte Haftung der Reifen am Boden und die Tatsache, dass beide Motoren jeder Seite gemeinsam angesteuert werden (der Motortreiber hat nur zwei Kanäle). Hier ist zu überlegen, ob man nicht etwas aufrüstet um mehr Power zu bekommen.

Ein Roboter, der nur auf dem freien Feld fahren kann, wird schnell langweilig. Deshalb kommt am dritten Tag ein Ultraschallsensor dazu, der Hindernisse erkennen kann. Der ist schnell integriert, bloss was tut man, wenn man ein Hindernis erkennt ? Zunächst mal nix:

Ein Hindernis zu umgehen, ist schon etwas komplizierter. Dazu braucht man erstmal eine Strategie. Unsere ist, es ein Stückchen weiter zu probieren, d.h. ein Stück zurück zu fahren, dann etwas zur Seite und den nächsten Versuch zu machen. So tastet man sich langsam an einem Hindernis entlang und kommt hoffentlich irgendwann daran vorbei.

Das stellte sich aber als erheblich schwieriger heraus, als erwartet: Beim Fahren enger Kurven drehen die Räder leicht durch. Dadurch ist der Winkel am Ende der Kurve unbestimmt. Manchmal geht das gut:


Manchmal (das zeigen wir nicht ;-) leider nicht. Um das zu verbessern braucht man letztlich eine Rückmeldung über die tatsächlich erfolgte Bewegung: Eine Steuerung ("Motor rechts 500 msec  drehen lassen") reicht nicht, wir brauchen eine Regelung ("So lange drehen, bis wir einen Winkel von 90 Grad zur vorigen Richtung haben"). Dazu aber zunächst mal eine Möglichkeit, die tatsächliche Lage zu messen. Das geht am einfachsten mit einem Gyro-Sensor, der hoffentlich rechtzeitig geliefert wird.


Julius: Auch aus meiner Sicht war das ganze Projekt sehr spannend und interessant, da man immer dazulernte und es nie zu schwer war. Wenn wir ein Problem hatten, haben wir immer eine Lösung gefunden, wenn es auch oft eine sehr kreative und unerwartete war. Zum Schluss schaue ich freudig auf die zurückliegende Woche und hoffe noch weitere Sensoren etc. an dem Roboter anbringen zu können, um mich immer an dieses Erlebnis zu erinnern und noch mehr über die Programmierung zu lernen. Das Programmieren ist durchaus eine Berufsaussicht für mein späteres Leben, und wenn ich
meine Berufserkundung nochmal machen könnte, würde ich wieder kommen.

Schon am ersten Tag, als wir den Roboter ohne Anleitung zusammenbauen sollten, standen wir vor unserem ersten Problem. Mit Fachkenntnis und (etwas) Glück lösten wir dieses relativ schnell und konnten alles (ohne Kurzschluss :-))verkabeln. Als wir am zweiten Tag vor dem Problem standen, dass die Geschwindigkeit des Roboters sich nur beim Rückwärtsfahren verändern ließ, fanden wir leider keine Lösung außer ihn rückwärts fahren zu lassen. Das Hauptproblem wurde die Tage später immer deutlicher: Die Räder drehten mal durch und mal nicht, zudem waren die Batterien immer schwächer und brachten nicht die selbe Leistung wie am Anfang. Durch wechseln der Batterien wurde der Roboter wieder leistungsstark. Das Programm musste ich aber auch wieder umschreiben, da er die Kurven weiter fuhr als bisher.

PS: Der Sensor kam leider nicht mehr rechtzeitig hier an.