- SF800 Solar Speicher Tutorial    Werbung      
Ergebnis 1 bis 10 von 13

Thema: Odometriesensoren

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    15.09.2012
    Beiträge
    14
    Habe ich bereits angepasst, danke Bild  

    Ich bräuchte evtl noch Hilfe bei folgendem Wert:
    MY_GO_ENC_COUNT_VALUE

    Momentan ist der Wert 29750L

    Wie muss ich den für eine 8-Segmente Encoderscheibe anpassen?
    nach welcher Formel wird der Wert berechnet?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Diese Wert ist die Strecke einer Tick Multipliziert mit 10000. Das Rad macht in einer Rundgang ein Weg von ungefähr 120mm. (Durchmesser * Pi) Mit ein Übertragung von 4,8 [EDIT: könnte auch 5 sein, muss mal nach zahlen] zwischen das letzte Zahnrad, und die kleine von die Encoderscheibe, kommt man auf 25 mm pro Encoderscheibe Rundgang. Dann durch 8 Teilen und das sollte in die Nähe von 3.125 mm/ Tick sein. Die Wert Sollte dann 312500 werden.

    Aber man wurde es genauer bekommen wenn Asuro eine Strecke von 1 oder den Kompleten 10 Meter fahrt, und die Tick Anzahl aus den Globale Variabele Encoder zuruck sendet an dich.

    Aber mit diesen Program können alle diesen Persönliche Werten bewertet werden:

    https://www.roboternetz.de/community...asuro-h-selber

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    15.09.2012
    Beiträge
    14
    Danke ich probier das mit dem Testprogramm mal aus Bild  

    ich stehe gerade vor dem Problem, dass Asuro sich nach einigen malen Turn aufhängt:

    Code:
    int g_iTurnVal = 90;
    ...
    void MoveOn(void)
    {
    	if(g_iFieldCounter % 7 == 0)
    	{
    		Turn(g_iTurnVal, 100);
    		Go(FIELDSIZE, 100);
    		g_iFieldCounter++;
    		AnalyseField();
    		SerWrite("Turning: ", 9);
    		PrintInt(g_iTurnVal);
    		Turn(g_iTurnVal, 100); //HIER hängt er sich auf und dreht sich ununterbrochen 
    		SerWrite("Got It", 6);
    		g_iTurnVal *= (-1);
    	}
    	Go(FIELDSIZE, 100);
    	g_iFieldCounter++;
    }
    Das Problem kommt immer nur vor, wenn eine andere Variable g_iRow der wert 7 annimmt. g_iRow wird auch benutzt um ein Array als Index anzusprechen.
    g_iRow hat jedoch überhaupt nichts mit Turn(g_iTurnval, 100) zu tun, oder liege ich da falsch?

    können Zugriffsverletzungen an anderen Stellen im Program dazu führen, dass Asuro bei Turn() "durchdreht"?

    Ich bin ratlos
    Habt ihr eine Idee?

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    38
    Beiträge
    1.225
    Zitat Zitat von -Bob- Beitrag anzeigen
    können Zugriffsverletzungen an anderen Stellen im Program dazu führen, dass Asuro bei Turn() "durchdreht"?
    Wenn du "zufällig" Speicher beschreibst (Lesen ist, von Fehlern durch inkorrekte Werte mal abgesehen, kein Problem), kann alles mögliche passieren.

    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Ich wurde diese Werten g_iRow und g_iFieldCounter auch Zurück senden, damit du kontrollieren kannst was er genau an das Moment im Kopf hat. Könnte aber zu viel Daten werden mit 2400 B/sek.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    15.09.2012
    Beiträge
    14
    Problem Solved.

    Ich Idiot hab nen Anfängerfehler gemacht und ein 7-Stelliges Array mit dem Index 7 angesprochen.
    Interressant dass Asuro so komsich reagiert, wenn Zugriffsverletzungen gemacht werden...

    Vielen Dank

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    38
    Beiträge
    1.225
    Zitat Zitat von -Bob- Beitrag anzeigen
    Interressant dass Asuro so komsich reagiert, wenn Zugriffsverletzungen gemacht werden...
    Das ganze ist relativ einfach. Wie schon gesagt: Ungewollte schreibende Zugriffe auf Speicher/Register können undefiniertes Verhalten verursachen. Und undefiniertes Verhalten ist per definition "komisch". Du änderst damit mit hoher Wahrscheinlichkeit irgend eine andere Variable auf einen ungewollten Wert - Und der kann die weitere Ausführung des Programmes beliebig falsch ablaufen lassen.

    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

Ähnliche Themen

  1. Bezeichnung der Odometriesensoren gesucht
    Von Hans Z im Forum Asuro
    Antworten: 1
    Letzter Beitrag: 08.01.2007, 10:42

Berechtigungen

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

    Werbung      Solar Speicher und Akkus Tests