-         

Ergebnis 1 bis 6 von 6

Thema: GPS - Mouse NMEA Protokoll Saubere Position

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    43
    Beiträge
    1.517

    GPS - Mouse NMEA Protokoll Saubere Position

    Anzeige

    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ß
    Home
    P: Meine Tochter (06.11.07) und Link
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    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

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    43
    Beiträge
    1.517
    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.
    Home
    P: Meine Tochter (06.11.07) und Link
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.07.2004
    Ort
    bei Stuttgart
    Alter
    35
    Beiträge
    760
    hi,
    du kannst einfach von beiden beiden positionen den winkel nach norden berechnen und dann voneinander abziehen.
    mfg jeffery

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    43
    Beiträge
    1.517
    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ß
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken winkel_richtung.jpg  
    Home
    P: Meine Tochter (06.11.07) und Link
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2003
    Beiträge
    459
    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!
    relaunched: http://www.mindrobots.de algorithms for intelligent robots

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •