Odometrie ist schon eine spannende Sache. Ich bleibe hartnäckig.
Jetzt habe ich mir ein Programm nach Radbruchs zweitem Vorschlag (Zwischenspeicherung) geschrieben, das eigentlich komplett logisch ist (/sein sollte) aber natürlich nicht läuft. Schade, dachte es sähe so schon aus!
Hier der Code:
ASURO fährt jetzt immer 8en, also quasi das gleiche wie im Video nur dass er nach einmal stehen bleiben bei dem einen rad und der darauf folgenden Beschleunigung da spd1=0 wird, das andere Rad bis auf 0 drosselt und das gleiche Spiel wieder von vorne beginnt. Das kann er schon ganz gutCode:#include "asuro.h" // Konfigurationsdateien laden /* Funktionen definieren */ /* Geradeausfahren */ void GeradeAus() { char e,f,h,i,j; // Zähler unsigned int OdoData[2]; // Array für Odo Werte unsigned int save[5]; // Zwischenspeicher für Odo Wertereihe unsigned int wahr[5]; // Zähler static unsigned int spd0=170; // Geschwindigkeit static unsigned int spd1=170; // Geschwindigkeit unsigned int n[2]; // Zähler for(e=0; e<10; e++) // Anzahl der Messungen die durchgeführt werden { for(f=0; f<2; f++) // Messung für links/rechts { for(h=0; h<2; h++) // Zwei mal messen: Absteigend oder Aufsteigend? { for(i=0; i<5; i++) // Fünf mal messen pro Variable { OdometrieData(OdoData); save[i]=OdoData[f]; if(i==4) // Wenn Array voll: Checken ob Ab oder Auf { for(j=0; j<4; j++) { if(h==0 && save[i]<save[i+1]) // Alter Wert kleiner als neuer? (Auf) { wahr[h]++; } else if(h==1 && save[i]>save[i+1]) // Neuer Wert größer als alter? (Ab) { wahr[h]++; } } } } } if(wahr[0]>2 && wahr[1]>2) // Umdrehung fand statt wenn beides zutraf! { n[f]++; } } } if(n[0]>n[1]) // gleiches Spiel wie immer! { if(spd0<255) { spd1++; } else { spd0--; } } else if(n[0]<n[1]) { if(spd1<255) { spd0++; } else { spd1--; } } MotorDir(FWD,FWD); MotorSpeed(spd0,spd1); } /* Beginn des Hauptprogramms */ int main (void){ Init(); //Prozessor initialisieren while(1) // Endlosschleife { GeradeAus(); } /* Schluss ! */ return 0; }
Würde mich freuen wenn ihr mal drüber gucktGute Nacht!







Zitieren

Lesezeichen