-
        

Ergebnis 1 bis 4 von 4

Thema: Frage zur Odometrie

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    28.10.2009
    Beiträge
    14

    Frage zur Odometrie

    Anzeige

    Da bin ich schon wieder, habe eine kurze Frage

    Bin gerade dabei, mit den Odometrie-Sensoren eine exakte Drehung auf der Stelle zu Programmieren: void Drehe(int grad)
    Leider ist das ganze irgendwie ziemlich ungenau, bei Drehe(180); liegt die Fehlertoleranz schon so zwischen 20-30 Grad. Daher meine erste Frage: Kann ich das noch irgendwie optimieren? Habe schon probiert, die Helligkeitswechsel für beide Motoren zu berechnen, was aber auch nichts gebracht hat.

    Code:
    void Drehe(int grad)
    {
    	// berechnen, welche Strecke jedes Rad fahren muss, um die Drehung zu erzeugen
    	// wir haben es mit einem Kreis mit dem Radius 1/2 RAD_ABSTAND zu tun
    	// die zu fahrende Strecke ist 1/2 des Umfangs
    	// Ergebnis in Millimeter
    
    	float benoetigte_strecke = (float) ((float) grad / (float) 360) * (M_PI * RAD_ABSTAND);
    
    	// berechnen, wieviele Helligkeitswechsel für die Strecke gebraucht werden
    	// Bei 42 Helligkeitswechseln gab es eine Umdrehung
    	float benoetigte_wechsel = (float) benoetigte_strecke * (float) ( (float) 42 / (float) RAD_UMFANG);
    	
    	/*
    	** Laufvariablen
    	*/
    	// wieviele Hell/Dunkel Wechsel gab es (wird zur Berechnung der Strecke benötigt)
    	unsigned int wechsel = 0;
    	// vorheriger Wert hell oder dunkel? 0 = hell, 1 = dunkel
    	int helligkeit_alt = 0;
    	// momentaner Wert hell oder dunkel? 0 = hell, 1 = dunkel
    	int helligkeit;
    	
    	/*
    	** Los fahren, solange bis die benötigte Drehzahl erreicht ist
    	*/
    	MotorDir(FWD, RWD);
    	Geschwindigkeit(120, 120);
    	unsigned int data[2];
    	while (wechsel < benoetigte_wechsel)
    	{
    		OdometrieData(data);
    		if (data[0] > 500)
    			helligkeit = 1;
    		else
    			helligkeit = 0;
    		
    		if (helligkeit_alt != helligkeit)
    			wechsel += 1;
    		helligkeit_alt = helligkeit;
    	}
    	Geschwindigkeit(0, 0);
    	MotorDir(FWD, FWD);
    }
    Meine zweite Frage: Die Helligkeitswechsel, die für eine Radumdrehung gebraucht werden, hab ich nur durch ausprobieren rausgekriegt (42). Gibts da einen exakteren Wert bzw. kann ich den auch irgendwie ausrechnen?

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Nachdem die Übersetzung 5:1 ist sollten es bei der Scheibe mit den 6 Feldern eigentlich 60 Helligkeitswechsel sein.
    Also hell/dunkel und dunkel/hell zusammengezählt.
    Mit den 4 Feldern dann 40 Wechsel.
    Wie du auf 42 kommst weiss ich nicht.
    Die Auflösung wird so bei etwa 5° liegen.

    In einem Thread habe ich gelesen das man bei Verwendung der Odometrie über die Diode/Transistor eine Abdeckung (schwarzes Papier?)machen sollte. Verringert Störungen durch Fremdlicht.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    28.10.2009
    Beiträge
    14
    Zitat Zitat von Hubert.G
    Nachdem die Übersetzung 5:1 ist sollten es bei der Scheibe mit den 6 Feldern eigentlich 60 Helligkeitswechsel sein.
    Also hell/dunkel und dunkel/hell zusammengezählt.
    Mit den 4 Feldern dann 40 Wechsel.
    Wie du auf 42 kommst weiss ich nicht.
    Die Auflösung wird so bei etwa 5° liegen.
    Bei mir hat die 1. Scheibe (die am Rad) 12 Felder, die zweite (am Odometrie-Teil) 8 Felder. D.h. bei einer Übersetzung von 5:1 wären das dann 12 * 5 * 8/12 = 40 Helligkeitswechsel pro Radumdrehung?

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Die Scheibe am Rad wird doch nicht erfasst, es sei denn du hast eine Sonderausführung.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

Berechtigungen

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