Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03574.jsonl.gz/896

Wir programmieren zuerst «Eigene Blöcke», um die Beine genau gegenüber stehend auszurichten, den Roboter vorwärts gehen zu lassen und ihn nach links drehen zu lassen. Mit einem kleinen Programm testen wir die einzelnen Blöcke. Den Roboter erst ohne schweren Oberkörper zu testen ist einfacher, da er nicht so leicht umfällt.
Eigener Block: Reset
Jedes Mal, wenn der Motor eine komplette Umdrehung ausgeführt hat, drückt der dazu gehörende Mechanismus einmal auf den Berührungssensor. Mit dieser Information kann der LAVA R3X das linke und das rechte Bein gegenläufig ausrichten.
Der Roboter kann aber nicht erkennen. welches der beiden Beine den Berührungssensor betätigt hat. Deshalb werden die beiden Motoren gedreht, bis der Berührungssensor nicht mehr gedrückt wird. Anschliessend dreht der linke Motor vorwärts, bis der Berührungssensor gedrückt wird und dreht dann noch 90° weiter.
Danach wird der rechte Motor vorwärts gedreht, bis er den Sensor berührt und dann um 90° rückwärts. So sind die beiden Beine exakt gegenüberliegend ausgerichtet und der Roboter ist zum Gehen bereit.
Die beiden Drehsensoren der Motoren werden auf 0 gesetzt. Während der Roboter geht befinden sich die beiden Beine genau gegenüber liegend, wenn die Drehsensoren der beiden Motoren den gleichen Wert aufweisen. Durch das Zurücksetzen der Sensoren wird es einfacher, später zur Ausgangsposition zurückzukehren.
Mrtz erstellt das Flussdiagramm:
Eigener Block: Return
Der LAVA R3X soll nicht nur geradeaus marschieren, sondern sich auch nach links drehen können. Nach einer solchen Drehung kann es sein, dass die Beine nicht mehr exakt gegenüber stehen. Deshalb müssen die Beine erst wieder ausgerichtet werden. Dies könnte mit dem Reset-Block gemacht werden. Allerdings nimmt dieser viel Zeit in Anspruch. Wir können aber den gleichen Effekt erzielen, in dem wir den Motor in die Grundstellung zurückfahren.
Die aktuelle Stellung des Motors wird gemessen und um diesen Betrag zurück gedreht. Volle Drehungen müssen nicht durchgeführt werden, da nur die Position des Motors wichtig ist. Wir brauchen also nur den Betrag, um den die aktuelle Position die vollständigen Umdrehungen überschreitet. Das kann mit dem Modulo-Operator (%) berechnet werden. Er gibt den Rest einer Division an. Der benötigte Winkel ist der Rest der Division durch 360.
Eigener Block: OnSync
Damit der Roboter losmarschieren kann, muss er beide Motoren mit 20% der Höchstdrehzahl vorwärts bewegen (34 U/min). Aufgrund von leichten Drehzahlabweichungen kann es dazu kommen, dass ein Motor hinter dem anderen zurückbleibt. So bewegen sich die beiden Beine nicht mehr exakt gegenläufig. Mit einem eigenen Block synchronisieren wir die beiden Motoren. Dies machen wir vereinfacht gesagt, in dem wir den zurück liegenden Motor etwas schneller laufen lassen und gleichzeitig den anderen Motor etwas langsamer. Je stärker die Abweichung der beiden Motoren ist, desto stärker korrigieren wir. So laufen die beiden Motoren schneller wieder synchron.
Mit allerlei komplizierten Berechnungen ermitteln wir, mit welchen Geschwindigkeiten die beiden Motoren laufen müssen, damit die Beine am schnellsten wieder synchron laufen.
Eigener Block: Left
Der LAVA R3X kann nach links drehen, in dem er den rechten Motor rückwärts dreht, während er den linken Fuss in einer festen Position hält. Diese Position ist so gewählt, dass der linke Fuss den Boden bei jeder Umdrehung des rechten Motors gerade berührt. Der Roboter bewegt sich jeweils einen kleinen Winkel nach links. Wie gross dieser Winkel ist, hängt von der Oberfläche ab. Durchschnittlich aber führen zehn Rückwärtsdrehungen des rechten Motors zu einer Drehung des Roboters um ca. 90 Grad.
Damit dieser eigene Block unabhängig von der Stellung der Motoren funktioniert, stellen wir an den Anfang und sein Ende einen Return-Block.
Die ersten Schritte machen
Das Programm WalkTest greift auf die eigenen Blöcke zu und ist sehr kompakt.
Die eigenen Blöcke sind komplexer, aber auch ausgefeilter geworden, als in früheren Programmen. Mit allerlei Berechnungen halten wir die Beine schön synchron. Bis der LAVA R3X wie gewünscht lief, mussten wir das Programm viele Male starten und den Roboter genau beobachten. So haben wir recht schnell heraus gefunden, wo sich Fehler in unserem Programm eingeschlichen haben. Nach den notwendigen Korrekturen wackelte der Roboter witzig in der Gegend herum und dreht sich. Die Konstruktion der Beine ist eindrücklich und erst in der Bewegung hatten wir den Sinn davon verstanden. Der LAVA R3X ist ein weiterer cooler Roboter, den wir zusammen im wahren Sinn der Worte Schritt für Schritt zum Laufen gebracht haben.