PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : zwischen Koordinaten Winkel ausrechnen



toter_fisch
21.05.2013, 20:12
Hallo, ich versuche gerade eine Navigation zu entwickeln, um mit einem Roboter von Punkt A zu Punkt B zu fahren. Dazu nutze ich GPS und einen elektronischen Kompass.
Nun habe ich z.B. folgende Koordinaten in DEC-Schreibweise:

Punkt A: 49.400728N, 8.685135E
Punkt B: 49.400293N, 8.685009E

Wie kann ich jetzt hier möglichst einfach den Winkel zwischen Punkt A und Punkt B ausrechnen ( z.B. 170°S) um dem Roboter zu sagen in welche Richtung er fahren soll?
Bisher versuche ich mit dem Tangens zu rechnen, klappt allerdings nicht so recht :/

Wäre gut wenn ihr mit helfen könntet :)

gruß toter_fisch

Jimmybot
21.05.2013, 20:47
Für ein Dreieck und somit auch ein Winkel brauchst du drei Punkte, bzw. drei Strecken.

Ich würde das so lösen:
A ist der aktuelle Standort vom Roboter
B ist der Zielstandort
C ist ein fiktiver Punkt

Daraus kann man bestimmen, dass die Strecken sich wie folgt bilden:
Strecke AB (Von Punkt A nach Punkt B)
Strecke AC (von Punkt A nach Punkt C)

Dabei sollte der Punkt C auf der Fahrstrecke gerade aus liegen, also im Winke 0°.
Damit lässt sich die Strecke zwischen B und C ermitteln dank BC²=AC²+AB²

So und jetzt Chinamathematik:
http://upload.wikimedia.org/math/c/7/3/c7395f88ac265200e9f1583e4740a66a.png

Gehen wir davon aus das a die Strecke BC ist, b die Strecke AC und c die Strecke AB ist bekommst du den Winkel http://upload.wikimedia.org/math/b/c/c/bccfc7022dfb945174d9bcebad2297bb.png. Dieser Winkel ist der Winkel zwischen deiner aktuellen Fahrrichtung (Strecke AC) und der Strecke AB.
http://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Dreieck-umkreis.svg/250px-Dreieck-umkreis.svg.png

Lasse mich gerne Korrigieren, wenn ich mich vertahen habe... hatte im Mathe LK nur ne 5 gehabt.
Aber bei Wiki steht es:
http://de.wikipedia.org/wiki/Dreieck

DanielSan
22.05.2013, 14:12
Ich würde es mit dem arctan2(y,x) machen mit:
x = 8.685135 - 8.685009 und
y = 49.400728 - 49.400293.

Das hat den Vorteil, das dir das Ergebnis genau sagt in welche Richtung du musst. Du musst also nicht mehr drauf achten in welchem Quadranten du dich befindest etc. ausserdem ist das ziemlich simpel.

Wo wird das denn berechnet? Auf einem Atmel?

Christian H
22.05.2013, 15:21
Hallo,

geht schon in die richtige Richtung, aber noch nicht ganz. Da wir nicht am Äquator sind ist x2-x1 noch mit cos(Breitengrad) zu multipilzieren.

Ich würd´s so machen:
alpha= arctan2 ( (x2-x1)*cos(y*pi/180),(y2-y1) )

Habe gerade eben noch bemerkt dass arctan2 wohl die Unbestimmtheit vom arctan um 180 Grad berücksichtigt. Wieder was dazugelernt.

Grüße

Christian