- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 9 von 9

Thema: Linienverfolgung verbessern

  1. #1
    Mosuro 77
    Gast

    Linienverfolgung verbessern

    Anzeige

    Praxistest und DIY Projekte
    Hallo,
    ich habe versucht den Asuro eine Linie folgen zu lassen und erst mal das Programm aus der Asuro-Anleitung genommen. Doch der Asuro fuhr meiner Meinung nach zu schnell und ich habe die Geschwindigkeit verringert, trotzdem kommt er schnell von der Linie ab und schafft auch keine Kurven.
    Hier ist das Programm:
    Code:
    #include "asuro.h"
    int main(void) {
    unsigned int data[2]; //Speicher bereitstellen
    Init();
    FrontLED(ON); // Linienbeleuchtung einschalten
    MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
    while(1){ // Endlosschleife, ASURO soll beliebig
    // lang einer Linie nachfahren
    LineData(data); // aktuelle Helligkeitswerte der
    // Fototransistoren einlesen
    if (data [0] > data [1] ) // links heller als rechts...
    {MotorSpeed(120,90);} // ... dann links mehr Gas geben...
    else
    {MotorSpeed(90,120);} // ... sonst rechts mehr Gas geben!
    }
    return 0;
    }
    Kann mir jemand vielleicht ein paar Verbesserungstricks zeigen, damit der Asuro auf der Linie bleibt und auch Kurven fahren kann?

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    33
    Beiträge
    239
    hallo

    ich habe bei meinem programm immer einen motor mit ausgeschaltent (geschwindigkeit=0) dadurch sind kleinere radien möglich.

    eine weitere möglichkeit um relativ schnell fahren zu können, aber auch enge kurven zu schaffen bieten regelungen. damit kenne ich mich aber nicht wirklich aus. Suche dafür am bessten mal nach PDI regelung, dann müsstst du etwas passendes finden
    mfg hai1991

    P.S.: wer großbuchstaben oder rechtschreibfehler findet darf sie behalten

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.070
    PDI Regelung kenne ich nicht. Du meinst wahrscheinlich PID Regelung

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    33
    Beiträge
    239
    sry, da hast du natürlich recht. das sollte PID-Regelung heißen
    danke für die korrektur (wie gesagt ich kenne mich damit nicht aus, habs nur hier schon öfters gelesen)
    mfg hai1991

    P.S.: wer großbuchstaben oder rechtschreibfehler findet darf sie behalten

  5. #5
    Mosuro 77
    Gast
    Mit dieser test.c-Datei klappt es echt gut (nur wenn die Akkus etwas leer sind, kann der Asuro nich mehr richtig fahren, dann kann man aber auch die Speed-Werte verändern, dass er wieder schneller fährt) :
    Code:
     #include "asuro.h"
    int main(void) {
    unsigned int data[2]; //Speicher bereitstellen
    Init();
    FrontLED(ON); // Linienbeleuchtung einschalten
    MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
    while(1){ // Endlosschleife, ASURO soll beliebig
    // lang einer Linie nachfahren
    LineData(data); // aktuelle Helligkeitswerte der
    // Fototransistoren einlesen
    if (data [0] > data [1] ) // links heller als rechts...
    {MotorSpeed(130,0);} // ... dann links mehr Gas geben...
    else
    {MotorSpeed(0,130);} // ... sonst rechts mehr Gas geben!
    }
    return 0;
    }
    Danke für eure Hilfe!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    10.06.2009
    Beiträge
    9
    Wie kann man eigentlich die werte der fototransistoren auslesen?
    Ich mein in der anleitung steht das ganz hell den wert 1023 und dunkel den wert 0 hat.
    Aber wie bindet man diese werte im programm ein? Wär echt freundlich wenn mir jemand einen tipp geben könnte^^

    Gruß

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Steht doch ganz klar im beispiel hier oben von Mosuro 77? Und das gleiche im Asuro anleitung! Oder kannst du gar keine C-sprache verstehen? Dan wurde das den erste Schrit. Google "c sprache" und weiter gehts, oder diesen link hier im roboternetz: http://www.rn-wissen.de/index.php/C-Tutorial

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    10.06.2009
    Beiträge
    9
    Nene ich mein nicht das erkennen von heller als dunkler
    >
    if (data [0] > data [1] ) // links heller als rechts...

    sondern den wert des fototransistors, den er liefert wenn er helligkeit erkennt um damit weiterzuarbeiten

    wenn ganz hell den wert 1023 hat sollte es dann so sein?:
    if (data[0] = 1023)
    das steht nämlich wiederum nicht in der anleitung ^^

    werde mir das C-Tut mal durchlesen, danke für den link

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Stimmt, 1023 ist die maximaler helligkeit-wert. Aber den maximalen odometrie helligkeit is 0, und ein schwarzes flach ein hohe wert. Das steht doch in dem anleitung. Am ende bei den funktion erklarungen. Das heist, in dem englischen version die ich hier habe und in dem deutche version die ich gerade von Arexx runtergeladen habe.

    Aber wenn du die C-tut durchgelesen habe ist er vieleicht auch in gutes idee den Atmega8 anleitung an zu schauen. Da steht viel mehr und specifiziert in was den Asuro mit seiner gehirn kann. Das ist aber ein bisschen zu schwer fur ein anfanger, aber du sollte das doch einmal versuchen.

Berechtigungen

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

Labornetzteil AliExpress