Ein großes Problem beim ASURO ist, dass einige Hardware-Funktionen erst kalibriert werden müssen.
Die Werte der Pollswitch-Taster können mit einem einfachen Programm ermittelt werden:
http://elektronik.nmp24.de/index.php?Robots:ASURO:Pollswitch_testen
Aber auch die Odometrie und die Streuung der Motoren kann optimiert werden. Dazu gibt es hier ein Programm mit ausführlicher Anleitung:
Nach dieser Kalibrierung müsste der ASURo dann mit GoTurn() bzw. Go() perfekt geradeaus fahren
Allerdings kann es auch sein, dass die IR-Fototransistoren bzw. IR-Dioden nicht korrekt angelötet sind. Hier gibt es oft "kalte Lötstellen". Das lässt sich sehr einfach mit dem folgenden Programm testen:
// Odometertest mit IR-Ausgabe #include "asuro.h" #include "stdlib.h" int main (void) { Init (); EncoderInit(); MotorDir(FWD,FWD); MotorSpeed(120,120); int odo_links; int odo_rechts; char text[16]; // Speicher für mit itoa() umgewandelte Integer-Zahl int i; for(i=0; i<8000; i++){ odo_links = encoder[LEFT]; odo_rechts = encoder[RIGHT]; Msleep(300); SerPrint("Links:"); // Umwandlung einer Integer-zahl in eine Zeichenkette: itoa(odo_links, text, 10); // 10 bedeutet Dezimal-Ausgabe SerPrint(text); // Ausgabe Odometriewert links SerPrint("_Rechts:"); itoa(odo_rechts, text, 10); // 10 bedeutet Dezimal-Ausgabe SerPrint(text); // Ausgabe Odometriewert links SerPrint("\r\n"); // Zeilenvorschub } return 0; } |
So sieht die Ausgabe bei Geradeaus-Fahrt mit dem Terminal-Programm "Hercules" aus:
Es ist nun deutlich zu erkennen, dass der linke Encoder nicht funktioniert!