Tag 4

Heute ging es darum, den Roboter zu vervollständigen und ihn auf einer Rennbahn fahren zu lassen. Anfangs hatten wir ein Problem, dass der Roboter einfach nicht losfahren wollte. Doch nach vielem Ausprobieren und Versuchen, das Problem zu beheben, ging es los. Zuerst wollten wir eine Bahn mit einem schwarzen Stift auf weissem Papier zeichnen, doch der IR-Sensor erkannte die Linie leider nicht. Danach hatten wir die Idee, die Strecke mit einem schwarzen Klebeband zu bilden. Dies ging anfangs recht gut, doch es gab öfters Probleme beim Übergang zwischen zwei Klebestreifen. Ausserdem waren die Kurven so nicht ganz abgerundet.

Schlussendlich hatten wir die Eingebung, Linien und Kurven auf Word zu konstruieren und dann auszudrucken. Denn so können wir die Rennbahn zuerst einmal provisorisch aufbauen und sie dann zu verbessern. Durch die vielen Linien und Kurven konnten wir die Bahn beliebig gestalten und auch nach Lust und Laune verändern. Die Kurven sind so auch komplett rund. 

Auf dieser Bahn konnte sich unser Roboter dann auch gut auf der Linie fortbewegen. Nur in den Kurven sehen die Bewegungen nicht ganz sauber aus, doch der Roboter kann auch schwierige Kurven (meistens) fahren.

Ausserdem haben wir heute einen Ultraschall-Sensor eingebaut, damit der Roboter Gegenständen ausweichen kann. Teilweise gibt es noch Probleme, damit der Roboter wieder zurück in die Spur kommt, nachdem er einen Gegenstand umfahren kann. Doch die Kombination von Linienroboter und einem Roboter, welcher Gegenstände umgehen kann, ist gut gelungen.

Die tatsächliche software haben mir schon am Tag 2 geschrieben sie funktioniert wie folgt:

Der Roboter kann mit seinen 3 Sensoren genau 4 Zustände wahrnehmen und zwar. 

0-1-0  , 1-0-0 , 0-0-1 , 0-0-0 Das Programm strebt immer den Zustand 0-1-0 an, den dieser gibt bei dem linken sowie rechten Sensor weiss an und mit dem mittleren Sensor schwarz, dass bedeutet das der Roboter mehr oder weniger gerade auf der Linie ist und somit geradeaus fahren kann. Wenn der Roboter die anderen Zustände annimmt korrigiert er solange, bis der Roboter den Zielzustand(0-1-0) annimmt. Damit der Roboter selbständig die Linie finden kann, selbständig zurück korrigieren kann wenn er die Linie verliert, einen 90 sowie 45 grad Winkel auf der Linie fahren kann werden noch andere Zustände mit verschiedenen Parametern definiert welche schlussendlich den Hauptteil des codes ausmachen. zB. Wenn der Roboter eine Kurve fährt kann es sein das er zu schnell geradeaus fährt und somit aus der Kurve fällt. Der Sensor meldet also 0-0-0 und somit würde der Roboter weiter geradeaus fahren und die Linie verlieren, damit das nicht passiert haben wir jeweils die letzten Zustände gespeichert und parametrisiert. Der Roboter erkennt somit zB. das er gerade aus einer Linkskurve gefallen ist und solange nach links korrigieren muss bis er wieder einen anderen Zustand annimmt. Das war nur einer de unzähligen Bespiele die das Programm vervollständigen. Vor allem die 90 sowie 45 grad Spezialfälle verlangten nach einigen neuen Zuständen.