-
        

+ Antworten
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Geradeauslauf prüfen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.12.2003
    Beiträge
    40

    Geradeauslauf prüfen

    Anzeige

    GearBest Black Friday Verbraucherelektronik Promotion
    Mit dem beigefügten Programmen läßt sich die Synchronität der beiden Antriebe prüfen dies ist vor allem bei längeren Geradeausdistanzen sinnvoll.
    Erst Programm navi... dann Synchronitätstest ausführen.
    Angehängte Dateien Angehängte Dateien

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    09.12.2003
    Beiträge
    40
    Hat es von euch schon jemand ausprobiert?
    Bei mir habe ich festgestellt das der rechte Antrieb früher losläuft als der linke so das robby immer nen linksdrall hat.
    Ich möchte die über nen zusätzlichen Programmschritt korrigieren, aber wie kann ich, nachdem die Werte für den rechten und linken Antrieb ja in Lbyte stehen vergleichen (z.B if linker antrieb>rechter antrieb then)....?
    Jemand nen Tip?

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    03.12.2003
    Ort
    Berlin
    Alter
    35
    Beiträge
    31
    dann kannst du die SPEED_L erhöhen und gleichzeitig die SPEED_R verkleinern.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.11.2003
    Ort
    Schöneiche b. Berlin
    Alter
    60
    Beiträge
    398
    Hallo djfoxi!
    Ist ja Super , das mit den Programmen.

    Aber das Programm offset , finde ich nicht so gut.

    Wie Du im Kopf beschrieben hast , das die Räder per Hand getreht weden sollen.
    Schade ums Getriebe, besser wäre wann Du über einen Befehl beide Zähler synchronisierst.
    MfG
    janpeter

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.11.2003
    Ort
    Schöneiche b. Berlin
    Alter
    60
    Beiträge
    398
    Hallo djfoxi!
    Dein Programm Synchron hat einen Fehler!
    Verschiebe den Programmabschnitt
    #No_Task hinter end, da es ein Unterprogramm ist
    Sonst läuft bei mehrmaligen lauf der Stack über!
    Die Abfrage der L_Distance und R_Distance ist zu weit auseinander.
    Es liegen 4 IF-Befehle dazwischen.
    Versuche beide in eine Variable zu speichern und dann erst die IF -Befehle ausführen.
    MfG
    janpeter

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    09.12.2003
    Beiträge
    40
    Hi Jan Peter,
    danke für den Tip, inzwischen habe ich es in zwei Variablen untergebracht und so modifiziert das er sobald die Differenz der beiden Antriebe zu groß wird er die Geschwindigkeit des schnelleren drosselt. Ich musste halt ein wenig probieren wie lange und wieviel um eine schnellstmögliche Korrektur zu erreichen. Inzwischen fährt er wirklich sehr gerade.
    Bei Interesse kann ich es ja mal uploaden...

    Frage wieso ist es so wichtig das ich #no_task hinter end verschiebe???

    Danke für dein Feedback

    Gruß

    Tim

    PS.: Mit dem Getriebe, es ist ja maximal 2 Umdrehungen und da man direkt an der antreibenden Achse dreht, denke ich dürfte es dem Getriebe auch nicht mehr schaden als wenn Robbie "ausrollt".
    Ich habe das Prog auch mit Motorkraft probiert aber er ist auch bei langsamster Geschwindikeit immer ein wenig über den Nullpunkt gerutscht- deshalb habe ich mich für den "handbetrieb" entschieden

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.11.2003
    Ort
    Schöneiche b. Berlin
    Alter
    60
    Beiträge
    398
    Hallo djfoxi!
    Der Programmabschnitt #no_task endet mit einem return.
    Dieser abschnitt wird beim ersten Durchlauf bearbeitet.
    Dann kommt das return , der Prozessor denkt er muss aus ein Unterprogramm zurückspringen, im Stack ist die Rücksprungadressen vom Unterprogramm gespeichert. (Normalerweise)
    Da Du aber das Programm normal durchläufst, kann es passieren , dass er sich vom Stack eine Rücksprungadresse holt , die nicht aktuell ist!
    Also verschiebe den gesamten Programmabschnitt von #no_task in den unteren Bereich Deines Programms. Wie gesagt hinter end.
    MfG
    janpeter

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.11.2003
    Ort
    Schöneiche b. Berlin
    Alter
    60
    Beiträge
    398
    Hallo djfoxi!
    Der Programmabschnitt #no_task endet mit einem return.
    Dieser abschnitt wird beim ersten Durchlauf bearbeitet.
    Dann kommt das return , der Prozessor denkt er muss aus ein Unterprogramm zurückspringen, im Stack ist die Rücksprungadressen vom Unterprogramm gespeichert. (Normalerweise)
    Da Du aber das Programm normal durchläufst, kann es passieren , dass er sich vom Stack eine Rücksprungadresse holt , die nicht aktuell ist!
    Also verschiebe den gesamten Programmabschnitt von #no_task in den unteren Bereich Deines Programms. Wie gesagt hinter end.
    MfG
    janpeter

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    02.12.2003
    Ort
    Hagen
    Alter
    59
    Beiträge
    83
    Hi,

    ich habe bei meinem Robby einen sehr grossen Unterschied zwischen den Werten fuer SPEED_R und SPEED_L bei geradeausfahren.
    SPEED_R habe ich auf 100 gesetzt und dann den Wert fuer _L solange erhoeht bis Robby auch fast geradeauslief. Ergebnis _L=190, vorher macht er immer einen satten Linksdrall.

    Prog :

    for x=1 to 100
    SPEED_R=100:SPEED_L=190
    gosub no_task
    pause 5
    next
    #stop
    SPEED_R=0:SPEED_L=0
    end

    #no_task
    sys comnav_status
    gosub l_distance
    ledport=(lbyte and &h0F):gosub ledport_write
    gosub r_distance
    ledport=(ledport or (lbyte shl 4):gosub ledport_write
    return

    ich benutze die erweiterungsplatine.

    any idea?
    -> Gruss Claus <-

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    02.12.2003
    Ort
    Hagen
    Alter
    59
    Beiträge
    83
    Hi,

    hat jemand das Getriebe mal "geschmiert". Wie oben beschrieben laufen beide Seiten stark asymmetrisch. Aber die grosse Differenz wird beim laufenlassen etwas kleiner.
    habe gefunden
    _R / _L

    100 180
    60 90-95
    140 255
    120 210
    110 180
    60 85-90
    80 125-130
    70 105

    die linke seite scheint auch schwergaengier zu sein, habe mal im Inneren am Zahnrad des Motors gedreht, damit das Getriebe sich dreht, sitzt etwas fester zusammen.
    -> Gruss Claus <-

+ Antworten
Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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