- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: Mit Odometrie geradeaus fahren?

  1. #11
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    Anzeige

    Praxistest und DIY Projekte
    Zitat Zitat von Pitchriddick
    Hi, was hat dieses flagRight = TRUE; int flagLeft = FALSE; usw. zu bedeuten ?
    wie kann ich den zurückglegten Weg beim Asuro messen , in cm ?
    Bitte benutze die Suchfunktion, zu diesem Thema sind schon viele threads offen... Du kannst die Strecke nicht Messen, zumindest nicht direkt. du kannst nur mithilfe der odometriesensoren Helligkeitswerte der Signalscheibe am Getriebe abfragen. Daraus kannst du versuchen, die Anzahl der Radumdrehungen abzuleiten. und davon kommst du evtl auf die gefahrene Strecke, in einer Maßeinheit deiner Wahl. aber beachte dabei dass eine umdrehung der signalscheibe nicht zwangsläufig auch eine umdrehung des Rades ist...
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    19.10.2006
    Beiträge
    23
    damaltor, ich habe schon fast alle Themen in diesem Asuro Forum gelesen, werde aber einfach nicht schlau... was soll ich denn noch machen

    frage nebenbei, warum funktioniert dieses programm nicht
    Code:
    #include "asuro.h"
    
    int main(void)
    {
    int speedl=130, speedr=110;
    unsigned int data[2];
    Init();               
    while(1){
    OdometrieData(data);              
    FrontLED(ON);            
    MotorDir(RWD,RWD);      
    MotorSpeed(speedl,speedr);     
               
    OdometrieData(data);            
    if(data[0]<data[1]){           //Hier dran liegt es bestimmt ?
    FrontLED(OFF);                //Blinkt nur wahnsinnig schnell 
     } 
                 }  
    			      
    return 0;
    }
    Danke für eure Hilfe

  3. #13
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    die odometriedata funktion gibt keine geschwindigkeitsangabe aus bzw speichert sie in "data". durch diese funktion bekommst du nur den aktuellen helligkeitswert der linken bzw der rechten lichtschranke. wenn also die linke schranke gerade ein helles feld "sieht" und die recht ein dunkles, dann ist der wert für die rechte schranke kleiner. dadurch ist nicht zwangsläufig auch die geschwindigkeit des rades kleiner! versuche, die übergänge zwischen hell und dunkel zu zählen (zB über 500 Millisekunden) und dann finde heraus, auf welcher seite mehr hell- und dunkelübergänge passiert sind. dann weisst du, dass auf dieser seite die motorleistung etwas zurückgefahren werden muss.

    mfg
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43
    benutze doch einfach aus der asuro.c die go() funktion, damit fährst du nicht exakt gerade sondern eher in so kleinem "zick-zack" weil er immer ausmisst und dann auf der einen seite dazuaddiert bzw wenn die zahl über 244 ist, abzieht

  5. #15
    Neuer Benutzer Öfters hier
    Registriert seit
    19.10.2006
    Beiträge
    23
    versuche, die übergänge zwischen hell und dunkel zu zählen (zB über 500 Millisekunden)
    Und wie geht das genau ? Sorry, aber ich verstehe nur sehr langsam...

  6. #16
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    stell den mtor an, so dass er fährt. dann machst du eine variable für die übergänge des linken rades und eine variable für die übergänge des rechten rades. und dann misst du in einer endlosschleife die werte für den rechten bzw linken odometriesensor uns speicherst ihn in einer zweiten variable zwischen (z.B. "TEMP") und wenn der neue wert kleiner als TEMP ist, dann ist offensichtlich gerade eine schwarze fläche vor dem sensor, der vorher einen hohen wert für die helle fläche gemessen hat. also: 1 Übergang. den speicherst du in der zuerst genannten variable. und das gleihe machst du beim linken rad.

    wenn die schleife ca 300-500mal durchgelaufen ist, dann vergleichst du die beiden werte: sind rechts mehr übergänge als links, dann musst du den rechten motor zurückfahren. aber nur ein bisschen! durch die nächste messung in der endloschschleife zeigt sich ja, ob es genug war. und wenn du links mehr übergänge hast als rechts, dann musst du DEN RECHTEN MOTOR SCHNELLER MACHEN, nicht den linken langsamer! ansonsten werden die motoren abwechselnd immer langsamer, bs der asuro steht. =)
    Jetzt setzt du alle Variablen zurück auf 0, und dann fängt die endlosschleife wieder an.
    also das wäre das was mir spontan enfallen würde, es gibt bestimmt viele einfachere lösungen und ch werde vermutlich gesteinigt in den nächsten 20 posts, aber das wre meine spontane idee.

    wenn du es geschafft hast, dann lass dir die aktuellen motorwerte per infrarot ausgeben, und dann kannst du sie in deinen programmen verwenden ohne jedes mal sone aktion zu machen =)
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43
    Zitat Zitat von damaltor
    und wenn du links mehr übergänge hast als rechts, dann musst du DEN RECHTEN MOTOR SCHNELLER MACHEN, nicht den linken langsamer! ansonsten werden die motoren abwechselnd immer langsamer, bs der asuro steht. =)
    du solltest dann in die schleife aber auch einfügen das er testet ob das jeweils andere rad schon bei 244 ist, denn dann musst du es runtersetzen ( max speed 255 // 11 als "buffer")
    z.b.

    Code:
    if ((l_speed > speed) || (r_speed > 244)) l_speed -= 10;
    			else r_speed += 10;
    mfgchen

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    19.10.2006
    Beiträge
    23
    Mit der Funktion Encoder kann ich doch auch den zurückgelegten Weg messen oder? Dann brauch ich ja kein extra Programm zu schreiben ?

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests