-         

Ergebnis 1 bis 9 von 9

Thema: Strecke messen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    28.05.2010
    Beiträge
    19

    Strecke messen

    Anzeige

    hallo,
    ich fahre 10 sekunden geradeaus. kann ich dann irgendwie abfragen, wie weit ich gefahren bin?

    Johannes

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    30.12.2009
    Ort
    Koblenz
    Alter
    38
    Beiträge
    78
    In der RP6RobotBase.lib sind folgende Funktionen definiert probier es mal damit

    Code:
    #define getLeftDistance() (mleft_dist)
    #define getRightDistance() (mright_dist)
    Ich habe bereits bis Unendlich gezählt. Zweimal, und zurück

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    28.05.2010
    Beiträge
    19
    geht leider nicht.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    30.12.2009
    Ort
    Koblenz
    Alter
    38
    Beiträge
    78
    Du kannst die Funktion getLeftDistance() nicht aufrufen, wenn die RP6RobotBase.lib eingebunden ist?
    Ich habe bereits bis Unendlich gezählt. Zweimal, und zurück

  5. #5
    RN-Premium User Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    522
    Mit "geht nicht" ist keinen geholfen...Du musst schon sagen, WAS nicht geht, ob es eine Fehlermeldung oder soetwas gibt.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    28.05.2010
    Beiträge
    19
    Code:
    #include "RP6RobotBaseLib.h"
    
    int main (void) 
      {
      initRobotBase();
      
      uint16_t s_left = getLeftDistance();
      powerON();
      move(80, FWD, DIST_MM(200), true);
      uint16_t s = getLeftDistance() - s_left;
      move(80, BWD, DIST_MM(s), true);
      return 0;
      }
    Bei mir fährt der Roboter immer eine längere Strecke zurück, als vorwärts

    Edit: So immer ungefähr 4mal so lang

  7. #7
    RN-Premium User Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    522
    Also das erste was mir auffällt, ist, dass du die Endlosschleife am Ende vergessen hast.
    So kann es zu Probleme kommen. Weiterhin sind die Distanzen am Anfang immer 0 also macht das erste Auslesen schonmal keinen Sinn
    Ansonsten lass dir den Wert doch mal über UART ausgeben.
    Vielleicht sind deine Encoder nicht richtig kalibriert.

    EDIT: Ich sehe grade das Problem: soweit ich weiß, ist die gemessene Distanz nicht in Zentimerter oder so, sondern in Zählschritten...
    Dann kann das mit dem DIST_MM /CM nicht klappen.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    28.05.2010
    Beiträge
    19
    Code:
    #include "RP6RobotBaseLib.h"
    
    int main (void) 
      {
      initRobotBase();
      powerON();
      task_RP6System();
      uint16_t s_left = mleft_dist; 
      move(80, FWD, DIST_MM(200), true);
      task_RP6System();
      uint16_t s = mleft_dist - s_left;
      move(80, BWD, DIST_MM(s * 0.2512), true);
      while (true)
        {
    	task_RP6System();
    	}
      return 0;
      }
    Danke. Also muss ich das Ergebnis mal 0.2512 nehmen. So geht es auch. Das ist ja ungefähr das 4fache.

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    32
    Beiträge
    1.514
    lass das DIST_MM einfach ganz weg das rechnet ja in Encoder Zählschritte um - Du hast aber sowieso schon den Wert in Zählschritten

    Also nicht move(80, BWD, DIST_MM(s * 0.2512), true);
    sondern move(80, BWD, s, true);

Berechtigungen

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