- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 13

Thema: RP6 Neuling erste Fragen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi,

    zu 1.
    Beim "blocking" geht es darum, ob die Funktion (z.B. rotate) sofort verlassen wird (blocking = false) oder erst dann, wenn die jeweilige Bewegung beendet ist (blocking = true).

    Ob z.B. Bumper gleichzeitig ausgewertet werden können, hängt davon ab, wie man den Rest des Programms gestaltet.
    Auf jeden Fall muss man entscheiden, ob das eigene Programm in einer Funktion (z.B. rotate) hängen bleiben darf, bis der Befehl abgearbeitet ist, oder ob man während der Bewegung noch etwas anderes machen muss.
    Gruß
    Dirk

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    13.09.2014
    Beiträge
    23
    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

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Zu 2.
    cmd (als Abkürzung für command) ist eine komplexe Variable vom Typ behaviour_command_t, der im Programm als struct so definiert ist, dass cmd aus einem "Satz" von Variablen besteht, die zusammen den "Befehl" (und gleichzeitig auch den Status) für die Bewegungen darstellen. Da drin sind move und rotate Einzelbits (flags).
    Da das ganze Programm recht schnell durchlaufen wird, kommt es an die Abfrage "if(!(cmd->move || cmd->rotate))" öfter, bevor die Bewegung abgeschlossen ist. Damit ist diese Abfrage natürlich erforderlich, damit nicht VOR Ablauf einer move oder rotate Bewegung ein anderer Fahrbefehl (moveAtSpeed) oder eine Änderung der Bewegungsrichtung (changeDirection) erlaubt wird.
    Letztlich wird danach erst dann, wenn die move/rotate Bewegung abgeschlossen ist (isMovementComplete()), das move- und rotate- Flag im cmd struct gelöscht.
    Danach sind dann auch wieder Änderungen der Bewegungsrichtung oder Geradeausfahrten möglich.
    Gruß
    Dirk

Ähnliche Themen

  1. C Neuling - erste Frage
    Von Blue72 im Forum C - Programmierung (GCC u.a.)
    Antworten: 16
    Letzter Beitrag: 19.02.2013, 19:23
  2. Neuling fragen zum Setup
    Von tils09 im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 2
    Letzter Beitrag: 05.08.2011, 19:09
  3. Pro Bot 128 Neuling bräuchte Hilfe für erste Schritte.
    Von muntz im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 4
    Letzter Beitrag: 03.12.2009, 15:32
  4. Neuling hat Fragen zu den Ausgängen beim RP6!?!
    Von -andi_007- im Forum Robby RP6
    Antworten: 32
    Letzter Beitrag: 23.03.2008, 19:46
  5. Ein paar Fragen [Neuling]
    Von BlackFog im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 8
    Letzter Beitrag: 21.01.2008, 02:29

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test