Använda GPS: ekvationer?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Använda GPS: ekvationer?

Inlägg av Korken »

Godagens!

Jag håller på att utöka min estimator för KFly med positionsestimering, men för detta behöver jag använda GPS koordinater, dels för att beräkna sträckor och riktningar samt för att få en fix på min position och estimera accelerometer bias.
Problemet jag står emot är att jag kommer inte på vad jag ska googla efter för att hitta alla dessa ekvationer och undrar om någon här har ett litet länkarkiv för detta? Alternativt någon bra bok om området.

Det jag är ute efter är (det viktigaste):
  • - Beräkna sträcka och riktning mellan två GPS koordinater
    - Approximera till ett plan så man slipper sfäriska ekvationer
    - Information om bruset på GPS position (Gaussiskt?) så jag kan förutspå statistiska ändringar som ekvationerna ger upphov till
Hoppas någon kan hjälpa mig med detta! Tack på förhand.
Jag är lite osäker om jag la den här tråden rätt nu, men flytta den om den ligger fel!

Side note: Satan, min estimator börjar bli stor...

States (22 st):

Kod: Markera allt

    |  q   | quaternion           [4x1]
    |  w   | vinkelhastighet      [3x1]
    |  wb  | vinkelhastighetsbias [3x1]
X = | pos  | position             [3x1]
    | vel  | hastighet            [3x1]
    | acc  | acceleration         [3x1]
    | accb | accelerationsbias    [3x1]
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Använda GPS: ekvationer?

Inlägg av blueint »

Det går att approximera linjärt med olika "k" för latitud och longitud. Förmodligen inte generellt tillämpbart med iaf en snabb genväg.
danei
EF Sponsor
Inlägg: 27909
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Re: Använda GPS: ekvationer?

Inlägg av danei »

Om du approximerar det till en lokalt plan blir det ju bara Sinus satsen kvar. Man kan ju sätta faktorerna vid uppstart.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Använda GPS: ekvationer?

Inlägg av Korken »

Ni råkar inte ha en sida som sammanfattar dessa ekvation med "original" GPS ekvationerna för jämnförelse? :)
Vill helst slippa ta en refresh på sfärisk geometri.
danei
EF Sponsor
Inlägg: 27909
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Re: Använda GPS: ekvationer?

Inlägg av danei »

Pyagorassats räknar du ut avståndet med. Den enda som behövs är ett lokalt mått för hur lång en vinkelenhet är i öst-västlig riktning. Det bör inte vara så svårt att räkna ut. Ska man ta hänsyn till att jorden inte är helt rund så behöver du en faktor för nord-sydlig riktning också.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Använda GPS: ekvationer?

Inlägg av Korken »

Sant så sant! Om man vill ha exakt avstånd måste man då använda tex haversine-satsen? Eller finns det någon enklare för detta?
danei
EF Sponsor
Inlägg: 27909
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Re: Använda GPS: ekvationer?

Inlägg av danei »

Jag tvivlar på att det blir bättre, den förutsätter att jorden är rund. Jag gissar att det är på ganska små ytor du ska navigera?
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Använda GPS: ekvationer?

Inlägg av Korken »

Precis, säg inom max 10 km (super duper extremfall).
Lite snabba beräkningar säger mig att pythgoras knappt ger något märkbart fel på dessa avstånd.
ElectricNooB
Inlägg: 600
Blev medlem: 26 juli 2011, 20:58:06

Re: Använda GPS: ekvationer?

Inlägg av ElectricNooB »

Hm, jag har hållit på med detta för en massa år sedan, skall se om jag hittar ekvationerna. En jäkla massa sinus och cosinus vill jag minnas. :lol:

Att köra linjärt blir väldigt fel väldigt fort så det avråder jag ifrån!

En snabb googling ger denna sida: http://www.movable-type.co.uk/scripts/latlong.html
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Använda GPS: ekvationer?

Inlägg av Korken »

