Zum Hauptinhalt springen

Robotik

Maqueen Plus V2
Maqueen Plus V2
Verfügbare Sensoren
Verfügbare Sensoren
Wettbewerb

Ziel

Bewältigung eines Parcours mit Hindernissen

Gruppengrösse

2 Personen

Note

Zählt 0.5

Abgabe

Code und Kurzbeschreibung

Mi. 15.5.24 bis 22:00 Uhr

iPad und Micro:Bit

Mit dem iPad kann der Micro:Bit nicht direkt programmiert werden. Es ist jedoch möglich, den Code auf dem iPad zu schreiben und dann wie folgt auf den Micro:Bit zu übertragen:

Beurteilungskriterien

Die Note setzt sich zusammen aus dem praktischen Teil und dem Bericht. Die Note zählt 0.5.

Praktischer Teil

Für die Note zählen die umgesetzten Funktionalitäten des Roboters

Gewichtung: 70 %

Bericht

Tagebucheinträge (mind. 3) - was haben Sie gemacht, was hat funktioniert, was nicht?

Zu jeder Funktionalität, die Sie am Wettbewerb gezeigt haben: Welche Überlegungen und Konzepte stecken dahinter? (Welche Idee steht bspw. hinter dem "Blinken-Feature" und wie konnte das Blinken umgesetzt werden, ohne dass ein sanftes "Farbwechseln" ist?) Pro Funktion ca. 1/4-1/2 Seite.

Min. ein Foto des Roboters

Code: Der Code ist kommentiert und nachvollziehbar

Die Rechtschreibung und Formatierung wird ebenfalls miteinbezogen - es wird ein ordentlich verfasster Bericht erwartet.

Gewichtung: 30 %

Wettbewerb

Wer bewältigt den Parcours am schnellsten?

Punkteskala

punkte = 6 # erreichte Punkte
note = min(6, (punkte / 10) * 5 + 1)
print('Note:', note)

Mögliche Punkte

  • Parcours bewältigt, ohne manuellen Eingriff (6 Punkte)

  • Parcours bewältigt, mit manuellem Eingriff (4 Punkte)

  • Der Roboter blinkt während der Fahrt in verschiedenen Farben (1 Punkt)

  • Der Roboter bleibt stehen, wenn er auf ein Hindernis trifft und fährt dann weiter, wenn es wieder weg ist (1 Punkt)

  • Der Roboter dreht sich um 360 ° wenn geklatscht wird (1 Punkt)

  • Der Roboter zeigt auf dem Display mit einem Pfeil an, ob er aktuell links, rechts oder gerade steuert. (1 Punkt)

  • Der Roboter spielt beim Richtungswechsel einen Ton oder eine kurze Melodie (1 Punkt)

  • ⭐ Der Roboter findet den Weg zum Ziel, auch wenn Einbahnstrassen vorhanden sind (1 Punkt)

  • ⭐ Der Roboter kann einem Hindernis ausweichen und findet die Fahrtstrecke wieder (2 Punkte)

Trouble Shooting

Roboter dreht sich in die falsche Richtung

Ausgangslage

zustand = 'vorwärts'
while True:
if zustand == 'vorwärts':
# motoren vorwärts
if line_sensor(LineSensor.M) == 1:
zustand = 'vorwärts'
elif line_sensor(LineSensor.L1) == 0:
zustand = 'rechts'
elif line_sensor(LineSensor.R1) == 0:
zustand = 'links'
elif zustand == 'rechts':
...

Ist M=0 und sowohl L1 wie auch R1 sehen weiss (kann passieren, wenn die Linie in einer Kurve zu schmal ist), dann wird der Roboter immer nach rechts fahren, auch wenn er eigentlich nach links müsste.

Die Lösung besteht darin zu überprüfen, ob L1 oder R1 eine hellere Farbe misst und dann entsprechend eine andere Entscheidung zu treffen. Dies kann mit den über die Funktion line_sensor_data abfragbaren Rohdaten der Sensoren gemacht werden. Dabei gilt (!entgegen der 0=Weiss, 1=Schwarz):

Wert 0

Sensor sieht komplett Schwarz

Wert 255

Sensor sieht komplett Weiss

Lösung

zustand = 'vorwärts'
while True:
if zustand == 'vorwärts':
# motoren vorwärts
if line_sensor(LineSensor.M) == 1:
zustand = 'vorwärts'
elif line_sensor(LineSensor.L1) == 0 and line_sensor(LineSensor.R1) == 0:
# wenn L1 heller ist als R1 (also L1 > R1): dann fahre nach rechts
if line_sensor_data(LineSensor.L1) > line_sensor_data(LineSensor.R1):
zustand = 'rechts'
# sonst nach links
else:
zustand = 'links'
elif line_sensor(LineSensor.L1) == 0:
zustand = 'rechts'
elif line_sensor(LineSensor.R1) == 0:
zustand = 'links'
elif zustand == 'rechts':
...