f5 Sumo
★ ★ ☆
Baue und programmiere einen Roboter und nimm an einem Sumo-Turnier teil.
Spielregeln:
- Zwei Roboter (A und B) treten gegeneinander an. Sie starten Rücken an Rücken in den beiden Rechtecken in der Mitte.
- Der Roboter, der zuerst mit einem Rad außerhalb des Posters (nicht außerhalb des Ovals) steht, hat verloren. Der Sieger erhält drei Punkte.
- Die Runde endet unentschieden, wenn sich beide Roboter nach drei Minuten immer noch auf dem Poster befinden. Beide Teilnehmer erhalten dann einen Punkt.
- Verwende den Quad-RGB-Sensor, um zu erkennen, ob Du im weißen Oval bist oder auf dem schwarzen Rand.
- Verwende den Ultraschall-Sensor, um zu erkennen, ob sich der andere Roboter vor Dir befindet.
Lege drei eigene Blöcke für die drei Zustände Attackieren, Ausweichen und Suchen an. Überlege, was dein Roboter machen soll und rogrammiere die Blöcke entsprechend.
Die beiden Sensoren müssen mit einem Kabel mit der mBuild-Buchse am Robotergehäuse verbunden sein.
Kalibrierung (Anlernen)
Damit der Quad-RGB-Sensor zuverlässig funktioniert, muss er kalibriert (angelernt) werden:- Stelle den mBot auf den Tisch (normaler Untergrund)
- Drücke den kleinen weißen Taster in der Mitte des Sensors schnell zweimal hintereinander. Die blauen LEDs am Sensor beginnen schnell zu blinken.
- Schiebe den mBot vorsichtig über die Linie.
- Nach ein paar Sekunden hören die blauen LEDs zu blinken auf. Fertig!
Tipp: Im Upload-Modus fährt der mBot ruhiger, weil er dann schneller auf Kursabweichungen reagiert. Du musst aber dann bei jeder Änderung das Programm neu in den Roboter laden.
Python API
In Python kann der Ultraschallsensor mit dem Befehldistance = mbuild.ultrasonic2.get(index = 1)
abgefragt werden. Der Rückgabewert distance ist die gemessene Entfernung in cm.
Der Quad-RGB-Sensor
wird mit dem Befehl
line_state = mbuild.quad_rgb_sensor.get_line_sta("all", 1)
abgefragt. Der Rückgabewert line_state ist ein Wert zwischen 0 und 15.
Die vier Sensoren L2, L1, R1 und R2 haben die Wertigkeit 1, 2, 4 bzw. 8.
Der Rückgabewert ist die Summe aller Sensoren, die die Linienfarbe erkennen.
Beispiel: line_state=6 (2+4) bedeutet, dass die inneren beiden Sensoren L1 und R1 die Linie erkennen.