- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 28

Thema: Sensorik am RP6, Befehle und Allgemeines

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Zu dem Auslesen der Strecke hab ich was in der Lib.c gefunden:
    Code:
    /*****************************************************************************/
    // Encoders
    
    // Timing variable used for speed calculation:
    volatile uint8_t speed_timer;
    
    // Speed measurement variables
    volatile uint16_t mleft_counter;
    volatile uint16_t mright_counter;
    volatile uint16_t mleft_speed;
    volatile uint16_t mright_speed;
    
    // Distance
    volatile uint16_t mleft_dist;
    volatile uint16_t mright_dist;
    
    // This is only used for the selftest program.
    // You don't need this for your own programs!
    #ifdef DEBUG_MEASURE_DUTY_CYCLE
        volatile uint16_t cycle_h_l;
        volatile uint16_t cycle_l_l;
        volatile uint16_t cycle_h_r;
        volatile uint16_t cycle_l_r;
        
        volatile uint8_t cycle_h_l_tmp;
        volatile uint8_t cycle_l_l_tmp;
        volatile uint8_t cycle_h_r_tmp;
        volatile uint8_t cycle_l_r_tmp;
    #endif
    
    /**
     * External Interrupt 0 ISR
     * (ENCL)
     *
     */
    ISR (INT0_vect)
    {
        mleft_dist++;
        mleft_counter++;    
        
        // Only used for selftest program:
        #ifdef DEBUG_MEASURE_DUTY_CYCLE
            if(isEncoderLeft()) {
                cycle_l_l = cycle_l_l_tmp;
                cycle_l_l_tmp = 0;
            }
            else {
                cycle_h_l = cycle_h_l_tmp;
                cycle_h_l_tmp = 0;
            }
        #endif
    }
    Ich denke, das müsste es sein, oder? Dann kann ich einfach zu Beginn eines Fahr-Vorgangs mleft_dist und mright_dist auf Null setzen und danach auslesen, ins Array schreiben und Koordinaten berechnen?!?!?!

    MfG

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    Korrekt. Anhand der unterschiedlichen Strecken könnte man sich übrigens auch mit etwas Mathe den Winkel ausrechen

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Meinst du jetzt, dass ich mir nach einem Drehmanöver den gedrehten Winkel berechne? Dafür gibts glaube ich auch schon vorgefertigte Funktionen für rotate etc.
    Oder meinst du, dass ich mir nur die gesamt gefahrenen Strecken der linken und rechten Kette ansehe, durch die Differenz aus beiden auf den Winkel schließe? Das ginge glaube ich nicht...

    Kann der RP6 Trigonometrie?

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    Ohne allzu viel drüber nachzudenken müsste man anhand der gefahren Strecke WÄHREND dem Drehen (auf der Stelle) über ein paar Kreisfunktionen auch den Winkel berechnen können.
    Ist mir aber jetzt zu spät dafür du hast ja dann quasi eine Strecke auf einer Kreisbahn, also einen Kreisabschnitt. Damit kann man eigentlich auch den entsprechenden Winkel berechnen.

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Jojo, das geht. Danke Dir!!!
    Werd das schon hinbekommen

    Was ich aber noch nicht weiß: Wie schauts mit Sinus, Cosinus und Tangens aus? Die bräuchte ich um mit Strecke und Winkel einen x- und y-Koordinaten zu berechnen...

    Bis denne...
    Fabian

  6. #6
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Ich hatte es schon mal angesprochen...
    http://www.nongnu.org/avr-libc/user-...avr__math.html
    Die Lib gehört zum gcc
    Sind Sie auch ambivalent?

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Nun ja, da ich das ganze in einem Raum mit rutschfestem, gleichmäßigem Boden mache, denke ich, dass sich der Schlupf der Ketten gering hält. ... Der Einfachheit halber werde ich zunächst nur geradeaus fahren und mich auf der Stelle Drehen.
    Vom Ansatz her wohl gar nicht schlecht. Wenn ich mich recht erinnere, dann beträgt die Abweichung von der Geraden bei geregeltem moveAtSpeed() ca. 10 bis 20 cm auf 2m. Ursache dafür ist aber nicht nur der Schlupf, auch die sehr einfache Regelung der Geschwindigkeit ohne Berücksichtigung der Lage spielt da rein. Ein (von mir nicht getesteter) PID-Ansatz wurde hier beschrieben: http://www.arexx.com/forum/viewtopic...9&t=630&p=5572

    Was würde eigentlich passieren, wenn zwischen Antriebsriemen und Boden kein Schlupf mehr auftreten würde? Der RP6 würde schnurrgeradeaus düsen. Eine Kurve oder gar eine Drehung auf der Stelle wäre aber unmöglich. Deshalb brauchen wir den Schlupf zum Drehen, aber leider können wir nicht sagen, wo er auftritt, bzw. wo letzlich der Drehpunkt ist.

    Gruß

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

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    30.12.2009
    Ort
    Koblenz
    Alter
    45
    Beiträge
    78
    Ich habe mir mal ein paar Gedanken bezüglich einer speicheroptimierten Lage in der Ebene gemacht. Ich kam dann auf die Idee einfach einen Vektor zu verwenden. Hier mein Erguss

    Annahme RP6 ist nach Norden ausgerichtet:

    V(x) = (x-Achse, y-Achse, Winkel)

    V(0) = (0,0,0)
    + 20 Einheiten geradeaus
    V(1) = (0,20,0)
    + Drehung um 20° im UZS und 15 Einheiten geradeaus.
    V(2) = V(1) + (sin(20°) * 15, cos(20°) * 15 ,20) ͌ = (5.13, 14.09,20)
    + Drehung um 90° im UZS und 15 Einheiten geradeaus
    v(3) = V(2) + (sin(110°) * 15, cos(110°) * 15,110) = (19.22,8.95,110)
    + Drehung um 90° im UZS und 15 Einheiten geradeaus
    v(4) = v(3) + (sin(190°) * 15, cos(110°) * 15,190) = (16.61-5.82,190)

    Ich hoffe mal, dass meine letzte Geometriestunde nicht alzu lange her ist. Auch wenn Fehler drin sein sollten - bitte melden - sollte der Gedanke klar sein.

    Gruß Magelan
    Ich habe bereits bis Unendlich gezählt. Zweimal, und zurück

Ähnliche Themen

  1. Allgemeines zum C't-Bot
    Von Jobot im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 5
    Letzter Beitrag: 03.02.2010, 19:16
  2. Allgemeines Lob!
    Von adrisch im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 1
    Letzter Beitrag: 28.04.2007, 10:23
  3. c-control, allgemeines zu analog I/O
    Von Haveaniceday im Forum C-Control II
    Antworten: 1
    Letzter Beitrag: 26.04.2007, 13:20
  4. Allgemeines Handbuch?
    Von sonium im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 12.01.2006, 12:14
  5. Allgemeines Verständniss der Grundschaltungen
    Von Crash32 im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 16.12.2005, 19:04

Berechtigungen

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

Labornetzteil AliExpress