Laden...

Einfache Wegberechnung mittels GPS-Koordinaten

Erstellt von dennisspohr vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.481 Views
dennisspohr Themenstarter:in
420 Beiträge seit 2007
vor 14 Jahren
Einfache Wegberechnung mittels GPS-Koordinaten

Hallo zusammen,

ein paar Freunde und ich habe die letzten Wochen ein kleines Solarboot gebaut. Dieses Boot besitzt einen GPS-Empfänger und 2 Motoren (Zum Lenken läuft einer der beiden Motoren rückwärts).
Unser Boot soll ein paar GPS-Koordinaten in einer Liste zur Verfügung gestellt bekommen und diese Koordinaten dann autonom abfahren.
Nun muss ich eine Funktion schreiben, welche mit dem Input von 3 Koordinaten sagen kann, ob das Boot geradeaus, links oder rechts weiterfahren soll.
Die ersten beiden Koordinaten sind die aktuelle Postion plus die Position kurz davor. Damit lässt sich die Richtung ausrechnen, in der das Boot gerade fährt. Die 3. Koordinate ist das Ziel.

Ich bin bereits seit 2 Stunden am grübeln, wie ich ausrechnen kann, in welche Richtung das Boot weiterfahren muss. Leider komme ich auf keinen grünen Zweig.. vielleicht denke viel zu kompliziert.

Ich hoffe ihr könnt mir weiterhelfen - danke!
Gruß Dennis

D
171 Beiträge seit 2008
vor 14 Jahren

Hallo

Du hast doch X und Y Koordinaten, damit kannst du dir 2 Dreiecke berechnen, eines das du gerade gefahren hast und eines welches du fahren willst, nun berechneste du den Winkel z.B. zur X Achse, wenn die nicht gleich sind musst du lenken, dafür solltest du natürlich wissen welche drehrate du mit welcher lenk zeit bekommst, oder dich einfach rann tasten, wenn du nur ganz wenig lenkst müsstest du dich eigntlich langsam an den soll Winkel ranarbeiten, wenn die Strecke noch lang genug ist.

dennisspohr Themenstarter:in
420 Beiträge seit 2007
vor 14 Jahren

Hallo Daniel83,

das verstehe ich nicht. Ich habe ja nur 3 Koordinaten, wie mach ich dann 2 Dreiecke daraus. Bzw. welche beiden Dreiecke und welchen Winkel meinst du genau?

Gruß Dennis

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo dennisspohr,

vielleicht denke viel zu kompliziert.

dass kann schon sein 😃 denn den Winkel, den das Boot fährt, bekommst du mit Math.Atan2 (x2-x1, y1-y2) und den, den es steuern sol,l mit Math.Atan2 (x3-x2, y3-y2).

herbivore

M
123 Beiträge seit 2007
vor 14 Jahren

Das ist aber relativ ungenau (für kurze Distanzen halbwegs ok, aber du betrachtest die Erde als flach).

Besser geeignet sind diese Formeln http://williams.best.vwh.net/avform.htm

Die werden u.A. für die Luftfahrt angewendet und sind dementsprechend genauer (dort ist die Erde eine Kugel, also auch nicht 100% genau)

1.696 Beiträge seit 2006
vor 14 Jahren

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo marcom,

Das ist aber relativ ungenau (für kurze Distanzen halbwegs ok, aber du betrachtest die Erde als flach).

was meinst du denn, was so ein Solar-Modellboot für einen Aktionsradius hat? Dein Einwand, der natürlich vom Grundsatz her nicht falsch ist, in diesem Thread zu bringen, halte ich für unpassend, denn hier ist ja klar, dass es um kurze Distanzen geht. Im Kontext dieses Threads sind die verlinkten Formeln daher nicht besser. Das ist so, als wenn du Einstein statt Newton verwendest, wenn du ausrechenden willst, wie schnell du bist, wenn du in einem 100km/h schnellen Zug mit 5km/h nach vorne läufst.

herbivore

M
123 Beiträge seit 2007
vor 14 Jahren

Jupp, was ich auch geschrieben hatte.
Nur, wenn man es gerade sowieso zum ersten Mal implementiert, wieso nicht gleich richtig?

Ob man jetzt

distance = acos(sin(la1)*sin(la2)+cos(la1)*cos(la2)*cos(lo1-lo2))

oder

distance = 2*asin(sqrt((sin((la1-la2)/2))^2 + cos(la1)cos(la2)(sin((lo1-lo2)/2))^2))

implementiert, ist doch von der Komplexität her egal, nur ist erstere Formel eben genauer. Das war auch der Kern meiner Aussage 😉