-
        

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

Thema: Linienverfolgung Testarena ASURO mit roter LED

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    62
    Beiträge
    674

    Linienverfolgung Testarena ASURO mit roter LED

    Anzeige

    Ich wende mich gerade der Linienverfolgung in der Testarena (Danke für das pdf-File im Downloadbereich!) zu. Welches Programm ist für einen normalen ASURO mit normaler roter LED (ohne Abschirmung) für diese Arena das Optimum? Die Programme, die ich bisher über Suchen gefunden habe, funktionieren leider nicht besonders zuverlässig, teilweise überhaupt nicht. Wo liegt der entscheidende Clou außer dem Austausch der normalen LED gegen eine IR-LED und Abschirmung?

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.07.2005
    Ort
    18km südl. Lutherstadt Wittenberg
    Alter
    41
    Beiträge
    142
    Soweit ich weiß, muß man im ersten Schritt ein Programm erstellen, mit dem die Werte der Phototransistoren auf der UART per IR Trasceiver zum PC gesendet werden. Dann wird auf der Testarena ausprobiert, in welchem Datenbereich sicht diese Werte befinden überm weißen Grund bzw. auf der schwarzen Linie (bei mir zB weiß ca125 und Linie ca 85) dann muß in dem Programm der Linienverfolgung der Threshhold dementsprechend angepaßt werden. Gibt da wohl verschiedene Algorithmen....
    MfG Dani.

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.785
    Blog-Einträge
    8
    Die Programme in diesem Thread waren noch für einen asuro mit der orginalen FrontLED geschrieben. Maxwerte waren bei ca. 40:



    Gruß

    mic

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

  4. #4
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    du musst dir ein programm suchen, und es nahc deinem asuro anpassen. die werte der asuros sind bei niemandem hier gleich.

    schreibe dir zuerst ein programm welches die in einer endlosschleife die aktuellen werte deiner fototransistoren in hyperterminal/minicom ausgibt, und dann musst du das programm auf deine werte abändern.
    kleinschreibung ist cool!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    09.01.2005
    Ort
    Hochspeyer
    Alter
    51
    Beiträge
    25

    Re: Linienverfolgung Testarena ASURO mit roter LED

    Zitat Zitat von ehenkes
    Ich wende mich gerade der Linienverfolgung in der Testarena (Danke für das pdf-File im Downloadbereich!) zu. ...
    ich bin leider wie immer ein wenig blind und finde die Vorlage für die Testarena nicht. Kann mir da mal bitte jemand unter die Arme greifen?

    Ich habe meinen ASURO mal den RCJ-Rescue Aufgabe lösen lassen. Dort muss man folgende Aufgaben lösen (Kurzform):
    - Linie folgen (Line hat Unterbrechungen bis zu 30cm und bis zu 90°-Ecken in der Linie)
    - grüne und silberen Mänchen erkennen
    - Hindernisse auf der Linie
    - Steigungen bis zu 20° aufwärts und auch abwärts
    (Mir ist nicht alles gelungen, aber für ne Demo hat es gerreicht.
    Eventuell könnte man sich dort noch Anregungen für neue Aufgabenstellungen geben.

    Gruß Heiko

  6. #6
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    Die Linientestarena findest du hier:

    http://www.roboternetz.de/phpBB2/viewtopic.php?t=30004
    kleinschreibung ist cool!

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    09.01.2005
    Ort
    Hochspeyer
    Alter
    51
    Beiträge
    25
    Vielen Dank. Das Seiten kommen schon aus meinem Drucker ...

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    62
    Beiträge
    674
    Ich fand dieses Programm mit dem PID-Regler von "Waste" wissenschaftlich ansprechend, aber es funktioniert bei mir nicht. Wie finde ich die passenden Zahlen für meinen ASURO?

    Code:
    /******************************************************************************* 
    * 
    * Description: Asuro Linienverfolgung mit PID-Regler 
    * Version 1: Korrektur auf beide Motoren verteilt 
    * Autor: Waste   26.8.05 
    * 
    *****************************************************************************/ 
    #include "asuro.h" 
    #include <stdlib.h> 
    
    unsigned char speed; 
    int speedLeft,speedRight; 
    unsigned int lineData[2]; 
    int x, xalt, don, doff, kp, kd, ki, yp, yd, yi, drest, y, y2, isum; 
    
    void FollowLine (void) 
    { 
       unsigned char leftDir = FWD, rightDir = FWD; 
       FrontLED(OFF); 
       LineData(lineData);                        // Messung mit LED OFF 
       doff = (lineData[0] - lineData[1]);   // zur Kompensation des Umgebungslicht 
       FrontLED(ON); 
       LineData(lineData);                      // Messung mit LED ON 
       don = (lineData[0] - lineData[1]);    
       x = don - doff;                            // Regelabweichung 
       isum += x; 
       if (isum > 16000) isum =16000;   //Begrenzung um Überlauf zu vermeiden 
       if (isum < -16000) isum =-16000; 
       yi = isum/625 * ki;                    //I-Anteil berechnen 
       yd = (x - xalt)*kd;                     // D-Anteil berechnen und mit 
       yd += drest;                             // nicht berücksichtigtem Rest addieren 
       if (yd > 255) drest = yd - 255;    // merke Rest 
       else if (yd < -255) drest = yd + 255; 
       else drest = 0; 
       if (isum > 15000) BackLED(OFF,ON);   // nur zur Diagnostik 
       else if (isum < -15000) BackLED(ON,OFF); 
       else BackLED(OFF,OFF); 
       yp = x*kp;                        // P-Anteil berechnen 
       y = yp + yi + yd;              // Gesamtkorrektur 
       y2 = y/2;                        // Aufteilung auf beide Motoren 
       xalt = x;                        // x merken 
       speedLeft = speedRight = speed; 
       MotorDir(FWD,FWD); 
       if ( y > 0) {                     // nach rechts 
          StatusLED(GREEN); 
          speedLeft = speed + y2;         // links beschleunigen 
          if (speedLeft > 255) { 
             speedLeft = 255;            // falls Begrenzung 
             y2 = speedLeft - speed;      // dann Rest rechts berücksichtigen 
          } 
          y = y - y2; 
          speedRight = speed - y;         // rechts abbremsen 
          if (speedRight < 0) { 
             speedRight = 0; 
          } 
       } 
       if ( y < 0) {                     // nach links 
          StatusLED(RED); 
          speedRight = speed - y2;         // rechts beschleunigen 
          if (speedRight > 255) { 
             speedRight = 255;            // falls Begrenzung 
             y2 = speed - speedRight;      // dann Rest links berücksichtigen 
          } 
          y = y - y2; 
          speedLeft = speed + y;            // links abbremsen 
          if (speedLeft < 0) { 
             speedLeft = 0; 
          } 
       } 
       leftDir = rightDir = FWD; 
       if (speedLeft < 20)  leftDir = BREAK; // richtig bremsen 
       if (speedRight < 20) rightDir = BREAK; 
       MotorDir(leftDir,rightDir); 
       MotorSpeed(abs(speedLeft),abs(speedRight)); 
    } 
    
    int main(void) 
    { 
       unsigned char sw; 
       Init(); 
       MotorDir(FWD,FWD); 
       StatusLED(GREEN); 
       speed = 150; 
       
       kp = 3; ki = 10; kd = 70;      // Regler Parameter kd enthält bereits Division durch dt 
       
       sw = PollSwitch(); 
       
       if (sw & 0x01) 
          {ki=20;} 
       if (sw & 0x02) 
          {speed = 200;} 
       if (sw & 0x04) 
          speed = 100; 
       if (sw & 0x08) 
          kd = 35; 
       if (sw & 0x10) 
          kd = 70; 
       if (sw & 0x20) 
          kd = 140; 
       
       FrontLED(ON); 
       LineData(lineData); 
       speedLeft = speedRight = speed; 
       
       while(1)
       { 
          FollowLine(); 
       } 
        return 0; 
    }
    Vielleicht ist dieses Programm inzwischen weiter entwickelt.

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo ehenkes,
    bei meinem Asuro kamen als sehr großes Hindernis beim Fahren meine beiden Motoren in's Spiel. Bei mir war der rechte Motor ein 'Schlappi' und benötigte immer ca. 50! Einheiten mehr Saft als der Linke um halbwegs geradeaus zu fahren. Mein Asuro fuhr also immer rechtsrum. (Radius ca. 30 cm) (Habe mitterweile die Motoren getauscht.)
    Hast du deinen Asuro schon mal mit gleichen Werten für die Motoren fahren lassen und geschaut, ob auch bei dir die Motoren 'etwas krumm' sind?
    In Wastes Programm (ist teuflisch gut!) hatte ich dann einen Korrekturwert eingetragen, der meine Fehler-50 auf beide Motoren noch verteilt hatte.

    Weiterer Fehlerursache könnte ein Umbau an deinem Asuro sein. In dem von dir angesprochenen Thread von Waste hat er (mit anderen) unter anderem das Gewicht bzw. Drehmoment vom Asuro natürlich berücksichtigt. Wenn deiner nun 'heftig' anders wiegt, können die Reglerwerte nicht mehr stimmen.
    Lieber Asuro programieren als arbeiten gehen.

  10. #10
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    wertebestimmung im einfachsten:

    Code:
    #include "asuro.h"
    
    int main(void){
    int data[2];
    Init();
    while(1){
    LineData(data);
    PrintInt(data[0];
    SerWrite("   ",3);
    PrintInt(data[1];
    SerWrite("\n\r",2);
    if(PollSwitch()==32){FrontLED(ON);};
    if(PollSwitch()==16){FrontLED(OFF);};
    }
    }
    denke ich sollte so klappen. das programm gibt endlos die werte der fototransistoren aus. wenn du ihn dann ein wenig aufder linie hin- und herschiebst, solltest du deine minimal- und maximalwerte finden. mit zwei tastern (nebeneinander, links oder rechts aussen) kannst du die frontled ein- und ausschalten. hoffe es geht, muss jetzt in die FH
    kleinschreibung ist cool!

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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