- Labornetzteil AliExpress         
Ergebnis 1 bis 6 von 6

Thema: Odometrie: Position, winkel und Strecke

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    danke für eure schnelle Antwort, aber ich bin sozusagen ein anfänger, der sich seit kurzem richtig mit programmieren beschäftigt und nicht viel ahnung von dem ganzen krempel hat!,
    zum dem quellcode muss ich sagen, viel habe ich da nicht verstanden, war mir zu kompliziert und hätte gern bisschen kommenare zu

    Gibt es vielleicht ne einfacherere Version für den Quellcode?!
    danke

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    384
    Erstes muss du verstehen was dahinten steckt : die reine Mathematic. Ist gar nicht so schwierig :
    Abstand L-rad : encoder_tics L, Abstand R-rad : encoder_tics R.
    Dan wird die Verplatzung von mittelpunkt Radachse : (encoder_tics L + encoder_tics R). Das ist naturlich nur eine Gerade wen Abstand L-rad = Abstand R-rad. When nicht, ist das eine Boge.
    Die Verdrehung um die Hochachse ist auch gans einfach : (encoder_tics L- encoder_tics R) Wiederum, wen beide gleich ist da kein Verdrehung passiert ! So wird die ganse Fahrstrecke in kleine Bogen verteilt und immer wird die Aenderungen aufaddiert mit folgende Mathematic :
    Neue X_pos= cosinus(Winkelaenderung/2)*Verplatzung + Alte X_pos
    Neue Y_pos= sinus(Winkelaenderung/2)*Verplatzung+Alte Y_pos
    Neue Winkel = Winkeaenderung+alte Winkel
    Für ihre Winkelberechnungen ist es notwendig das die wirkliche Winkel in radial berechnet werd. Das ist abhangig von Radabstand und Encoder-resolution. Auch wichtig ist naturlich das die Encoder Auf und Abzaehlen konnen (kwadratuurencoder)
    Code:
    int16_t delta_compass;   //hoekverdraaing tov vorige doorloop 
    void odometrie (void){    
    static int16_t e_compass_old; //waarde e_compass bij vorige doorloop (encodertics)
     
    delta_compass=e_compass - e_compass_old;  //hoekverdraaing tov vorige doorloop (encodertics)
     
    if((abs(delta_distance) > 200)||(abs(delta_compass) > 100)||(isMovementComplete()&(abs(delta_distance) >10)&(program>40))){  //alleen update indien voldoende verschil !!
     int32_t delta_x = 0;         //||((delta_distance>5)&isMovementComplete())
     int32_t delta_y = 0;
     double hoek= ((e_compass_old+e_compass)/2/E_COMPASS_RESOLUTION)*M_PI/180;//hoek omzetten naar radialen
     
     delta_x = delta_distance*cos(hoek); //
     delta_y = delta_distance*sin(hoek); // opgelet overflow vanaf delta_distance >125 !!
     total_distance=total_distance+delta_distance; //totaal afgelegde baan-afstand
     delta_distance=0;  //resetten van delta_distance ; 
     x_pos=x_pos+delta_x; //aktuele x_pos updaten *ENCODER_RESOLUTION/2
     y_pos=y_pos+delta_y; //aktuele y-pos updaten *ENCODER_RESOLUTION/2
     e_compass_old=e_compass;
     if(print_data==1){
      writeString("\n");
      writeInteger((x_pos*ENCODER_RESOLUTION/2),DEC);writeString_P(" ");
      writeInteger((y_pos*ENCODER_RESOLUTION/2),DEC);writeString_P(" ");
      writeInteger((e_compass/E_COMPASS_RESOLUTION),DEC);writeString_P(" ");
      writeInteger(state,DEC);writeString_P(" ");
      }
     }
    }

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.063
    Der Quatraturencoder braucht eine A und eine B Spur. Die B Spur ist um 90° versetzt zur A Spur.

    MfG Hannes

Ähnliche Themen

  1. Strecke messen
    Von johannes_b im Forum Robby RP6
    Antworten: 8
    Letzter Beitrag: 28.05.2010, 17:46
  2. Asuro Fährt strecke ab
    Von zigenpeter im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 2
    Letzter Beitrag: 17.12.2008, 13:44
  3. GoTurn () Winkel und Strecke
    Von Wo2le im Forum Asuro
    Antworten: 7
    Letzter Beitrag: 05.06.2008, 07:59
  4. Strecke abmessen
    Von m1ch15inner im Forum Asuro
    Antworten: 42
    Letzter Beitrag: 30.11.2006, 21:07
  5. Zurückgelegte Strecke
    Von Albanac im Forum Software, Algorithmen und KI
    Antworten: 9
    Letzter Beitrag: 14.10.2004, 17:19

Berechtigungen

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

LiFePO4 Speicher Test