Calliope mini - Spaß durch Programmieren

Sei linientreu, MotionKit!

Ziel: Der Roboter soll selbständig einer schwarzen Linie in einer weißen Umgebung folgen.

Das Fahrzeug hat an der Unterseite zwei Reflexionslichtschranken. Jeder der beiden Lichtschranken hat eine Sender-LED und eine Lichtempfänger. Die Sender-LED sendet ein für uns unsichtbares Licht aus (Infrarotlicht). Trifft das Licht auf einen hellen Untergrund, wirft dieser das Licht zurück und der Lichtempfänger merkt das. Auf einem dunklen Untergrund wird nichts zurückgeworfen.

MotionKit

4 Sekunden geradeaus, mehr nicht!

Ziel: Der Roboter fährt 4 Sekunden geradeaus. Dann bleibt er stehen.

Geradeaus fahren ist nicht schwer. Es werden beide Motoren für 4 Sekunden mit dem gleichen Tempo angetrieben. Danach werden die Motoren gestoppt.

Calliope mini Calli:bot

Obwohl für beide Motoren die gleiche Geschwindigkeit eingestellt wurde, ist das alles andere als eine Fahrt geradeaus. Die Motoren fahren mit geringen unterschiedlichen Geschwindigkeiten. Deshalb müssen die Geschwindigkeiten so geregelt werden, dass das Fahrzeug immer schön auf der Linie bleibt.

Auf der Linie lang

Ob die unten angebrachten Lichtschranken über einen hellen oder dunklen Untergrund sind, sieht man an den beiden blauen LED auf der Oberseite. Bei einem hellen Untergrund leuchten sie auf, ansonsten sind sie aus.

Je nachdem, in welcher Richtung der Roboter die schwarze Linie verlassen will, müssen die Motoren mit verschiedenen Geschwindigkeiten gesteuert werden, damit er wieder zurückfindet. Es lassen sich drei Fälle unterscheiden:

  1. Er ist auf Linie, beiden Motoren bewegen sich mit der gleichen Geschwindigkeit
  2. Er bricht nach rechts aus: der rechte Motor muss schneller sein als der linke Motor
  3. Er bricht nach links aus: der linke Motor muss jetzt schneller als der rechte Motor sein.

Calliope mini Calli:bot

Der Programmablaufplan zeigt, dass im wenn...dann-Teil des Programmes die Entscheidungen für die unterschiedlichen Geschwindigkeiten der Motoren eingetragen sind. Dazu werden zwei Variablen verwendet, die die langsame und die schnelle Geschwindigkeit enthalten.

Die sonst-wenn-dann-Entscheidung kann durch Klick auf das Plus entsprechend erweitert werden:

Calliope mini Calli:bot

Calliope mini Calli:bot

Wenn alles richtig läuft, fährt das Auto artig die Linie lang und kann sogar eine Kurve fahren.

Klebt man aus dem schwarzen Isolierband eine geschlossene Bahn, fährt der Roboter auch da lang. Es sieht zwar nicht besonders schön aus, wie er da so langruckelt, aber er hält die Spur.

Erhöht man die Geschwindigkekt für schnell ein wenig, kommt er jedoch durch die Ruckelei vom rechten Weg ab. Damit er nicht vom Tisch rauscht, muss eine weitere Entscheidung im Programm eingebaut werden. Wenn der rechte und linke Linienverfolger gleichzeitig einen hellen Untergrund sehen, müssen beide Motoren gestoppt werden.

motion kit

Sowie er von der schwarzen Linie herunterfährt, bleibt er stehen.

Damit der Roboter nicht so ruckelt, wird die langsame nicht auf Null gesetzt, sondern aus der schnellen Geschwindigkeit berechnet.

Jetzt kann man die hohe Geschindigkeit so weit vergrößern, bis der Roboter zu schnell wird und aus der Kurve fliegt. Die Geschwindigkeit wird in einer 8-Bit-Zahl gespeichert!

motion kit

Zufällige Geschwindigkeiten

Fährt ein Auto auf der Straße, ändert sich seine Geschwindigkeit sehr oft. Beim Motion Kit realisiert man das durch eine zufällige Geschwindigkeit zwischen 30 und 255, die sich alle 5 s ändert.

motion kit

Kolonnenfahrt

Fahren zwei Roboter hintereinander, kann der Hintere auf den Vorderen auffahren. Um das zu vermeiden, muss das Auto ständig den Abstand zum Vorderauto messen und die Geschwindigkeit entsprechend anpassen.

Da der Ultraschallsensor den Abstand zum vorderen Auto in cm misst, kann dieser Wert gleich für die schnelle Geschwindigkeit verwendet werden. Der Faktor 2 ist erstmal willkürlich gewählt und kann soweit verändert werden, bis der Roboter geschmeidig seine Runden auch in der Kolonne zieht.

motion kit

Hinweis: Der Roboter wird meist unscheinbar kleine Sprünge machen. Das fällt erst auf, wenn man ihn länger bei der Kolonnenfahrt beobachtet. Der Grund liegt in dem Aufruf: alle 5000 ms. Ist der Roboter sehr nahe hinter einem anderen Fahrzeug, ist die Geschwindigkeit sehr klein. Aller 5 Sekunden wird die Geschwindigkeit aber neu ausgewürfelt. Ist der Zufallswert sehr hoch, dauert es einen Moment, bis die Geschwindigkeit wieder kleiner ist und da hüpft der Roboter ein Stück.

Abhilfe schafft eine Entscheidung in der alle 5000 ms-Schleife. Man kann im Hauptprogramm eine boolsche Variable setzten oder den Entfernngsmesser nochmal auslesen.

zurück

Impressum/ Kontakt Datenschutzerklärung Creative Commons Lizenzvertrag