Danke erst mal für die Antworten.
ich kann jetzt soweit nachvollziehen wie das funktioniert. Ich hoffe mein Gedankengang ist so richtig:
Also wird jetzt in dem "behaviourController" abgefragt ob cruise oder escape aktiv ist? Wenn jetzt z.B. escape (wenn bumper gedrückt wird) aktiv ist ist, wird in der Funktion "moveCommand(behaviour_command_t * cmd)" im Prinzip escape eingesetzt also das sieht dann für mich gedanklich so aus: "moveCommand(escape)".
Wenn ich jetzt die Situation habe das beide Bumper gedrückt werden:
1. in dem behaviour_escape startet die Funktion ESCAPE_FRONT_START, hier werden die werte für Geschwindigkeit, Richtung etc. festgelegt und in der typdef Struct "eingetragen".
2. da ja in dem Fall "moveCommand(escape)" aktiv ist und in ESCAPE_FRONT_START die entsprechenden werte Festgelegt sind kann die Funktion "moveCommand" hier die werte auslesen und in
die bekannte Funktion "move" einsetzen, es wird gefahren.
Habe ich das bis dahin richtig verstanden?
1.Jetzt gab es aber doch noch Fragen:
Wenn jetzt move und rotate aktiv waren soll er ja wieder gerade aus fahren, das heißt "else if(!(cmd->move || cmd->rotate))" ist ja gegeben wenn move bzw. rotate fertig ausgeführt wurde(da diese ja nach Ausführung auf false gesetzt werden) also wird "MoveAtSpeed" aktiv gleichzeitig wird ja auch die Funktion cruise aktiv (da escape NICHT != IDLE ist) und die werte werden dann ja von "moveCommand(cruise)" aus "behaviour_command_t cruise" ausgelesen.
--> Ist da nicht die Funktion "else if(!(cmd->move || cmd->rotate))" überflüssig?
2. Dann nochmal zur Funktion cmd --> cmd ist also einfach eine Funktion um Daten auszulesen? In dem fall aus der vorher definierten typdef struct? Konnte zu cmd nichts in der Anleitung finden.
Ich hoffe ihr könnt das so nachvollziehen wie ich es geschrieben habe.
Danke im voraus
Lesezeichen