Gruppe 1: Tag 5

Wir haben hauptsächlich mit unserem Roboter ausprobiert und ihn dabei optimiert. Zudem haben wir verschiedene Sensorstellungen ausgiebig getestet. Unser Roboter befindet sich nun in seinem Optimum.

Final – Lab

Das ist unser finaler Code:

from machine import Pin, PWM

In1 = Pin(23, Pin.OUT)
In2 = Pin(19, Pin.OUT)
In3 = Pin(22, Pin.OUT)
In4 = Pin(21, Pin.OUT)
ENA = PWM(Pin(18), freq=50)
ENB = PWM(Pin(17), freq=50)

SignalLinks = Pin(38, Pin.IN)

SignalMitte = Pin(37, Pin.IN)
SignalRechts = Pin(36, Pin.IN)

while True:
    ENA.duty(500)
    ENB.duty(500)
    In1.value(0)
    In2.value(1)
    In3.value(1)
    In4.value(0)
    if SignalRechts.value() == 1 and SignalMitte.value() == 0 and SignalLinks.value() == 0:
        while SignalMitte.value() == 0:
            ENA.duty(400)
            ENB.duty(200)
            In1.value(1)
            In2.value(0)
    if SignalLinks.value() == 1 and SignalMitte.value() == 0 and SignalRechts.value() == 0:
        while SignalMitte.value() == 0:
            ENA.duty(400)
            ENB.duty(200)
            In3.value(0)
            In4.value(1)

Trotz der Kürze des Codes erweist er sich als einer der besten. Unser Algorithmus fährt so lange geradeaus, bis er links oder rechts einen schwarzen Strich wahrnimmt, aber in der Mitte keinen mehr. In so einer Situation biegt er dann so lang ab, bis er in der Mitte wieder einen Strich sieht, aber rechts und links keinen. Wir lassen ihn beim geradeaus fahren schneller fahren, wie wenn er um die Kurve fährt. Wenn er um die Kurve fährt lassen wir den einen Motor rückwärts fahren, damit er sich schneller dreht. 

Fazit

Wir können stärkere Motoren verwenden, damit wir kein Getriebe nutzten müssen. Wir können unser ganzes Gehäuse kleiner und leichter designen, damit er wendiger ist. Wir können unsere Sensoren weiter auseinander positionieren, damit er auf einer Geraden nicht die ganze Zeit seine Richtung korrigiert und dadurch abbremst. Wenn wir schneller fahren wollen, brauchen wir bessere Sensoren, um die Kurve besser zu erkennen und er auf gerader Strecke nicht plötzlich eine Kurve sieht, ohne das sich dort eine befindet.  

22.04.2021, Tag 4

Als wir heute Morgen in die Schule kamen war unsere Konstruktion schon fertig gedruckt, doch wir konnte diese noch garnicht benutzten, denn wir hatten noch ein ganz anderes Problem. Ein Infrarotsensor funktionierte nicht und deshalb mussten wir einen neuen nehmen und diesen muss man zuerst löten, damit er in unsre Konstruktion passt. Als wir den zweiten gelötet haben und diesen angeschlossen haben funktionierte dieser nicht. Wir mussten dann nochmals einen löten und bis dieser dann funktionierte dauerte es noch mal ein bisschen. Als wir das Problem gelöst haben, konnten wir nun alles am Auto befestigen und nochmals den Code überarbeiten. Uns ist einmal das Kabel für den Motor abgerissen und dann mussten wir dieses auch noch löten. Als wir dann alles montiert hatten, waren wir bereit den Roboter zum ersten mal laufen zu lassen. Er sah dann so aus:

Beim ersten Versuch ist uns direkt ein Motor kaputt gegangen und wir mussten diesen dann austauschen. Dann ging es in die Mittagspause

Nach der Mittagspause bereiteten Emre und Andres die Teststrecke vor, diese dann so aussieht:

Lukas versuchte noch den Code zu verbessern, doch dies brachte nicht sehr viel, denn der Motor hatte zu schwache Motoren, um sich zu drehen. Deshalb beschlossen wir ein Getriebe zu drucken. Wir waren dann den ganzen Nachmittag mit dem Getriebe beschäftigt und vor allem damit, die Konstruktion um zu modellieren, damit man das Getriebe befestigen kann. Wir liessen dann alles auf den nächsten Tag ausdrucken.

Gruppe 4: Tag 4 (22.4.21)

Ablauf:

Als erstes haben wir uns daran gemacht, dass das Auto wieder der Wand entlang fährt. Das hat mit einer neuen Strategie funktioniert; das Auto fährt, bleibt stehen, misst die Distanz nach links (zur Wand), ist die Wand weiter weg als bei der vorigen Messung, dreht sich das Auto zur Wand/nach links, ist die Wand weniger weit weg als vorher, dreht sich das Auto von der Wand weg/nach rechts. 

Zum Vergleich:

alte Strategie

 

neue Strategie

