-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 27

Thema: Frage zum Beispiel Example_05_Move_05

  1. #1

    Frage zum Beispiel Example_05_Move_05

    Anzeige

    Hallo zusammen

    Ich habe den RP6 nun seit Weihnachten uns bin dabei mich in die Beispiel Programme einzuarbeiten. Ich wollte jetzt beim Beispiel Programm „Example_05_Move_05“ ein Bewegungsmuster mit dem Befehl

    Code:
    void move(uint8_t desired_speed, uint8_t dir, uint16_t distance,
    uint8_t blocking)
    und

    Code:
    void rotate(uint8_t desired_speed, uint8_t dir, uint16_t angle,
    uint8_t blocking)
    Einbauen.
    Nun zu meiner Frage wo muss ich diese Segmente einsetzen damit es funktioniert und muss ich die Funktion

    Code:
    behaviour_command_t cruise = {CRUISE_SPEED_FWD, CRUISE_SPEED_FWD, FWD, false, false, 0, MOVE_FORWARDS};
    verändern und welche Aufgabe hat die überhaupt (Ich weiß zwar das sie für das vorwärtsfahren verantwortlich ist aber sie sieht anders aus als void move)

    Das Bewegungsmuster soll am Ende ungefähr so aussehen:
    30cm nach vorne
    90Grad nach links
    50cm nach vorne

    Geht dies überhaupt wenn er auch auf Hindernisse Reagieren soll oder muss ich dafür eine anderer Funktion verwenden?

    Danke für eure antworten

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    @känguru:

    Das Programm „Example_05_Move_05“ ist schon ziemlich komplex. Die Steuerung des Verhaltens passiert mit dem Datentyp behaviour_command_t, der so aussieht:
    typedef struct {
    uint8_t speed_left; // speed left
    uint8_t speed_right; // speed right
    unsigned dir:2; // direction (FWD, BWD, LEFT, RIGHT)
    unsigned move:1; // move flag
    unsigned rotate:1; // rotate flag
    uint16_t move_value; // move value
    uint8_t state; // state of the behaviour
    } behaviour_command_t;

    Wenn man also im cruise Verhalten die Variable:
    cruise = {CRUISE_SPEED_FWD, CRUISE_SPEED_FWD, FWD, false, false, 0, MOVE_FORWARDS};
    ... hat, dann bedeutet das, dass der RP6 mit CRUISE_SPEED_FWD vorwärts fährt.
    Genau so kann er auch rotieren, indem man cruise.rotate nutzt.

    Also: Die Befehle rotate und move kannst du direkt nicht in diesem Programm einsetzen, sondern must ein neues Verhalten schreiben.

    Gruß Dirk

  3. #3
    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.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    07.01.2011
    Beiträge
    13
    Hey Leute hab mir vor 2 Wochen einen Rp6 zugelegt und komme beim Programieren nicht richtig weiter und werde auch mit den Beispielprogrammen nicht richtig schlau habe wenn ich ein Beispielprogramm mit AVR Studio 4 aufmache immer nur so Zahlencode wie Zum Beispiel : :100000000C9409010C9469040C9489040C94AD05BA http://www.roboternetz.de/phpBB2/ima...eusa_think.gif
    bei dem ist immer der selbe schritt in jeder Linie :1000...
    werde daraus nicht schlau gibt es nur diese Programierung oder auch die mit Wörtern und Zahlen und wie bekomme ich die Raus wenn das nicht Möglich ist gibt es sicher eine Zahlenfolge die Für eine Vorwärtsbewegung zuständig ist. Oder könnt ihr mir ein besseres Programm anzubieten?
    bitte Hilfe

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Du betrachtest eine *.hex-Datei

    Der Quellcode steht in der Datei *.c

    http://www.rn-wissen.de/index.php/Avr-gcc
    http://www.mikrocontroller.net/artic...R-GCC-Tutorial

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    07.01.2011
    Beiträge
    13
    Die hexDateien sind doch die bei denen am schluss .hex steht oder und das sind auch die die ich schlussentlich in den Rp6 einspeise oder?

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    In den Hex-Dateien stehen die Werte der Speicherstellen im Kontroller die dieser später als sein Programm interpretiert. Außer ihm kann das keiner lesen. Schau dir mal die .c-Dateien an und die Links, die ich in meinem letzten Beitrag oben eingefügt habe.

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    07.01.2011
    Beiträge
    13
    so hab das Jetzt gefunden und wenn ich Jetzt ein Program in die C Datei geschrieben habe wie mache ich daraus eine Hexdatei ergibt sich das von selbst durch speichern oder wie mache ich das?

  9. #9
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hast du die Anleitung schon durchgelesen?

    http://arexx.com/rp6/downloads/RP6_M...E_20071219.zip

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    07.01.2011
    Beiträge
    13
    Ja hab aber nicht alles am Stück gelesen und wurde dadruch nich twirklich schlau und anstadt es nochmals zu lesen habe ich das übersprungen werde es nochmals machen danke für deine Hilfe werde mich wieder melden wenn ich es immer noch nicht kapiere.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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