Zitat Zitat von Che Guevara Beitrag anzeigen
Hi,

ich hab mal sowas ähnliches programmiert, nämlich eine Datenfusionierung von Kompass & Gyro. Dabei hab ich den Wertebereich vom Kompass von 0° - 360° auf -Unendlich - +Unendlich verschoben (natürlich nur theoretisch). Ich weiß ja nicht, inwiefern du das in dein Programm einbauen kannst, aber es funktioniert sehr gut und benötigt sogut wie keine Rechenzeit.
Im Prinzip prüft man einfach immer, ob der letzte Messwert < 360° und der neue Messwert >= 0° bzw. andersrum ist. Wenn das der Fall ist, kann man davon ausgehen, dass der Kompass einmal über die 360° bzw. 0° hinausgedreht wurde. Dann inkrementiert bzw. dekrementiert man eine Variable, die die Umdrehung seit dem Start angibt. Somit kannst du dann einen Winkel bilden: Winkel = (Umdrehungen * 360°) + akt. Winkel
Das funktioniert allerdings nur, wenn der Kompass regelmäßig ausgelesen wird und sich das Objekt nicht zu schnell dreht, sodass die Erkennung der Umdrehung noch funktioniert.

Gruß
Chris

So ganz habe ich das nicht verstanden.
Trotzdem Danke!


Habe mir mit Stift und Zettel ein paar Situationen aufgemalt und ich denke das ich eine Lösung gefunden habe.

GUZ = Gegenuhrzeigersinn
UZ = Uhrzeigersinn

Zunächst rechne ich
ERG = Soll_Winkel - Ist_Winkel

Das Ergebnis ERG ist entweder Positiv oder Negativ.

Dann überprüfe ich das Ergebnis ERG mit folgenden Abfragen:

IF (ERG>180) THEN GUZ
IF (ERG<180 AND ERG>0) THEN UZ
IF (ERG<0 AND ERG>-180) THEN GUZ
IF (ERG<-180) THEN UZ

Das sollte für Rechts- und Linkslauf alle Fälle abdecken.

Werde es testen und berichten.