Danach wollten wir das Auto wieder für ein Labyrinth bzw. Parcours fähig machen. Das war schwierig und wir mussten den Sensor vorne wieder brauchen. Da trat die Radproblematik wieder auf: das kleine Rad dreht auch hinten in die falsche Richtung und lenkt ab. Also haben wir es durch eine Kugel ersetzt. 

Dann funktionierte aber gar nichts mehr. Das Auto korrigierte zu stark, zu wenig, fuhr Kreise… Deshalb starteten wir nochmal mit einem neuen Programm von Null und fuhren zuerst geradeaus, Kurven, blieben stehen, etc. und bauten dann wieder ein Programm zusammen, mit dem wir der Wand entlang fahren können und ein anderes, mit dem wir auch durch ein Labyrinth könnten.

Video vom an der Wand fahren

Parcours (nicht ganz benutzt)

Video vom Parcours

Wir sind glücklich, dass es funktioniert

!!!

Gruppe 5: Tag 4

Heute haben wir als erstes die noch fehlenden Teile ausgedruckt, also die letzte Schranke, und die Bahnübergänge. Über Nacht konnten wir die Schrankenständer bereits ausdrucken. 

   

Während die letzten Teile noch ausgedruckt wurden, haben wir mit Lego ein paar Halterungen für die Schranken und eine Halterung mit Überbrückung für die Laser und die Fotolichtsensoren gebaut. 

   

Die Eisenbahn und die Schranken laufen nun ohne jegliche Probleme.

 

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.

Gruppe 1: Tag 4

Heute haben wir damit begonnen die Räder und das Vorderteil unseres Autogerüsts zu designen. Danach haben wir es mit dem 3D-Drucker gedruckt. Wir haben uns aufgrund von Komplikationen dazu entschieden, dass wir drei andere Infrarotsensoren verwenden. Wir hatten Anfangsschwierigkeiten mit den Infrarotsensoren. Wir konnten diese beheben.

Das Auto fährt nun 9/10 Runden fehlerfrei.

Gruppe 4: Tag 3 (21.4.21)

Ablauf:

Am Morgen haben wir uns unseren Problemen gestellt. Das gestrige Problem, dass die Verbindung zum Board nicht klappte wurde daher behoben, als dass wir nun ein anderes haben. Dafür entstand dann das Problem, dass wir das Auto nicht mehr zu stoppen war (ausser man zog den Stecker), was sich aber auf Thonny beheben liess. Wir haben auch noch die Konstruktion verbessert für mehr Stabilität.

Da die beiden Tower Pro Motoren nur eine Geschwindigkeit besitzen, haben wir sie durch M5Stack 360° Motoren ersetzt. Sie stehen bei 75 und höher oder niedriger drehen sie vor- oder rückwärts.

So haben wir unser Programm dann so umgebaut, dass die Räder für Kurven nicht mehr aus- und angehen, sondern langsamer bzw. schneller werden.

Vor dem Mittag haben wir es noch mal mit dem Kartonkreis ausprobiert, aber es funktioniert gar nicht. Am Nachmittag ging es dann auch mit dem Rumprobieren weiter, aber die Kurven funktionierten nicht so wie wir es wollen.

So sind wir dann auf Herr Strubs Vorschlag auf einen anderen Weg gekommen: Das Auto einer Wand entlang fahren zu lassen. Mit  diesem Programm sollte das Fahrzeug von der Wand weg, wenn der Abstand zu klein wird, und auf die Wand zu, wenn der Abstand zu gross wird. Das funktionierte, bis das kleine Rad vorne sich verdrehte und die Richtung abänderte. So haben wir dann das Auto quasi „umgedreht“, sodass das kleine Rad hinten ist und somit nicht mehr stört. Aber dann fuhr unser Auto gar nicht mehr. Dieses Problem werden wir morgen lösen müssen. 

Gruppe 5: Tag 3

Heute haben wir es geschafft mit Hilfe eines Relais die Eisenbahn direkt über ein Programm anzusteuern. Somit können wir die Eisenbahn nun fahren lassen und wieder stoppen, nur das Rückwärtsfahren funktioniert nicht, da wir nicht wissen wie wir das Ansteuern müssen.

Den Grossteil vom Morgen haben wir mit designen und Drucken von der Schranke und einem Bahnübergang verbracht. Ein Teil der Schranke ist fast schon komplett ausgedruckt und komplett funktionsfähig. Der andere Teil der Schranke konnten wir bereits ausdrucken, dieser hat allerdings nicht gepasst darum mussten wir die Masse ändern und wir werden ihn mit dem Bahnübergang so ausdrucken, dass er  Morgen fertig ist. 

Da wir schon fast fertig sind, bis auf das Ausdrucken, haben wir die Eisenbahnstrecke verändert und eine weitere Idee da wir nicht mehr viel machen müssen. Die Idee ist es, eine Rundenanzeige der Eisenbahn zu machen, dabei ist die Schwierigkeit, dass wir die Anzeige direkt ansteuern müssen.