- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 25

Thema: Odometrie Programm Probleme

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #17
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo Chrise,
    mein Fehler. Jetzt habe ich das MotorSpeed() auch im ersten Programm gefunden. Ist meinen wild suchenden Augen irgendwie entfleucht.

    Dann nun also zum eigendlichen Inhalt.
    Code:
          L_alt_l[0] = data[0];
          L_alt_r[0] = data[1];
          OdometrieData(data);
          dh_l = data[0] - L_alt_l[0];
    Hier in dh_l bestimmst du die Differenz zwischen 2 hintereinander gemachten ODO-Messwerten.

    Mit Folgendem untersuchst du diese Differenz auf einen Sprung um mehr als 200 Messeinheiten um a zu beeinflussen:
    Code:
          if( dh_l > 200 || dh_l < -200)
          {
             a++;
          }
    Ähnlich machst du das dann auch für die rechte Seite.

    Und schon fängt dein Programm wieder von vorne an.
    Unterm Strich hast du als größten Zeitfresser nur den Aufruf der Funktion OdometrieData(). Dort werden gerade mal 2 AD-Wandlungen gemacht, die so langsam auch nicht sind.

    Nun passiert also folgendes:
    - Die Odo-Scheiben drehen sich vor den Sensoren
    - Du misst kontinuierlich die Helligkeitsänderungen
    - Du untersuchst die Messwerte auf eine Differenz von mehr als 200 Einheiten
    - Du berechnest 'Geschwindigkeitsanpassungen' in d und c

    Ich glaube, dass dein Asuro startet, und dass sich die Geschwindigkeit überhaupt nicht ändert, so dass er in einem Bogen im Kreis fährt.

    Das wird daher kommen, dass die Differenzen zwischen 2 hintereinander gemachten Messungen keinesfalls größer als 200 Einheiten sein werden. (Ausnahmen bestätigen die Regel)

    Um dir hier nicht alles direkt zu verraten, nur mal ein Hinweis auf einen Thread zu diesem Thema: farratt weist auf einen
    Sinusverlauf der Daten hin.
    Und dazu dann auch ein Bildchen. Die oberen 10-Bit-Daten gelten für die Funktion OdometrieData().
    Es waren ungefähr 30 Messungen in einem Sinuszyklus!

    Gruß Sternthaler
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken blende-1_563.jpg  
    Lieber Asuro programieren als arbeiten gehen.

Berechtigungen

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

Solar Speicher und Akkus Tests