Der Roboter soll eine bestimmte Strecke genau geradeaus fahren.
Nach Richtungsabweichungen z. B. durch das Überfahren von Hindernissen soll der Roboter wieder die ursprüngliche Fahrrichtung einschlagen.
Voraussetzungen
Der Roboter muss mit de Vorderseite in Fahrtrichtung stehen.
Der Gyrosensor im SPIKE-Hub muss korrekt funktionieren (prüfen und notfalls Roboter neu starten und verbinden).
Code
Erklärung
Zunächst erstellst Du einen eigenen Block mit Eingabefeld für die Strecke (Entfernung in cm). Der eigene Block enthält die folgenden Blöcke:
Block 1 („Setze Gierwinkel auf 0“) setzt den Gierwinkel (= Messwert des Gyrosensors) auf 0. Damit wird die richtige Fahrtrichtung gespeichert.
Block 2 (Motor „D setze relative Position 0“) setzt die aktuelle Position eines Bewegungsmotors auf 0. Anhand dieser Motorposition berechnet der Roboter später, wie weit er bereits gefahren ist.
Block 3 („setze Radumfang auf 17.5“) speichert in der Variablen „Radumfang“, wie weit der Roboter bei einer Radumdrehung fährt (17.5 cm = kleine Räder; 26.7 cm = große Räder).
Block 4 („setze Motorposition-Ziel auf…“) berechnet, welche Position der Motor am Ende der Fahrtstrecke erreicht, und speichert diesen Wert in der Variablen „Motorposition-Ziel“ ab.
Block 5 („wiederhole bis…“) startet eine Schleife, die solange läuft, bis der Bewegungsmotor sich so weit gedreht hat, dass er die zuvor berechnete Zielposition erreicht bzw. überschritten hat. Bis dahin werden folgende Blöcke 5.1 bis 5.3 wiederholt:
Block 5.1 („setze Abweichung auf…“) speichert den aktuellen Gierwinkel in der Variablen „Abweichung“ (z. B. den Gierwinkel-Wert „2“)
Block 5.2 („setze Korrektur auf…“) berechnet die Lenkrichtung ab, die zur Korrektur der Abweichung verwendet wird (bei Gierwinkel „2“ als den Korrekturwert „-2“).
Block 5.3 („starte Bewegung…“): lenkt den Roboter in die Richtung, die zuvor berechnet wurde („-2“ = leicht nach links)
Block 6: Dieser Block lässt den Roboter anhalten, sobald der Motor die Zielposition erreicht hat und die Schleife (Block 5) daher endet.