Danke für deine Antwort, sie hat mir wirklich sehr geholfen.

Das Grundprinzip glaube ich verstanden zu haben. In welche Richtung und mit welcher Geschwindigkeit er fahren soll kann ich Programiren, dafür sind ja die ersten drei Variablen zuständig.

Ich habe jetzt erst mal die vorhandene behaviour_command_t cruise Funktion etwas abgeändert.
Der Roboter soll jetzt 50 cm nach vornefahren und dann anhalten.
Code:
behaviour_command_t cruise = {CRUISE_SPEED_FWD, CRUISE_SPEED_FWD, FWD, false, false, DIST_MM(500), MOVE_FORWARDS};
Laut den Kommentaren müsste ich bei uint16_t move_value; die zu fahrende Distanz eintragen bzw. die Umdrehungen eintragen. Wenn ich das mache fährt der Roboter aber Trotzdem weiter.
Ich vermute das unsigned move:1 und unsigned rotate:1 etwas damit zu tun haben aber mit den Begriffen move flag und rotate flag kann ich nichts anfangen.

Was passiert außerdem wenn ich mehrere Befehle hintereinander ausführen will. Muss ich behaviour_command_t cruise nochmal ausführen(geht das überhaupt). Ist uint8_t state; dafür verantwortlich, also so was ähnliches wie case 1, case 2… ?

Diese Fragen klingen jetzt bestimmt etwas blöd, aber ich hoffe ihr könnt mir trotzdem helfen.