När du säger väldigt fel väldigt fort, hur fel blir det hur fort? :)
Då det slår ganska hårt i prestandan att ha en trig + en sqrt (pyth) mot 7 trig + 2 sqrt (haversine).
ToPNoTCH
Inlägg: 5283
Blev medlem: 21 december 2009, 17:59:48

Re: Använda GPS: ekvationer?

Inlägg av ToPNoTCH »

Här är lite kod (Arduino) som jag använde till min hembyggda OSD.
Kanske kan vara till hjälp

Kod: Markera allt

/**********************************************
***************** Navigation routines **********
***********************************************/
float deg2rad(float deg)
{
  return (deg * PI / 180.0);
}

float rad2deg(float rad)
{
  return (rad / PI * 180.0);
}

int GetDistance(float lat1, float lon1, float lat2, float lon2)
    {
        //code for Distance in Meter
        float dlong = (deg2rad(lon2) - deg2rad(lon1));
        float dlat = (deg2rad(lat2) - deg2rad(lat1));
        float a = pow(sin(dlat/2.0), 2) + cos(deg2rad(lat1)) * cos(deg2rad(lat2)) * pow(sin(dlong/2.0), 2);
        float c = 2 * atan2(sqrt(a), sqrt(1-a));
        float dist = 6367000 * c;
        return (dist);
    }

int GetDirection(float lat1, float lon1, float lat2, float lon2)
    {
        //code for Direction in Degrees
        float dlat = deg2rad(lat1) - deg2rad(lat2);
        float dlon = deg2rad(lon1) - deg2rad(lon2);
        float y = sin(dlon) * cos(lat2);
        float x = cos(deg2rad(lat1)) * sin(deg2rad(lat2)) - sin(deg2rad(lat1)) * cos(deg2rad(lat2)) * cos(dlon);
        float direct = rad2deg(atan2(y, x));
        if (direct < 0)
            direct = direct + 360;
        return (direct);
    }
ElectricNooB
Inlägg: 600
Blev medlem: 26 juli 2011, 20:58:06

Re: Använda GPS: ekvationer?

Inlägg av ElectricNooB »

Hm, såg nu att det var 10Km som mest. Det känns ju att det inte borde vara något större problem att köra "linjärt", men det beror väl helt på vilken precision som efterfrågas...

Tyvärr minns jag inte så mycket från mitt projekt, jag var typ 17 år och försökte bygga en avståndsmätar app med ett picaxe liknande program för android så det är rätt dimmigt...
Btw, hur kan detta vara ett "problem" för någon som har koll på kvarterioner? :D

Edit: Verkar vara rätt matnyttig: http://www.movable-type.co.uk/scripts/gis-faq-5.1.html
If the distance is less than about 20 km (12 mi) and the locations of the two points in Cartesian coordinates are X1,Y1 and X2,Y2 then the

Pythagorean Theorem

d = sqrt((X2 - X1)^2 + (Y2 - Y1)^2)

will result in an error of
less than 30 meters (100 ft) for latitudes less than 70 degrees
less than 20 meters ( 66 ft) for latitudes less than 50 degrees
less than 9 meters ( 30 ft) for latitudes less than 30 degrees
(These error statements reflect both the convergence of the meridians and the curvature of the parallels.)
Användarvisningsbild
Icecap
Inlägg: 26807
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Använda GPS: ekvationer?

Inlägg av Icecap »

Allt beror ju på önskat precision. Vincerty-algoritmen är ju (tydligen) riktigt bra med noggrannheten och den är utvecklat för att vara "snål" med processorkraft.

Att läsa: http://www.ngs.noaa.gov/PUBS_LIB/inverse.pdf
danei
EF Sponsor
Inlägg: 27909
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Re: Använda GPS: ekvationer?

Inlägg av danei »

ElectricNooB: Det där gäller ju om man inte använder lokala kordinater
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Använda GPS: ekvationer?

Inlägg av Andax »

Ska du ha hög noggrannhet i avståndsberäkningen så är det bäst att först räkna om koordinaterna till ECEF (earth centered earth fixed) kartesiska koordinater. Har inte formeln i huvudet men kan rota.
Skriv svar