Positionsbestimmung von Asuro
Hallo! Ich stehe vor einem Problem. Und zwar:
Ich möchte die Koordinaten ermitteln, in denen sich der Asuro vom Startpunkt aus (X=0; Y=0) befindet. Ich habe folgendes Programm zur Bestimmung des zurückgelegten Weges des linken- und rechten Rades per Odometrie geschrieben:
Code:
//Dieses Programm dient zur Ermittlung des zurückgelegten Weges des linken und rechten Rades.
//zusammengestellt und umgeschrieben von julien
#include "asuro.h"
int main(void)
{
unsigned int Rmin = 1024, Rmax = 0, Lmin = 1024, Lmax = 0, Rmitte = 512, Lmitte = 512, data[2];
unsigned int wegr=0, wegl=0;
unsigned char flagl=FALSE, flagr=FALSE;
Init();
MotorDir(FWD,FWD);
MotorSpeed(100,125);
while(1) {
OdometrieData(data); // 0. links, 1. rechts
// max links
if (data[0] > Lmax)
Lmax += (data[0] - Lmax) / 2;
// min links
if (data[0] < Lmin)
Lmin -= (Lmin - data[0]) / 2;
// max rechts
if (data[1] > Rmax)
Rmax += (data[1] - Rmax) / 2;
// min rechts
if (data[1] < Rmin)
Rmin -= (Rmin - data[1]) / 2;
Rmitte=(Rmax+Rmin)/2;
Lmitte=(Lmin+Lmax)/2;
if ((data[0] < Lmitte) && (flagl == TRUE)) {
flagl = FALSE;
wegl++;
}
if ((data[0] > Lmitte) && (flagl == FALSE)) {
flagl = TRUE;
wegl++;
}
if ((data[1] < Rmitte) && (flagr == TRUE)) {
flagr = FALSE;
wegr++;
}
if ((data[1] > Rmitte) && (flagr == FALSE)) {
flagr = TRUE;
wegr++;
}
SerWrite("WL: ",4);
PrintInt(wegl); //Ausgabe Weg linkes Rad
SerWrite("WR: ",4);
PrintInt(wegr); //Ausgabe Weg rechtes Rad);
SerWrite("/r/n",2);
}
return 0;
}
Dieses Programm kann man bestimmt noch vielseitig dafür einsetzen (natürlich nur mit ein paar Änderungen). Zum Bestimmen der Koordinaten bräuchte man z.B. noch den Winkel, in dem sich Asuro relativ zum Ausgangspunkt befindet und Formeln, um die Koordinaten zu bestimmen. Naja, ich glaube, dass das nicht so einfach sein wird aber es währe auf jeden Fall mal einen Versuch wert (und nützlich währe es für viele Zwecke auch noch [z.B. virtuelle Landkarte]). Ich würde mich auf Lösungsvorschläge freuen.
MfG julien
Liste der Anhänge anzeigen (Anzahl: 1)
Naja, das mit dem Haus vom Nikolaus ist zwar schön und gut, aber das bringt uns nichts, um die X-und Y Koordinaten relativ zur Startposition zu bestimmen. Ich habe mir da mal etwas anderes einfallen lassen (siehe Bild).
Liste der Anhänge anzeigen (Anzahl: 1)
evtl könnte man die Qualität der Odometrie erhöhen, indem man die Schwarz-Weiß-Markierungen auf den Rädern erweitert. Sozusagen aus 4 z.B. 8 macht. Dies wird auch in der Asuro Anleitung angedeutet.