Nachrichten-Referenz
Nachrichten werden mit dem Gerät emitter gesendet und mit dem Gerät receiver empfangen. Beispiele findest du im Kommunikations-Tutorial.
Die Formatstrings unten sind die des Python-Moduls struct.
Vom Roboter gesendet
Abschnitt betitelt „Vom Roboter gesendet“| Nachricht | Format | Länge | Zweck |
|---|---|---|---|
| Eine Wandmarkierung melden | i i c: x, z, Typ |
9 Bytes | Die Position ist in Zentimetern, und der Typ ist einer von H, S, U, F, P, C, O. Der Roboter muss mindestens 1 Sekunde gestanden haben. |
| Kartendaten | 2i gefolgt von UTF-8-Text: Zeilen, Spalten, durch Kommas getrennte Zellen |
Jede andere Länge | Speichert die Karte, ohne sie zu bewerten |
M |
c |
1 Byte | Bewertet die gespeicherte Karte. Das geht nur einmal. |
L |
c |
1 Byte | Löst einen fehlenden Fortschritt (Lack of Progress) aus |
G |
c |
1 Byte | Fragt die Spielinformationen ab |
E |
c |
1 Byte | Beendet das Spiel. Gibt den Ausgangsbonus, wenn der Roboter auf der Startkachel steht und eine Wandmarkierung erkannt hat. |
Erebus unterscheidet diese Nachrichten an ihrer Länge, also muss eine Meldung genau 9 Bytes lang sein.
Vom Roboter empfangen
Abschnitt betitelt „Vom Roboter empfangen“| Nachricht | Format | Länge | Zweck |
|---|---|---|---|
L |
c |
1 Byte | Ein fehlender Fortschritt ist eingetreten |
G |
c f i i: G, Punktzahl, verbleibende Spielzeit, verbleibende Echtzeit |
16 Bytes | Antwort auf G. Die Zeiten sind in Sekunden. |
Beachte, dass das Paket von G Füllbytes enthält, weil das struct-Format oben den Float ausrichtet: Die Punktzahl beginnt bei Byte 4, die Zeiten bei Byte 8 und 12.
Häufige Webots-Funktionen
Abschnitt betitelt „Häufige Webots-Funktionen“| Funktion | Beschreibung |
|---|---|
robot.getDevice(name) |
Holt ein Gerät über seinen Namen. In C++ verwendest du robot->getMotor(name), robot->getCamera(name) und so weiter. |
robot.step(timeStep) |
Lässt die Simulation weiterlaufen. Gibt -1 zurück, wenn die Simulation endet. |
robot.getTime() |
Liefert die Simulationszeit in Sekunden |
device.enable(timeStep) |
Aktiviert einen Sensor |
motor.setPosition(float("inf")) |
Lässt den Motor sich unbegrenzt drehen |
motor.setVelocity(speed) |
Stellt die Geschwindigkeit eines Motors in Radiant pro Sekunde ein |
