PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GPS - Mouse NMEA Protokoll Saubere Position



NumberFive
03.08.2008, 05:25
Hallo Leute,

ich lese über das NMEA Protokoll die Postion meiner GPS-Mouse aus nun habe ich leider das Probelm das die Position im Stand hüpft (bis zu 1,2 m) hat jemand ein Idee das sauber zu verhindern ?

Zweites Problem wie berechne ich den Winkel zwischen zwei Postionen
Als ich möchte wissen welchen richtung muss ich fahren um an den neuen Punkt zu kommen. Das wollte ich im Winkel zum Norden berechnen. Also auf der Uhr is norden 12 und wieviel grad weich jetzt die Richtung ab.

Ich schreibe in C++.

Wenn infos fehlen dann Fragen

Gruß

robocat
03.08.2008, 09:58
zu der ungenauen position fällt mir nur ein, den mittelwert mehrerer messungen zu bilden. das geht natürlich auf kosten der geschwindigkeit, mit der ein verlässliches ergebnis vorliegt.

den winkel kannst du über den arcustangens(Y/X) bestimmen. für den ersten und 4ten quadranten bekommst du direkt den winkel (ausser bei X=0, die division durch 0 muss abgefangen werden); wenn Y negativ ist (im 2ten und 3tten quadranten) müssen noch 180° addiert werden.

gruesse

NumberFive
04.08.2008, 06:49
http://de.wikipedia.org/wiki/Kartesische_Koordinaten

So weit ich das verstanden habe gibt mir die Funktion atan2(y/x) den wickel für den Norden an das ist aber nicht das was ich meinte ich suche den Winkel zwischen zwei Kordinaten. Also in welche Richtig muss ich Fahren um von Pos a nach Pos b zu kommen.

ICh stelle mir das so for wenn ich nach Norden fahren muss sollte 0° raus kommen und wenn ich nach Osten fahren muss 90°. Oder ist das zu Kurz gedacht ?

Das mit den Sprügen abfangen wird noch sehr Interessant alles was ich zu Zeit versucht habe wird sehr unsauber. Mal sehen. Ich hoffe mir Fällt was ein was nicht einen ganzen Processor belegt im Robi habe ich nur ein c3 Processor EPIA Board.

jeffrey
04.08.2008, 10:51
hi,
du kannst einfach von beiden beiden positionen den winkel nach norden berechnen und dann voneinander abziehen.
mfg jeffery

NumberFive
05.08.2008, 04:53
Ich glaube das ich nicht verstanden werden drum nochmal ein Kleines Bild.

Wenn ich vom Start nach Ziel 2 fahren muss ich nach Norden fahren Sprich 0 Grad wenn welchen Winkel muss ich fahren wenn ich zum Ziel möchte.

Gruß

Johannes
13.08.2008, 09:02
Hi,
ich habs dir ja schon per ICQ geschickt, aber ich poste es nochmal:

x_S, y_S sind Startkoordinaten
x_Z, y_Z sind Zielkoordinaten

if x_S > x_Z && y_S > y_Z:
winkel = 360 - arctan( (x_S - x_Z) / (y_S - y_Z) )

if x_S < x_Z && y_S > y_Z:
winkel = 90 - arctan( (x_Z - x_S) / (y_S - y_Z) )

if x_S < x_Z && y_S < y_Z:
winkel = 90 + arctan( (x_Z - x_S) / (y_Z - y_S) )

if x_S > x_Z && y_S < y_Z:
winkel = 270 - arctan( (x_S - x_Z) / (y_Z - y_S) )

Du musst also eine Fallabfrage machen, damit du Winkel zwischen 0 und 360 Grad bekommst. Wenn der arctan in der Programmiersprache die Winkel im Rad-Maß zurückgibt, dann musst du es noch umrechnen...

Es müssen dann die 90, 270 und 360 Grad oben ins Rad-Maß übersetzt werden (*pi/180), und das ergebniss musst du dann wieder ins Gradmaß umrechnen (*180/pi).

Ich hoffe, ich hab oben keinen Fehler gemacht, aber so in der Art müsste es funktionieren. Ich weiß gerade nicht, ob es och einen kürzeren Weg gibt. Ich könnte mir aber vorstellen, dass die arctan funktion auch negative Werte vereinbaren kann (die ich oben aber verhindert habe durch die Abfragen), sodass man sich einen Teil des Codes sparen könnte.

Bis dann!