PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eine Frage zu der Go() Funktion



RobotNeu
30.09.2008, 15:07
wie funktioniert die in der Go() Funktion angegebene Umformung ?

enc_count=abs(distance)*10000L;
enc_count/=MY_GO_ENC_COUNT_VALUE;

wie berechnet man den Wert für MY_GO_ENC_COUNT_VALUE?
warum distance * 10000L?

Danke im voraus.

RobotNeu
10.10.2008, 09:24
Ich wäre euch sehr dankbar, wenn mir jemand die Lösung sagen würde. Da mein Asuro mit der Go() Funktion nicht geradeaus fährt.

m.a.r.v.i.n
11.10.2008, 17:25
Hallo,

in der Go Funktion wird aus dem Parameter distance die Anzahl der benötigten Ticks berechnet. Um nicht mit floating Point Zahlen rechnen zu müssen, wird der Faktor 10000 verwendet. Der Wert für MY_GO_ENC_COUNT_VALUE wurde empirisch ermittelt, und gilt nur für die Encoderscheiben mit 12 Segmenten. Für die 8er Scheiben ist ein Wert von ca. 30000 notwendig.

Das alles hat aber nichts damit zu tun, das dein Asuro nicht geradaus läuft. Das liegt eher daran, das Encoder Ticks nicht erkannt werden, weil:

* Die MY_ODO_DARK.. LIGHT Werte Werte nicht stimmen und angepasst werden müssen. Das geht mit dem Testprogramm von Sternthaler sehr gut. Siehe folgenden Thread (https://www.roboternetz.de/phpBB2/viewtopic.php?t=31073)
* Die Zahhnräder mit den Encoderscheiben auf den Achsen rumeiern, und sich der Abstand zu den Foto Transistoren ändert. Dagegen helfen auf die Achsen geklebte Unterlagscheiben.
* Die Fototransistoren reagieren auf Fremdlicht mit Fehlmessungen. Dagegen helfen Abschirmungen aus Pappe/Papier.
* Evtl. hast du auch unterschiedliche Encoderscheiben verwendet.